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

Re: [Xen-devel] [PATCH v4 12/15] x86/altp2m: Add altp2mhvm HVM domain parameter.



>From: dunlapg@xxxxxxxxx [mailto:dunlapg@xxxxxxxxx] On Behalf Of George
>Dunlap
>Sent: Friday, July 10, 2015 10:32 AM
>
>On Fri, Jul 10, 2015 at 1:52 AM, Ed White <edmund.h.white@xxxxxxxxx>
>wrote:
>> The altp2mhvm and nestedhvm parameters are mutually exclusive and
>> cannot be set together.
>>
>> Signed-off-by: Ed White <edmund.h.white@xxxxxxxxx>
>>
>> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> for the
>hypervisor bits.
>> ---
>>  docs/man/xl.cfg.pod.5           | 12 ++++++++++++
>>  tools/libxl/libxl.h             |  6 ++++++
>>  tools/libxl/libxl_create.c      |  1 +
>>  tools/libxl/libxl_dom.c         |  2 ++
>>  tools/libxl/libxl_types.idl     |  1 +
>>  tools/libxl/xl_cmdimpl.c        | 10 ++++++++++
>>  xen/arch/x86/hvm/hvm.c          | 23 +++++++++++++++++++++--
>>  xen/include/public/hvm/params.h |  5 ++++-
>>  8 files changed, 57 insertions(+), 3 deletions(-)
>>
>> diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5 index
>> a3e0e2e..18afd46 100644
>> --- a/docs/man/xl.cfg.pod.5
>> +++ b/docs/man/xl.cfg.pod.5
>> @@ -1035,6 +1035,18 @@ enabled by default and you should usually omit
>> it. It may be necessary  to disable the HPET in order to improve
>> compatibility with guest  Operating Systems (X86 only)
>>
>> +=item B<altp2mhvm=BOOLEAN>
>> +
>> +Enables or disables hvm guest access to alternate-p2m capability.
>> +Alternate-p2m allows a guest to manage multiple p2m guest physical
>> +"memory views" (as opposed to a single p2m). This option is disabled
>> +by default and is available only to hvm domains.
>> +You may want this option if you want to access-control/isolate access
>> +to specific guest physical memory pages accessed by the guest, e.g.
>> +for HVM domain memory introspection or for isolation/access-control
>> +of memory between components within a single guest hvm domain.
>> +
>>  =item B<nestedhvm=BOOLEAN>
>>
>>  Enable or disables guest access to hardware virtualisation features,
>> diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index
>> a1c5d15..17222e7 100644
>> --- a/tools/libxl/libxl.h
>> +++ b/tools/libxl/libxl.h
>> @@ -745,6 +745,12 @@ typedef struct libxl__ctx libxl_ctx;  #define
>> LIBXL_HAVE_BUILDINFO_SERIAL_LIST 1
>>
>>  /*
>> + * LIBXL_HAVE_ALTP2M
>> + * If this is defined, then libxl supports alternate p2m functionality.
>> + */
>> +#define LIBXL_HAVE_ALTP2M 1
>> +
>> +/*
>>   * LIBXL_HAVE_REMUS
>>   * If this is defined, then libxl supports remus.
>>   */
>> diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
>> index f366a09..418deee 100644
>> --- a/tools/libxl/libxl_create.c
>> +++ b/tools/libxl/libxl_create.c
>> @@ -329,6 +329,7 @@ int libxl__domain_build_info_setdefault(libxl__gc
>*gc,
>>          libxl_defbool_setdefault(&b_info->u.hvm.hpet,               true);
>>          libxl_defbool_setdefault(&b_info->u.hvm.vpt_align,          true);
>>          libxl_defbool_setdefault(&b_info->u.hvm.nested_hvm,         false);
>> +        libxl_defbool_setdefault(&b_info->u.hvm.altp2m,             false);
>>          libxl_defbool_setdefault(&b_info->u.hvm.usb,                false);
>>          libxl_defbool_setdefault(&b_info->u.hvm.xen_platform_pci,   true);
>>
>> diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index
>> bdc0465..2f1200e 100644
>> --- a/tools/libxl/libxl_dom.c
>> +++ b/tools/libxl/libxl_dom.c
>> @@ -300,6 +300,8 @@ static void hvm_set_conf_params(xc_interface
>*handle, uint32_t domid,
>>                      libxl_defbool_val(info->u.hvm.vpt_align));
>>      xc_hvm_param_set(handle, domid, HVM_PARAM_NESTEDHVM,
>>                      libxl_defbool_val(info->u.hvm.nested_hvm));
>> +    xc_hvm_param_set(handle, domid, HVM_PARAM_ALTP2MHVM,
>> +                    libxl_defbool_val(info->u.hvm.altp2m));
>>  }
>>
>>  int libxl__build_pre(libxl__gc *gc, uint32_t domid, diff --git
>> a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl index
>> e1632fa..fb641fe 100644
>> --- a/tools/libxl/libxl_types.idl
>> +++ b/tools/libxl/libxl_types.idl
>> @@ -440,6 +440,7 @@ libxl_domain_build_info =
>Struct("domain_build_info",[
>>                                         ("mmio_hole_memkb",  MemKB),
>>                                         ("timer_mode",       
>> libxl_timer_mode),
>>                                         ("nested_hvm",       libxl_defbool),
>> +                                       ("altp2m",           libxl_defbool),
>>                                         ("smbios_firmware",  string),
>>                                         ("acpi_firmware",    string),
>>                                         ("nographic",        libxl_defbool),
>> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index
>> c858068..43cf6bf 100644
>> --- a/tools/libxl/xl_cmdimpl.c
>> +++ b/tools/libxl/xl_cmdimpl.c
>> @@ -1500,6 +1500,16 @@ static void parse_config_data(const char
>> *config_source,
>>
>>          xlu_cfg_get_defbool(config, "nestedhvm",
>> &b_info->u.hvm.nested_hvm, 0);
>>
>> +        xlu_cfg_get_defbool(config, "altp2mhvm",
>> + &b_info->u.hvm.altp2m, 0);
>> +
>> +        if (!libxl_defbool_is_default(b_info->u.hvm.nested_hvm) &&
>> +            libxl_defbool_val(b_info->u.hvm.nested_hvm) &&
>> +            !libxl_defbool_is_default(b_info->u.hvm.altp2m) &&
>> +            libxl_defbool_val(b_info->u.hvm.altp2m)) {
>> +            fprintf(stderr, "ERROR: nestedhvm and altp2mhvm cannot be used
>together\n");
>> +            exit(1);
>> +        }
>> +
>>          xlu_cfg_replace_string(config, "smbios_firmware",
>>                                 &b_info->u.hvm.smbios_firmware, 0);
>>          xlu_cfg_replace_string(config, "acpi_firmware", diff --git
>> a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index
>> 23cd507..6e59e68 100644
>> --- a/xen/arch/x86/hvm/hvm.c
>> +++ b/xen/arch/x86/hvm/hvm.c
>> @@ -5750,6 +5750,7 @@ static int hvm_allow_set_param(struct domain *d,
>>      case HVM_PARAM_VIRIDIAN:
>>      case HVM_PARAM_IOREQ_SERVER_PFN:
>>      case HVM_PARAM_NR_IOREQ_SERVER_PAGES:
>> +    case HVM_PARAM_ALTP2MHVM:
>
>Sorry I missed this -- when I was skimming the reviews of the previous
>version, I assumed that when Wei asked "hvm" to be taken out because it
>was redundant, it would include the HVM at the end of this HVM_PARAM.  It
>seems fairly redundant to have HVM both at the beginning and the end.
>(Note that argument doesn't apply to NESTEDHVM, because in that case, it's
>the HVM itself which is nested.)
>
>(I also have an idea this may have been discussed before, but I can't find the
>relevant conversation now, so let me know if I'm covering old
>ground...)


Wei has acked this today morning.

Ravi

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