[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v19 06/14] s390x/pci: Check for multifunction after device realiz
From: |
Akihiko Odaki |
Subject: |
[PATCH v19 06/14] s390x/pci: Check for multifunction after device realization |
Date: |
Thu, 09 Jan 2025 15:29:51 +0900 |
The SR-IOV PFs set the multifunction bit during device realization so
check them after that. There is no functional change because we
explicitly ignore the multifunction bit for SR-IOV devices.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
hw/s390x/s390-pci-bus.c | 28 +++++++++++++---------------
1 file changed, 13 insertions(+), 15 deletions(-)
diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c
index c396d55c7240..913d72cc7480 100644
--- a/hw/s390x/s390-pci-bus.c
+++ b/hw/s390x/s390-pci-bus.c
@@ -971,21 +971,7 @@ static void s390_pcihost_pre_plug(HotplugHandler
*hotplug_dev, DeviceState *dev,
"this device");
}
- if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) {
- PCIDevice *pdev = PCI_DEVICE(dev);
-
- /*
- * Multifunction is not supported due to the lack of CLP. However,
- * do not check for multifunction capability for SR-IOV devices because
- * SR-IOV devices automatically add the multifunction capability
whether
- * the user intends to use the functions other than the PF.
- */
- if (pdev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION &&
- !pdev->exp.sriov_cap) {
- error_setg(errp, "multifunction not supported in s390");
- return;
- }
- } else if (object_dynamic_cast(OBJECT(dev), TYPE_S390_PCI_DEVICE)) {
+ if (object_dynamic_cast(OBJECT(dev), TYPE_S390_PCI_DEVICE)) {
S390PCIBusDevice *pbdev = S390_PCI_DEVICE(dev);
if (!s390_pci_alloc_idx(s, pbdev)) {
@@ -1076,6 +1062,18 @@ static void s390_pcihost_plug(HotplugHandler
*hotplug_dev, DeviceState *dev,
} else if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) {
pdev = PCI_DEVICE(dev);
+ /*
+ * Multifunction is not supported due to the lack of CLP. However,
+ * do not check for multifunction capability for SR-IOV devices because
+ * SR-IOV devices automatically add the multifunction capability
whether
+ * the user intends to use the functions other than the PF.
+ */
+ if (pdev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION &&
+ !pdev->exp.sriov_cap) {
+ error_setg(errp, "multifunction not supported in s390");
+ return;
+ }
+
if (!dev->id) {
/* In the case the PCI device does not define an id */
/* we generate one based on the PCI address */
--
2.47.1
- [PATCH v19 00/14] hw/pci: SR-IOV related fixes and improvements, Akihiko Odaki, 2025/01/09
- [PATCH v19 01/14] hw/pci: Rename has_power to enabled, Akihiko Odaki, 2025/01/09
- [PATCH v19 02/14] hw/ppc/spapr_pci: Do not create DT for disabled PCI device, Akihiko Odaki, 2025/01/09
- [PATCH v19 03/14] hw/ppc/spapr_pci: Do not reject VFs created after a PF, Akihiko Odaki, 2025/01/09
- [PATCH v19 04/14] s390x/pci: Avoid creating zpci for VFs, Akihiko Odaki, 2025/01/09
- [PATCH v19 05/14] s390x/pci: Allow plugging SR-IOV devices, Akihiko Odaki, 2025/01/09
- [PATCH v19 07/14] pcie_sriov: Do not manually unrealize, Akihiko Odaki, 2025/01/09
- [PATCH v19 06/14] s390x/pci: Check for multifunction after device realization,
Akihiko Odaki <=
- [PATCH v19 09/14] pcie_sriov: Reuse SR-IOV VF device instances, Akihiko Odaki, 2025/01/09
- [PATCH v19 08/14] pcie_sriov: Ensure VF addr does not overflow, Akihiko Odaki, 2025/01/09
- [PATCH v19 10/14] pcie_sriov: Release VFs failed to realize, Akihiko Odaki, 2025/01/09
- [PATCH v19 11/14] pcie_sriov: Remove num_vfs from PCIESriovPF, Akihiko Odaki, 2025/01/09
- [PATCH v19 13/14] hw/pci: Use -1 as the default value for rombar, Akihiko Odaki, 2025/01/09
- [PATCH v19 12/14] pcie_sriov: Register VFs after migration, Akihiko Odaki, 2025/01/09
- [PATCH v19 14/14] hw/qdev: Remove opts member, Akihiko Odaki, 2025/01/09
- Re: [PATCH v19 00/14] hw/pci: SR-IOV related fixes and improvements, Philippe Mathieu-Daudé, 2025/01/09