diff mbox series

[RFC,FUTURE,3/3] tools: libxl: use "vslot" parameter when assigning a PCI device

Message ID 20231213234345.779722-4-volodymyr_babchuk@epam.com (mailing list archive)
State New
Headers show
Series Make vSBDF configurable by toolstack | expand

Commit Message

Volodymyr Babchuk Dec. 13, 2023, 11:44 p.m. UTC
Now, when "assign_device" domctl supports providing a virtual SBDF, we
can leverage "vslot" option from PCI_SPEC_STRING and pass user
requested function number to the hypervisor.

Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
---
 tools/libs/light/libxl_pci.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/tools/libs/light/libxl_pci.c b/tools/libs/light/libxl_pci.c
index 723e577ef5..13c7b12343 100644
--- a/tools/libs/light/libxl_pci.c
+++ b/tools/libs/light/libxl_pci.c
@@ -1421,6 +1421,7 @@  static void pci_add_dm_done(libxl__egc *egc,
     uint32_t flag = XEN_DOMCTL_DEV_RDM_RELAXED;
     uint32_t domainid = domid;
     bool isstubdom = libxl_is_stubdom(ctx, domid, &domainid);
+    uint32_t vsbdf = XEN_DOMCTL_DEV_SDBF_ANY;
 
     /* Convenience aliases */
     bool starting = pas->starting;
@@ -1524,12 +1525,16 @@  out_no_irq:
             rc = ERROR_FAIL;
             goto out;
         }
-        r = xc_assign_device(ctx->xch, domid, pci_encode_bdf(pci), NULL, flag);
+        if (pci->vdevfn)
+            vsbdf = pci->vdevfn;
+
+        r = xc_assign_device(ctx->xch, domid, pci_encode_bdf(pci), &vsbdf, flag);
         if (r < 0 && (hvm || errno != ENOSYS)) {
             LOGED(ERROR, domainid, "xc_assign_device failed");
             rc = ERROR_FAIL;
             goto out;
         }
+        LOGD(DEBUG, domainid, "Got vSBDF %x", vsbdf);
     }
 
     if (!libxl_get_stubdom_id(CTX, domid))