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

Re: [Xen-devel] [PATCH 14/19] hvmloader: disallow memory relocation when vNUMA is enabled



On Fri, Nov 21, 2014 at 02:56:31PM -0500, Konrad Rzeszutek Wilk wrote:
> On Fri, Nov 21, 2014 at 03:06:56PM +0000, Wei Liu wrote:
> > Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
> > Cc: Jan Beulich <JBeulich@xxxxxxxx>
> > Cc: George Dunlap <george.dunlap@xxxxxxxxxxxxx>
> > ---
> >  tools/firmware/hvmloader/pci.c |   13 +++++++++++++
> >  1 file changed, 13 insertions(+)
> > 
> > diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c
> > index 4e8d803..d7ea740 100644
> > --- a/tools/firmware/hvmloader/pci.c
> > +++ b/tools/firmware/hvmloader/pci.c
> > @@ -88,6 +88,19 @@ void pci_setup(void)
> >      printf("Relocating guest memory for lowmem MMIO space %s\n",
> >             allow_memory_relocate?"enabled":"disabled");
> >  
> > +    /* Disallow low memory relocation when vNUMA is enabled, because
> > +     * relocated memory ends up off node. Further more, even if we
> > +     * dynamically expand node coverage in hvmloader, low memory and
> > +     * high memory may reside in different physical nodes, blindly
> > +     * relocates low memory to high memory gives us a sub-optimal
> > +     * configuration.
> 
> And this is done in hvmloader, so the toolstack has no inkling that
> we need to relocate memory to make space for the PCI.
> 
> In such case I would not have this check here. Instead put it in 
> libxl 

You're right, I think this should be placed in libxl.

> and disallow vNUMA with PCI passthrough.
> 
> And then the fix is to take the logic that is in hvmloader for PCI
> BAR size relocation and move it in libxl. Then it can construct the
> proper vNUMA topology and also fix an outstanding QEMU-xen bug.
> 

But FYI not only PCI passthrough requires larger memory hole. A user can
use device_model_args_extra (don't remember the exact name) to
instrument QEMU to emulate arbitrary PCI devices.

Wei.

> > +     */
> > +    if ( hvm_info->nr_nodes != 0 && allow_memory_relocate )
> > +    {
> > +        allow_memory_relocate = false;
> > +        printf("vNUMA enabled, relocating guest memory for lowmem MMIO 
> > space disabled\n");
> > +    }
> > +
> >      s = xenstore_read("platform/mmio_hole_size", NULL);
> >      if ( s )
> >          mmio_hole_size = strtoll(s, NULL, 0);
> > -- 
> > 1.7.10.4
> > 
> > 
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@xxxxxxxxxxxxx
> > http://lists.xen.org/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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