When a Status method is provided on a slot, the OSPM evaluates
_STA in response to the device check notify on the slot. This
allows some degree of a handshake between the platform and the
OSPM that the hotplug has been acknowledged.
In order to implement _STA, we need to know which slots have
devices. A slot with device returns 0x0F, a slot without a
device returns Zero. We get this information from Qemu using
the 0xae08 I/O port register. This was previously the read-side
of the register written to commit a device eject and always
returned 0 on read. It now returns a bitmap of present slots,
so we know that reading 0 means we have and old Qemu and
dynamically modify our SSDT to rename the _STA methods. This
is necessary to allow backwards compatibility.
The _STA method also writes the slot identifier to I/O port
register 0xae00 as an acknowledgment of the hotplug request.
Signed-off-by: Alex Williamson <alex.williamson(a)redhat.com>
---
src/acpi-dsdt.dsl | 36 ++-
src/acpi-dsdt.hex | 124 ++++++----
src/acpi.c | 27 ++
src/ssdt-pcihp.dsl | 3
src/ssdt-pcihp.hex | 658 ++++++++++++++++++++++++++++++++++++++++++++--------
5 files changed, 686 insertions(+), 162 deletions(-)
diff --git a/src/acpi-dsdt.dsl b/src/acpi-dsdt.dsl
index 7082b65..6b87086 100644
--- a/src/acpi-dsdt.dsl
+++ b/src/acpi-dsdt.dsl
@@ -119,17 +119,15 @@ DefinitionBlock (
prt_slot3(0x001f),
})
- OperationRegion(PCST, SystemIO, 0xae00, 0x08)
+ OperationRegion(PCST, SystemIO, 0xae00, 0x0c)
Field (PCST, DWordAcc, NoLock, WriteAsZeros)
{
- PCIU, 32,
- PCID, 32,
- }
-
- OperationRegion(SEJ, SystemIO, 0xae08, 0x04)
- Field (SEJ, DWordAcc, NoLock, WriteAsZeros)
- {
- B0EJ, 32,
+ // PCI Up/ACK
+ PUPA, 32,
+ // PCI Down
+ PDWN, 32,
+ // PCI Present/Eject
+ PPEJ, 32,
}
Name (_CRS, ResourceTemplate ()
@@ -462,10 +460,20 @@ DefinitionBlock (
/* Methods called by hotplug devices */
Method (PCEJ, 1, NotSerialized) {
// _EJ0 method - eject callback
- Store(ShiftLeft(1, Arg0), B0EJ)
+ Store(ShiftLeft(1, Arg0), PPEJ)
Return (0x0)
}
+ Method (PSTA, 1, NotSerialized) {
+ Store(ShiftLeft(1, Arg0), PUPA)
+ Store(PPEJ, Local0)
+ If (And(Local0, ShiftLeft(1, Arg0))) {
+ Return(0x0F)
+ } Else {
+ Return(Zero)
+ }
+ }
+
/* Hotplug notification method supplied by SSDT */
External (\_SB.PCI0.PCNT, MethodObj)
@@ -473,12 +481,16 @@ DefinitionBlock (
Method(PCNF, 0) {
// Local0 = iterator
Store (Zero, Local0)
+ // Local1 = slots marked "up"
+ Store (PUPA, Local1)
+ // Local2 = slots marked "down"
+ Store (PDWN, Local2)
While (LLess(Local0, 31)) {
Increment(Local0)
- If (And(PCIU, ShiftLeft(1, Local0))) {
+ If (And(Local1, ShiftLeft(1, Local0))) {
PCNT(Local0, 1)
}
- If (And(PCID, ShiftLeft(1, Local0))) {
+ If (And(Local2, ShiftLeft(1, Local0))) {
PCNT(Local0, 3)
}
}
diff --git a/src/acpi-dsdt.hex b/src/acpi-dsdt.hex
index 5dc7bb4..6d99f53 100644
--- a/src/acpi-dsdt.hex
+++ b/src/acpi-dsdt.hex
@@ -3,12 +3,12 @@ static unsigned char AmlCode[] = {
0x53,
0x44,
0x54,
-0xd3,
+0xeb,
0x10,
0x0,
0x0,
0x1,
-0x2d,
+0x10,
0x42,
0x58,
0x50,
@@ -110,16 +110,16 @@ static unsigned char AmlCode[] = {
0x47,
0x42,
0x10,
-0x44,
-0x81,
+0x40,
+0x80,
0x5f,
0x53,
0x42,
0x5f,
0x5b,
0x82,
-0x4c,
-0x80,
+0x48,
+0x7f,
0x50,
0x43,
0x49,
@@ -2014,47 +2014,27 @@ static unsigned char AmlCode[] = {
0x0,
0xae,
0xa,
-0x8,
+0xc,
0x5b,
0x81,
-0x10,
+0x15,
0x50,
0x43,
0x53,
0x54,
0x43,
0x50,
-0x43,
-0x49,
0x55,
+0x50,
+0x41,
0x20,
0x50,
-0x43,
-0x49,
0x44,
+0x57,
+0x4e,
0x20,
-0x5b,
-0x80,
-0x53,
-0x45,
-0x4a,
-0x5f,
-0x1,
-0xb,
-0x8,
-0xae,
-0xa,
-0x4,
-0x5b,
-0x81,
-0xb,
-0x53,
-0x45,
-0x4a,
-0x5f,
-0x43,
-0x42,
-0x30,
+0x50,
+0x50,
0x45,
0x4a,
0x20,
@@ -3039,8 +3019,8 @@ static unsigned char AmlCode[] = {
0x4a,
0x20,
0x10,
-0x46,
-0x5,
+0x42,
+0x8,
0x2e,
0x5f,
0x53,
@@ -3062,14 +3042,52 @@ static unsigned char AmlCode[] = {
0x1,
0x68,
0x0,
-0x42,
-0x30,
+0x50,
+0x50,
0x45,
0x4a,
0xa4,
0x0,
0x14,
-0x38,
+0x25,
+0x50,
+0x53,
+0x54,
+0x41,
+0x1,
+0x70,
+0x79,
+0x1,
+0x68,
+0x0,
+0x50,
+0x55,
+0x50,
+0x41,
+0x70,
+0x50,
+0x50,
+0x45,
+0x4a,
+0x60,
+0xa0,
+0xb,
+0x7b,
+0x60,
+0x79,
+0x1,
+0x68,
+0x0,
+0x0,
+0xa4,
+0xa,
+0xf,
+0xa1,
+0x3,
+0xa4,
+0x0,
+0x14,
+0x3e,
0x50,
0x43,
0x4e,
@@ -3078,8 +3096,20 @@ static unsigned char AmlCode[] = {
0x70,
0x0,
0x60,
+0x70,
+0x50,
+0x55,
+0x50,
+0x41,
+0x61,
+0x70,
+0x50,
+0x44,
+0x57,
+0x4e,
+0x62,
0xa2,
-0x2c,
+0x26,
0x95,
0x60,
0xa,
@@ -3087,12 +3117,9 @@ static unsigned char AmlCode[] = {
0x75,
0x60,
0xa0,
-0x11,
+0xe,
0x7b,
-0x50,
-0x43,
-0x49,
-0x55,
+0x61,
0x79,
0x1,
0x60,
@@ -3105,12 +3132,9 @@ static unsigned char AmlCode[] = {
0x60,
0x1,
0xa0,
-0x12,
+0xf,
0x7b,
-0x50,
-0x43,
-0x49,
-0x44,
+0x62,
0x79,
0x1,
0x60,
diff --git a/src/acpi.c b/src/acpi.c
index 107469f..056270b 100644
--- a/src/acpi.c
+++ b/src/acpi.c
@@ -486,13 +486,14 @@ build_ssdt(void)
#include "ssdt-pcihp.hex"
-#define PCI_RMV_BASE 0xae0c
+#define PCI_HOTPLUG 0xae0c
+#define PCI_PRES_EJ 0xae08
extern void link_time_assertion(void);
static void* build_pcihp(void)
{
- u32 rmvc_pcrm;
+ u32 hotpluggable, present;
int i;
u8 *ssdt = malloc_high(sizeof ssdp_pcihp_aml);
@@ -504,7 +505,7 @@ static void* build_pcihp(void)
link_time_assertion();
}
- rmvc_pcrm = inl(PCI_RMV_BASE);
+ hotpluggable = inl(PCI_HOTPLUG);
for (i = 0; i < ARRAY_SIZE(aml_ej0_name); ++i) {
/* Slot is in byte 2 in _ADR */
u8 slot = ssdp_pcihp_aml[aml_adr_dword[i] + 2] & 0x1F;
@@ -514,11 +515,29 @@ static void* build_pcihp(void)
free(ssdt);
return NULL;
}
- if (!(rmvc_pcrm & (0x1 << slot))) {
+ if (!(hotpluggable & (0x1 << slot))) {
memcpy(ssdt + aml_ej0_name[i], "EJ0_", 4);
}
}
+ /* Runtime patching of STA. If running on system that
+ * doesn't support the Present/Eject field, replace _STA
+ * with STA_ */
+ if (ARRAY_SIZE(aml_sta_name) != ARRAY_SIZE(aml_adr_dword)) {
+ link_time_assertion();
+ }
+
+ present = inl(PCI_PRES_EJ);
+ for (i = 0; present == 0 && i < ARRAY_SIZE(aml_sta_name); ++i) {
+ /* Sanity check */
+ if (memcmp(ssdp_pcihp_aml + aml_sta_name[i], "_STA", 4)) {
+ warn_internalerror();
+ free(ssdt);
+ return NULL;
+ }
+ memcpy(ssdt + aml_sta_name[i], "STA_", 4);
+ }
+
return ssdt;
}
diff --git a/src/ssdt-pcihp.dsl b/src/ssdt-pcihp.dsl
index 4b435b8..376476a 100644
--- a/src/ssdt-pcihp.dsl
+++ b/src/ssdt-pcihp.dsl
@@ -10,6 +10,7 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
/* Objects supplied by DSDT */
External (\_SB.PCI0, DeviceObj)
External (\_SB.PCI0.PCEJ, MethodObj)
+ External (\_SB.PCI0.PSTA, MethodObj)
Scope(\_SB.PCI0) {
/* Bulk generated PCI hotplug devices */
@@ -23,6 +24,8 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
Name (_ADR, 0x##slot##0000) \
ACPI_EXTRACT_METHOD_STRING aml_ej0_name \
Method (_EJ0, 1) { Return(PCEJ(0x##slot)) } \
+ ACPI_EXTRACT_METHOD_STRING aml_sta_name \
+ Method (_STA, 0) { Return(PSTA(0x##slot)) } \
Name (_SUN, 0x##slot) \
}
diff --git a/src/ssdt-pcihp.hex b/src/ssdt-pcihp.hex
index b15ad5a..f060c94 100644
--- a/src/ssdt-pcihp.hex
+++ b/src/ssdt-pcihp.hex
@@ -1,80 +1,113 @@
static unsigned short aml_adr_dword[] = {
0x3e,
-0x62,
-0x88,
-0xae,
-0xd4,
-0xfa,
-0x120,
-0x146,
-0x16c,
-0x192,
-0x1b8,
-0x1de,
-0x204,
-0x22a,
-0x250,
-0x276,
-0x29c,
-0x2c2,
-0x2e8,
-0x30e,
-0x334,
-0x35a,
-0x380,
-0x3a6,
-0x3cc,
-0x3f2,
-0x418,
-0x43e,
-0x464,
-0x48a,
-0x4b0
+0x6f,
+0xa3,
+0xd7,
+0x10b,
+0x13f,
+0x173,
+0x1a7,
+0x1db,
+0x20f,
+0x243,
+0x277,
+0x2ab,
+0x2df,
+0x313,
+0x347,
+0x37b,
+0x3af,
+0x3e3,
+0x417,
+0x44b,
+0x47f,
+0x4b3,
+0x4e7,
+0x51b,
+0x54f,
+0x583,
+0x5b7,
+0x5eb,
+0x61f,
+0x653
+};
+static unsigned short aml_sta_name[] = {
+0x51,
+0x83,
+0xb7,
+0xeb,
+0x11f,
+0x153,
+0x187,
+0x1bb,
+0x1ef,
+0x223,
+0x257,
+0x28b,
+0x2bf,
+0x2f3,
+0x327,
+0x35b,
+0x38f,
+0x3c3,
+0x3f7,
+0x42b,
+0x45f,
+0x493,
+0x4c7,
+0x4fb,
+0x52f,
+0x563,
+0x597,
+0x5cb,
+0x5ff,
+0x633,
+0x667
};
static unsigned short aml_ej0_name[] = {
0x44,
-0x68,
-0x8e,
-0xb4,
-0xda,
-0x100,
-0x126,
-0x14c,
-0x172,
-0x198,
-0x1be,
-0x1e4,
-0x20a,
-0x230,
-0x256,
-0x27c,
-0x2a2,
-0x2c8,
-0x2ee,
-0x314,
-0x33a,
-0x360,
-0x386,
-0x3ac,
-0x3d2,
-0x3f8,
-0x41e,
-0x444,
-0x46a,
-0x490,
-0x4b6
+0x75,
+0xa9,
+0xdd,
+0x111,
+0x145,
+0x179,
+0x1ad,
+0x1e1,
+0x215,
+0x249,
+0x27d,
+0x2b1,
+0x2e5,
+0x319,
+0x34d,
+0x381,
+0x3b5,
+0x3e9,
+0x41d,
+0x451,
+0x485,
+0x4b9,
+0x4ed,
+0x521,
+0x555,
+0x589,
+0x5bd,
+0x5f1,
+0x625,
+0x659
};
static unsigned char ssdp_pcihp_aml[] = {
0x53,
0x53,
0x44,
0x54,
-0x44,
-0x6,
+0xf5,
+0x7,
0x0,
0x0,
0x1,
-0x94,
+0xcd,
0x42,
0x58,
0x50,
@@ -102,8 +135,8 @@ static unsigned char ssdp_pcihp_aml[] = {
0x10,
0x20,
0x10,
-0x4f,
-0x61,
+0x40,
+0x7d,
0x5c,
0x2e,
0x5f,
@@ -116,7 +149,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x30,
0x5b,
0x82,
-0x22,
+0x2f,
0x53,
0x30,
0x31,
@@ -144,6 +177,19 @@ static unsigned char ssdp_pcihp_aml[] = {
0x45,
0x4a,
0x1,
+0x14,
+0xc,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0x1,
0x8,
0x5f,
0x53,
@@ -152,7 +198,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x1,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x30,
0x32,
@@ -181,6 +227,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x2,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x2,
0x8,
0x5f,
0x53,
@@ -190,7 +250,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x2,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x30,
0x33,
@@ -219,6 +279,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x3,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x3,
0x8,
0x5f,
0x53,
@@ -228,7 +302,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x3,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x30,
0x34,
@@ -257,6 +331,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x4,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x4,
0x8,
0x5f,
0x53,
@@ -266,7 +354,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x30,
0x35,
@@ -295,6 +383,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x5,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x5,
0x8,
0x5f,
0x53,
@@ -304,7 +406,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x5,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x30,
0x36,
@@ -333,6 +435,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x6,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x6,
0x8,
0x5f,
0x53,
@@ -342,7 +458,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x6,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x30,
0x37,
@@ -371,6 +487,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x7,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x7,
0x8,
0x5f,
0x53,
@@ -380,7 +510,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x7,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x30,
0x38,
@@ -409,6 +539,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x8,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x8,
0x8,
0x5f,
0x53,
@@ -418,7 +562,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x8,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x30,
0x39,
@@ -447,6 +591,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x9,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x9,
0x8,
0x5f,
0x53,
@@ -456,7 +614,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x9,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x30,
0x41,
@@ -485,6 +643,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0xa,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0xa,
0x8,
0x5f,
0x53,
@@ -494,7 +666,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0xa,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x30,
0x42,
@@ -523,6 +695,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0xb,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0xb,
0x8,
0x5f,
0x53,
@@ -532,7 +718,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0xb,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x30,
0x43,
@@ -561,6 +747,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0xc,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0xc,
0x8,
0x5f,
0x53,
@@ -570,7 +770,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0xc,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x30,
0x44,
@@ -599,6 +799,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0xd,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0xd,
0x8,
0x5f,
0x53,
@@ -608,7 +822,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0xd,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x30,
0x45,
@@ -637,6 +851,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0xe,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0xe,
0x8,
0x5f,
0x53,
@@ -646,7 +874,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0xe,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x30,
0x46,
@@ -675,6 +903,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0xf,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0xf,
0x8,
0x5f,
0x53,
@@ -684,7 +926,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0xf,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x31,
0x30,
@@ -713,6 +955,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x10,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x10,
0x8,
0x5f,
0x53,
@@ -722,7 +978,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x10,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x31,
0x31,
@@ -751,6 +1007,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x11,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x11,
0x8,
0x5f,
0x53,
@@ -760,7 +1030,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x11,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x31,
0x32,
@@ -789,6 +1059,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x12,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x12,
0x8,
0x5f,
0x53,
@@ -798,7 +1082,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x12,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x31,
0x33,
@@ -827,6 +1111,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x13,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x13,
0x8,
0x5f,
0x53,
@@ -836,7 +1134,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x13,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x31,
0x34,
@@ -865,6 +1163,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x14,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x14,
0x8,
0x5f,
0x53,
@@ -874,7 +1186,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x14,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x31,
0x35,
@@ -903,6 +1215,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x15,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x15,
0x8,
0x5f,
0x53,
@@ -912,7 +1238,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x15,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x31,
0x36,
@@ -941,6 +1267,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x16,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x16,
0x8,
0x5f,
0x53,
@@ -950,7 +1290,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x16,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x31,
0x37,
@@ -979,6 +1319,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x17,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x17,
0x8,
0x5f,
0x53,
@@ -988,7 +1342,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x17,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x31,
0x38,
@@ -1017,6 +1371,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x18,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x18,
0x8,
0x5f,
0x53,
@@ -1026,7 +1394,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x18,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x31,
0x39,
@@ -1055,6 +1423,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x19,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x19,
0x8,
0x5f,
0x53,
@@ -1064,7 +1446,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x19,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x31,
0x41,
@@ -1093,6 +1475,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x1a,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x1a,
0x8,
0x5f,
0x53,
@@ -1102,7 +1498,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x1a,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x31,
0x42,
@@ -1131,6 +1527,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x1b,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x1b,
0x8,
0x5f,
0x53,
@@ -1140,7 +1550,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x1b,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x31,
0x43,
@@ -1169,6 +1579,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x1c,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x1c,
0x8,
0x5f,
0x53,
@@ -1178,7 +1602,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x1c,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x31,
0x44,
@@ -1207,6 +1631,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x1d,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x1d,
0x8,
0x5f,
0x53,
@@ -1216,7 +1654,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x1d,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x31,
0x45,
@@ -1245,6 +1683,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x1e,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x1e,
0x8,
0x5f,
0x53,
@@ -1254,7 +1706,7 @@ static unsigned char ssdp_pcihp_aml[] = {
0x1e,
0x5b,
0x82,
-0x24,
+0x32,
0x53,
0x31,
0x46,
@@ -1283,6 +1735,20 @@ static unsigned char ssdp_pcihp_aml[] = {
0x4a,
0xa,
0x1f,
+0x14,
+0xd,
+0x5f,
+0x53,
+0x54,
+0x41,
+0x0,
+0xa4,
+0x50,
+0x53,
+0x54,
+0x41,
+0xa,
+0x1f,
0x8,
0x5f,
0x53,