pc: pcihp: expose MMIO base and len as properties
it will be used later to dynamically reserve MMIO region instead of manually punching holes in PCI0._CRS Signed-off-by: Igor Mammedov <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
6ece7053d6
commit
78c2d8722b
@ -297,10 +297,11 @@ static const MemoryRegionOps acpi_pcihp_io_ops = {
|
||||
},
|
||||
};
|
||||
|
||||
void acpi_pcihp_init(AcpiPciHpState *s, PCIBus *root_bus,
|
||||
void acpi_pcihp_init(Object *owner, AcpiPciHpState *s, PCIBus *root_bus,
|
||||
MemoryRegion *address_space_io, bool bridges_enabled)
|
||||
{
|
||||
uint16_t io_size = ACPI_PCIHP_SIZE;
|
||||
s->io_len = ACPI_PCIHP_SIZE;
|
||||
s->io_base = ACPI_PCIHP_ADDR;
|
||||
|
||||
s->root= root_bus;
|
||||
s->legacy_piix = !bridges_enabled;
|
||||
@ -308,16 +309,21 @@ void acpi_pcihp_init(AcpiPciHpState *s, PCIBus *root_bus,
|
||||
if (s->legacy_piix) {
|
||||
unsigned *bus_bsel = g_malloc(sizeof *bus_bsel);
|
||||
|
||||
io_size = ACPI_PCIHP_LEGACY_SIZE;
|
||||
s->io_len = ACPI_PCIHP_LEGACY_SIZE;
|
||||
|
||||
*bus_bsel = ACPI_PCIHP_BSEL_DEFAULT;
|
||||
object_property_add_uint32_ptr(OBJECT(root_bus), ACPI_PCIHP_PROP_BSEL,
|
||||
bus_bsel, NULL);
|
||||
}
|
||||
|
||||
memory_region_init_io(&s->io, NULL, &acpi_pcihp_io_ops, s,
|
||||
"acpi-pci-hotplug", io_size);
|
||||
memory_region_add_subregion(address_space_io, ACPI_PCIHP_ADDR, &s->io);
|
||||
memory_region_init_io(&s->io, owner, &acpi_pcihp_io_ops, s,
|
||||
"acpi-pci-hotplug", s->io_len);
|
||||
memory_region_add_subregion(address_space_io, s->io_base, &s->io);
|
||||
|
||||
object_property_add_uint16_ptr(owner, ACPI_PCIHP_IO_BASE_PROP, &s->io_base,
|
||||
&error_abort);
|
||||
object_property_add_uint16_ptr(owner, ACPI_PCIHP_IO_LEN_PROP, &s->io_len,
|
||||
&error_abort);
|
||||
}
|
||||
|
||||
const VMStateDescription vmstate_acpi_pcihp_pci_status = {
|
||||
|
@ -562,7 +562,7 @@ static void piix4_acpi_system_hot_add_init(MemoryRegion *parent,
|
||||
"acpi-gpe0", GPE_LEN);
|
||||
memory_region_add_subregion(parent, GPE_BASE, &s->io_gpe);
|
||||
|
||||
acpi_pcihp_init(&s->acpi_pci_hotplug, bus, parent,
|
||||
acpi_pcihp_init(OBJECT(s), &s->acpi_pci_hotplug, bus, parent,
|
||||
s->use_acpi_pci_hotplug);
|
||||
|
||||
acpi_cpu_hotplug_init(parent, OBJECT(s), &s->gpe_cpu,
|
||||
|
@ -32,6 +32,9 @@
|
||||
#include "hw/acpi/acpi.h"
|
||||
#include "migration/vmstate.h"
|
||||
|
||||
#define ACPI_PCIHP_IO_BASE_PROP "acpi-pcihp-io-base"
|
||||
#define ACPI_PCIHP_IO_LEN_PROP "acpi-pcihp-io-len"
|
||||
|
||||
typedef struct AcpiPciHpPciStatus {
|
||||
uint32_t up;
|
||||
uint32_t down;
|
||||
@ -48,9 +51,11 @@ typedef struct AcpiPciHpState {
|
||||
PCIBus *root;
|
||||
MemoryRegion io;
|
||||
bool legacy_piix;
|
||||
uint16_t io_base;
|
||||
uint16_t io_len;
|
||||
} AcpiPciHpState;
|
||||
|
||||
void acpi_pcihp_init(AcpiPciHpState *, PCIBus *root,
|
||||
void acpi_pcihp_init(Object *owner, AcpiPciHpState *, PCIBus *root,
|
||||
MemoryRegion *address_space_io, bool bridges_enabled);
|
||||
|
||||
void acpi_pcihp_device_plug_cb(ACPIREGS *ar, qemu_irq irq, AcpiPciHpState *s,
|
||||
|
Loading…
Reference in New Issue
Block a user