[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] PVH dom0 construction timeout
On Mon, Mar 02, 2020 at 11:45:26AM +0000, Andrew Cooper wrote: > On 28/02/2020 21:08, Andrew Cooper wrote: > > It turns out that PVH dom0 construction doesn't work so well on a > > 2-socket Rome system... > > With the softirq fix in place, here are the differences in construction > between PV and PVH along with timestamps. > > (XEN) [ 30.856178] NX (Execute Disable) protection active > (XEN) [ 30.906155] *** Building a PV Dom0 *** > (XEN) [ 31.153853] ELF: phdr: paddr=0x1000000 memsz=0xeef000 > > (XEN) [ 27.588081] NX (Execute Disable) protection active > (XEN) [ 27.633081] *** Building a PVH Dom0 *** > (XEN) [ 33.524345] Dom0 memory allocation stats: > (XEN) [ 33.568697] order 0 allocations: 2 > (XEN) [ 33.612341] order 1 allocations: 1 > (XEN) [ 33.655544] order 2 allocations: 5 > (XEN) [ 33.698344] order 3 allocations: 5 > (XEN) [ 33.740650] order 4 allocations: 2 > (XEN) [ 33.782736] order 5 allocations: 5 > (XEN) [ 33.824295] order 6 allocations: 4 > (XEN) [ 33.865423] order 7 allocations: 4 > (XEN) [ 33.906237] order 8 allocations: 4 > (XEN) [ 33.946560] order 9 allocations: 4 > (XEN) [ 33.986465] order 10 allocations: 4 > (XEN) [ 34.025925] order 11 allocations: 6 > (XEN) [ 34.065089] order 12 allocations: 5 > (XEN) [ 34.103750] order 13 allocations: 5 > (XEN) [ 34.142221] order 14 allocations: 3 > (XEN) [ 34.180064] order 15 allocations: 2 > (XEN) [ 34.217557] order 16 allocations: 3 > (XEN) [ 34.255105] order 17 allocations: 3 > (XEN) [ 34.292610] order 18 allocations: 5 > (XEN) [ 34.539002] Unable to copy initrd to guest > (XEN) [ 34.576732] Failed to load Dom0 kernel > (XEN) [ 34.618554] > (XEN) [ 34.656905] **************************************** > (XEN) [ 34.698851] Panic on CPU 0: > (XEN) [ 34.737640] Could not set up DOM0 guest OS > (XEN) [ 34.777939] **************************************** > > i.e. PVH doesn't even complete correctly, and takes 6 seconds as opposed > to PV's 0.2s Hm, I guess PVH dom0 construction needs to be more clever about initrd placement, right now it's just copied after the kernel, without any check on whether there's enough space. Can you paste the output of the following patch? Thanks, Roger. ---8<--- diff --git a/xen/arch/x86/e820.c b/xen/arch/x86/e820.c index aa602773bb..82e9ac46a0 100644 --- a/xen/arch/x86/e820.c +++ b/xen/arch/x86/e820.c @@ -88,7 +88,7 @@ static void __init add_memory_region(unsigned long long start, e820.nr_map++; } -static void __init print_e820_memory_map(struct e820entry *map, unsigned int entries) +void __init print_e820_memory_map(struct e820entry *map, unsigned int entries) { unsigned int i; diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c index eded87eaf5..3ec036678c 100644 --- a/xen/arch/x86/hvm/dom0_build.c +++ b/xen/arch/x86/hvm/dom0_build.c @@ -490,6 +490,8 @@ static int __init pvh_populate_p2m(struct domain *d) #undef MB1_PAGES } +void print_e820_memory_map(struct e820entry *map, unsigned int entries); + static int __init pvh_load_kernel(struct domain *d, const module_t *image, unsigned long image_headroom, module_t *initrd, void *image_base, @@ -555,6 +557,9 @@ static int __init pvh_load_kernel(struct domain *d, const module_t *image, if ( rc ) { printk("Unable to copy initrd to guest\n"); +printk("load address: %lx initrd size: %x rc %d\n", + last_addr, initrd->mod_end, rc); +print_e820_memory_map(d->arch.e820, d->arch.nr_e820); return rc; } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |