qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 07/14] hw/pci: Add hide()


From: Akihiko Odaki
Subject: [PATCH 07/14] hw/pci: Add hide()
Date: Sat, 02 Dec 2023 17:00:30 +0900

hide() can be implemented to prevent creating a PCI device and get
device options.

Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
 include/hw/pci/pci_device.h | 2 ++
 hw/pci/pci.c                | 8 ++++++++
 2 files changed, 10 insertions(+)

diff --git a/include/hw/pci/pci_device.h b/include/hw/pci/pci_device.h
index a7bfb192e8..deae29f070 100644
--- a/include/hw/pci/pci_device.h
+++ b/include/hw/pci/pci_device.h
@@ -29,6 +29,8 @@ DECLARE_CLASS_CHECKERS(PCIFailoverClass, PCI_FAILOVER, 
TYPE_PCI_FAILOVER)
 struct PCIDeviceClass {
     DeviceClass parent_class;
 
+    bool (*hide)(PCIDeviceClass *pc, const QDict *device_opts, bool from_json,
+                 Error **errp);
     void (*realize)(PCIDevice *dev, Error **errp);
     PCIUnregisterFunc *exit;
     PCIConfigReadFunc *config_read;
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 3d07246f8e..67d8ae3f61 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -2054,11 +2054,19 @@ PCIDevice *pci_find_device(PCIBus *bus, int bus_num, 
uint8_t devfn)
 static bool pci_qdev_hide(DeviceClass *dc, const QDict *device_opts,
                           bool from_json, Error **errp)
 {
+    PCIDeviceClass *pc = PCI_DEVICE_CLASS(dc);
     const char *standby_id;
     DeviceState *dev;
     ObjectClass *class;
     ObjectClass *interface;
 
+    if (pc->hide) {
+        bool hide = pc->hide(pc, device_opts, from_json, errp);
+        if (hide || *errp) {
+            return hide;
+        }
+    }
+
     if (!device_opts) {
         return false;
     }

-- 
2.43.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]