From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH for-4.5] libxl: remove existence check for PCI device hotplug Date: Wed, 19 Nov 2014 16:01:54 -0500 Message-ID: <20141119210154.GB20440@laptop.dumpdata.com> References: <1416226234-30743-1-git-send-email-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <1416226234-30743-1-git-send-email-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Wei Liu Cc: liang.z.li@intel.com, Ian Jackson , Ian Campbell , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org On Mon, Nov 17, 2014 at 12:10:34PM +0000, Wei Liu wrote: > The existence check is to make sure a device is not added to a guest > multiple times. > > PCI device backend path has different rules from vif, disk etc. For > example: > /local/domain/0/backend/pci/9/0/dev-1/0000:03:10.1 > /local/domain/0/backend/pci/9/0/key-1/0000:03:10.1 > /local/domain/0/backend/pci/9/0/dev-2/0000:03:10.2 > /local/domain/0/backend/pci/9/0/key-2/0000:03:10.2 > > The devid for PCI devices is hardcoded 0. libxl__device_exists only > checks up to /local/.../9/0 so it always returns true even the device is > assignable. > > Remove invocation of libxl__device_exists. We're sure at this point that > the PCI device is assignable (hence no xenstore entry or JSON entry). > The check is done before hand. For HVM guest it's done by calling > xc_test_assign_device and for PV guest it's done by calling > pciback_dev_is_assigned. > > Reported-by: Li, Liang Z > Signed-off-by: Wei Liu > Cc: Ian Campbell > Cc: Ian Jackson > Cc: Konrad Wilk > --- > This patch fixes a regression in 4.5. Ouch! That needs then to be fixed. Is the version you would want to commit? I did test it - and it looked to do the right thing - thought the xen-pciback is stuck in the 7 state. However that is a seperate issue that I believe is due to Xen pciback not your patches. > > The risk is that I misunderstood semantics of xc_test_assign_device and > pciback_dev_is_assigned and end up adding several entries to JSON config > template. But if the assignable tests are incorrect I think we have a > bigger problem to worry about than duplicated entries in JSON template. > > It would be good for someone to have PCI hotplug setup to run a quick test. I > think Liang confirmed (indrectly) that xc_test_assign_device worked well for > him so I think there's won't be multiple JSON template entries for HVM guests. > However PV side still remains to be tested. > --- > tools/libxl/libxl_pci.c | 8 -------- > 1 file changed, 8 deletions(-) > > diff --git a/tools/libxl/libxl_pci.c b/tools/libxl/libxl_pci.c > index 9f40100..316643c 100644 > --- a/tools/libxl/libxl_pci.c > +++ b/tools/libxl/libxl_pci.c > @@ -175,14 +175,6 @@ static int libxl__device_pci_add_xenstore(libxl__gc *gc, uint32_t domid, libxl_d > rc = libxl__xs_transaction_start(gc, &t); > if (rc) goto out; > > - rc = libxl__device_exists(gc, t, device); > - if (rc < 0) goto out; > - if (rc == 1) { > - LOG(ERROR, "device already exists in xenstore"); > - rc = ERROR_DEVICE_EXISTS; > - goto out; > - } > - > rc = libxl__set_domain_configuration(gc, domid, &d_config); > if (rc) goto out; > > -- > 1.7.10.4 >