[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] RE: [Xen-bugs] [Bug 122] Dom0 fails to boot on SLES 9 machines compiledwith x86 PAE mode ON
On Wed, 3 Aug 2005 15:40:38 +0100, Ian Pratt <m+Ian.Pratt@xxxxxxxxxxxx> wrote: I think it's probably a property of the SLES 9 compiler used to compile Xen and Linux. I have two identical machines, one with SLES 9 and the other with RHEL 4, and the RHEL 4 box works fine. Also, I have a 3rd machine of a different model loaded with SLES 9 which is also not booting with PAE 'on'. That points to SLES 9.Is it still the case with the very latest tree, i.e. where the default build is pentiumpro rather than pentium4? I'm seeing this on an x440 with SLES 9, using changeset 6003. Interestingly, I make it past this point if I specify mem=4G at boot. The crash happens very early on when booting Xen so I don't think Linux can be the problem. I tossed some printk's into paging_init() (that's where the last line of output came from in the original boot log) to see if it dies in that function. It seems to die somewhere in this code as I see the first printk message, but not the last as it is about to exit: xen/arch/x86/x86_32/mm.c, starting at line 95: printk("paging_init: about to allocate and map machine-to-phys table\n"); /* * Allocate and map the machine-to-phys table and create read-only mapping * of MPT for guest-OS use. Without PAE we'll end up with one 4MB page, * with PAE we'll allocate 2MB pages depending on the amount of memory * installed, but at least 4MB to cover 4GB address space. This is needed * to make PCI I/O memory address lookups work in guests. */ if ( (mpt_size = max_page * 4) < (4*1024*1024) ) mpt_size = 4*1024*1024; for ( i = 0; i < (mpt_size >> L2_PAGETABLE_SHIFT); i++ ) { if ( (pg = alloc_domheap_pages(NULL, PAGETABLE_ORDER, 0)) == NULL ) panic("Not enough memory to bootstrap Xen.\n"); idle_pg_table_l2[l2_linear_offset(RDWR_MPT_VIRT_START) + i] = l2e_from_page(pg, PAGE_HYPERVISOR | _PAGE_PSE); idle_pg_table_l2[l2_linear_offset(RO_MPT_VIRT_START) + i] = l2e_from_page(pg, (__PAGE_HYPERVISOR | _PAGE_PSE) & ~_PAGE_RW); } memset((void *)RDWR_MPT_VIRT_START, 0x55, mpt_size); /* Create page tables for ioremap(). */ for ( i = 0; i < (IOREMAP_MBYTES >> (L2_PAGETABLE_SHIFT - 20)); i++ ) { ioremap_pt = alloc_xenheap_page(); clear_page(ioremap_pt); idle_pg_table_l2[l2_linear_offset(IOREMAP_VIRT_START) + i] = l2e_from_page(virt_to_page(ioremap_pt), __PAGE_HYPERVISOR); } /* Set up mapping cache for domain pages. */ mapcache_order = get_order(MAPCACHE_MBYTES << (20 - PAGETABLE_ORDER)); mapcache = alloc_xenheap_pages(mapcache_order); memset(mapcache, 0, PAGE_SIZE << mapcache_order); for ( i = 0; i < (MAPCACHE_MBYTES >> (L2_PAGETABLE_SHIFT - 20)); i++ ) idle_pg_table_l2[l2_linear_offset(MAPCACHE_VIRT_START) + i] = l2e_from_page(virt_to_page(mapcache) + i, __PAGE_HYPERVISOR); printk("paging_init: exiting function\n"); } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |