|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] libxl: disallow PCI device assignment for HVM guest when PoD is enabled
Any more comments on code logic and / or the location of the new
snippet? Should I send a new version with code comment fixed?
Thanks
Wei.
On Fri, Jan 10, 2014 at 11:27:42AM +0000, Wei Liu wrote:
> This replicates a Xend behavior, see ec789523749 ("xend: Dis-allow
> device assignment if PoD is enabled.").
>
> This change is restricted to HVM guest, as only VT-d is relevant in the
> counterpart in Xend. We're late in release cycle so the change should
> only do what's necessary. Probably we can revisit it if we need to do
> the same thing for PV guest in the future.
>
> Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
> Cc: Ian Campbell <ian.campbell@xxxxxxxxxx>
> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
> Cc: Suravee Suthikulpanit <suravee.suthikulpanit@xxxxxxx>
> Cc: Xiantao Zhang <xiantao.zhang@xxxxxxxxx>
> ---
> tools/libxl/libxl_create.c | 22 ++++++++++++++++++++++
> 1 file changed, 22 insertions(+)
>
> diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
> index e03bb55..b7adf34 100644
> --- a/tools/libxl/libxl_create.c
> +++ b/tools/libxl/libxl_create.c
> @@ -706,6 +706,7 @@ static void initiate_domain_create(libxl__egc *egc,
> libxl_ctx *ctx = libxl__gc_owner(gc);
> uint32_t domid;
> int i, ret;
> + bool pod_enabled = false;
>
> /* convenience aliases */
> libxl_domain_config *const d_config = dcs->guest_config;
> @@ -714,6 +715,27 @@ static void initiate_domain_create(libxl__egc *egc,
>
> domid = 0;
>
> + /* If target_memkb is smaller than max_memkb, the subsequent call
> + * to libxc when building HVM domain will enable PoD mode.
> + */
> + pod_enabled = (d_config->c_info.type == LIBXL_DOMAIN_TYPE_HVM) &&
> + (d_config->b_info.target_memkb < d_config->b_info.max_memkb);
> +
> + /* We cannot have PoD and PCI device assignment at the same time
> + * for HVM guest. It was reported that VT-d engine cannot
> + * work with PoD enabled because it needs to populated entire page
> + * table for guest. Also a quick grep through AMD IOMMU related
> + * code suggests it has not coped with PoD as well. Just to stay
> + * on the safe side, we disable PCI device assignment with PoD all
> + * together, regardless of the underlying IOMMU in use.
> + */
> + if (d_config->c_info.type == LIBXL_DOMAIN_TYPE_HVM &&
> + d_config->num_pcidevs && pod_enabled) {
> + ret = ERROR_INVAL;
> + LOG(ERROR, "PCI device assignment for HVM guest failed due to PoD
> enabled");
> + goto error_out;
> + }
> +
> ret = libxl__domain_create_info_setdefault(gc, &d_config->c_info);
> if (ret) goto error_out;
>
> --
> 1.7.10.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |