aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorŁukasz Gieryk <lukasz.gieryk@linux.intel.com>2022-02-17 18:44:52 +0100
committerMichael S. Tsirkin <mst@redhat.com>2022-03-06 05:08:23 -0500
commit69387f4915afe4abe61c028cef30f56562d802a4 (patch)
treeeb62f290d592645f193d3524535bafbb5f8ac3d1
parent2503461691d3a781d3b9b54697955c3c1873af47 (diff)
downloadqemu-69387f4915afe4abe61c028cef30f56562d802a4.zip
qemu-69387f4915afe4abe61c028cef30f56562d802a4.tar.gz
qemu-69387f4915afe4abe61c028cef30f56562d802a4.tar.bz2
pcie: Add a helper to the SR/IOV API
Convenience function for retrieving the PCIDevice object of the N-th VF. Signed-off-by: Łukasz Gieryk <lukasz.gieryk@linux.intel.com> Reviewed-by: Knut Omang <knuto@ifi.uio.no> Message-Id: <20220217174504.1051716-4-lukasz.maniak@linux.intel.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
-rw-r--r--hw/pci/pcie_sriov.c10
-rw-r--r--include/hw/pci/pcie_sriov.h6
2 files changed, 15 insertions, 1 deletions
diff --git a/hw/pci/pcie_sriov.c b/hw/pci/pcie_sriov.c
index 3f256d4..87abad6 100644
--- a/hw/pci/pcie_sriov.c
+++ b/hw/pci/pcie_sriov.c
@@ -287,8 +287,16 @@ uint16_t pcie_sriov_vf_number(PCIDevice *dev)
return dev->exp.sriov_vf.vf_number;
}
-
PCIDevice *pcie_sriov_get_pf(PCIDevice *dev)
{
return dev->exp.sriov_vf.pf;
}
+
+PCIDevice *pcie_sriov_get_vf_at_index(PCIDevice *dev, int n)
+{
+ assert(!pci_is_vf(dev));
+ if (n < dev->exp.sriov_pf.num_vfs) {
+ return dev->exp.sriov_pf.vf[n];
+ }
+ return NULL;
+}
diff --git a/include/hw/pci/pcie_sriov.h b/include/hw/pci/pcie_sriov.h
index 990cff0..80f5c84 100644
--- a/include/hw/pci/pcie_sriov.h
+++ b/include/hw/pci/pcie_sriov.h
@@ -68,4 +68,10 @@ uint16_t pcie_sriov_vf_number(PCIDevice *dev);
*/
PCIDevice *pcie_sriov_get_pf(PCIDevice *dev);
+/*
+ * Get the n-th VF of this physical function - only valid for PF.
+ * Returns NULL if index is invalid
+ */
+PCIDevice *pcie_sriov_get_vf_at_index(PCIDevice *dev, int n);
+
#endif /* QEMU_PCIE_SRIOV_H */