Created
June 28, 2016 22:31
-
-
Save marmarek/c8e080f0036fb21759976a6bf3f5c668 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/tools/libxl/libxl_pci.c b/tools/libxl/libxl_pci.c | |
index 236bdd0..555ac73 100644 | |
--- a/tools/libxl/libxl_pci.c | |
+++ b/tools/libxl/libxl_pci.c | |
@@ -111,6 +111,7 @@ int libxl__create_pci_backend(libxl__gc *gc, uint32_t domid, | |
static int libxl__device_pci_add_xenstore(libxl__gc *gc, uint32_t domid, libxl_device_pci *pcidev, int starting) | |
{ | |
+ libxl_ctx *ctx = libxl__gc_owner(gc); | |
flexarray_t *back; | |
char *num_devs, *be_path; | |
int num = 0; | |
@@ -148,29 +149,33 @@ static int libxl__device_pci_add_xenstore(libxl__gc *gc, uint32_t domid, libxl_d | |
if (!starting) | |
flexarray_append_pair(back, "state", GCSPRINTF("%d", XenbusStateReconfiguring)); | |
- GCNEW(device); | |
- libxl__device_from_pcidev(gc, domid, pcidev, device); | |
+ if (!libxl_is_stubdom(ctx, domid, NULL)) { | |
+ 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; | |
- } | |
+ 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); | |
+ DEVICE_ADD(pci, pcidevs, domid, &pcidev_saved, COMPARE_PCI, &d_config); | |
- rc = libxl__dm_check_start(gc, &d_config, domid); | |
- if (rc) goto out; | |
+ rc = libxl__dm_check_start(gc, &d_config, domid); | |
+ if (rc) goto out; | |
+ } | |
for (;;) { | |
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 (!libxl_is_stubdom(ctx, domid, NULL)) { | |
+ 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, back->count)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment