qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables
       [not found] <20111214010645.GA2044@morn.localdomain>
@ 2012-05-09  7:24 ` Amos Kong
  2012-05-09  7:35   ` Amos Kong
                     ` (3 more replies)
  0 siblings, 4 replies; 16+ messages in thread
From: Amos Kong @ 2012-05-09  7:24 UTC (permalink / raw)
  To: mst, linux-pci, seabios, qemu-devel, jbarnes, rjw,
	alex.williamson, kevin

Boot up a Linux VM with 8 pci block devices which
are the 8 functions in one pci slot.
| # qemu-kvm ...
| -drive file=images/u0,if=none,id=drv0,format=qcow2,cache=none \
| -device virtio-blk-pci,drive=drv0,id=v0,multifunction=on,addr=0x03.0 \
| ....
| -drive file=images/u7,if=none,id=drv7,format=qcow2,cache=none \
| -device virtio-blk-pci,drive=drv7,id=v7,multifunction=on,addr=0x03.7 \

Check devices in guest.
| vm)# ls /dev/vd*
|    vda vdb vdc vde vdf vdg vdh
| vm)# lspci |grep block
| 00:03.0 SCSI storage controller: Red Hat, Inc Virtio block device
|    ...
| 00:03.7 SCSI storage controller: Red Hat, Inc Virtio block device
|

Func1~7 still exist in guest after hot-removing the whole slot
through qemu monitor.
| vm)# lspci |grep block    (00:03.0 disappeared)
| 00:03.1 SCSI storage controller: Red Hat, Inc Virtio block device (rev ff)
|    ...
| 00:03.7 SCSI storage controller: Red Hat, Inc Virtio block device (rev ff)
| vm)# ls /dev/vd*          (vda disappeared)
|    vdb vdc vde vdf vdg vdh
| vm)# mkfs /dev/vdb
|    INFO: task mkfs.ext2:1784 blocked for more than 120 seconds. (task hung)


Currently only func0 is defined in ACPI DSDT table
of seabios, and only hot-adding func0 would cause
a ACPI event for notification. Other funcs except
func0 wouldn't be registered in linux pci driver.
(we can only found func0 in slot->funcs list of
pci driver).

When VM pci driver receives an ACPI event for
hot-removing, it will only clean functions in
slot->funcs list, the other funcs could not be
cleaned.

This patch adds device per function in ACPI DSDT tables,
then all funcs will be registered in slot->funcs list.
It's coincident with microsoft's example:
http://www.microsoft.com/china/whdc/system/pnppwr/hotadd/hotplugpci.mspx#EUH

Have tested with linux/winxp/win7, hot-adding/hot-remving,
single/multiple function devices, they are all fine(all
added devices can be removed).

This patch includes some bits mst wrote, thanks!
---
old discussion: http://marc.info/?l=kvm&m=132428400917405&w=2

Signed-off-by: Amos Kong <akong@redhat.com>
CC: Michael S. Tsirkin <mst@redhat.com>
---
 src/ssdt-pcihp.dsl |   17 
 src/ssdt-pcihp.hex | 8869 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 8781 insertions(+), 105 deletions(-)

diff --git a/src/ssdt-pcihp.dsl b/src/ssdt-pcihp.dsl
index 4b435b8..2a3c326 100644
--- a/src/ssdt-pcihp.dsl
+++ b/src/ssdt-pcihp.dsl
@@ -17,14 +17,23 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
         // at runtime, if the slot is detected to not support hotplug.
         // Extract the offset of the address dword and the
         // _EJ0 name to allow this patching.
-#define hotplug_slot(slot)                              \
-        Device (S##slot) {                              \
+#define hotplug_func(slot, fn)                          \
+        Device (S##slot##fn) {                          \
            ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword  \
-           Name (_ADR, 0x##slot##0000)                  \
+           Name (_ADR, 0x##slot##000##fn)               \
            ACPI_EXTRACT_METHOD_STRING aml_ej0_name      \
            Method (_EJ0, 1) { Return(PCEJ(0x##slot)) }  \
            Name (_SUN, 0x##slot)                        \
         }
+#define hotplug_slot(slot)     \
+        hotplug_func(slot, 0)  \
+        hotplug_func(slot, 1)  \
+        hotplug_func(slot, 2)  \
+        hotplug_func(slot, 3)  \
+        hotplug_func(slot, 4)  \
+        hotplug_func(slot, 5)  \
+        hotplug_func(slot, 6)  \
+        hotplug_func(slot, 7)
 
         hotplug_slot(01)
         hotplug_slot(02)
@@ -59,7 +68,7 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
         hotplug_slot(1f)
 
 #define gen_pci_hotplug(slot)   \
-            If (LEqual(Arg0, 0x##slot)) { Notify(S##slot, Arg1) }
+            If (LEqual(Arg0, 0x##slot)) { Notify(S##slot##0, Arg1) }
 
         Method(PCNT, 2) {
             gen_pci_hotplug(01)
diff --git a/src/ssdt-pcihp.hex b/src/ssdt-pcihp.hex
index b15ad5a..b0c1e84 100644
--- a/src/ssdt-pcihp.hex
+++ b/src/ssdt-pcihp.hex
@@ -1,80 +1,514 @@
 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
+0x3f,
+0x63,
+0x87,
+0xab,
+0xcf,
+0xf3,
+0x117,
+0x13b,
+0x15f,
+0x185,
+0x1ab,
+0x1d1,
+0x1f7,
+0x21d,
+0x243,
+0x269,
+0x28f,
+0x2b5,
+0x2db,
+0x301,
+0x327,
+0x34d,
+0x373,
+0x399,
+0x3bf,
+0x3e5,
+0x40b,
+0x431,
+0x457,
+0x47d,
+0x4a3,
+0x4c9,
+0x4ef,
+0x515,
+0x53b,
+0x561,
+0x587,
+0x5ad,
+0x5d3,
+0x5f9,
+0x61f,
+0x645,
+0x66b,
+0x691,
+0x6b7,
+0x6dd,
+0x703,
+0x729,
+0x74f,
+0x775,
+0x79b,
+0x7c1,
+0x7e7,
+0x80d,
+0x833,
+0x859,
+0x87f,
+0x8a5,
+0x8cb,
+0x8f1,
+0x917,
+0x93d,
+0x963,
+0x989,
+0x9af,
+0x9d5,
+0x9fb,
+0xa21,
+0xa47,
+0xa6d,
+0xa93,
+0xab9,
+0xadf,
+0xb05,
+0xb2b,
+0xb51,
+0xb77,
+0xb9d,
+0xbc3,
+0xbe9,
+0xc0f,
+0xc35,
+0xc5b,
+0xc81,
+0xca7,
+0xccd,
+0xcf3,
+0xd19,
+0xd3f,
+0xd65,
+0xd8b,
+0xdb1,
+0xdd7,
+0xdfd,
+0xe23,
+0xe49,
+0xe6f,
+0xe95,
+0xebb,
+0xee1,
+0xf07,
+0xf2d,
+0xf53,
+0xf79,
+0xf9f,
+0xfc5,
+0xfeb,
+0x1011,
+0x1037,
+0x105d,
+0x1083,
+0x10a9,
+0x10cf,
+0x10f5,
+0x111b,
+0x1141,
+0x1167,
+0x118d,
+0x11b3,
+0x11d9,
+0x11ff,
+0x1225,
+0x124b,
+0x1271,
+0x1297,
+0x12bd,
+0x12e3,
+0x1309,
+0x132f,
+0x1355,
+0x137b,
+0x13a1,
+0x13c7,
+0x13ed,
+0x1413,
+0x1439,
+0x145f,
+0x1485,
+0x14ab,
+0x14d1,
+0x14f7,
+0x151d,
+0x1543,
+0x1569,
+0x158f,
+0x15b5,
+0x15db,
+0x1601,
+0x1627,
+0x164d,
+0x1673,
+0x1699,
+0x16bf,
+0x16e5,
+0x170b,
+0x1731,
+0x1757,
+0x177d,
+0x17a3,
+0x17c9,
+0x17ef,
+0x1815,
+0x183b,
+0x1861,
+0x1887,
+0x18ad,
+0x18d3,
+0x18f9,
+0x191f,
+0x1945,
+0x196b,
+0x1991,
+0x19b7,
+0x19dd,
+0x1a03,
+0x1a29,
+0x1a4f,
+0x1a75,
+0x1a9b,
+0x1ac1,
+0x1ae7,
+0x1b0d,
+0x1b33,
+0x1b59,
+0x1b7f,
+0x1ba5,
+0x1bcb,
+0x1bf1,
+0x1c17,
+0x1c3d,
+0x1c63,
+0x1c89,
+0x1caf,
+0x1cd5,
+0x1cfb,
+0x1d21,
+0x1d47,
+0x1d6d,
+0x1d93,
+0x1db9,
+0x1ddf,
+0x1e05,
+0x1e2b,
+0x1e51,
+0x1e77,
+0x1e9d,
+0x1ec3,
+0x1ee9,
+0x1f0f,
+0x1f35,
+0x1f5b,
+0x1f81,
+0x1fa7,
+0x1fcd,
+0x1ff3,
+0x2019,
+0x203f,
+0x2065,
+0x208b,
+0x20b1,
+0x20d7,
+0x20fd,
+0x2123,
+0x2149,
+0x216f,
+0x2195,
+0x21bb,
+0x21e1,
+0x2207,
+0x222d,
+0x2253,
+0x2279,
+0x229f,
+0x22c5,
+0x22eb,
+0x2311,
+0x2337,
+0x235d,
+0x2383,
+0x23a9,
+0x23cf,
+0x23f5,
+0x241b,
+0x2441,
+0x2467,
+0x248d,
+0x24b3,
+0x24d9
 };
 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
+0x45,
+0x69,
+0x8d,
+0xb1,
+0xd5,
+0xf9,
+0x11d,
+0x141,
+0x165,
+0x18b,
+0x1b1,
+0x1d7,
+0x1fd,
+0x223,
+0x249,
+0x26f,
+0x295,
+0x2bb,
+0x2e1,
+0x307,
+0x32d,
+0x353,
+0x379,
+0x39f,
+0x3c5,
+0x3eb,
+0x411,
+0x437,
+0x45d,
+0x483,
+0x4a9,
+0x4cf,
+0x4f5,
+0x51b,
+0x541,
+0x567,
+0x58d,
+0x5b3,
+0x5d9,
+0x5ff,
+0x625,
+0x64b,
+0x671,
+0x697,
+0x6bd,
+0x6e3,
+0x709,
+0x72f,
+0x755,
+0x77b,
+0x7a1,
+0x7c7,
+0x7ed,
+0x813,
+0x839,
+0x85f,
+0x885,
+0x8ab,
+0x8d1,
+0x8f7,
+0x91d,
+0x943,
+0x969,
+0x98f,
+0x9b5,
+0x9db,
+0xa01,
+0xa27,
+0xa4d,
+0xa73,
+0xa99,
+0xabf,
+0xae5,
+0xb0b,
+0xb31,
+0xb57,
+0xb7d,
+0xba3,
+0xbc9,
+0xbef,
+0xc15,
+0xc3b,
+0xc61,
+0xc87,
+0xcad,
+0xcd3,
+0xcf9,
+0xd1f,
+0xd45,
+0xd6b,
+0xd91,
+0xdb7,
+0xddd,
+0xe03,
+0xe29,
+0xe4f,
+0xe75,
+0xe9b,
+0xec1,
+0xee7,
+0xf0d,
+0xf33,
+0xf59,
+0xf7f,
+0xfa5,
+0xfcb,
+0xff1,
+0x1017,
+0x103d,
+0x1063,
+0x1089,
+0x10af,
+0x10d5,
+0x10fb,
+0x1121,
+0x1147,
+0x116d,
+0x1193,
+0x11b9,
+0x11df,
+0x1205,
+0x122b,
+0x1251,
+0x1277,
+0x129d,
+0x12c3,
+0x12e9,
+0x130f,
+0x1335,
+0x135b,
+0x1381,
+0x13a7,
+0x13cd,
+0x13f3,
+0x1419,
+0x143f,
+0x1465,
+0x148b,
+0x14b1,
+0x14d7,
+0x14fd,
+0x1523,
+0x1549,
+0x156f,
+0x1595,
+0x15bb,
+0x15e1,
+0x1607,
+0x162d,
+0x1653,
+0x1679,
+0x169f,
+0x16c5,
+0x16eb,
+0x1711,
+0x1737,
+0x175d,
+0x1783,
+0x17a9,
+0x17cf,
+0x17f5,
+0x181b,
+0x1841,
+0x1867,
+0x188d,
+0x18b3,
+0x18d9,
+0x18ff,
+0x1925,
+0x194b,
+0x1971,
+0x1997,
+0x19bd,
+0x19e3,
+0x1a09,
+0x1a2f,
+0x1a55,
+0x1a7b,
+0x1aa1,
+0x1ac7,
+0x1aed,
+0x1b13,
+0x1b39,
+0x1b5f,
+0x1b85,
+0x1bab,
+0x1bd1,
+0x1bf7,
+0x1c1d,
+0x1c43,
+0x1c69,
+0x1c8f,
+0x1cb5,
+0x1cdb,
+0x1d01,
+0x1d27,
+0x1d4d,
+0x1d73,
+0x1d99,
+0x1dbf,
+0x1de5,
+0x1e0b,
+0x1e31,
+0x1e57,
+0x1e7d,
+0x1ea3,
+0x1ec9,
+0x1eef,
+0x1f15,
+0x1f3b,
+0x1f61,
+0x1f87,
+0x1fad,
+0x1fd3,
+0x1ff9,
+0x201f,
+0x2045,
+0x206b,
+0x2091,
+0x20b7,
+0x20dd,
+0x2103,
+0x2129,
+0x214f,
+0x2175,
+0x219b,
+0x21c1,
+0x21e7,
+0x220d,
+0x2233,
+0x2259,
+0x227f,
+0x22a5,
+0x22cb,
+0x22f1,
+0x2317,
+0x233d,
+0x2363,
+0x2389,
+0x23af,
+0x23d5,
+0x23fb,
+0x2421,
+0x2447,
+0x246d,
+0x2493,
+0x24b9,
+0x24df
 };
 static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x53,
 0x44,
 0x54,
-0x44,
-0x6,
+0x6d,
+0x26,
 0x0,
 0x0,
 0x1,
-0x94,
+0x7f,
 0x42,
 0x58,
 0x50,
@@ -97,13 +531,14 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x4e,
 0x54,
 0x4c,
-0x28,
-0x5,
-0x10,
+0x23,
+0x1,
+0x9,
 0x20,
 0x10,
-0x4f,
-0x61,
+0x88,
+0x64,
+0x2,
 0x5c,
 0x2e,
 0x5f,
@@ -120,14 +555,266 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x31,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1,
+0x0,
+0x14,
+0xc,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0x1,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0x1,
+0x5b,
+0x82,
+0x22,
+0x53,
+0x30,
+0x31,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x1,
+0x0,
+0x14,
+0xc,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0x1,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0x1,
+0x5b,
+0x82,
+0x22,
+0x53,
+0x30,
+0x31,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0x1,
+0x0,
+0x14,
+0xc,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0x1,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0x1,
+0x5b,
+0x82,
+0x22,
+0x53,
+0x30,
+0x31,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x1,
+0x0,
+0x14,
+0xc,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0x1,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0x1,
+0x5b,
+0x82,
+0x22,
+0x53,
+0x30,
+0x31,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x1,
+0x0,
+0x14,
+0xc,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0x1,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0x1,
+0x5b,
+0x82,
+0x22,
+0x53,
+0x30,
+0x31,
+0x35,
+0x8,
 0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x1,
+0x0,
+0x14,
+0xc,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0x1,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0x1,
+0x5b,
+0x82,
+0x22,
+0x53,
+0x30,
+0x31,
+0x36,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x6,
+0x0,
+0x1,
 0x0,
+0x14,
+0xc,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0x1,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0x1,
+0x5b,
+0x82,
+0x22,
+0x53,
+0x30,
+0x31,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
 0x0,
 0x1,
 0x0,
@@ -156,14 +843,90 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x32,
+0x30,
+0x8,
 0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x2,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x2,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x2,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x32,
+0x31,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x1,
+0x0,
+0x2,
 0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x2,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x2,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x32,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
 0x0,
 0x2,
 0x0,
@@ -193,15 +956,281 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x24,
 0x53,
 0x30,
+0x32,
 0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x2,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x2,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x2,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x32,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x2,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x2,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x2,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x32,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x2,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x2,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x2,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x32,
+0x36,
+0x8,
 0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x2,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x2,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x2,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x32,
+0x37,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x7,
 0x0,
+0x2,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x2,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x2,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x33,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x3,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x3,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x3,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x33,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x3,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x3,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x3,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x33,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
 0x0,
 0x3,
 0x0,
@@ -231,15 +1260,281 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x24,
 0x53,
 0x30,
+0x33,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x3,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x3,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x3,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x33,
 0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x3,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x3,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x3,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x33,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x3,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x3,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x3,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x33,
+0x36,
+0x8,
 0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x3,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x3,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x3,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x33,
+0x37,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x7,
 0x0,
+0x3,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x3,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x3,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x34,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x4,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x4,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x4,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x34,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x4,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x4,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x4,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x34,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
 0x0,
 0x4,
 0x0,
@@ -269,15 +1564,395 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x24,
 0x53,
 0x30,
+0x34,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x4,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x4,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x4,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x34,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x4,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x4,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x4,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x34,
 0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x4,
+0x0,
+0x14,
+0xd,
 0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x4,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x4,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x34,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x4,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x4,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x4,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x34,
+0x37,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x7,
 0x0,
+0x4,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x4,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x4,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x35,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x5,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x5,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x5,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x35,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x5,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x5,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x5,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x35,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0x5,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x5,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x5,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x35,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x5,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x5,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x5,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x35,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x5,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x5,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x5,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x35,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
 0x0,
 0x5,
 0x0,
@@ -307,15 +1982,357 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x24,
 0x53,
 0x30,
+0x35,
 0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x5,
+0x0,
+0x14,
+0xd,
 0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x5,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x5,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x35,
+0x37,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x7,
+0x0,
+0x5,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x5,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x5,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x36,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x6,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x6,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x6,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x36,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x6,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x6,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x6,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x36,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0x6,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x6,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x6,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x36,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x6,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x6,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x6,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x36,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x6,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x6,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x6,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x36,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x6,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x6,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x6,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x36,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
 0x0,
+0x6,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x6,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x6,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x36,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
 0x0,
 0x6,
 0x0,
@@ -346,14 +2363,204 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x37,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x7,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x7,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x7,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x37,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x7,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x7,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x7,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x37,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0x7,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x7,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x7,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x37,
+0x33,
+0x8,
 0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x7,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x7,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x7,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x37,
+0x34,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x4,
+0x0,
+0x7,
 0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x7,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x7,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x37,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
 0x0,
 0x7,
 0x0,
@@ -383,8 +2590,388 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x24,
 0x53,
 0x30,
+0x37,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x7,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x7,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x7,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x37,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
+0x0,
+0x7,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x7,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x7,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x38,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x8,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x8,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x8,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x38,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x8,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x8,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x8,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x38,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0x8,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x8,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x8,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x38,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x8,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x8,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x8,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x38,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x8,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x8,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x8,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x38,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x8,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x8,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x8,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
 0x38,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x8,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x8,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x8,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x38,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
+0x0,
+0x8,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x8,
+0x8,
 0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x8,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x39,
+0x30,
 0x8,
 0x5f,
 0x41,
@@ -393,7 +2980,83 @@ static unsigned char ssdp_pcihp_aml[] = {
 0xc,
 0x0,
 0x0,
+0x9,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x9,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x9,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x39,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x9,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x9,
 0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x9,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x39,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0x9,
 0x0,
 0x14,
 0xd,
@@ -408,28 +3071,180 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x45,
 0x4a,
 0xa,
+0x9,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x9,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x39,
+0x33,
 0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x9,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x9,
 0x8,
 0x5f,
 0x53,
 0x55,
 0x4e,
 0xa,
+0x9,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x39,
+0x34,
 0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x9,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x9,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x9,
 0x5b,
 0x82,
 0x24,
 0x53,
 0x30,
 0x39,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x9,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x9,
+0x8,
 0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x9,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x39,
+0x36,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x6,
 0x0,
+0x9,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x9,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x9,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x39,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
 0x0,
 0x9,
 0x0,
@@ -460,14 +3275,280 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x41,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xa,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xa,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xa,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x41,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0xa,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xa,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xa,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x41,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0xa,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xa,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xa,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x41,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0xa,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xa,
+0x8,
 0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xa,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x41,
+0x34,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x4,
 0x0,
+0xa,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xa,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xa,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x41,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0xa,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xa,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xa,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x41,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0xa,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xa,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xa,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x41,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
 0x0,
 0xa,
 0x0,
@@ -498,14 +3579,90 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x42,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xb,
+0x0,
+0x14,
+0xd,
 0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xb,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xb,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x42,
+0x31,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x1,
+0x0,
+0xb,
 0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xb,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xb,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x42,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
 0x0,
 0xb,
 0x0,
@@ -535,17 +3692,93 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x24,
 0x53,
 0x30,
+0x42,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0xb,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
 0x43,
+0x45,
+0x4a,
+0xa,
+0xb,
+0x8,
 0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xb,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x42,
+0x34,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x4,
 0x0,
+0xb,
 0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xb,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xb,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x42,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
 0xc,
+0x5,
+0x0,
+0xb,
 0x0,
 0x14,
 0xd,
@@ -560,30 +3793,182 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x45,
 0x4a,
 0xa,
+0xb,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xb,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x42,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
 0xc,
+0x6,
+0x0,
+0xb,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xb,
 0x8,
 0x5f,
 0x53,
 0x55,
 0x4e,
 0xa,
+0xb,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x42,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
 0xc,
+0x7,
+0x0,
+0xb,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xb,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xb,
 0x5b,
 0x82,
 0x24,
 0x53,
 0x30,
+0x43,
+0x30,
+0x8,
+0x5f,
+0x41,
 0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xc,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xc,
+0x8,
 0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xc,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x43,
+0x31,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x1,
 0x0,
+0xc,
 0x0,
+0x14,
 0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xc,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xc,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x43,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0xc,
 0x0,
 0x14,
 0xd,
@@ -598,28 +3983,788 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x45,
 0x4a,
 0xa,
+0xc,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xc,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x43,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0xc,
+0x0,
+0x14,
 0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xc,
 0x8,
 0x5f,
 0x53,
 0x55,
 0x4e,
 0xa,
+0xc,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x43,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0xc,
+0x0,
+0x14,
 0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xc,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xc,
 0x5b,
 0x82,
 0x24,
 0x53,
 0x30,
+0x43,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0xc,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
 0x45,
+0x4a,
+0xa,
+0xc,
+0x8,
 0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xc,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x43,
+0x36,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x6,
+0x0,
+0xc,
 0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xc,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xc,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x43,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
+0x0,
+0xc,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xc,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xc,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x44,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xd,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xd,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xd,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x44,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0xd,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xd,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xd,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x44,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0xd,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xd,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xd,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x44,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0xd,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xd,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xd,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x44,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0xd,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xd,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xd,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x44,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0xd,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xd,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xd,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x44,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0xd,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xd,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xd,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x44,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
+0x0,
+0xd,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xd,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xd,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x45,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xe,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xe,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xe,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x45,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0xe,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xe,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xe,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x45,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0xe,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xe,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xe,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x45,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0xe,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xe,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xe,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x45,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0xe,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xe,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xe,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x45,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0xe,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xe,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xe,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x45,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0xe,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xe,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xe,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x45,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
 0x0,
 0xe,
 0x0,
@@ -650,14 +4795,280 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x46,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xf,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xf,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xf,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x46,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0xf,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xf,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xf,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x46,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0xf,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xf,
+0x8,
 0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xf,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x46,
+0x33,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x3,
 0x0,
+0xf,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xf,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xf,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x46,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0xf,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xf,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xf,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x46,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0xf,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xf,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xf,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x46,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0xf,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xf,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xf,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x46,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
 0x0,
 0xf,
 0x0,
@@ -688,14 +5099,90 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x30,
+0x30,
+0x8,
 0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x10,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x10,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x10,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x30,
+0x31,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x1,
 0x0,
+0x10,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x10,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x10,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x30,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
 0x0,
 0x10,
 0x0,
@@ -725,15 +5212,471 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x24,
 0x53,
 0x31,
+0x30,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x10,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x10,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x10,
+0x5b,
+0x82,
+0x24,
+0x53,
 0x31,
+0x30,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x10,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x10,
+0x8,
 0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x10,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x30,
+0x35,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x5,
 0x0,
+0x10,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x10,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x10,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x30,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x10,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x10,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x10,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x30,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
+0x0,
+0x10,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x10,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x10,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x31,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x11,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x11,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x11,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x31,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x11,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x11,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x11,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x31,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0x11,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x11,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x11,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x31,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x11,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x11,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x11,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x31,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x11,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x11,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x11,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x31,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x11,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x11,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x11,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x31,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x11,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x11,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x11,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x31,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
 0x0,
 0x11,
 0x0,
@@ -764,14 +5707,90 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x32,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x12,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x12,
+0x8,
 0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x12,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x32,
+0x31,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x1,
 0x0,
+0x12,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x12,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x12,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x32,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
 0x0,
 0x12,
 0x0,
@@ -801,15 +5820,319 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x24,
 0x53,
 0x31,
+0x32,
 0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x12,
+0x0,
+0x14,
+0xd,
 0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x12,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x12,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x32,
+0x34,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x4,
 0x0,
+0x12,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x12,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x12,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x32,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x12,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x12,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x12,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x32,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x12,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x12,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x12,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x32,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
+0x0,
+0x12,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x12,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x12,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x33,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x13,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x13,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x13,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x33,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x13,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x13,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x13,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x33,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0x13,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x13,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x13,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x33,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
 0x0,
 0x13,
 0x0,
@@ -839,8 +6162,160 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x24,
 0x53,
 0x31,
+0x33,
 0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x13,
+0x0,
+0x14,
+0xd,
 0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x13,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x13,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x33,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x13,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x13,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x13,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x33,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x13,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x13,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x13,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x33,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
+0x0,
+0x13,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x13,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x13,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x34,
+0x30,
 0x8,
 0x5f,
 0x41,
@@ -877,15 +6352,395 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x24,
 0x53,
 0x31,
+0x34,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x14,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x14,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x14,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x34,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0x14,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x14,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x14,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x34,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x14,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x14,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x14,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x34,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x14,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x14,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x14,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x34,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x14,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x14,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x14,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x34,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x14,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x14,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x14,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x34,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
+0x0,
+0x14,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x14,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x14,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x35,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x15,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x15,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x15,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
 0x35,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x15,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x15,
+0x8,
 0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x15,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x35,
+0x32,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x2,
 0x0,
+0x15,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x15,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x15,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x35,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
 0x0,
 0x15,
 0x0,
@@ -915,15 +6770,433 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x24,
 0x53,
 0x31,
+0x35,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x15,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x15,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x15,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x35,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x15,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x15,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x15,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x35,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x15,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x15,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x15,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x35,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
+0x0,
+0x15,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x15,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x15,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x36,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x16,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x16,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x16,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x36,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x16,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x16,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x16,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x36,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0x16,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x16,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x16,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x36,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x16,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x16,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x16,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
 0x36,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x16,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x16,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x16,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x36,
+0x35,
+0x8,
 0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x16,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x16,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x16,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x36,
+0x36,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x6,
 0x0,
+0x16,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x16,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x16,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x36,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
 0x0,
 0x16,
 0x0,
@@ -954,14 +7227,280 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x37,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x17,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x17,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x17,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x37,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x17,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x17,
+0x8,
 0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x17,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x37,
+0x32,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x2,
 0x0,
+0x17,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x17,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x17,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x37,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x17,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x17,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x17,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x37,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x17,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x17,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x17,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x37,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x17,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x17,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x17,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x37,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x17,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x17,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x17,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x37,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
 0x0,
 0x17,
 0x0,
@@ -992,14 +7531,280 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x38,
+0x30,
+0x8,
 0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x18,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x18,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x18,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x38,
+0x31,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x1,
+0x0,
+0x18,
 0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x18,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x18,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x38,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0x18,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x18,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x18,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x38,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x18,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x18,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x18,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x38,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x18,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x18,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x18,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x38,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x18,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x18,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x18,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x38,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x18,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x18,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x18,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x38,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
 0x0,
 0x18,
 0x0,
@@ -1030,14 +7835,90 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x39,
+0x30,
+0x8,
 0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x19,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x19,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x19,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x39,
+0x31,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x1,
 0x0,
+0x19,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x19,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x19,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x39,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
 0x0,
 0x19,
 0x0,
@@ -1067,15 +7948,471 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x24,
 0x53,
 0x31,
+0x39,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x19,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x19,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x19,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x39,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x19,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x19,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x19,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x39,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x19,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x19,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x19,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x39,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x19,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x19,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x19,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x39,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
+0x0,
+0x19,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x19,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x19,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x41,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1a,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1a,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1a,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x41,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x1a,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1a,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1a,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x41,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0x1a,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1a,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1a,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x41,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x1a,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1a,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1a,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x41,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x1a,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1a,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1a,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
 0x41,
+0x35,
+0x8,
 0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x1a,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1a,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1a,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x41,
+0x36,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x6,
+0x0,
+0x1a,
 0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1a,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1a,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x41,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
 0x0,
 0x1a,
 0x0,
@@ -1106,14 +8443,90 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x42,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1b,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1b,
+0x8,
 0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1b,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x42,
+0x31,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x1,
 0x0,
+0x1b,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1b,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1b,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x42,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
 0x0,
 0x1b,
 0x0,
@@ -1143,15 +8556,471 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x24,
 0x53,
 0x31,
+0x42,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x1b,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1b,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1b,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x42,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x1b,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1b,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1b,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x42,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x1b,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1b,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1b,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x42,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x1b,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1b,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1b,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x42,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
+0x0,
+0x1b,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1b,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1b,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x43,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1c,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1c,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1c,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x43,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x1c,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1c,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1c,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x43,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0x1c,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1c,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1c,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x43,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x1c,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1c,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1c,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x43,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x1c,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1c,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1c,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x43,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x1c,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
 0x43,
+0x45,
+0x4a,
+0xa,
+0x1c,
+0x8,
 0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1c,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x43,
+0x36,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x6,
 0x0,
+0x1c,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1c,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1c,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x43,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
 0x0,
 0x1c,
 0x0,
@@ -1182,14 +9051,90 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x44,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1d,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1d,
+0x8,
 0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1d,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x44,
+0x31,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x1,
 0x0,
+0x1d,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1d,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1d,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x44,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
 0x0,
 0x1d,
 0x0,
@@ -1219,15 +9164,471 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x24,
 0x53,
 0x31,
+0x44,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x1d,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1d,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1d,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x44,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x1d,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1d,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1d,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x44,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x1d,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1d,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1d,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x44,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x1d,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1d,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1d,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x44,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
+0x0,
+0x1d,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1d,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1d,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x45,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1e,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1e,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1e,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x45,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x1,
+0x0,
+0x1e,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1e,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1e,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x45,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0x1e,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1e,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1e,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x45,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x1e,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1e,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1e,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x45,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x1e,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1e,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1e,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x45,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x1e,
+0x0,
+0x14,
+0xd,
+0x5f,
 0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1e,
+0x8,
 0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1e,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x45,
+0x36,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x6,
 0x0,
+0x1e,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1e,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1e,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x45,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
 0x0,
 0x1e,
 0x0,
@@ -1258,14 +9659,280 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x46,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1f,
+0x0,
+0x14,
+0xd,
 0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1f,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1f,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x46,
+0x31,
 0x8,
 0x5f,
 0x41,
 0x44,
 0x52,
 0xc,
+0x1,
 0x0,
+0x1f,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1f,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1f,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x46,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x2,
+0x0,
+0x1f,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1f,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1f,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x46,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x3,
+0x0,
+0x1f,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1f,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1f,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x46,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x4,
+0x0,
+0x1f,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1f,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1f,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x46,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x5,
+0x0,
+0x1f,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1f,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1f,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x46,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x6,
+0x0,
+0x1f,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1f,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1f,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x46,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x7,
 0x0,
 0x1f,
 0x0,
@@ -1307,7 +9974,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x31,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1319,7 +9986,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x32,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1331,7 +9998,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x33,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1343,7 +10010,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x34,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1355,7 +10022,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x35,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1367,7 +10034,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x36,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1379,7 +10046,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x37,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1391,7 +10058,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x38,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1403,7 +10070,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x39,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1415,7 +10082,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x41,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1427,7 +10094,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x42,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1439,7 +10106,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x43,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1451,7 +10118,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x44,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1463,7 +10130,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x45,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1475,7 +10142,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x30,
 0x46,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1487,7 +10154,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x30,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1499,7 +10166,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x31,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1511,7 +10178,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x32,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1523,7 +10190,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x33,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1535,7 +10202,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x34,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1547,7 +10214,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x35,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1559,7 +10226,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x36,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1571,7 +10238,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x37,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1583,7 +10250,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x38,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1595,7 +10262,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x39,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1607,7 +10274,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x41,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1619,7 +10286,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x42,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1631,7 +10298,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x43,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1643,7 +10310,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x44,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1655,7 +10322,7 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x45,
-0x5f,
+0x30,
 0x69,
 0xa0,
 0xb,
@@ -1667,6 +10334,6 @@ static unsigned char ssdp_pcihp_aml[] = {
 0x53,
 0x31,
 0x46,
-0x5f,
+0x30,
 0x69
 };

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables
  2012-05-09  7:24 ` [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables Amos Kong
@ 2012-05-09  7:35   ` Amos Kong
  2012-05-09  8:46   ` Michael S. Tsirkin
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 16+ messages in thread
From: Amos Kong @ 2012-05-09  7:35 UTC (permalink / raw)
  To: mst, linux-pci, seabios, qemu-devel, jbarnes, rjw,
	alex.williamson, kevin

[-- Attachment #1: Type: text/plain, Size: 4619 bytes --]

On 09/05/12 15:24, Amos Kong wrote:
> Boot up a Linux VM with 8 pci block devices which
> are the 8 functions in one pci slot.
> | # qemu-kvm ...
> | -drive file=images/u0,if=none,id=drv0,format=qcow2,cache=none \
> | -device virtio-blk-pci,drive=drv0,id=v0,multifunction=on,addr=0x03.0 \
> | ....
> | -drive file=images/u7,if=none,id=drv7,format=qcow2,cache=none \
> | -device virtio-blk-pci,drive=drv7,id=v7,multifunction=on,addr=0x03.7 \
>
> Check devices in guest.
> | vm)# ls /dev/vd*
> |    vda vdb vdc vde vdf vdg vdh
> | vm)# lspci |grep block
> | 00:03.0 SCSI storage controller: Red Hat, Inc Virtio block device
> |    ...
> | 00:03.7 SCSI storage controller: Red Hat, Inc Virtio block device
> |
>
> Func1~7 still exist in guest after hot-removing the whole slot
> through qemu monitor.
> | vm)# lspci |grep block    (00:03.0 disappeared)
> | 00:03.1 SCSI storage controller: Red Hat, Inc Virtio block device (rev ff)
> |    ...
> | 00:03.7 SCSI storage controller: Red Hat, Inc Virtio block device (rev ff)
> | vm)# ls /dev/vd*          (vda disappeared)
> |    vdb vdc vde vdf vdg vdh
> | vm)# mkfs /dev/vdb
> |    INFO: task mkfs.ext2:1784 blocked for more than 120 seconds. (task hung)
>
>
> Currently only func0 is defined in ACPI DSDT table
> of seabios, and only hot-adding func0 would cause
> a ACPI event for notification. Other funcs except
> func0 wouldn't be registered in linux pci driver.
> (we can only found func0 in slot->funcs list of
> pci driver).
>
> When VM pci driver receives an ACPI event for
> hot-removing, it will only clean functions in
> slot->funcs list, the other funcs could not be
> cleaned.
>
> This patch adds device per function in ACPI DSDT tables,
> then all funcs will be registered in slot->funcs list.
> It's coincident with microsoft's example:
> http://www.microsoft.com/china/whdc/system/pnppwr/hotadd/hotplugpci.mspx#EUH

Attached 'seabios/out/ssdt-pcihp.dsl.i'.

btw, the first mail is little big (86K), please delete hex part
when you reply, thanks.


> Have tested with linux/winxp/win7, hot-adding/hot-remving,
> single/multiple function devices, they are all fine(all
> added devices can be removed).
>
> This patch includes some bits mst wrote, thanks!
> ---
> old discussion: http://marc.info/?l=kvm&m=132428400917405&w=2
>
> Signed-off-by: Amos Kong<akong@redhat.com>
> CC: Michael S. Tsirkin<mst@redhat.com>
> ---
>   src/ssdt-pcihp.dsl |   17
>   src/ssdt-pcihp.hex | 8869 +++++++++++++++++++++++++++++++++++++++++++++++++++-
>   2 files changed, 8781 insertions(+), 105 deletions(-)
>
> diff --git a/src/ssdt-pcihp.dsl b/src/ssdt-pcihp.dsl
> index 4b435b8..2a3c326 100644
> --- a/src/ssdt-pcihp.dsl
> +++ b/src/ssdt-pcihp.dsl
> @@ -17,14 +17,23 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
>           // at runtime, if the slot is detected to not support hotplug.
>           // Extract the offset of the address dword and the
>           // _EJ0 name to allow this patching.
> -#define hotplug_slot(slot)                              \
> -        Device (S##slot) {                              \
> +#define hotplug_func(slot, fn)                          \
> +        Device (S##slot##fn) {                          \
>              ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword  \
> -           Name (_ADR, 0x##slot##0000)                  \
> +           Name (_ADR, 0x##slot##000##fn)               \
>              ACPI_EXTRACT_METHOD_STRING aml_ej0_name      \
>              Method (_EJ0, 1) { Return(PCEJ(0x##slot)) }  \
>              Name (_SUN, 0x##slot)                        \
>           }
> +#define hotplug_slot(slot)     \
> +        hotplug_func(slot, 0)  \
> +        hotplug_func(slot, 1)  \
> +        hotplug_func(slot, 2)  \
> +        hotplug_func(slot, 3)  \
> +        hotplug_func(slot, 4)  \
> +        hotplug_func(slot, 5)  \
> +        hotplug_func(slot, 6)  \
> +        hotplug_func(slot, 7)
>
>           hotplug_slot(01)
>           hotplug_slot(02)
> @@ -59,7 +68,7 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
>           hotplug_slot(1f)
>
>   #define gen_pci_hotplug(slot)   \
> -            If (LEqual(Arg0, 0x##slot)) { Notify(S##slot, Arg1) }
> +            If (LEqual(Arg0, 0x##slot)) { Notify(S##slot##0, Arg1) }
>
>           Method(PCNT, 2) {
>               gen_pci_hotplug(01)
> diff --git a/src/ssdt-pcihp.hex b/src/ssdt-pcihp.hex
> index b15ad5a..b0c1e84 100644
> --- a/src/ssdt-pcihp.hex
> +++ b/src/ssdt-pcihp.hex
> @@ -1,80 +1,514 @@
>   static unsigned short aml_adr_dword[] = {
> -0x3e,
> -0x62,
> -0x88,

....

-- 
			Amos.

[-- Attachment #2: ssdt-pcihp.dsl.i --]
[-- Type: text/plain, Size: 51457 bytes --]


/* ACPI_EXTRACT_ALL_CODE ssdp_pcihp_aml */


DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
{






    External (\_SB.PCI0, DeviceObj)
    External (\_SB.PCI0.PCEJ, MethodObj)

    Scope(\_SB.PCI0) {
        Device (S010) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x010000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x01)) } Name (_SUN, 0x01) } Device (S011) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x010001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x01)) } Name (_SUN, 0x01) } Device (S012) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x010002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x01)) } Name (_SUN, 0x01) } Device (S013) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x010003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x01)) } Name (_SUN, 0x01) } Device (S014) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x010004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x01)) } Name (_SUN, 0x01) } Device (S015) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x010005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x01)) } Name (_SUN, 0x01) } Device (S016) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x010006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x01)) } Name (_SUN, 0x01) } Device (S017) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x010007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x01)) } Name (_SUN, 0x01) }
        Device (S020) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x020000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x02)) } Name (_SUN, 0x02) } Device (S021) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x020001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x02)) } Name (_SUN, 0x02) } Device (S022) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x020002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x02)) } Name (_SUN, 0x02) } Device (S023) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x020003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x02)) } Name (_SUN, 0x02) } Device (S024) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x020004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x02)) } Name (_SUN, 0x02) } Device (S025) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x020005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x02)) } Name (_SUN, 0x02) } Device (S026) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x020006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x02)) } Name (_SUN, 0x02) } Device (S027) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x020007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x02)) } Name (_SUN, 0x02) }
        Device (S030) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x030000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x03)) } Name (_SUN, 0x03) } Device (S031) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x030001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x03)) } Name (_SUN, 0x03) } Device (S032) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x030002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x03)) } Name (_SUN, 0x03) } Device (S033) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x030003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x03)) } Name (_SUN, 0x03) } Device (S034) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x030004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x03)) } Name (_SUN, 0x03) } Device (S035) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x030005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x03)) } Name (_SUN, 0x03) } Device (S036) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x030006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x03)) } Name (_SUN, 0x03) } Device (S037) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x030007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x03)) } Name (_SUN, 0x03) }
        Device (S040) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x040000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x04)) } Name (_SUN, 0x04) } Device (S041) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x040001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x04)) } Name (_SUN, 0x04) } Device (S042) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x040002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x04)) } Name (_SUN, 0x04) } Device (S043) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x040003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x04)) } Name (_SUN, 0x04) } Device (S044) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x040004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x04)) } Name (_SUN, 0x04) } Device (S045) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x040005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x04)) } Name (_SUN, 0x04) } Device (S046) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x040006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x04)) } Name (_SUN, 0x04) } Device (S047) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x040007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x04)) } Name (_SUN, 0x04) }
        Device (S050) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x050000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x05)) } Name (_SUN, 0x05) } Device (S051) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x050001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x05)) } Name (_SUN, 0x05) } Device (S052) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x050002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x05)) } Name (_SUN, 0x05) } Device (S053) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x050003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x05)) } Name (_SUN, 0x05) } Device (S054) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x050004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x05)) } Name (_SUN, 0x05) } Device (S055) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x050005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x05)) } Name (_SUN, 0x05) } Device (S056) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x050006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x05)) } Name (_SUN, 0x05) } Device (S057) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x050007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x05)) } Name (_SUN, 0x05) }
        Device (S060) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x060000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x06)) } Name (_SUN, 0x06) } Device (S061) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x060001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x06)) } Name (_SUN, 0x06) } Device (S062) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x060002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x06)) } Name (_SUN, 0x06) } Device (S063) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x060003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x06)) } Name (_SUN, 0x06) } Device (S064) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x060004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x06)) } Name (_SUN, 0x06) } Device (S065) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x060005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x06)) } Name (_SUN, 0x06) } Device (S066) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x060006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x06)) } Name (_SUN, 0x06) } Device (S067) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x060007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x06)) } Name (_SUN, 0x06) }
        Device (S070) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x070000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x07)) } Name (_SUN, 0x07) } Device (S071) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x070001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x07)) } Name (_SUN, 0x07) } Device (S072) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x070002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x07)) } Name (_SUN, 0x07) } Device (S073) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x070003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x07)) } Name (_SUN, 0x07) } Device (S074) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x070004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x07)) } Name (_SUN, 0x07) } Device (S075) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x070005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x07)) } Name (_SUN, 0x07) } Device (S076) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x070006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x07)) } Name (_SUN, 0x07) } Device (S077) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x070007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x07)) } Name (_SUN, 0x07) }
        Device (S080) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x080000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x08)) } Name (_SUN, 0x08) } Device (S081) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x080001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x08)) } Name (_SUN, 0x08) } Device (S082) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x080002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x08)) } Name (_SUN, 0x08) } Device (S083) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x080003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x08)) } Name (_SUN, 0x08) } Device (S084) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x080004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x08)) } Name (_SUN, 0x08) } Device (S085) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x080005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x08)) } Name (_SUN, 0x08) } Device (S086) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x080006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x08)) } Name (_SUN, 0x08) } Device (S087) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x080007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x08)) } Name (_SUN, 0x08) }
        Device (S090) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x090000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x09)) } Name (_SUN, 0x09) } Device (S091) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x090001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x09)) } Name (_SUN, 0x09) } Device (S092) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x090002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x09)) } Name (_SUN, 0x09) } Device (S093) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x090003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x09)) } Name (_SUN, 0x09) } Device (S094) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x090004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x09)) } Name (_SUN, 0x09) } Device (S095) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x090005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x09)) } Name (_SUN, 0x09) } Device (S096) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x090006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x09)) } Name (_SUN, 0x09) } Device (S097) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x090007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x09)) } Name (_SUN, 0x09) }
        Device (S0a0) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0a0000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0a)) } Name (_SUN, 0x0a) } Device (S0a1) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0a0001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0a)) } Name (_SUN, 0x0a) } Device (S0a2) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0a0002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0a)) } Name (_SUN, 0x0a) } Device (S0a3) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0a0003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0a)) } Name (_SUN, 0x0a) } Device (S0a4) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0a0004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0a)) } Name (_SUN, 0x0a) } Device (S0a5) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0a0005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0a)) } Name (_SUN, 0x0a) } Device (S0a6) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0a0006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0a)) } Name (_SUN, 0x0a) } Device (S0a7) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0a0007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0a)) } Name (_SUN, 0x0a) }
        Device (S0b0) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0b0000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0b)) } Name (_SUN, 0x0b) } Device (S0b1) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0b0001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0b)) } Name (_SUN, 0x0b) } Device (S0b2) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0b0002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0b)) } Name (_SUN, 0x0b) } Device (S0b3) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0b0003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0b)) } Name (_SUN, 0x0b) } Device (S0b4) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0b0004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0b)) } Name (_SUN, 0x0b) } Device (S0b5) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0b0005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0b)) } Name (_SUN, 0x0b) } Device (S0b6) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0b0006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0b)) } Name (_SUN, 0x0b) } Device (S0b7) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0b0007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0b)) } Name (_SUN, 0x0b) }
        Device (S0c0) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0c0000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0c)) } Name (_SUN, 0x0c) } Device (S0c1) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0c0001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0c)) } Name (_SUN, 0x0c) } Device (S0c2) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0c0002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0c)) } Name (_SUN, 0x0c) } Device (S0c3) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0c0003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0c)) } Name (_SUN, 0x0c) } Device (S0c4) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0c0004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0c)) } Name (_SUN, 0x0c) } Device (S0c5) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0c0005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0c)) } Name (_SUN, 0x0c) } Device (S0c6) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0c0006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0c)) } Name (_SUN, 0x0c) } Device (S0c7) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0c0007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0c)) } Name (_SUN, 0x0c) }
        Device (S0d0) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0d0000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0d)) } Name (_SUN, 0x0d) } Device (S0d1) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0d0001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0d)) } Name (_SUN, 0x0d) } Device (S0d2) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0d0002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0d)) } Name (_SUN, 0x0d) } Device (S0d3) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0d0003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0d)) } Name (_SUN, 0x0d) } Device (S0d4) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0d0004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0d)) } Name (_SUN, 0x0d) } Device (S0d5) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0d0005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0d)) } Name (_SUN, 0x0d) } Device (S0d6) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0d0006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0d)) } Name (_SUN, 0x0d) } Device (S0d7) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0d0007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0d)) } Name (_SUN, 0x0d) }
        Device (S0e0) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0e0000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0e)) } Name (_SUN, 0x0e) } Device (S0e1) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0e0001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0e)) } Name (_SUN, 0x0e) } Device (S0e2) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0e0002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0e)) } Name (_SUN, 0x0e) } Device (S0e3) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0e0003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0e)) } Name (_SUN, 0x0e) } Device (S0e4) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0e0004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0e)) } Name (_SUN, 0x0e) } Device (S0e5) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0e0005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0e)) } Name (_SUN, 0x0e) } Device (S0e6) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0e0006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0e)) } Name (_SUN, 0x0e) } Device (S0e7) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0e0007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0e)) } Name (_SUN, 0x0e) }
        Device (S0f0) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0f0000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0f)) } Name (_SUN, 0x0f) } Device (S0f1) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0f0001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0f)) } Name (_SUN, 0x0f) } Device (S0f2) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0f0002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0f)) } Name (_SUN, 0x0f) } Device (S0f3) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0f0003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0f)) } Name (_SUN, 0x0f) } Device (S0f4) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0f0004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0f)) } Name (_SUN, 0x0f) } Device (S0f5) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0f0005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0f)) } Name (_SUN, 0x0f) } Device (S0f6) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0f0006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0f)) } Name (_SUN, 0x0f) } Device (S0f7) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x0f0007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x0f)) } Name (_SUN, 0x0f) }
        Device (S100) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x100000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x10)) } Name (_SUN, 0x10) } Device (S101) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x100001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x10)) } Name (_SUN, 0x10) } Device (S102) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x100002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x10)) } Name (_SUN, 0x10) } Device (S103) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x100003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x10)) } Name (_SUN, 0x10) } Device (S104) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x100004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x10)) } Name (_SUN, 0x10) } Device (S105) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x100005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x10)) } Name (_SUN, 0x10) } Device (S106) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x100006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x10)) } Name (_SUN, 0x10) } Device (S107) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x100007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x10)) } Name (_SUN, 0x10) }
        Device (S110) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x110000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x11)) } Name (_SUN, 0x11) } Device (S111) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x110001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x11)) } Name (_SUN, 0x11) } Device (S112) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x110002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x11)) } Name (_SUN, 0x11) } Device (S113) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x110003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x11)) } Name (_SUN, 0x11) } Device (S114) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x110004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x11)) } Name (_SUN, 0x11) } Device (S115) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x110005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x11)) } Name (_SUN, 0x11) } Device (S116) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x110006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x11)) } Name (_SUN, 0x11) } Device (S117) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x110007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x11)) } Name (_SUN, 0x11) }
        Device (S120) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x120000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x12)) } Name (_SUN, 0x12) } Device (S121) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x120001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x12)) } Name (_SUN, 0x12) } Device (S122) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x120002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x12)) } Name (_SUN, 0x12) } Device (S123) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x120003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x12)) } Name (_SUN, 0x12) } Device (S124) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x120004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x12)) } Name (_SUN, 0x12) } Device (S125) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x120005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x12)) } Name (_SUN, 0x12) } Device (S126) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x120006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x12)) } Name (_SUN, 0x12) } Device (S127) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x120007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x12)) } Name (_SUN, 0x12) }
        Device (S130) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x130000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x13)) } Name (_SUN, 0x13) } Device (S131) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x130001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x13)) } Name (_SUN, 0x13) } Device (S132) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x130002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x13)) } Name (_SUN, 0x13) } Device (S133) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x130003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x13)) } Name (_SUN, 0x13) } Device (S134) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x130004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x13)) } Name (_SUN, 0x13) } Device (S135) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x130005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x13)) } Name (_SUN, 0x13) } Device (S136) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x130006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x13)) } Name (_SUN, 0x13) } Device (S137) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x130007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x13)) } Name (_SUN, 0x13) }
        Device (S140) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x140000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x14)) } Name (_SUN, 0x14) } Device (S141) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x140001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x14)) } Name (_SUN, 0x14) } Device (S142) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x140002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x14)) } Name (_SUN, 0x14) } Device (S143) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x140003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x14)) } Name (_SUN, 0x14) } Device (S144) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x140004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x14)) } Name (_SUN, 0x14) } Device (S145) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x140005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x14)) } Name (_SUN, 0x14) } Device (S146) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x140006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x14)) } Name (_SUN, 0x14) } Device (S147) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x140007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x14)) } Name (_SUN, 0x14) }
        Device (S150) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x150000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x15)) } Name (_SUN, 0x15) } Device (S151) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x150001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x15)) } Name (_SUN, 0x15) } Device (S152) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x150002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x15)) } Name (_SUN, 0x15) } Device (S153) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x150003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x15)) } Name (_SUN, 0x15) } Device (S154) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x150004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x15)) } Name (_SUN, 0x15) } Device (S155) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x150005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x15)) } Name (_SUN, 0x15) } Device (S156) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x150006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x15)) } Name (_SUN, 0x15) } Device (S157) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x150007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x15)) } Name (_SUN, 0x15) }
        Device (S160) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x160000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x16)) } Name (_SUN, 0x16) } Device (S161) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x160001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x16)) } Name (_SUN, 0x16) } Device (S162) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x160002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x16)) } Name (_SUN, 0x16) } Device (S163) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x160003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x16)) } Name (_SUN, 0x16) } Device (S164) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x160004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x16)) } Name (_SUN, 0x16) } Device (S165) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x160005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x16)) } Name (_SUN, 0x16) } Device (S166) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x160006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x16)) } Name (_SUN, 0x16) } Device (S167) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x160007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x16)) } Name (_SUN, 0x16) }
        Device (S170) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x170000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x17)) } Name (_SUN, 0x17) } Device (S171) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x170001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x17)) } Name (_SUN, 0x17) } Device (S172) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x170002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x17)) } Name (_SUN, 0x17) } Device (S173) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x170003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x17)) } Name (_SUN, 0x17) } Device (S174) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x170004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x17)) } Name (_SUN, 0x17) } Device (S175) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x170005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x17)) } Name (_SUN, 0x17) } Device (S176) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x170006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x17)) } Name (_SUN, 0x17) } Device (S177) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x170007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x17)) } Name (_SUN, 0x17) }
        Device (S180) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x180000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x18)) } Name (_SUN, 0x18) } Device (S181) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x180001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x18)) } Name (_SUN, 0x18) } Device (S182) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x180002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x18)) } Name (_SUN, 0x18) } Device (S183) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x180003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x18)) } Name (_SUN, 0x18) } Device (S184) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x180004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x18)) } Name (_SUN, 0x18) } Device (S185) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x180005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x18)) } Name (_SUN, 0x18) } Device (S186) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x180006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x18)) } Name (_SUN, 0x18) } Device (S187) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x180007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x18)) } Name (_SUN, 0x18) }
        Device (S190) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x190000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x19)) } Name (_SUN, 0x19) } Device (S191) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x190001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x19)) } Name (_SUN, 0x19) } Device (S192) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x190002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x19)) } Name (_SUN, 0x19) } Device (S193) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x190003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x19)) } Name (_SUN, 0x19) } Device (S194) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x190004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x19)) } Name (_SUN, 0x19) } Device (S195) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x190005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x19)) } Name (_SUN, 0x19) } Device (S196) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x190006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x19)) } Name (_SUN, 0x19) } Device (S197) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x190007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x19)) } Name (_SUN, 0x19) }
        Device (S1a0) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1a0000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1a)) } Name (_SUN, 0x1a) } Device (S1a1) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1a0001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1a)) } Name (_SUN, 0x1a) } Device (S1a2) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1a0002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1a)) } Name (_SUN, 0x1a) } Device (S1a3) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1a0003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1a)) } Name (_SUN, 0x1a) } Device (S1a4) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1a0004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1a)) } Name (_SUN, 0x1a) } Device (S1a5) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1a0005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1a)) } Name (_SUN, 0x1a) } Device (S1a6) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1a0006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1a)) } Name (_SUN, 0x1a) } Device (S1a7) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1a0007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1a)) } Name (_SUN, 0x1a) }
        Device (S1b0) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1b0000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1b)) } Name (_SUN, 0x1b) } Device (S1b1) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1b0001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1b)) } Name (_SUN, 0x1b) } Device (S1b2) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1b0002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1b)) } Name (_SUN, 0x1b) } Device (S1b3) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1b0003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1b)) } Name (_SUN, 0x1b) } Device (S1b4) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1b0004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1b)) } Name (_SUN, 0x1b) } Device (S1b5) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1b0005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1b)) } Name (_SUN, 0x1b) } Device (S1b6) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1b0006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1b)) } Name (_SUN, 0x1b) } Device (S1b7) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1b0007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1b)) } Name (_SUN, 0x1b) }
        Device (S1c0) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1c0000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1c)) } Name (_SUN, 0x1c) } Device (S1c1) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1c0001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1c)) } Name (_SUN, 0x1c) } Device (S1c2) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1c0002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1c)) } Name (_SUN, 0x1c) } Device (S1c3) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1c0003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1c)) } Name (_SUN, 0x1c) } Device (S1c4) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1c0004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1c)) } Name (_SUN, 0x1c) } Device (S1c5) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1c0005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1c)) } Name (_SUN, 0x1c) } Device (S1c6) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1c0006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1c)) } Name (_SUN, 0x1c) } Device (S1c7) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1c0007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1c)) } Name (_SUN, 0x1c) }
        Device (S1d0) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1d0000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1d)) } Name (_SUN, 0x1d) } Device (S1d1) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1d0001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1d)) } Name (_SUN, 0x1d) } Device (S1d2) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1d0002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1d)) } Name (_SUN, 0x1d) } Device (S1d3) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1d0003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1d)) } Name (_SUN, 0x1d) } Device (S1d4) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1d0004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1d)) } Name (_SUN, 0x1d) } Device (S1d5) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1d0005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1d)) } Name (_SUN, 0x1d) } Device (S1d6) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1d0006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1d)) } Name (_SUN, 0x1d) } Device (S1d7) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1d0007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1d)) } Name (_SUN, 0x1d) }
        Device (S1e0) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1e0000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1e)) } Name (_SUN, 0x1e) } Device (S1e1) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1e0001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1e)) } Name (_SUN, 0x1e) } Device (S1e2) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1e0002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1e)) } Name (_SUN, 0x1e) } Device (S1e3) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1e0003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1e)) } Name (_SUN, 0x1e) } Device (S1e4) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1e0004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1e)) } Name (_SUN, 0x1e) } Device (S1e5) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1e0005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1e)) } Name (_SUN, 0x1e) } Device (S1e6) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1e0006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1e)) } Name (_SUN, 0x1e) } Device (S1e7) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1e0007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1e)) } Name (_SUN, 0x1e) }
        Device (S1f0) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1f0000) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1f)) } Name (_SUN, 0x1f) } Device (S1f1) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1f0001) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1f)) } Name (_SUN, 0x1f) } Device (S1f2) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1f0002) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1f)) } Name (_SUN, 0x1f) } Device (S1f3) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1f0003) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1f)) } Name (_SUN, 0x1f) } Device (S1f4) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1f0004) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1f)) } Name (_SUN, 0x1f) } Device (S1f5) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1f0005) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1f)) } Name (_SUN, 0x1f) } Device (S1f6) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1f0006) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1f)) } Name (_SUN, 0x1f) } Device (S1f7) { 
/* ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword */
 Name (_ADR, 0x1f0007) 
/* ACPI_EXTRACT_METHOD_STRING aml_ej0_name */
 Method (_EJ0, 1) { Return(PCEJ(0x1f)) } Name (_SUN, 0x1f) }
        Method(PCNT, 2) {
            If (LEqual(Arg0, 0x01)) { Notify(S010, Arg1) }
            If (LEqual(Arg0, 0x02)) { Notify(S020, Arg1) }
            If (LEqual(Arg0, 0x03)) { Notify(S030, Arg1) }
            If (LEqual(Arg0, 0x04)) { Notify(S040, Arg1) }
            If (LEqual(Arg0, 0x05)) { Notify(S050, Arg1) }
            If (LEqual(Arg0, 0x06)) { Notify(S060, Arg1) }
            If (LEqual(Arg0, 0x07)) { Notify(S070, Arg1) }
            If (LEqual(Arg0, 0x08)) { Notify(S080, Arg1) }
            If (LEqual(Arg0, 0x09)) { Notify(S090, Arg1) }
            If (LEqual(Arg0, 0x0a)) { Notify(S0a0, Arg1) }
            If (LEqual(Arg0, 0x0b)) { Notify(S0b0, Arg1) }
            If (LEqual(Arg0, 0x0c)) { Notify(S0c0, Arg1) }
            If (LEqual(Arg0, 0x0d)) { Notify(S0d0, Arg1) }
            If (LEqual(Arg0, 0x0e)) { Notify(S0e0, Arg1) }
            If (LEqual(Arg0, 0x0f)) { Notify(S0f0, Arg1) }
            If (LEqual(Arg0, 0x10)) { Notify(S100, Arg1) }
            If (LEqual(Arg0, 0x11)) { Notify(S110, Arg1) }
            If (LEqual(Arg0, 0x12)) { Notify(S120, Arg1) }
            If (LEqual(Arg0, 0x13)) { Notify(S130, Arg1) }
            If (LEqual(Arg0, 0x14)) { Notify(S140, Arg1) }
            If (LEqual(Arg0, 0x15)) { Notify(S150, Arg1) }
            If (LEqual(Arg0, 0x16)) { Notify(S160, Arg1) }
            If (LEqual(Arg0, 0x17)) { Notify(S170, Arg1) }
            If (LEqual(Arg0, 0x18)) { Notify(S180, Arg1) }
            If (LEqual(Arg0, 0x19)) { Notify(S190, Arg1) }
            If (LEqual(Arg0, 0x1a)) { Notify(S1a0, Arg1) }
            If (LEqual(Arg0, 0x1b)) { Notify(S1b0, Arg1) }
            If (LEqual(Arg0, 0x1c)) { Notify(S1c0, Arg1) }
            If (LEqual(Arg0, 0x1d)) { Notify(S1d0, Arg1) }
            If (LEqual(Arg0, 0x1e)) { Notify(S1e0, Arg1) }
            If (LEqual(Arg0, 0x1f)) { Notify(S1f0, Arg1) }
        }
    }
}

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables
  2012-05-09  7:24 ` [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables Amos Kong
  2012-05-09  7:35   ` Amos Kong
@ 2012-05-09  8:46   ` Michael S. Tsirkin
  2012-05-09  8:59     ` Amos Kong
  2012-05-09 13:47   ` Alex Williamson
  2012-05-10 17:17   ` Jiang Liu
  3 siblings, 1 reply; 16+ messages in thread
From: Michael S. Tsirkin @ 2012-05-09  8:46 UTC (permalink / raw)
  To: Amos Kong
  Cc: linux-pci, seabios, qemu-devel, jbarnes, rjw, alex.williamson,
	kevin

On Wed, May 09, 2012 at 03:24:52PM +0800, Amos Kong wrote:
> Boot up a Linux VM with 8 pci block devices which
> are the 8 functions in one pci slot.
> | # qemu-kvm ...
> | -drive file=images/u0,if=none,id=drv0,format=qcow2,cache=none \
> | -device virtio-blk-pci,drive=drv0,id=v0,multifunction=on,addr=0x03.0 \
> | ....
> | -drive file=images/u7,if=none,id=drv7,format=qcow2,cache=none \
> | -device virtio-blk-pci,drive=drv7,id=v7,multifunction=on,addr=0x03.7 \
> 
> Check devices in guest.
> | vm)# ls /dev/vd*
> |    vda vdb vdc vde vdf vdg vdh
> | vm)# lspci |grep block
> | 00:03.0 SCSI storage controller: Red Hat, Inc Virtio block device
> |    ...
> | 00:03.7 SCSI storage controller: Red Hat, Inc Virtio block device
> |
> 
> Func1~7 still exist in guest after hot-removing the whole slot
> through qemu monitor.
> | vm)# lspci |grep block    (00:03.0 disappeared)
> | 00:03.1 SCSI storage controller: Red Hat, Inc Virtio block device (rev ff)
> |    ...
> | 00:03.7 SCSI storage controller: Red Hat, Inc Virtio block device (rev ff)
> | vm)# ls /dev/vd*          (vda disappeared)
> |    vdb vdc vde vdf vdg vdh
> | vm)# mkfs /dev/vdb
> |    INFO: task mkfs.ext2:1784 blocked for more than 120 seconds. (task hung)
> 
> 
> Currently only func0 is defined in ACPI DSDT table
> of seabios, and only hot-adding func0 would cause
> a ACPI event for notification. Other funcs except
> func0 wouldn't be registered in linux pci driver.
> (we can only found func0 in slot->funcs list of
> pci driver).

Isn't this what your patch 'PCI: Can continually add funcs after adding
func0' addresses?
If yes it's commit f382a086f3129edc152b8044b69ccc6682e637bb in 3.4.
So let's class the problematic behaviour guest bug and avoid workarounds
in bios?

-- 
MST

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables
  2012-05-09  8:46   ` Michael S. Tsirkin
@ 2012-05-09  8:59     ` Amos Kong
  2012-05-09  9:53       ` Amos Kong
  0 siblings, 1 reply; 16+ messages in thread
From: Amos Kong @ 2012-05-09  8:59 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-pci, seabios, qemu-devel, jbarnes, rjw, alex.williamson,
	kevin, liuj97

On 09/05/12 16:46, Michael S. Tsirkin wrote:
> On Wed, May 09, 2012 at 03:24:52PM +0800, Amos Kong wrote:
>> Boot up a Linux VM with 8 pci block devices which
>> are the 8 functions in one pci slot.
>> | # qemu-kvm ...
>> | -drive file=images/u0,if=none,id=drv0,format=qcow2,cache=none \
>> | -device virtio-blk-pci,drive=drv0,id=v0,multifunction=on,addr=0x03.0 \
>> | ....
>> | -drive file=images/u7,if=none,id=drv7,format=qcow2,cache=none \
>> | -device virtio-blk-pci,drive=drv7,id=v7,multifunction=on,addr=0x03.7 \
>>
>> Check devices in guest.
>> | vm)# ls /dev/vd*
>> |    vda vdb vdc vde vdf vdg vdh
>> | vm)# lspci |grep block
>> | 00:03.0 SCSI storage controller: Red Hat, Inc Virtio block device
>> |    ...
>> | 00:03.7 SCSI storage controller: Red Hat, Inc Virtio block device
>> |
>>
>> Func1~7 still exist in guest after hot-removing the whole slot
>> through qemu monitor.
>> | vm)# lspci |grep block    (00:03.0 disappeared)
>> | 00:03.1 SCSI storage controller: Red Hat, Inc Virtio block device (rev ff)
>> |    ...
>> | 00:03.7 SCSI storage controller: Red Hat, Inc Virtio block device (rev ff)
>> | vm)# ls /dev/vd*          (vda disappeared)
>> |    vdb vdc vde vdf vdg vdh
>> | vm)# mkfs /dev/vdb
>> |    INFO: task mkfs.ext2:1784 blocked for more than 120 seconds. (task hung)
>>
>>
>> Currently only func0 is defined in ACPI DSDT table
>> of seabios, and only hot-adding func0 would cause
>> a ACPI event for notification. Other funcs except
>> func0 wouldn't be registered in linux pci driver.
>> (we can only found func0 in slot->funcs list of
>> pci driver).
>
> Isn't this what your patch 'PCI: Can continually add funcs after adding
> func0' addresses?

No.

This patch fixes the problem that some funcs could not be removed.
the question is sending ACPI event for all functions (in same slot)
or only function 0.

I found all funcs are defined in ACPI DSDT table in microsoft's example:
http://www.microsoft.com/china/whdc/system/pnppwr/hotadd/hotplugpci.mspx#EUH 


Is it a useful attestation ?

> If yes it's commit f382a086f3129edc152b8044b69ccc6682e637bb in 3.4.

This commit fix the problem that some funcs could not be added.

> So let's class the problematic behaviour guest bug and avoid workarounds
> in bios?

-- 
			Amos.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables
  2012-05-09  8:59     ` Amos Kong
@ 2012-05-09  9:53       ` Amos Kong
  0 siblings, 0 replies; 16+ messages in thread
From: Amos Kong @ 2012-05-09  9:53 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-pci, seabios, qemu-devel, jbarnes, rjw, alex.williamson,
	kevin, liuj97

On 09/05/12 16:59, Amos Kong wrote:
> On 09/05/12 16:46, Michael S. Tsirkin wrote:
>> On Wed, May 09, 2012 at 03:24:52PM +0800, Amos Kong wrote:
>>> Boot up a Linux VM with 8 pci block devices which
>>> are the 8 functions in one pci slot.
>>> | # qemu-kvm ...
>>> | -drive file=images/u0,if=none,id=drv0,format=qcow2,cache=none \
>>> | -device virtio-blk-pci,drive=drv0,id=v0,multifunction=on,addr=0x03.0 \
>>> | ....
>>> | -drive file=images/u7,if=none,id=drv7,format=qcow2,cache=none \
>>> | -device virtio-blk-pci,drive=drv7,id=v7,multifunction=on,addr=0x03.7 \
>>>
>>> Check devices in guest.
>>> | vm)# ls /dev/vd*
>>> | vda vdb vdc vde vdf vdg vdh
>>> | vm)# lspci |grep block
>>> | 00:03.0 SCSI storage controller: Red Hat, Inc Virtio block device
>>> | ...
>>> | 00:03.7 SCSI storage controller: Red Hat, Inc Virtio block device
>>> |


Discussed with mst, NAK this patch by myself.

>>> Func1~7 still exist in guest after hot-removing the whole slot
>>> through qemu monitor.
>>> | vm)# lspci |grep block (00:03.0 disappeared)
>>> | 00:03.1 SCSI storage controller: Red Hat, Inc Virtio block device
>>> (rev ff)
>>> | ...
>>> | 00:03.7 SCSI storage controller: Red Hat, Inc Virtio block device


In this condition, ALL devices already removed, but the sysinfo
(/proc , /sys) of func1~7 are not cleaned, this is why we can
still see it in 'lspci' output.

And Windows hotplug works fine with current seabios. In thread [1],
Kenji Kaneshige and Bjorn Helgaas accept to fix this in linux pci driver.

So NAK this seabios patch by myself, I will update original pci patch in 
thread [1]
[PATCH] pci: clean all funcs when hot-removing multifunc device


[1] http://marc.info/?t=131597601700003&r=1&w=2

>>> (rev ff)
>>> | vm)# ls /dev/vd* (vda disappeared)
>>> | vdb vdc vde vdf vdg vdh
>>> | vm)# mkfs /dev/vdb
>>> | INFO: task mkfs.ext2:1784 blocked for more than 120 seconds. (task
>>> hung)
>>>
>>>
>>> Currently only func0 is defined in ACPI DSDT table
>>> of seabios, and only hot-adding func0 would cause
>>> a ACPI event for notification. Other funcs except
>>> func0 wouldn't be registered in linux pci driver.
>>> (we can only found func0 in slot->funcs list of
>>> pci driver).
>>
>> Isn't this what your patch 'PCI: Can continually add funcs after adding
>> func0' addresses?
>
> No.
>
> This patch fixes the problem that some funcs could not be removed.
> the question is sending ACPI event for all functions (in same slot)
> or only function 0.

One event is enough to remove all functions, the real problem is in
clean of linux pci driver.

> I found all funcs are defined in ACPI DSDT table in microsoft's example:
> http://www.microsoft.com/china/whdc/system/pnppwr/hotadd/hotplugpci.mspx#EUH
>
> Is it a useful attestation ?

-- 
			Amos.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables
  2012-05-09  7:24 ` [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables Amos Kong
  2012-05-09  7:35   ` Amos Kong
  2012-05-09  8:46   ` Michael S. Tsirkin
@ 2012-05-09 13:47   ` Alex Williamson
  2012-05-09 16:08     ` Amos Kong
  2012-05-10 16:50     ` Jiang Liu
  2012-05-10 17:17   ` Jiang Liu
  3 siblings, 2 replies; 16+ messages in thread
From: Alex Williamson @ 2012-05-09 13:47 UTC (permalink / raw)
  To: Amos Kong; +Cc: mst, linux-pci, seabios, qemu-devel, jbarnes, rjw, kevin

On Wed, 2012-05-09 at 15:24 +0800, Amos Kong wrote:
> Boot up a Linux VM with 8 pci block devices which
> are the 8 functions in one pci slot.
> | # qemu-kvm ...
> | -drive file=images/u0,if=none,id=drv0,format=qcow2,cache=none \
> | -device virtio-blk-pci,drive=drv0,id=v0,multifunction=on,addr=0x03.0 \
> | ....
> | -drive file=images/u7,if=none,id=drv7,format=qcow2,cache=none \
> | -device virtio-blk-pci,drive=drv7,id=v7,multifunction=on,addr=0x03.7 \
> 
> Check devices in guest.
> | vm)# ls /dev/vd*
> |    vda vdb vdc vde vdf vdg vdh
> | vm)# lspci |grep block
> | 00:03.0 SCSI storage controller: Red Hat, Inc Virtio block device
> |    ...
> | 00:03.7 SCSI storage controller: Red Hat, Inc Virtio block device
> |
> 
> Func1~7 still exist in guest after hot-removing the whole slot
> through qemu monitor.
> | vm)# lspci |grep block    (00:03.0 disappeared)
> | 00:03.1 SCSI storage controller: Red Hat, Inc Virtio block device (rev ff)
> |    ...
> | 00:03.7 SCSI storage controller: Red Hat, Inc Virtio block device (rev ff)
> | vm)# ls /dev/vd*          (vda disappeared)
> |    vdb vdc vde vdf vdg vdh
> | vm)# mkfs /dev/vdb
> |    INFO: task mkfs.ext2:1784 blocked for more than 120 seconds. (task hung)
> 
> 
> Currently only func0 is defined in ACPI DSDT table
> of seabios, and only hot-adding func0 would cause
> a ACPI event for notification. Other funcs except
> func0 wouldn't be registered in linux pci driver.
> (we can only found func0 in slot->funcs list of
> pci driver).
> 
> When VM pci driver receives an ACPI event for
> hot-removing, it will only clean functions in
> slot->funcs list, the other funcs could not be
> cleaned.
> 
> This patch adds device per function in ACPI DSDT tables,
> then all funcs will be registered in slot->funcs list.
> It's coincident with microsoft's example:
> http://www.microsoft.com/china/whdc/system/pnppwr/hotadd/hotplugpci.mspx#EUH
> 
> Have tested with linux/winxp/win7, hot-adding/hot-remving,
> single/multiple function devices, they are all fine(all
> added devices can be removed).
> 
> This patch includes some bits mst wrote, thanks!
> ---
> old discussion: http://marc.info/?l=kvm&m=132428400917405&w=2
> 
> Signed-off-by: Amos Kong <akong@redhat.com>
> CC: Michael S. Tsirkin <mst@redhat.com>
> ---
>  src/ssdt-pcihp.dsl |   17 
>  src/ssdt-pcihp.hex | 8869 +++++++++++++++++++++++++++++++++++++++++++++++++++-
>  2 files changed, 8781 insertions(+), 105 deletions(-)
> 
> diff --git a/src/ssdt-pcihp.dsl b/src/ssdt-pcihp.dsl
> index 4b435b8..2a3c326 100644
> --- a/src/ssdt-pcihp.dsl
> +++ b/src/ssdt-pcihp.dsl
> @@ -17,14 +17,23 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
>          // at runtime, if the slot is detected to not support hotplug.
>          // Extract the offset of the address dword and the
>          // _EJ0 name to allow this patching.
> -#define hotplug_slot(slot)                              \
> -        Device (S##slot) {                              \
> +#define hotplug_func(slot, fn)                          \
> +        Device (S##slot##fn) {                          \
>             ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword  \
> -           Name (_ADR, 0x##slot##0000)                  \

I would have guessed it to be sufficient to change _ADR to
0x##slot##ffff, does that not work?  Thanks,

Alex

> +           Name (_ADR, 0x##slot##000##fn)               \
>             ACPI_EXTRACT_METHOD_STRING aml_ej0_name      \
>             Method (_EJ0, 1) { Return(PCEJ(0x##slot)) }  \
>             Name (_SUN, 0x##slot)                        \
>          }
> +#define hotplug_slot(slot)     \
> +        hotplug_func(slot, 0)  \
> +        hotplug_func(slot, 1)  \
> +        hotplug_func(slot, 2)  \
> +        hotplug_func(slot, 3)  \
> +        hotplug_func(slot, 4)  \
> +        hotplug_func(slot, 5)  \
> +        hotplug_func(slot, 6)  \
> +        hotplug_func(slot, 7)
>  
>          hotplug_slot(01)
>          hotplug_slot(02)
> @@ -59,7 +68,7 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
>          hotplug_slot(1f)
>  
>  #define gen_pci_hotplug(slot)   \
> -            If (LEqual(Arg0, 0x##slot)) { Notify(S##slot, Arg1) }
> +            If (LEqual(Arg0, 0x##slot)) { Notify(S##slot##0, Arg1) }
>  
>          Method(PCNT, 2) {
>              gen_pci_hotplug(01)

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables
  2012-05-09 13:47   ` Alex Williamson
@ 2012-05-09 16:08     ` Amos Kong
  2012-05-10 16:50     ` Jiang Liu
  1 sibling, 0 replies; 16+ messages in thread
From: Amos Kong @ 2012-05-09 16:08 UTC (permalink / raw)
  To: Alex Williamson; +Cc: mst, linux-pci, seabios, qemu-devel, jbarnes, rjw, kevin

----- Original Message -----
> On Wed, 2012-05-09 at 15:24 +0800, Amos Kong wrote:
> > Boot up a Linux VM with 8 pci block devices which
> > are the 8 functions in one pci slot.
> > | # qemu-kvm ...
> > | -drive file=images/u0,if=none,id=drv0,format=qcow2,cache=none \
> > | -device
> > | virtio-blk-pci,drive=drv0,id=v0,multifunction=on,addr=0x03.0 \
> > | ....
> > | -drive file=images/u7,if=none,id=drv7,format=qcow2,cache=none \
> > | -device
> > | virtio-blk-pci,drive=drv7,id=v7,multifunction=on,addr=0x03.7 \
> > 
> > Check devices in guest.
> > | vm)# ls /dev/vd*
> > |    vda vdb vdc vde vdf vdg vdh
> > | vm)# lspci |grep block
> > | 00:03.0 SCSI storage controller: Red Hat, Inc Virtio block device
> > |    ...
> > | 00:03.7 SCSI storage controller: Red Hat, Inc Virtio block device
> > |
> > 
> > Func1~7 still exist in guest after hot-removing the whole slot
> > through qemu monitor.
> > | vm)# lspci |grep block    (00:03.0 disappeared)
> > | 00:03.1 SCSI storage controller: Red Hat, Inc Virtio block device
> > | (rev ff)
> > |    ...
> > | 00:03.7 SCSI storage controller: Red Hat, Inc Virtio block device
> > | (rev ff)
> > | vm)# ls /dev/vd*          (vda disappeared)
> > |    vdb vdc vde vdf vdg vdh
> > | vm)# mkfs /dev/vdb
> > |    INFO: task mkfs.ext2:1784 blocked for more than 120 seconds.
> > |    (task hung)
> > 
> > 
> > Currently only func0 is defined in ACPI DSDT table
> > of seabios, and only hot-adding func0 would cause
> > a ACPI event for notification. Other funcs except
> > func0 wouldn't be registered in linux pci driver.
> > (we can only found func0 in slot->funcs list of
> > pci driver).
> > 
> > When VM pci driver receives an ACPI event for
> > hot-removing, it will only clean functions in
> > slot->funcs list, the other funcs could not be
> > cleaned.
> > 
> > This patch adds device per function in ACPI DSDT tables,
> > then all funcs will be registered in slot->funcs list.
> > It's coincident with microsoft's example:
> > http://www.microsoft.com/china/whdc/system/pnppwr/hotadd/hotplugpci.mspx#EUH
> > 
> > Have tested with linux/winxp/win7, hot-adding/hot-remving,
> > single/multiple function devices, they are all fine(all
> > added devices can be removed).
> > 
> > This patch includes some bits mst wrote, thanks!
> > ---
> > old discussion: http://marc.info/?l=kvm&m=132428400917405&w=2
> > 
> > Signed-off-by: Amos Kong <akong@redhat.com>
> > CC: Michael S. Tsirkin <mst@redhat.com>
> > ---
> >  src/ssdt-pcihp.dsl |   17
> >  src/ssdt-pcihp.hex | 8869
> >  +++++++++++++++++++++++++++++++++++++++++++++++++++-
> >  2 files changed, 8781 insertions(+), 105 deletions(-)
> > 
> > diff --git a/src/ssdt-pcihp.dsl b/src/ssdt-pcihp.dsl
> > index 4b435b8..2a3c326 100644
> > --- a/src/ssdt-pcihp.dsl
> > +++ b/src/ssdt-pcihp.dsl
> > @@ -17,14 +17,23 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT",
> > 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
> >          // at runtime, if the slot is detected to not support
> >          hotplug.
> >          // Extract the offset of the address dword and the
> >          // _EJ0 name to allow this patching.
> > -#define hotplug_slot(slot)                              \
> > -        Device (S##slot) {                              \
> > +#define hotplug_func(slot, fn)                          \
> > +        Device (S##slot##fn) {                          \
> >             ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword  \
> > -           Name (_ADR, 0x##slot##0000)                  \
> 
> I would have guessed it to be sufficient to change _ADR to
> 0x##slot##ffff, does that not work?


No, changing this to "0x##slot##ffff" doesn't resolve the bug.
(tested)

I'm trying to fix this problem in guest pci driver.
http://marc.info/?l=linux-pci&m=133657729118731&w=2


Thanks, Amos

> 
> > +           Name (_ADR, 0x##slot##000##fn)               \
> >             ACPI_EXTRACT_METHOD_STRING aml_ej0_name      \
> >             Method (_EJ0, 1) { Return(PCEJ(0x##slot)) }  \
> >             Name (_SUN, 0x##slot)                        \
> >          }
> > +#define hotplug_slot(slot)     \
> > +        hotplug_func(slot, 0)  \
> > +        hotplug_func(slot, 1)  \
> > +        hotplug_func(slot, 2)  \
> > +        hotplug_func(slot, 3)  \
> > +        hotplug_func(slot, 4)  \
> > +        hotplug_func(slot, 5)  \
> > +        hotplug_func(slot, 6)  \
> > +        hotplug_func(slot, 7)
> >  
> >          hotplug_slot(01)
> >          hotplug_slot(02)
> > @@ -59,7 +68,7 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01,
> > "BXPC", "BXSSDTPCIHP", 0x1)
> >          hotplug_slot(1f)
> >  
> >  #define gen_pci_hotplug(slot)   \
> > -            If (LEqual(Arg0, 0x##slot)) { Notify(S##slot, Arg1) }
> > +            If (LEqual(Arg0, 0x##slot)) { Notify(S##slot##0, Arg1)
> > }
> >  
> >          Method(PCNT, 2) {
> >              gen_pci_hotplug(01)
> 
> 
> 
> 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables
  2012-05-09 13:47   ` Alex Williamson
  2012-05-09 16:08     ` Amos Kong
@ 2012-05-10 16:50     ` Jiang Liu
  2012-05-10 17:03       ` Michael S. Tsirkin
  1 sibling, 1 reply; 16+ messages in thread
From: Jiang Liu @ 2012-05-10 16:50 UTC (permalink / raw)
  To: Alex Williamson
  Cc: mst, linux-pci, seabios, qemu-devel, jbarnes, rjw, kevin,
	Amos Kong

On 05/09/2012 09:47 PM, Alex Williamson wrote:
>> ---
>>  src/ssdt-pcihp.dsl |   17 
>>  src/ssdt-pcihp.hex | 8869 +++++++++++++++++++++++++++++++++++++++++++++++++++-
>>  2 files changed, 8781 insertions(+), 105 deletions(-)
>>
>> diff --git a/src/ssdt-pcihp.dsl b/src/ssdt-pcihp.dsl
>> index 4b435b8..2a3c326 100644
>> --- a/src/ssdt-pcihp.dsl
>> +++ b/src/ssdt-pcihp.dsl
>> @@ -17,14 +17,23 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
>>          // at runtime, if the slot is detected to not support hotplug.
>>          // Extract the offset of the address dword and the
>>          // _EJ0 name to allow this patching.
>> -#define hotplug_slot(slot)                              \
>> -        Device (S##slot) {                              \
>> +#define hotplug_func(slot, fn)                          \
>> +        Device (S##slot##fn) {                          \
>>             ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword  \
>> -           Name (_ADR, 0x##slot##0000)                  \
> 
> I would have guessed it to be sufficient to change _ADR to
> 0x##slot##ffff, does that not work?  Thanks,
> 
> Alex
Currently Linux acpiphp driver doesn't support that yet.

--gerry

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables
  2012-05-10 16:50     ` Jiang Liu
@ 2012-05-10 17:03       ` Michael S. Tsirkin
  0 siblings, 0 replies; 16+ messages in thread
From: Michael S. Tsirkin @ 2012-05-10 17:03 UTC (permalink / raw)
  To: Jiang Liu
  Cc: linux-pci, seabios, qemu-devel, jbarnes, rjw, Alex Williamson,
	kevin, Amos Kong

On Fri, May 11, 2012 at 12:50:37AM +0800, Jiang Liu wrote:
> On 05/09/2012 09:47 PM, Alex Williamson wrote:
> >> ---
> >>  src/ssdt-pcihp.dsl |   17 
> >>  src/ssdt-pcihp.hex | 8869 +++++++++++++++++++++++++++++++++++++++++++++++++++-
> >>  2 files changed, 8781 insertions(+), 105 deletions(-)
> >>
> >> diff --git a/src/ssdt-pcihp.dsl b/src/ssdt-pcihp.dsl
> >> index 4b435b8..2a3c326 100644
> >> --- a/src/ssdt-pcihp.dsl
> >> +++ b/src/ssdt-pcihp.dsl
> >> @@ -17,14 +17,23 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
> >>          // at runtime, if the slot is detected to not support hotplug.
> >>          // Extract the offset of the address dword and the
> >>          // _EJ0 name to allow this patching.
> >> -#define hotplug_slot(slot)                              \
> >> -        Device (S##slot) {                              \
> >> +#define hotplug_func(slot, fn)                          \
> >> +        Device (S##slot##fn) {                          \
> >>             ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword  \
> >> -           Name (_ADR, 0x##slot##0000)                  \
> > 
> > I would have guessed it to be sufficient to change _ADR to
> > 0x##slot##ffff, does that not work?  Thanks,
> > 
> > Alex
> Currently Linux acpiphp driver doesn't support that yet.
> 
> --gerry

If memory serves neither does windows.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables
  2012-05-09  7:24 ` [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables Amos Kong
                     ` (2 preceding siblings ...)
  2012-05-09 13:47   ` Alex Williamson
@ 2012-05-10 17:17   ` Jiang Liu
  2012-05-10 17:42     ` Michael S. Tsirkin
  3 siblings, 1 reply; 16+ messages in thread
From: Jiang Liu @ 2012-05-10 17:17 UTC (permalink / raw)
  To: Amos Kong
  Cc: mst, linux-pci, seabios, qemu-devel, jbarnes, rjw,
	alex.williamson, kevin

On 05/09/2012 03:24 PM, Amos Kong wrote:

> ---
>  src/ssdt-pcihp.dsl |   17 
>  src/ssdt-pcihp.hex | 8869 +++++++++++++++++++++++++++++++++++++++++++++++++++-
>  2 files changed, 8781 insertions(+), 105 deletions(-)
> 
> diff --git a/src/ssdt-pcihp.dsl b/src/ssdt-pcihp.dsl
> index 4b435b8..2a3c326 100644
> --- a/src/ssdt-pcihp.dsl
> +++ b/src/ssdt-pcihp.dsl
> @@ -17,14 +17,23 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
>          // at runtime, if the slot is detected to not support hotplug.
>          // Extract the offset of the address dword and the
>          // _EJ0 name to allow this patching.
> -#define hotplug_slot(slot)                              \
> -        Device (S##slot) {                              \
> +#define hotplug_func(slot, fn)                          \
> +        Device (S##slot##fn) {                          \
>             ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword  \
> -           Name (_ADR, 0x##slot##0000)                  \
> +           Name (_ADR, 0x##slot##000##fn)               \
>             ACPI_EXTRACT_METHOD_STRING aml_ej0_name      \
>             Method (_EJ0, 1) { Return(PCEJ(0x##slot)) }  \
>             Name (_SUN, 0x##slot)                        \
>          }
It would be perfect if the Device object could also support _PS0 and _STA
methods. Could we re-add the slot back after hot-removing it from the guest
OS with this ACPI implementation? Say execute following scripts from guest OS.
echo 0 > /sys/bus/pci/slot/xx/power
echo 1 > /sys/bus/pci/slot/xx/power

> +#define hotplug_slot(slot)     \
> +        hotplug_func(slot, 0)  \
> +        hotplug_func(slot, 1)  \
> +        hotplug_func(slot, 2)  \
> +        hotplug_func(slot, 3)  \
> +        hotplug_func(slot, 4)  \
> +        hotplug_func(slot, 5)  \
> +        hotplug_func(slot, 6)  \
> +        hotplug_func(slot, 7)
>  
>          hotplug_slot(01)
>          hotplug_slot(02)
> @@ -59,7 +68,7 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
>          hotplug_slot(1f)
>  
>  #define gen_pci_hotplug(slot)   \
> -            If (LEqual(Arg0, 0x##slot)) { Notify(S##slot, Arg1) }
> +            If (LEqual(Arg0, 0x##slot)) { Notify(S##slot##0, Arg1) }
>  
>          Method(PCNT, 2) {
>              gen_pci_hotplug(01)

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables
  2012-05-10 17:17   ` Jiang Liu
@ 2012-05-10 17:42     ` Michael S. Tsirkin
  2012-05-10 17:46       ` Jiang Liu
  0 siblings, 1 reply; 16+ messages in thread
From: Michael S. Tsirkin @ 2012-05-10 17:42 UTC (permalink / raw)
  To: Jiang Liu
  Cc: linux-pci, seabios, qemu-devel, jbarnes, rjw, alex.williamson,
	kevin, Amos Kong

On Fri, May 11, 2012 at 01:17:38AM +0800, Jiang Liu wrote:
> On 05/09/2012 03:24 PM, Amos Kong wrote:
> 
> > ---
> >  src/ssdt-pcihp.dsl |   17 
> >  src/ssdt-pcihp.hex | 8869 +++++++++++++++++++++++++++++++++++++++++++++++++++-
> >  2 files changed, 8781 insertions(+), 105 deletions(-)
> > 
> > diff --git a/src/ssdt-pcihp.dsl b/src/ssdt-pcihp.dsl
> > index 4b435b8..2a3c326 100644
> > --- a/src/ssdt-pcihp.dsl
> > +++ b/src/ssdt-pcihp.dsl
> > @@ -17,14 +17,23 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
> >          // at runtime, if the slot is detected to not support hotplug.
> >          // Extract the offset of the address dword and the
> >          // _EJ0 name to allow this patching.
> > -#define hotplug_slot(slot)                              \
> > -        Device (S##slot) {                              \
> > +#define hotplug_func(slot, fn)                          \
> > +        Device (S##slot##fn) {                          \
> >             ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword  \
> > -           Name (_ADR, 0x##slot##0000)                  \
> > +           Name (_ADR, 0x##slot##000##fn)               \
> >             ACPI_EXTRACT_METHOD_STRING aml_ej0_name      \
> >             Method (_EJ0, 1) { Return(PCEJ(0x##slot)) }  \
> >             Name (_SUN, 0x##slot)                        \
> >          }
> It would be perfect if the Device object could also support _PS0 and _STA
> methods.

It needs qemu support, and some backward compatibility hack.
Why?

> Could we re-add the slot back after hot-removing it from the guest
> OS with this ACPI implementation? Say execute following scripts from guest OS.
> echo 0 > /sys/bus/pci/slot/xx/power
> echo 1 > /sys/bus/pci/slot/xx/power

No because qemu removes device after eject.
Do you have a need for this functionality? What is it?

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables
  2012-05-10 17:42     ` Michael S. Tsirkin
@ 2012-05-10 17:46       ` Jiang Liu
  2012-05-10 23:40         ` Amos Kong
  2012-05-11 10:14         ` [Qemu-devel] [SeaBIOS] " Gleb Natapov
  0 siblings, 2 replies; 16+ messages in thread
From: Jiang Liu @ 2012-05-10 17:46 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-pci, seabios, qemu-devel, jbarnes, rjw, alex.williamson,
	kevin, Amos Kong

On 05/11/2012 01:42 AM, Michael S. Tsirkin wrote:
> On Fri, May 11, 2012 at 01:17:38AM +0800, Jiang Liu wrote:
>> On 05/09/2012 03:24 PM, Amos Kong wrote:
>>
>>> ---
>>>  src/ssdt-pcihp.dsl |   17 
>>>  src/ssdt-pcihp.hex | 8869 +++++++++++++++++++++++++++++++++++++++++++++++++++-
>>>  2 files changed, 8781 insertions(+), 105 deletions(-)
>>>
>>> diff --git a/src/ssdt-pcihp.dsl b/src/ssdt-pcihp.dsl
>>> index 4b435b8..2a3c326 100644
>>> --- a/src/ssdt-pcihp.dsl
>>> +++ b/src/ssdt-pcihp.dsl
>>> @@ -17,14 +17,23 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
>>>          // at runtime, if the slot is detected to not support hotplug.
>>>          // Extract the offset of the address dword and the
>>>          // _EJ0 name to allow this patching.
>>> -#define hotplug_slot(slot)                              \
>>> -        Device (S##slot) {                              \
>>> +#define hotplug_func(slot, fn)                          \
>>> +        Device (S##slot##fn) {                          \
>>>             ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword  \
>>> -           Name (_ADR, 0x##slot##0000)                  \
>>> +           Name (_ADR, 0x##slot##000##fn)               \
>>>             ACPI_EXTRACT_METHOD_STRING aml_ej0_name      \
>>>             Method (_EJ0, 1) { Return(PCEJ(0x##slot)) }  \
>>>             Name (_SUN, 0x##slot)                        \
>>>          }
>> It would be perfect if the Device object could also support _PS0 and _STA
>> methods.
> 
> It needs qemu support, and some backward compatibility hack.
> Why?
> 
>> Could we re-add the slot back after hot-removing it from the guest
>> OS with this ACPI implementation? Say execute following scripts from guest OS.
>> echo 0 > /sys/bus/pci/slot/xx/power
>> echo 1 > /sys/bus/pci/slot/xx/power
> 
> No because qemu removes device after eject.
> Do you have a need for this functionality? What is it?

I'm not familiar with qemu:(
On native OS, admin could trigger PCI device hotplug operations through
/sys/bus/pci/slot/xx/power. Not sure whether that's needed for guest OS too. 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables
  2012-05-10 17:46       ` Jiang Liu
@ 2012-05-10 23:40         ` Amos Kong
  2012-05-11 10:14         ` [Qemu-devel] [SeaBIOS] " Gleb Natapov
  1 sibling, 0 replies; 16+ messages in thread
From: Amos Kong @ 2012-05-10 23:40 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Michael S. Tsirkin, linux-pci, seabios, qemu-devel, jbarnes, rjw,
	alex williamson, kevin

----- Original Message -----
> On 05/11/2012 01:42 AM, Michael S. Tsirkin wrote:
> > On Fri, May 11, 2012 at 01:17:38AM +0800, Jiang Liu wrote:
> >> On 05/09/2012 03:24 PM, Amos Kong wrote:
> >>
> >>> ---
> >>>  src/ssdt-pcihp.dsl |   17
> >>>  src/ssdt-pcihp.hex | 8869
> >>>  +++++++++++++++++++++++++++++++++++++++++++++++++++-
> >>>  2 files changed, 8781 insertions(+), 105 deletions(-)
> >>>
> >>> diff --git a/src/ssdt-pcihp.dsl b/src/ssdt-pcihp.dsl
> >>> index 4b435b8..2a3c326 100644
> >>> --- a/src/ssdt-pcihp.dsl
> >>> +++ b/src/ssdt-pcihp.dsl
> >>> @@ -17,14 +17,23 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT",
> >>> 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
> >>>          // at runtime, if the slot is detected to not support
> >>>          hotplug.
> >>>          // Extract the offset of the address dword and the
> >>>          // _EJ0 name to allow this patching.
> >>> -#define hotplug_slot(slot)                              \
> >>> -        Device (S##slot) {                              \
> >>> +#define hotplug_func(slot, fn)                          \
> >>> +        Device (S##slot##fn) {                          \
> >>>             ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword  \
> >>> -           Name (_ADR, 0x##slot##0000)                  \
> >>> +           Name (_ADR, 0x##slot##000##fn)               \
> >>>             ACPI_EXTRACT_METHOD_STRING aml_ej0_name      \
> >>>             Method (_EJ0, 1) { Return(PCEJ(0x##slot)) }  \
> >>>             Name (_SUN, 0x##slot)                        \
> >>>          }
> >> It would be perfect if the Device object could also support _PS0
> >> and _STA
> >> methods.
> > 
> > It needs qemu support, and some backward compatibility hack.
> > Why?
> > 
> >> Could we re-add the slot back after hot-removing it from the guest
> >> OS with this ACPI implementation? Say execute following scripts
> >> from guest OS.
> >> echo 0 > /sys/bus/pci/slot/xx/power

I tested with qemu VM, device can be hot-removed by ^^^^
block also could not be found by (qemu) # info block
(#virt dev was removed from virt slot)

> >> echo 1 > /sys/bus/pci/slot/xx/power

so we have to add the device to qemu first
(qemu) __com.redhat_drive_add id=drv50,file=/tmp/resize0.qcow2
(qemu) device_add virtio-blk-pci,id=ddev50,drive=drv50,addr=0x5.0,multifunction=on

disk is back (no need exec :echo 1 > /sys/bus/pci/slot/xx/power in guest)


> > 
> > No because qemu removes device after eject.
> > Do you have a need for this functionality? What is it?
> 
> I'm not familiar with qemu:(
> On native OS, admin could trigger PCI device hotplug operations
> through
> /sys/bus/pci/slot/xx/power. Not sure whether that's needed for guest
> OS too.

In physical, we have two kinds of hotplug, one is hot-unplug dev from slot,
another is just 'disable' it in guest os (dev also plugs in slot)

Hotplug dev by /sys/bus/pci/slot/xx/power -> it should be 2nd condition.
For current QEMU guest, only 1st condition works, and it's enough.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [SeaBIOS] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables
  2012-05-10 17:46       ` Jiang Liu
  2012-05-10 23:40         ` Amos Kong
@ 2012-05-11 10:14         ` Gleb Natapov
  2012-05-11 15:44           ` Jiang Liu
  1 sibling, 1 reply; 16+ messages in thread
From: Gleb Natapov @ 2012-05-11 10:14 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Michael S. Tsirkin, linux-pci, seabios, qemu-devel, jbarnes, rjw,
	alex.williamson, Amos Kong

On Fri, May 11, 2012 at 01:46:17AM +0800, Jiang Liu wrote:
> On 05/11/2012 01:42 AM, Michael S. Tsirkin wrote:
> > On Fri, May 11, 2012 at 01:17:38AM +0800, Jiang Liu wrote:
> >> On 05/09/2012 03:24 PM, Amos Kong wrote:
> >>
> >>> ---
> >>>  src/ssdt-pcihp.dsl |   17 
> >>>  src/ssdt-pcihp.hex | 8869 +++++++++++++++++++++++++++++++++++++++++++++++++++-
> >>>  2 files changed, 8781 insertions(+), 105 deletions(-)
> >>>
> >>> diff --git a/src/ssdt-pcihp.dsl b/src/ssdt-pcihp.dsl
> >>> index 4b435b8..2a3c326 100644
> >>> --- a/src/ssdt-pcihp.dsl
> >>> +++ b/src/ssdt-pcihp.dsl
> >>> @@ -17,14 +17,23 @@ DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
> >>>          // at runtime, if the slot is detected to not support hotplug.
> >>>          // Extract the offset of the address dword and the
> >>>          // _EJ0 name to allow this patching.
> >>> -#define hotplug_slot(slot)                              \
> >>> -        Device (S##slot) {                              \
> >>> +#define hotplug_func(slot, fn)                          \
> >>> +        Device (S##slot##fn) {                          \
> >>>             ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword  \
> >>> -           Name (_ADR, 0x##slot##0000)                  \
> >>> +           Name (_ADR, 0x##slot##000##fn)               \
> >>>             ACPI_EXTRACT_METHOD_STRING aml_ej0_name      \
> >>>             Method (_EJ0, 1) { Return(PCEJ(0x##slot)) }  \
> >>>             Name (_SUN, 0x##slot)                        \
> >>>          }
> >> It would be perfect if the Device object could also support _PS0 and _STA
> >> methods.
> > 
> > It needs qemu support, and some backward compatibility hack.
> > Why?
> > 
> >> Could we re-add the slot back after hot-removing it from the guest
> >> OS with this ACPI implementation? Say execute following scripts from guest OS.
> >> echo 0 > /sys/bus/pci/slot/xx/power
> >> echo 1 > /sys/bus/pci/slot/xx/power
> > 
> > No because qemu removes device after eject.
> > Do you have a need for this functionality? What is it?
> 
> I'm not familiar with qemu:(
> On native OS, admin could trigger PCI device hotplug operations through
> /sys/bus/pci/slot/xx/power. Not sure whether that's needed for guest OS too. 
> 
Why is it needed on physical HW? May be it is needed in a VM for the
same reason?

--
			Gleb.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [SeaBIOS] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables
  2012-05-11 10:14         ` [Qemu-devel] [SeaBIOS] " Gleb Natapov
@ 2012-05-11 15:44           ` Jiang Liu
  2012-05-11 17:04             ` Gleb Natapov
  0 siblings, 1 reply; 16+ messages in thread
From: Jiang Liu @ 2012-05-11 15:44 UTC (permalink / raw)
  To: Gleb Natapov
  Cc: Michael S. Tsirkin, linux-pci, seabios, qemu-devel, jbarnes, rjw,
	alex.williamson, Amos Kong

On 05/11/2012 06:14 PM, Gleb Natapov wrote:
>> I'm not familiar with qemu:(
>> On native OS, admin could trigger PCI device hotplug operations through
>> /sys/bus/pci/slot/xx/power. Not sure whether that's needed for guest OS too. 
>>
> Why is it needed on physical HW? May be it is needed in a VM for the
> same reason?
As Amos has mentioned, it's used power on/off a PCI device instead of physical
hotplug. Not sure whether it's needed in guest OS.
--gerry

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [SeaBIOS] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables
  2012-05-11 15:44           ` Jiang Liu
@ 2012-05-11 17:04             ` Gleb Natapov
  0 siblings, 0 replies; 16+ messages in thread
From: Gleb Natapov @ 2012-05-11 17:04 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Michael S. Tsirkin, linux-pci, seabios, qemu-devel, jbarnes, rjw,
	alex.williamson, Amos Kong

On Fri, May 11, 2012 at 11:44:02PM +0800, Jiang Liu wrote:
> On 05/11/2012 06:14 PM, Gleb Natapov wrote:
> >> I'm not familiar with qemu:(
> >> On native OS, admin could trigger PCI device hotplug operations through
> >> /sys/bus/pci/slot/xx/power. Not sure whether that's needed for guest OS too. 
> >>
> > Why is it needed on physical HW? May be it is needed in a VM for the
> > same reason?
> As Amos has mentioned, it's used power on/off a PCI device instead of physical
> hotplug. Not sure whether it's needed in guest OS.
Probably for assigned devices.

--
			Gleb.

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2012-05-11 18:09 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20111214010645.GA2044@morn.localdomain>
2012-05-09  7:24 ` [Qemu-devel] [RESEND PATCH v3] hotplug: add device per func in ACPI DSDT tables Amos Kong
2012-05-09  7:35   ` Amos Kong
2012-05-09  8:46   ` Michael S. Tsirkin
2012-05-09  8:59     ` Amos Kong
2012-05-09  9:53       ` Amos Kong
2012-05-09 13:47   ` Alex Williamson
2012-05-09 16:08     ` Amos Kong
2012-05-10 16:50     ` Jiang Liu
2012-05-10 17:03       ` Michael S. Tsirkin
2012-05-10 17:17   ` Jiang Liu
2012-05-10 17:42     ` Michael S. Tsirkin
2012-05-10 17:46       ` Jiang Liu
2012-05-10 23:40         ` Amos Kong
2012-05-11 10:14         ` [Qemu-devel] [SeaBIOS] " Gleb Natapov
2012-05-11 15:44           ` Jiang Liu
2012-05-11 17:04             ` Gleb Natapov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).