[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 36/51] pc: acpi: piix4: move remaining PCI hotplu
From: |
Igor Mammedov |
Subject: |
[Qemu-devel] [PATCH v2 36/51] pc: acpi: piix4: move remaining PCI hotplug bits into SSDT |
Date: |
Mon, 28 Dec 2015 18:02:43 +0100 |
Signed-off-by: Igor Mammedov <address@hidden>
---
hw/i386/acpi-build.c | 43 +++++++++++++++++++++++++++++++++++++++++++
hw/i386/acpi-dsdt.dsl | 40 ----------------------------------------
2 files changed, 43 insertions(+), 40 deletions(-)
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index fd81b40..ec6ceda 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -1635,6 +1635,48 @@ static void build_piix4_isa_bridge(Aml *table)
aml_append(table, scope);
}
+static void build_piix4_pci_hotplug(Aml *table)
+{
+ Aml *scope;
+ Aml *field;
+ Aml *method;
+
+ scope = aml_scope("_SB.PCI0");
+
+ aml_append(scope,
+ aml_operation_region("PCST", AML_SYSTEM_IO, 0xae00, 0x08));
+ field = aml_field("PCST", AML_DWORD_ACC, AML_NOLOCK, AML_WRITE_AS_ZEROS);
+ aml_append(field, aml_named_field("PCIU", 32));
+ aml_append(field, aml_named_field("PCID", 32));
+ aml_append(scope, field);
+
+ aml_append(scope,
+ aml_operation_region("SEJ", AML_SYSTEM_IO, 0xae08, 0x04));
+ field = aml_field("SEJ", AML_DWORD_ACC, AML_NOLOCK, AML_WRITE_AS_ZEROS);
+ aml_append(field, aml_named_field("B0EJ", 32));
+ aml_append(scope, field);
+
+ aml_append(scope,
+ aml_operation_region("BNMR", AML_SYSTEM_IO, 0xae10, 0x04));
+ field = aml_field("BNMR", AML_DWORD_ACC, AML_NOLOCK, AML_WRITE_AS_ZEROS);
+ aml_append(field, aml_named_field("BNUM", 32));
+ aml_append(scope, field);
+
+ aml_append(scope, aml_mutex("BLCK", 0));
+
+ method = aml_method("PCEJ", 2, AML_NOTSERIALIZED);
+ aml_append(method, aml_acquire(aml_name("BLCK"), 0xFFFF));
+ aml_append(method, aml_store(aml_arg(0), aml_name("BNUM")));
+ aml_append(method,
+ aml_store(aml_shiftleft(aml_int(1), aml_arg(1)), aml_name("B0EJ")));
+ aml_append(method, aml_release(aml_name("BLCK")));
+ aml_append(method, aml_return(aml_int(0)));
+ aml_append(scope, method);
+
+ aml_append(table, scope);
+}
+
+
static void
build_ssdt(GArray *table_data, GArray *linker,
AcpiCpuInfo *cpu, AcpiPmInfo *pm, AcpiMiscInfo *misc,
@@ -1661,6 +1703,7 @@ build_ssdt(GArray *table_data, GArray *linker,
build_piix4_pm(ssdt);
build_piix4_isa_bridge(ssdt);
build_isa_devices_aml(ssdt);
+ build_piix4_pci_hotplug(ssdt);
build_piix4_pci0_int(ssdt);
} else {
build_hpet_aml(ssdt);
diff --git a/hw/i386/acpi-dsdt.dsl b/hw/i386/acpi-dsdt.dsl
index 5d741dd..a7769fc 100644
--- a/hw/i386/acpi-dsdt.dsl
+++ b/hw/i386/acpi-dsdt.dsl
@@ -38,44 +38,4 @@ DefinitionBlock (
// External(PX13, DeviceObj)
}
}
-
-/****************************************************************
- * PCI hotplug
- ****************************************************************/
-
- Scope(\_SB.PCI0) {
- OperationRegion(PCST, SystemIO, 0xae00, 0x08)
- Field(PCST, DWordAcc, NoLock, WriteAsZeros) {
- PCIU, 32,
- PCID, 32,
- }
-
- OperationRegion(SEJ, SystemIO, 0xae08, 0x04)
- Field(SEJ, DWordAcc, NoLock, WriteAsZeros) {
- B0EJ, 32,
- }
-
- OperationRegion(BNMR, SystemIO, 0xae10, 0x04)
- Field(BNMR, DWordAcc, NoLock, WriteAsZeros) {
- BNUM, 32,
- }
-
- /* Lock to protect access to fields above. */
- Mutex(BLCK, 0)
-
- /* Methods called by bulk generated PCI devices below */
-
- /* Methods called by hotplug devices */
- Method(PCEJ, 2, NotSerialized) {
- // _EJ0 method - eject callback
- Acquire(BLCK, 0xFFFF)
- Store(Arg0, BNUM)
- Store(ShiftLeft(1, Arg1), B0EJ)
- Release(BLCK)
- Return (0x0)
- }
-
- /* Hotplug notification method supplied by SSDT */
- External(\_SB.PCI0.PCNT, MethodObj)
- }
}
--
1.8.3.1
- [Qemu-devel] [PATCH v2 21/51] pc: acpi: factor out cpu hotplug code from build_ssdt() into separate function, (continued)
- [Qemu-devel] [PATCH v2 21/51] pc: acpi: factor out cpu hotplug code from build_ssdt() into separate function, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 23/51] pc: acpi: move DBUG() from DSDT to SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 22/51] pc: acpi: move HPET from DSDT to SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 25/51] pc: acpi: move KBD device from DSDT to SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 20/51] pc: acpi: cpuhp: move \_GPE._E02() into SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 19/51] pc: acpi: cpuhp: move PRSC() method into SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 27/51] pc: acpi: move FDC0 device from DSDT to SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 24/51] pc: acpi: move RTC device from DSDT to SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 26/51] pc: acpi: move MOU device from DSDT to SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 28/51] pc: acpi: move LPT device from DSDT to SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 36/51] pc: acpi: piix4: move remaining PCI hotplug bits into SSDT,
Igor Mammedov <=
- [Qemu-devel] [PATCH v2 29/51] pc: acpi: move COM devices from DSDT to SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 37/51] pc: acpi: piix4: acpi move PCI0 device to SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 34/51] pc: acpi: piix4: move IQST() into SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 30/51] pc: acpi: move PIIX4 isa-bridge and pm devices into SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 31/51] pc: acpi: move remaining GPE handlers into SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 32/51] pc: acpi: pci: move link devices into SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 33/51] pc: acpi: piix4: move IQCR() into SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 40/51] pc: acpi: q35: move IQCR() into SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 42/51] pc: acpi: q35: move ISA bridge into SSDT, Igor Mammedov, 2015/12/28
- [Qemu-devel] [PATCH v2 45/51] pc: acpi: q35: move PRTP routing table into SSDT, Igor Mammedov, 2015/12/28