diff mbox

[V6,for-2.3,21/26] hw/pci: inform bios if the system has extra pci root buses

Message ID 1426791181-23831-22-git-send-email-marcel@redhat.com
State New
Headers show

Commit Message

Marcel Apfelbaum March 19, 2015, 6:52 p.m. UTC
From: Marcel Apfelbaum <marcel.a@redhat.com>

The bios looks for 'etc/extra-pci-roots' to decide if
is going to scan further buses after bus 0 tree.

Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
---
 hw/i386/pc.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
diff mbox

Patch

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 79eaad5..7a8c6dd 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1076,6 +1076,19 @@  void pc_guest_info_machine_done(Notifier *notifier, void *data)
     PcGuestInfoState *guest_info_state = container_of(notifier,
                                                       PcGuestInfoState,
                                                       machine_done);
+    PCIHostState *snooped_host = find_i440fx();
+    PCIHostBridgeSnoopedClass *snooped_class =
+        PCI_HOST_BRIDGE_SNOOPED_GET_CLASS(snooped_host);
+    GPtrArray *snooping_hosts = snooped_class->snooping_hosts(snooped_host);
+    int extra_hosts = snooping_hosts->len;
+
+    if (extra_hosts && guest_info_state->info.fw_cfg) {
+        uint64_t *val = g_malloc(sizeof(*val));
+        *val = cpu_to_le64(extra_hosts);
+        fw_cfg_add_file(guest_info_state->info.fw_cfg,
+                        "etc/extra-pci-roots", val, sizeof(*val));
+    }
+
     acpi_setup(&guest_info_state->info);
 }