[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] libxl: passthrough: avoid passing through devices not owned by pciback
> -----Original Message----- > From: dunlapg@xxxxxxxxx [mailto:dunlapg@xxxxxxxxx] On Behalf Of George > Dunlap > Sent: Tuesday, March 27, 2012 10:42 PM > To: Hao, Xudong > Cc: Kay, Allen M; xen-devel@xxxxxxxxxxxxxxxxxxx; ian.jackson@xxxxxxxxxxxxx > Subject: Re: [Xen-devel] [PATCH] libxl: passthrough: avoid passing through > devices not owned by pciback > > On Fri, Mar 23, 2012 at 2:47 AM, Hao, Xudong <xudong.hao@xxxxxxxxx> > wrote: > >> On a different (but related) note, it appears that libxl doesn't have > >> the pci-quirks functionality that xend has. Do you know if this is > >> still needed, if it's in the pvops tree and needs to be upstreamed? > >> Is anyone at Intel working on libxl pci-quirks support for the 4.2 release? > >> > > We did not see any Intel pci device need quirk in libxl till now, so maybe > > no > plan for libxl pci-quirks support for the 4.2 release. > > FWIW, I did see a quirk on the following Intel NIC (don't have the details of > the > warning message handy): > > 07:00.0 Ethernet controller [0200]: Intel Corporation 82575GB Gigabit Network > Connection [8086:10d6] (rev 02) > > But given the proximity to the 4.2 release, it would make perfect sense to > wait > for 4.3. I'm going to try to implement a per-device "permissive" feature in > libxl which should tide us over. > That's great, looking forward to your new feature. Thanks, -Xudong > -George > > > > >> -George > >> > >> > > >> > Signed-off-by: Allen Kay <allen.m.kay@xxxxxxxxx> > >> > Signed-off-by: Xudong Hao <xudong.hao@xxxxxxxxx> > >> > > >> > diff -r 4e1d091d10d8 tools/libxl/libxl_pci.c > >> > --- a/tools/libxl/libxl_pci.c Fri Mar 16 15:24:25 2012 +0000 > >> > +++ b/tools/libxl/libxl_pci.c Thu Mar 22 00:43:14 2012 +0800 > >> > @@ -779,6 +779,24 @@ int libxl_device_pci_add(libxl_ctx *ctx, > >> > return rc; > >> > } > >> > > >> > +static int libxl_pcidev_assignable(libxl_ctx *ctx, > >> > +libxl_device_pci > >> > +*pcidev) { > >> > + libxl_device_pci *pcidevs; > >> > + int num, i; > >> > + > >> > + pcidevs = libxl_device_pci_list_assignable(ctx, &num); > >> > + for (i = 0; i < num; i++) { > >> > + if (pcidevs[i].domain == pcidev->domain && > >> > + pcidevs[i].bus == pcidev->bus && > >> > + pcidevs[i].dev == pcidev->dev && > >> > + pcidevs[i].func == pcidev->func) > >> > + { > >> > + return 1; > >> > + } > >> > + } > >> > + return 0; > >> > +} > >> > + > >> > int libxl__device_pci_add(libxl__gc *gc, uint32_t domid, > >> > libxl_device_pci *pcidev, int starting) { > >> > libxl_ctx *ctx = libxl__gc_owner(gc); @@ -789,6 +807,13 @@ int > >> > libxl__device_pci_add(libxl__gc *gc, > >> > > >> > rc = libxl__device_pci_setdefault(gc, pcidev); > >> > if (rc) goto out; > >> > + > >> > + if (!libxl_pcidev_assignable(ctx, pcidev)) { > >> > + LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "PCI > device %x:%x:%x.%x > >> is > >> > + not assignable", > >> > + pcidev->domain, pcidev->bus, pcidev->dev, > >> > + pcidev->func); > >> > + rc = ERROR_FAIL; > >> > + goto out; > >> > + } > >> > > >> > rc = get_all_assigned_devices(gc, &assigned, &num_assigned); > >> > if ( rc ) { > >> > > >> > _______________________________________________ > >> > 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 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |