Re: [Xen-devel] [PATCH 3/3] libxl: don't try to manipulate json config for stubdomain
On Wed, Oct 19, 2016 at 10:38:04AM +0100, Wei Liu wrote: > On Tue, Oct 18, 2016 at 03:53:33AM +0200, Marek Marczykowski-Górecki wrote: > > Stubdomain do not have it's own config file - its configuration is > > derived from target domains. Do not try to manipulate it when attaching > > PCI device. > > > > This bug prevented starting HVM with stubdomain and PCI passthrough > > device attached. > > > > Signed-off-by: Marek Marczykowski-Górecki > > --- > > tools/libxl/libxl_pci.c | 24 +++- > > 1 file changed, 15 insertions(+), 9 deletions(-) > > > > diff --git a/tools/libxl/libxl_pci.c b/tools/libxl/libxl_pci.c > > index 3805d30..5ad70c5 100644 > > --- a/tools/libxl/libxl_pci.c > > +++ b/tools/libxl/libxl_pci.c > > @@ -151,14 +151,18 @@ static int libxl__device_pci_add_xenstore(libxl__gc > > *gc, uint32_t domid, libxl_d > > GCNEW(device); > > libxl__device_from_pcidev(gc, domid, pcidev, device); > > > > -lock = libxl__lock_domain_userdata(gc, domid); > > -if (!lock) { > > -rc = ERROR_LOCK_FAIL; > > -goto out; > > -} > > +/* Stubdomain config is derived from its target domain, it doesn't have > > + its own file */ > > +if (!libxl_is_stubdom(CTX, domid, NULL)) { > > +lock = libxl__lock_domain_userdata(gc, domid); > > +if (!lock) { > > +rc = ERROR_LOCK_FAIL; > > +goto out; > > +} > > > > What makes PCI devices special with regard to other devices? In other > words, do we need to make similar changes to other devices as well? I think PCI is special because libxl doesn't bother to update stubdomain configuration for other device types at all... If I try dynamic attach of network device to a HVM (with stubdomain), it gets attached _only_ to the target domain. So HVM without any PV drivers is out of luck. Is it supposed to work with qemu in dom0? -- Best Regards, Marek Marczykowski-Górecki Invisible Things Lab A: Because it messes up the order in which people normally read text. Q: Why is top-posting such a bad thing? signature.asc Description: PGP signature ___ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel
Re: [Xen-devel] [PATCH 3/3] libxl: don't try to manipulate json config for stubdomain
On Tue, Oct 18, 2016 at 03:53:33AM +0200, Marek Marczykowski-Górecki wrote: > Stubdomain do not have it's own config file - its configuration is > derived from target domains. Do not try to manipulate it when attaching > PCI device. > > This bug prevented starting HVM with stubdomain and PCI passthrough > device attached. > > Signed-off-by: Marek Marczykowski-Górecki > --- > tools/libxl/libxl_pci.c | 24 +++- > 1 file changed, 15 insertions(+), 9 deletions(-) > > diff --git a/tools/libxl/libxl_pci.c b/tools/libxl/libxl_pci.c > index 3805d30..5ad70c5 100644 > --- a/tools/libxl/libxl_pci.c > +++ b/tools/libxl/libxl_pci.c > @@ -151,14 +151,18 @@ static int libxl__device_pci_add_xenstore(libxl__gc > *gc, uint32_t domid, libxl_d > GCNEW(device); > libxl__device_from_pcidev(gc, domid, pcidev, device); > > -lock = libxl__lock_domain_userdata(gc, domid); > -if (!lock) { > -rc = ERROR_LOCK_FAIL; > -goto out; > -} > +/* Stubdomain config is derived from its target domain, it doesn't have > + its own file */ > +if (!libxl_is_stubdom(CTX, domid, NULL)) { > +lock = libxl__lock_domain_userdata(gc, domid); > +if (!lock) { > +rc = ERROR_LOCK_FAIL; > +goto out; > +} > What makes PCI devices special with regard to other devices? In other words, do we need to make similar changes to other devices as well? Wei. ___ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel
[Xen-devel] [PATCH 3/3] libxl: don't try to manipulate json config for stubdomain
Stubdomain do not have it's own config file - its configuration is derived from target domains. Do not try to manipulate it when attaching PCI device. This bug prevented starting HVM with stubdomain and PCI passthrough device attached. Signed-off-by: Marek Marczykowski-Górecki --- tools/libxl/libxl_pci.c | 24 +++- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/tools/libxl/libxl_pci.c b/tools/libxl/libxl_pci.c index 3805d30..5ad70c5 100644 --- a/tools/libxl/libxl_pci.c +++ b/tools/libxl/libxl_pci.c @@ -151,14 +151,18 @@ static int libxl__device_pci_add_xenstore(libxl__gc *gc, uint32_t domid, libxl_d GCNEW(device); libxl__device_from_pcidev(gc, domid, pcidev, device); -lock = libxl__lock_domain_userdata(gc, domid); -if (!lock) { -rc = ERROR_LOCK_FAIL; -goto out; -} +/* Stubdomain config is derived from its target domain, it doesn't have + its own file */ +if (!libxl_is_stubdom(CTX, domid, NULL)) { +lock = libxl__lock_domain_userdata(gc, domid); +if (!lock) { +rc = ERROR_LOCK_FAIL; +goto out; +} -rc = libxl__get_domain_configuration(gc, domid, &d_config); -if (rc) goto out; +rc = libxl__get_domain_configuration(gc, domid, &d_config); +if (rc) goto out; +} DEVICE_ADD(pci, pcidevs, domid, &pcidev_saved, COMPARE_PCI, &d_config); @@ -169,8 +173,10 @@ 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__set_domain_configuration(gc, domid, &d_config); -if (rc) goto out; +if (lock) { +rc = libxl__set_domain_configuration(gc, domid, &d_config); +if (rc) goto out; +} libxl__xs_writev(gc, t, be_path, libxl__xs_kvs_of_flexarray(gc, back)); -- 2.5.5 ___ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel