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

Re: [Xen-devel] PVH dom0 construction timeout


  • To: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Date: Mon, 2 Mar 2020 13:19:33 +0100
  • Authentication-results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=roger.pau@xxxxxxxxxx; spf=Pass smtp.mailfrom=roger.pau@xxxxxxxxxx; spf=None smtp.helo=postmaster@xxxxxxxxxxxxxxx
  • Cc: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Jan Beulich <JBeulich@xxxxxxxx>, Wei Liu <wl@xxxxxxx>
  • Delivery-date: Mon, 02 Mar 2020 12:19:59 +0000
  • Ironport-sdr: bCiqxiyjCEfoYJt1clBf/scIt/YQi6ftNgvAnVPg7gP3mVLLZEKkDDHNr6p9zSX/mBw7yFO2Ax avQziv65WXA9OSjoJB3iCBPsXHtD089AH2zdpOp23WZcU+qnWyAgvulK209TQEyLyV1y5Cq8Ht BtN58m2Umf0cWTEqEq7UtoCHQT3cq2/g+vpZLQ3PNIT3pg0vDmraqrqa4wbZAKT+Z29BZwcju4 UiqB2oHjb4QrW5RAPYPGKrILudlaUIfpsTqbTs0Mz6Yi9SYFZi831+gJ96dRQh0Hn7+T5IgfQ5 XME=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

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

 


Rackspace

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