[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 |