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

Re: [Xen-devel] [RFC][v2][PATCH 01/14] tools: introduce some new parameters to set rdm policy



On Wed, Jun 03, 2015 at 09:35:16AM +0800, Chen, Tiejun wrote:
[...]
> >
> >>+reserved regions explicitly. And using "host" to include all reserved 
> >>regions
> >>+reported on this platform which is good to handle hotplug scenario. In the
> >>+future this parameter may be further extended to allow specifying random
> >>+regions, e.g. even those belonging to another platform as a preparation
> >
> >Extending how? What's your envisaged syntax for those random regions?
> 
> We didn't go into details while discussing that design. Maybe we can do
> something like this,
> 
> rdm="type=host,reserve=strict,rdm_add=size[KMG][@offset[KMG]],size[KMG][@offset[KMG]],..."
> 

This limits the extra regions to type host and strict policy. If that's
what you want then it's fine.

> >Should you want to reserve more, an array is more useful. Could you
> 
> Yeah.
> 
> >provide some examples?
> 
> But we may have alternative approach to this when I noticed some guys are
> trying to delivery some patches about setting rmrr region by xen
> commandline. So I also would like to check this likelihood when we can step
> forward.
> 

Makes sense.

> >
> >>+for live migration with passthrough devices.
> >>+
> >>+"none" means we have nothing to do all reserved regions and ignore all 
> >>policies,
> >>+so guest work as before.

[...]

> >>diff --git a/docs/misc/vtd.txt b/docs/misc/vtd.txt
> >>index 9af0e99..7d63c47 100644
> >>--- a/docs/misc/vtd.txt
> >>+++ b/docs/misc/vtd.txt
> >>@@ -111,6 +111,30 @@ in the config file:
> >>  To override for a specific device:
> >>    pci = [ '01:00.0,msitranslate=0', '03:00.0' ]
> >>
> >>+RDM, 'reserved device memory', for PCI Device Passthrough
> >>+---------------------------------------------------------
> >>+
> >>+There are some devices the BIOS controls, for e.g. USB devices to perform
> >>+PS2 emulation. The regions of memory used for these devices are marked
> >>+reserved in the e820 map. When we turn on DMA translation, DMA to those
> >>+regions will fail. Hence BIOS uses RMRR to specify these regions along with
> >>+devices that need to access these regions. OS is expected to setup
> >>+identity mappings for these regions for these devices to access these 
> >>regions.
> >>+
> >>+While creating a VM we should reserve them in advance, and avoid any 
> >>conflicts.
> >>+So we introduce user configurable parameters to specify RDM resource and
> >>+according policies,
> >>+
> >>+To enable this globally, add "rdm" in the config file:
> >>+
> >>+    rdm = "type=host, reserve=relaxed"   (default policy is "relaxed")
> >>+
> >>+Or just for a specific device:
> >>+
> >>+    pci = [ '01:00.0,rdm_reserve=relaxed', '03:00.0,rdm_reserve=strict' ]
> >>+
> >>+For all the options available to RDM, see xl.cfg(5).
> >>+
> >>
> >>  Caveat on Conventional PCI Device Passthrough
> >>  ---------------------------------------------
> >>diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
> >>index f0da7dc..d649ead 100644
> >>--- a/tools/libxl/libxl_create.c
> >>+++ b/tools/libxl/libxl_create.c
> >>@@ -100,6 +100,12 @@ static int sched_params_valid(libxl__gc *gc,
> >>      return 1;
> >>  }
> >>
> >>+void libxl__rdm_setdefault(libxl__gc *gc, libxl_domain_build_info *b_info)
> >>+{
> >>+    b_info->rdm.type = LIBXL_RDM_RESERVE_TYPE_NONE;
> 
> Based on our previous discussion, I will initial this firstly,
> 
> +libxl_rdm_reserve_type = Enumeration("rdm_reserve_type", [
> +    (0, "none"),
> +    (1, "host"),
> +    ], init_val = "LIBXL_RDM_RESERVE_TYPE_NONE")
> +
> 
> and then, I would remove this line since right now we just own two options,
> "none" or "host". And both they're fine.
> 
> >>+    b_info->rdm.reserve = LIBXL_RDM_RESERVE_FLAG_RELAXED;
> >
> >No, not like this. You set everything back to none and relaxed even if
> >it is set before this point.
> >
> >It should be
> >     if (xxx == DEFAULT_SENTINEL_VALUE)
> >         xxx = THE_DEFAULT_YOU_WANT;
> >
> >Have a look at libxl__device_nic_setdefault etc to get an idea
> >how it works. Don't hesitate to ask if I'm not clear enough.
> 
> But indeed, here we should set rdm.reserve as you said,
> 
> +void libxl__rdm_setdefault(libxl__gc *gc, libxl_domain_build_info *b_info)
> +{
> +    if (b_info->rdm.reserve == LIBXL_RDM_RESERVE_FLAG_INVALID)
> +        b_info->rdm.reserve = LIBXL_RDM_RESERVE_FLAG_RELAXED;
> +}
> +
> 

Yes. This is fine.

Wei.

_______________________________________________
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®.