[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Xen-devel] 2.6.32.27 dom0 + latest xen staging boot failure



Setting max_pfn_mapped here has no effect.  It still fails the same way.

Later on in setup_arch(), max_pfn_mapped is set to max_lower_pfn_mapped.  For 
64 bit dom0, it will try to set it again for memory above 4GB by calling 
init_memory_mapping(1UL<<32, max_pfn<<PAGE_SHIFT) - this is where it eventually 
fails.

The problem is max_pfn also contains non-RAM extra memory.  Should max_pfn set 
to xen_low_pfn_mapped before calling init_memory_mapping for memory above 4GB?

Allen 

-----Original Message-----
From: Stefano Stabellini [mailto:stefano.stabellini@xxxxxxxxxxxxx] 
Sent: Tuesday, February 15, 2011 6:58 AM
To: Kay, Allen M
Cc: Jeremy Fitzhardinge; Konrad Rzeszutek Wilk; Stefano Stabellini; xen-devel; 
Keir Fraser
Subject: RE: [Xen-devel] 2.6.32.27 dom0 + latest xen staging boot failure

On Tue, 15 Feb 2011, Kay, Allen M wrote:
> The failure occurs when dom0 tries to pin an l1 table entry because L1 table 
> entry for the failed address is garbage.  The memory range being pinned is in 
> the range of this extra balloon driver memory not backed by real RAM.  Is 
> this intended?
> 

The pfn in question is returned by alloc_low_page and is equal to
e820_table_end, that should fall into the range
e820_table_start-e820_table_top.
This range is allocated by find_early_table_space in the initial
pagetable mappings between 0x8000 and max_pfn_mapped, respecting the
reserved memblock regions.
Maybe we didn't reserve some ranges in there that should have been
reserved?
What happen you apply this patch?


diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index 5e92b61..73a21db 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -1653,9 +1653,6 @@ static __init void xen_map_identity_early(pmd_t *pmd, 
unsigned long max_pfn)
                for (pteidx = 0; pteidx < PTRS_PER_PTE; pteidx++, pfn++) {
                        pte_t pte;
 
-                       if (pfn > max_pfn_mapped)
-                               max_pfn_mapped = pfn;
-
                        if (!pte_none(pte_page[pteidx]))
                                continue;
 
@@ -1713,6 +1710,8 @@ __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd,
        pud_t *l3;
        pmd_t *l2;
 
+       max_pfn_mapped = PFN_DOWN(__pa(xen_start_info->mfn_list));
+
        /* Zap identity mapping */
        init_level4_pgt[0] = __pgd(0);
 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.