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

Re: [Xen-devel] Re: [Xen-users] Continuing BUG:-iness booting Fedora Rawhide 3.1.0-rc's (was Summary: Experiences setting up a debug serial port)



> [    0.615589] usbcore: registered new interface driver hub
> [    0.615589] usbcore: registered new device driver usb
> [    0.615948] PCI: Using ACPI for IRQ routing
> (XEN) mm.c:4976:d0 Global bit is set to kernel page fffff81b8e
> (XEN) mm.c:4976:d0 Global bit is set to kernel page fffff81b8e
> (XEN) mm.c:4976:d0 Global bit is set to kernel page fffff81118
> (XEN) mm.c:4976:d0 Global bit is set to kernel page fffff81117
> (XEN) domain_crash_sync called from entry.S
> (XEN) Domain 0 (vcpu#0) crashed on cpu#0:
> (XEN) ----[ Xen-4.1.1  x86_64  debug=n  Not tainted ]----
> (XEN) CPU:    0
> (XEN) RIP:    e033:[<ffffffff81118d96>]
> (XEN) RFLAGS: 0000000000010282   EM: 0   CONTEXT: pv guest
> (XEN) rax: 0000000000000080   rbx: ffff880163985480   rcx: 0000000000000040
> (XEN) rdx: 0040000000000080   rsi: ffff880163985480   rdi: ffff880163985480
> (XEN) rbp: ffff880163dfaff0   rsp: ffff880163dfafd0   r8:  0000001373ffffff
> (XEN) r9:  ffffffff81b8e7fd   r10: 0000ffff00066c0a   r11: 0000000080000000
> (XEN) r12: ffffffff81a1cbd0   r13: ffffffff81b8e7fd   r14: 0000001000000000
> (XEN) r15: ffffffff81a1cbd0   cr0: 000000008005003b   cr4: 00000000000026f0
> (XEN) cr3: 0000000221a05000   cr2: 000000137400002f
> (XEN) ds: 0000   es: 0000   fs: 0000   gs: 0000   ss: e02b   cs: e033

That is fixed in the latest Linus tree. You might need this patch as well:
(also attached)

commit e3b73c4a25e9a5705b4ef28b91676caf01f9bc9f
Author: David Vrabel <david.vrabel@xxxxxxxxxx>
Date:   Tue Sep 13 10:17:32 2011 -0400

    xen/e820: if there is no dom0_mem=, don't tweak extra_pages.
    
    The patch "xen: use maximum reservation to limit amount of usable RAM"
    (d312ae878b6aed3912e1acaaf5d0b2a9d08a4f11) breaks machines that
    do not use 'dom0_mem=' argument with:
    
    reserve RAM buffer: 000000133f2e2000 - 000000133fffffff
    (XEN) mm.c:4976:d0 Global bit is set to kernel page fffff8117e
    (XEN) domain_crash_sync called from entry.S
    (XEN) Domain 0 (vcpu#0) crashed on cpu#0:
    ...
    
    The reason being that the last E820 entry is created using the
    'extra_pages' (which is based on how many pages have been freed).
    The mentioned git commit sets the initial value of 'extra_pages'
    using a hypercall which returns the number of pages (if dom0_mem
    has been used) or -1 otherwise. If the later we return with
    MAX_DOMAIN_PAGES as basis for calculation:
    
        return min(max_pages, MAX_DOMAIN_PAGES);
    
    and use it:
    
         extra_limit = xen_get_max_pages();
         if (extra_limit >= max_pfn)
                 extra_pages = extra_limit - max_pfn;
         else
                 extra_pages = 0;
    
    which means we end up with extra_pages = 128GB in PFNs (33554432)
    - 8GB in PFNs (2097152, on this specific box, can be larger or smaller),
    and then we add that value to the E820 making it:
    
      Xen: 00000000ff000000 - 0000000100000000 (reserved)
      Xen: 0000000100000000 - 000000133f2e2000 (usable)
    
    which is clearly wrong. It should look as so:
    
      Xen: 00000000ff000000 - 0000000100000000 (reserved)
      Xen: 0000000100000000 - 000000027fbda000 (usable)
    
    Naturally this problem does not present itself if dom0_mem=max:X
    is used.
    
    CC: stable@xxxxxxxxxx
    Signed-off-by: David Vrabel <david.vrabel@xxxxxxxxxx>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>

diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
index ff3dfa1..09688eb 100644
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -305,10 +305,12 @@ char * __init xen_memory_setup(void)
        sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
 
        extra_limit = xen_get_max_pages();
-       if (extra_limit >= max_pfn)
-               extra_pages = extra_limit - max_pfn;
-       else
-               extra_pages = 0;
+       if (max_pfn + extra_pages > extra_limit) {
+               if (extra_limit > max_pfn)
+                       extra_pages = extra_limit - max_pfn;
+               else
+                       extra_pages = 0;
+       }
 
        extra_pages += xen_return_unused_memory(xen_start_info->nr_pages, 
&e820);
 

Attachment: e3b73c4a25e9a5705b4ef28b91676caf01f9bc9f.patch
Description: Text Data

_______________________________________________
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®.