mirror of https://github.com/xemu-project/xemu.git
acpi: pci: move out ACPI PCI hotplug generator from generic slot generator build_append_pci_bus_devices()
Signed-off-by: Igor Mammedov <imammedo@redhat.com> Message-Id: <20230302161543.286002-33-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
62dd55fcf7
commit
02c106139a
|
@ -22,6 +22,16 @@ void build_pci_bridge_aml(AcpiDevAmlIf *adev, Aml *scope)
|
||||||
PCIBridge *br = PCI_BRIDGE(adev);
|
PCIBridge *br = PCI_BRIDGE(adev);
|
||||||
|
|
||||||
if (!DEVICE(br)->hotplugged) {
|
if (!DEVICE(br)->hotplugged) {
|
||||||
build_append_pci_bus_devices(scope, pci_bridge_get_sec_bus(br));
|
PCIBus *sec_bus = pci_bridge_get_sec_bus(br);
|
||||||
|
|
||||||
|
build_append_pci_bus_devices(scope, sec_bus);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* generate hotplug slots descriptors if
|
||||||
|
* bridge has ACPI PCI hotplug attached,
|
||||||
|
*/
|
||||||
|
if (object_property_find(OBJECT(sec_bus), ACPI_PCIHP_PROP_BSEL)) {
|
||||||
|
build_append_pcihp_slots(scope, sec_bus);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -520,7 +520,7 @@ static bool is_devfn_ignored_hotplug(const int devfn, const PCIBus *bus)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void build_append_pcihp_slots(Aml *parent_scope, PCIBus *bus)
|
void build_append_pcihp_slots(Aml *parent_scope, PCIBus *bus)
|
||||||
{
|
{
|
||||||
int devfn;
|
int devfn;
|
||||||
Aml *dev, *notify_method = NULL, *method;
|
Aml *dev, *notify_method = NULL, *method;
|
||||||
|
@ -599,10 +599,6 @@ void build_append_pci_bus_devices(Aml *parent_scope, PCIBus *bus)
|
||||||
/* device descriptor has been composed, add it into parent context */
|
/* device descriptor has been composed, add it into parent context */
|
||||||
aml_append(parent_scope, dev);
|
aml_append(parent_scope, dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (object_property_find(OBJECT(bus), ACPI_PCIHP_PROP_BSEL)) {
|
|
||||||
build_append_pcihp_slots(parent_scope, bus);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool build_append_notfication_callback(Aml *parent_scope,
|
static bool build_append_notfication_callback(Aml *parent_scope,
|
||||||
|
@ -1790,6 +1786,9 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
|
||||||
Aml *scope = aml_scope("PCI0");
|
Aml *scope = aml_scope("PCI0");
|
||||||
/* Scan all PCI buses. Generate tables to support hotplug. */
|
/* Scan all PCI buses. Generate tables to support hotplug. */
|
||||||
build_append_pci_bus_devices(scope, bus);
|
build_append_pci_bus_devices(scope, bus);
|
||||||
|
if (object_property_find(OBJECT(bus), ACPI_PCIHP_PROP_BSEL)) {
|
||||||
|
build_append_pcihp_slots(scope, bus);
|
||||||
|
}
|
||||||
aml_append(sb_scope, scope);
|
aml_append(sb_scope, scope);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,6 +71,8 @@ void acpi_pcihp_device_unplug_request_cb(HotplugHandler *hotplug_dev,
|
||||||
/* Called on reset */
|
/* Called on reset */
|
||||||
void acpi_pcihp_reset(AcpiPciHpState *s, bool acpihp_root_off);
|
void acpi_pcihp_reset(AcpiPciHpState *s, bool acpihp_root_off);
|
||||||
|
|
||||||
|
void build_append_pcihp_slots(Aml *parent_scope, PCIBus *bus);
|
||||||
|
|
||||||
extern const VMStateDescription vmstate_acpi_pcihp_pci_status;
|
extern const VMStateDescription vmstate_acpi_pcihp_pci_status;
|
||||||
|
|
||||||
#define VMSTATE_PCI_HOTPLUG(pcihp, state, test_pcihp, test_acpi_index) \
|
#define VMSTATE_PCI_HOTPLUG(pcihp, state, test_pcihp, test_acpi_index) \
|
||||||
|
|
Loading…
Reference in New Issue