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

Re: [Xen-devel] Re: SMP dom0 with 8 cpus of i386



> One possibility is that it's due to my fiddling with the domain 0  
> memory map (I now free pseudophys range 0-1MB to the linux memoy  
> allocator, which we didn''t previously do). This might mean that we're  
> now allocating memory that gets scribbled on....
> 
> It might be worth explicitly unmapping the low pseudophys 1MB, not free  
> it to the memory allocator, and then see if you can boot dom0. Then we  
> can see if we have any code paths that go straight at low memory, which  
> is a bug on xenlinux.

I wasn't able to repro these SMP dom0 problems myself. I tried
unmapping the low 1MB of pseudophys memory, and got a benign crash in
pci_find_bios() (now fixed).

It may be that you have some driver that is trying to tamper with 'ISA
space'. It's worth trying to apply the attached patch and see if you
can still boot SMP dom0 without crashing. If anyone else is having
similar problems then it would be great if they can try this patch
too (it's only good for 32-bit though -- no effect on x86_64).

 -- Keir

diff -r 3bbc9384be3f linux-2.6-xen-sparse/arch/xen/i386/kernel/setup.c
--- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/setup.c Fri Aug 26 17:57:09 2005
+++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/setup.c Sat Aug 27 10:11:24 2005
@@ -1153,7 +1153,13 @@
         */
        reserve_bootmem(HIGH_MEMORY, (PFN_PHYS(min_low_pfn) +
                         bootmap_size + PAGE_SIZE-1) - (HIGH_MEMORY));
-
+       {
+               unsigned long i;
+               reserve_bootmem(0, HIGH_MEMORY);
+               for ( i = 0; i < HIGH_MEMORY; i+= PAGE_SIZE )
+                       HYPERVISOR_update_va_mapping(
+                               (unsigned long)__va(i), __pte_ma(0), 0);
+       }
 #ifndef CONFIG_XEN
        /*
         * reserve physical page 0 - it's a special BIOS page on many boxes,
@@ -1562,6 +1568,12 @@
        smp_alloc_memory(); /* AP processor realmode stacks in low memory*/
 #endif
        paging_init();
+       {
+               unsigned long i;
+               for ( i = 0; i < HIGH_MEMORY; i+= PAGE_SIZE )
+                       HYPERVISOR_update_va_mapping(
+                               (unsigned long)__va(i), __pte_ma(0), 0);
+       }
        remapped_pgdat_init();
        zone_sizes_init();
 
_______________________________________________
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®.