pc: acpi-build: reserve PCIHP MMIO resources
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
78c2d8722b
commit
500b11ea50
@ -105,6 +105,8 @@ typedef struct AcpiPmInfo {
|
|||||||
uint16_t cpu_hp_io_len;
|
uint16_t cpu_hp_io_len;
|
||||||
uint16_t mem_hp_io_base;
|
uint16_t mem_hp_io_base;
|
||||||
uint16_t mem_hp_io_len;
|
uint16_t mem_hp_io_len;
|
||||||
|
uint16_t pcihp_io_base;
|
||||||
|
uint16_t pcihp_io_len;
|
||||||
} AcpiPmInfo;
|
} AcpiPmInfo;
|
||||||
|
|
||||||
typedef struct AcpiMiscInfo {
|
typedef struct AcpiMiscInfo {
|
||||||
@ -178,9 +180,15 @@ static void acpi_get_pm_info(AcpiPmInfo *pm)
|
|||||||
Object *obj = NULL;
|
Object *obj = NULL;
|
||||||
QObject *o;
|
QObject *o;
|
||||||
|
|
||||||
|
pm->pcihp_io_base = 0;
|
||||||
|
pm->pcihp_io_len = 0;
|
||||||
if (piix) {
|
if (piix) {
|
||||||
obj = piix;
|
obj = piix;
|
||||||
pm->cpu_hp_io_base = PIIX4_CPU_HOTPLUG_IO_BASE;
|
pm->cpu_hp_io_base = PIIX4_CPU_HOTPLUG_IO_BASE;
|
||||||
|
pm->pcihp_io_base =
|
||||||
|
object_property_get_int(obj, ACPI_PCIHP_IO_BASE_PROP, NULL);
|
||||||
|
pm->pcihp_io_len =
|
||||||
|
object_property_get_int(obj, ACPI_PCIHP_IO_LEN_PROP, NULL);
|
||||||
}
|
}
|
||||||
if (lpc) {
|
if (lpc) {
|
||||||
obj = lpc;
|
obj = lpc;
|
||||||
@ -892,6 +900,25 @@ build_ssdt(GArray *table_data, GArray *linker,
|
|||||||
|
|
||||||
patch_pci_windows(pci, ssdt_ptr, sizeof(ssdp_misc_aml));
|
patch_pci_windows(pci, ssdt_ptr, sizeof(ssdp_misc_aml));
|
||||||
|
|
||||||
|
scope = aml_scope("\\_SB.PCI0");
|
||||||
|
/* reserve PCIHP resources */
|
||||||
|
if (pm->pcihp_io_len) {
|
||||||
|
dev = aml_device("PHPR");
|
||||||
|
aml_append(dev, aml_name_decl("_HID", aml_string("PNP0A06")));
|
||||||
|
aml_append(dev,
|
||||||
|
aml_name_decl("_UID", aml_string("PCI Hotplug resources")));
|
||||||
|
/* device present, functioning, decoding, not shown in UI */
|
||||||
|
aml_append(dev, aml_name_decl("_STA", aml_int(0xB)));
|
||||||
|
crs = aml_resource_template();
|
||||||
|
aml_append(crs,
|
||||||
|
aml_io(aml_decode16, pm->pcihp_io_base, pm->pcihp_io_base, 1,
|
||||||
|
pm->pcihp_io_len)
|
||||||
|
);
|
||||||
|
aml_append(dev, aml_name_decl("_CRS", crs));
|
||||||
|
aml_append(scope, dev);
|
||||||
|
}
|
||||||
|
aml_append(ssdt, scope);
|
||||||
|
|
||||||
/* create S3_ / S4_ / S5_ packages if necessary */
|
/* create S3_ / S4_ / S5_ packages if necessary */
|
||||||
scope = aml_scope("\\");
|
scope = aml_scope("\\");
|
||||||
if (!pm->s3_disabled) {
|
if (!pm->s3_disabled) {
|
||||||
|
Loading…
Reference in New Issue
Block a user