From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeremy Fitzhardinge Subject: Re: [PATCH] xen: convert pt_base to a physical address before converting to PFN Date: Wed, 11 Mar 2009 07:34:23 -0700 Message-ID: <49B7CBEF.9050104@goop.org> References: <1236778014.12283.213.camel@zakaz.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1236778014.12283.213.camel@zakaz.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Ian Campbell Cc: xen-devel List-Id: xen-devel@lists.xenproject.org Ian Campbell wrote: > (applies to xen/dom0/hackery) > Oops, thanks. Perils of hand-editing patches... J > Otherwise xen_map_identity_early can try and creating a mapping which extends > too far into invalid PFN territory creating invalid page tables: > mapping kernel into physical memory > (XEN) mm.c:703:d50 Non-privileged (50) attempt to map I/O space 7fffffff > (XEN) mm.c:1093:d50 Failure in alloc_l1_table: entry 0 > (XEN) mm.c:2008:d50 Error while validating mfn de047 (pfn 497) for type 2000000000000000: caf=8000000000000003 taf=2000000000000001 > (XEN) mm.c:770:d50 Attempt to create linear p.t. with write perms > (XEN) mm.c:1253:d50 Failure in alloc_l2_table: entry 48 > (XEN) mm.c:2008:d50 Error while validating mfn de074 (pfn 46a) for type 4400000000000000: caf=8000000000000003 taf=4400000000000001 > (XEN) mm.c:1342:d50 Failure in alloc_l3_table: entry 3 > (XEN) mm.c:2008:d50 Error while validating mfn df405 (pfn 3d9) for type 6000000000000000: caf=8000000000000003 taf=6000000000000001 > (XEN) mm.c:848:d50 Attempt to create linear p.t. with write perms > (XEN) mm.c:2375:d50 Error while installing new compat baseptr df405 > > Signed-off-by: Ian Campbell > --- > arch/x86/xen/mmu.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c > index 6c24275..375548f 100644 > --- a/arch/x86/xen/mmu.c > +++ b/arch/x86/xen/mmu.c > @@ -1819,7 +1819,7 @@ __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd, > l2 = m2v(l3[pud_index(__START_KERNEL_map + PMD_SIZE)].pud); > memcpy(level2_fixmap_pgt, l2, sizeof(pmd_t) * PTRS_PER_PMD); > > - max_pfn_mapped = PFN_DOWN(xen_start_info->pt_base + > + max_pfn_mapped = PFN_DOWN(__pa(xen_start_info->pt_base) + > xen_start_info->nr_pt_frames * PAGE_SIZE + > 512*1024); > > @@ -1871,7 +1871,7 @@ __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd, > > level2_kernel_pgt = extend_brk(PAGE_SIZE, PAGE_SIZE); > > - max_pfn_mapped = PFN_DOWN(xen_start_info->pt_base + > + max_pfn_mapped = PFN_DOWN(__pa(xen_start_info->pt_base) + > xen_start_info->nr_pt_frames * PAGE_SIZE + > 512*1024); > >