Update the .acpipcihp blob variant for the aarch64 'virt' machine. Since
this is a new blob, the diff is large and not particularly useful, so
below is the diff against the base DSDT blob with ACPI PCI off.
Main changes include:
a) The _OSC method, which now allows the platform to control PCIe
hotplug (masking Local0 against 0x1E), whereas previously it was
controlled by the OS;
b) New regions in _SB.PCI0 to handle bus selection and device ejection;
c) Addition of a PDSM method (invoked by _DSM);
d) A new device PHPR, which reserves the memory regions used by QEMU's
acpi-pci-hotplug mechanism;
e) A new event in the GED device used to notify PCI device hotplug and
unplug.
DSDT diff against base aarch64/virt machine with acpi-pcihp=off:
DefinitionBlock ("", "DSDT", 2, "BOCHS ", "BXPC ", 0x00000001)
{
Scope (\_SB)
{
Device (C000)
{
Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID
Name (_UID, Zero) // _UID: Unique ID
}
@@ -1795,33 +1795,33 @@
0x0000008000000000, // Range Minimum
0x000000FFFFFFFFFF, // Range Maximum
0x0000000000000000, // Translation Offset
0x0000008000000000, // Length
,, , AddressRangeMemory, TypeStatic)
})
Name (SUPP, Zero)
Name (CTRL, Zero)
Method (_OSC, 4, NotSerialized) // _OSC: Operating System Capabilities
{
CreateDWordField (Arg3, Zero, CDW1)
If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */))
{
CreateDWordField (Arg3, 0x04, CDW2)
CreateDWordField (Arg3, 0x08, CDW3)
Local0 = CDW3 /* \_SB_.PCI0._OSC.CDW3 */
- Local0 &= 0x1F
+ Local0 &= 0x1E
If ((Arg1 != One))
{
CDW1 |= 0x08
}
If ((CDW3 != Local0))
{
CDW1 |= 0x10
}
CDW3 = Local0
}
Else
{
CDW1 |= 0x04
}
@@ -1852,53 +1852,217 @@
{
Name (_HID, "PNP0C02" /* PNP Motherboard Resources */) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
0x0000000000000000, // Granularity
0x0000004010000000, // Range Minimum
0x000000401FFFFFFF, // Range Maximum
0x0000000000000000, // Translation Offset
0x0000000010000000, // Length
,, , AddressRangeMemory, TypeStatic)
})
}
}
}
+ Scope (_SB.PCI0)
+ {
+ OperationRegion (PCST, SystemMemory, 0x090C0000, 0x08)
+ Field (PCST, DWordAcc, NoLock, WriteAsZeros)
+ {
+ PCIU, 32,
+ PCID, 32
+ }
+
+ OperationRegion (SEJ, SystemMemory, 0x090C0008, 0x04)
+ Field (SEJ, DWordAcc, NoLock, WriteAsZeros)
+ {
+ B0EJ, 32
+ }
+
+ OperationRegion (BNMR, SystemMemory, 0x090C0010, 0x08)
+ Field (BNMR, DWordAcc, NoLock, WriteAsZeros)
+ {
+ BNUM, 32,
+ PIDX, 32
+ }
+
+ Mutex (BLCK, 0x00)
+ Method (PCEJ, 2, NotSerialized)
+ {
+ Acquire (BLCK, 0xFFFF)
+ BNUM = Arg0
+ B0EJ = (One << Arg1)
+ Release (BLCK)
+ Return (Zero)
+ }
+
+ Method (AIDX, 2, NotSerialized)
+ {
+ Acquire (BLCK, 0xFFFF)
+ BNUM = Arg0
+ PIDX = (One << Arg1)
+ Local0 = PIDX /* \_SB_.PCI0.PIDX */
+ Release (BLCK)
+ Return (Local0)
+ }
+
+ Method (PDSM, 5, Serialized)
+ {
+ If ((Arg2 == Zero))
+ {
+ Local0 = Buffer (One)
+ {
+ 0x00 // .
+ }
+ If ((Arg0 != ToUUID ("e5c937d0-3553-4d7a-9117-ea4d19c3434d") /* Device Labeling Interface */))
+ {
+ Return (Local0)
+ }
+
+ If ((Arg1 < 0x02))
+ {
+ Return (Local0)
+ }
+
+ Local1 = Zero
+ Local2 = AIDX (DerefOf (Arg4 [Zero]), DerefOf (Arg4 [One]
+ ))
+ If (!((Local2 == Zero) | (Local2 == 0xFFFFFFFF)))
+ {
+ Local1 |= One
+ Local1 |= (One << 0x07)
+ }
+
+ Local0 [Zero] = Local1
+ Return (Local0)
+ }
+
+ If ((Arg2 == 0x07))
+ {
+ Local2 = AIDX (DerefOf (Arg4 [Zero]), DerefOf (Arg4 [One]
+ ))
+ Local0 = Package (0x02) {}
+ If (!((Local2 == Zero) || (Local2 == 0xFFFFFFFF)))
+ {
+ Local0 [Zero] = Local2
+ Local0 [One] = ""
+ }
+
+ Return (Local0)
+ }
+ }
+ }
+
+ Scope (\_SB.PCI0)
+ {
+ Method (EDSM, 5, Serialized)
+ {
+ If ((Arg2 == Zero))
+ {
+ Local0 = Buffer (One)
+ {
+ 0x00 // .
+ }
+ If ((Arg0 != ToUUID ("e5c937d0-3553-4d7a-9117-ea4d19c3434d") /* Device Labeling Interface */))
+ {
+ Return (Local0)
+ }
+
+ If ((Arg1 < 0x02))
+ {
+ Return (Local0)
+ }
+
+ Local0 [Zero] = 0x81
+ Return (Local0)
+ }
+
+ If ((Arg2 == 0x07))
+ {
+ Local0 = Package (0x02)
+ {
+ Zero,
+ ""
+ }
+ Local1 = DerefOf (Arg4 [Zero])
+ Local0 [Zero] = Local1
+ Return (Local0)
+ }
+ }
+
+ Device (PHPR)
+ {
+ Name (_HID, "PNP0A06" /* Generic Container Device */) // _HID: Hardware ID
+ Name (_UID, "PCI Hotplug resources") // _UID: Unique ID
+ Name (_STA, 0x0B) // _STA: Status
+ Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
+ {
+ IO (Decode16,
+ 0x0000, // Range Minimum
+ 0x0000, // Range Maximum
+ 0x01, // Alignment
+ 0x00, // Length
+ )
+ })
+ }
+
+ Device (S00)
+ {
+ Name (_ADR, Zero) // _ADR: Address
+ }
+
+ Device (S08)
+ {
+ Name (_ADR, 0x00010000) // _ADR: Address
+ }
+
+ Method (PCNT, 0, NotSerialized)
+ {
+ }
+ }
+
Scope (\_SB)
{
Device (\_SB.GED)
{
Name (_HID, "ACPI0013" /* Generic Event Device */) // _HID: Hardware ID
Name (_UID, "GED") // _UID: Unique ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
{
0x00000029,
}
})
OperationRegion (EREG, SystemMemory, 0x09080000, 0x04)
Field (EREG, DWordAcc, NoLock, WriteAsZeros)
{
ESEL, 32
}
Method (_EVT, 1, Serialized) // _EVT: Event
{
Local0 = ESEL /* \_SB_.GED_.ESEL */
If (((Local0 & 0x02) == 0x02))
{
Notify (PWRB, 0x80) // Status Change
}
+
+ If (((Local0 & 0x10) == 0x10))
+ {
+ Acquire (\_SB.PCI0.BLCK, 0xFFFF)
+ \_SB.PCI0.PCNT ()
+ Release (\_SB.PCI0.BLCK)
+ }
}
}
Device (PWRB)
{
Name (_HID, "PNP0C0C" /* Power Button Device */) // _HID: Hardware ID
Name (_UID, Zero) // _UID: Unique ID
}
}
}
Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
---
tests/data/acpi/aarch64/virt/DSDT.acpipcihp | Bin 0 -> 5993 bytes
tests/qtest/bios-tables-test-allowed-diff.h | 1 -
2 files changed, 1 deletion(-)
diff --git a/tests/data/acpi/aarch64/virt/DSDT.acpipcihp b/tests/data/acpi/aarch64/virt/DSDT.acpipcihp
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1ee2699d03dd24b7f56dc6e9f88334ab5aeb3d9f 100644
GIT binary patch
literal 5993
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
Gs{aE@PSiaB
literal 0
HcmV?d00001
diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index dc3ab24d05..dfb8523c8b 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1,2 +1 @@
/* List of comma-separated changed AML files to ignore */
-"tests/data/acpi/aarch64/virt/DSDT.acpipcihp",
--
2.34.1
© 2016 - 2025 Red Hat, Inc.