Add ACPI SSDT/DSDT support for CPU hotplug.
authorKevin O'Connor <kevin@koconnor.net>
Wed, 4 Aug 2010 01:30:03 +0000 (21:30 -0400)
committerKevin O'Connor <kevin@koconnor.net>
Wed, 4 Aug 2010 01:30:03 +0000 (21:30 -0400)
Move the SSDT defined processors from _PR to _SB namespace.

Extend the dynamically generated SSDT to include per cpu hotplug
methods.  These methods just call methods defined in the DSDT.  Also
dynamically generate a NTFY method and a CPON array of the
online/available CPUs.  Add file src/ssdt-proc.dsl with directions for
generating the per-cpu processor object AML code.

Extend the DSDT to include methods for handling cpu hotplug
notifications and methods for handling cpu status requests originating
from the SSDT methods.

src/acpi-dsdt.dsl
src/acpi-dsdt.hex
src/acpi.c
src/ssdt-proc.dsl [new file with mode: 0644]

index cc31112494cf5349c96d076aa30afc6d040cb258..640716c4895abd33dd9d0544f433eafe9b4f607f 100644 (file)
@@ -648,6 +648,78 @@ DefinitionBlock (
         Zero   /* reserved */
     })
 
+    /* CPU hotplug */
+    Scope(\_SB) {
+        /* Objects filled in by run-time generated SSDT */
+        External(NTFY, MethodObj)
+        External(CPON, PkgObj)
+
+        /* Methods called by run-time generated SSDT Processor objects */
+        Method (CPMA, 1, NotSerialized) {
+            // _MAT method - create an madt apic buffer
+            // Local0 = CPON flag for this cpu
+            Store(DerefOf(Index(CPON, Arg0)), Local0)
+            // Local1 = Buffer (in madt apic form) to return
+            Store(Buffer(8) {0x00, 0x08, 0x00, 0x00, 0x00, 0, 0, 0}, Local1)
+            // Update the processor id, lapic id, and enable/disable status
+            Store(Arg0, Index(Local1, 2))
+            Store(Arg0, Index(Local1, 3))
+            Store(Local0, Index(Local1, 4))
+            Return (Local1)
+        }
+        Method (CPST, 1, NotSerialized) {
+            // _STA method - return ON status of cpu
+            // Local0 = CPON flag for this cpu
+            Store(DerefOf(Index(CPON, Arg0)), Local0)
+            If (Local0) { Return(0xF) } Else { Return(0x0) }
+        }
+        Method (CPEJ, 2, NotSerialized) {
+            // _EJ0 method - eject callback
+            Sleep(200)
+        }
+
+        /* CPU hotplug notify method */
+        OperationRegion(PRST, SystemIO, 0xaf00, 32)
+        Field (PRST, ByteAcc, NoLock, Preserve)
+        {
+            PRS, 256
+        }
+        Method(PRSC, 0) {
+            // Local5 = active cpu bitmap
+            Store (PRS, Local5)
+            // Local2 = last read byte from bitmap
+            Store (Zero, Local2)
+            // Local0 = cpuid iterator
+            Store (Zero, Local0)
+            While (LLess(Local0, SizeOf(CPON))) {
+                // Local1 = CPON flag for this cpu
+                Store(DerefOf(Index(CPON, Local0)), Local1)
+                If (And(Local0, 0x07)) {
+                    // Shift down previously read bitmap byte
+                    ShiftRight(Local2, 1, Local2)
+                } Else {
+                    // Read next byte from cpu bitmap
+                    Store(DerefOf(Index(Local5, ShiftRight(Local0, 3))), Local2)
+                }
+                // Local3 = active state for this cpu
+                Store(And(Local2, 1), Local3)
+
+                If (LNotEqual(Local1, Local3)) {
+                    // State change - update CPON with new state
+                    Store(Local3, Index(CPON, Local0))
+                    // Do CPU notify
+                    If (LEqual(Local3, 1)) {
+                        NTFY(Local0, 1)
+                    } Else {
+                        NTFY(Local0, 3)
+                    }
+                }
+                Increment(Local0)
+            }
+            Return(One)
+        }
+    }
+
     Scope (\_GPE)
     {
         Name(_HID, "ACPI0006")
@@ -701,7 +773,8 @@ DefinitionBlock (
 
         }
         Method(_L02) {
-            Return(0x01)
+            // CPU hotplug event
+            Return(\_SB.PRSC())
         }
         Method(_L03) {
             Return(0x01)
index 465e93e56e790c12de46411966c6ee5d5ac1f42a..5704654b4f5b01890cf73413359bb73f2161b66c 100644 (file)
@@ -1,19 +1,19 @@
 /*
  * 
  * Intel ACPI Component Architecture
- * ASL Optimizing Compiler version 20090123 [Feb 25 2009]
+ * ASL Optimizing Compiler version 20090123 [Jul 26 2009]
  * Copyright (C) 2000 - 2009 Intel Corporation
  * Supports ACPI Specification Revision 3.0a
  * 
- * Compilation of "out/acpi-dsdt.dsl.i" - Wed Dec 30 12:30:21 2009
+ * Compilation of "out/acpi-dsdt.dsl.i" - Tue Aug  3 21:16:14 2010
  * 
  * C source code output
  *
  */
 unsigned char AmlCode[] =
 {
-    0x44,0x53,0x44,0x54,0x22,0x1E,0x00,0x00,  /* 00000000    "DSDT"..." */
-    0x01,0x71,0x42,0x58,0x50,0x43,0x00,0x00,  /* 00000008    ".qBXPC.." */
+    0x44,0x53,0x44,0x54,0x15,0x1F,0x00,0x00,  /* 00000000    "DSDT...." */
+    0x01,0x96,0x42,0x58,0x50,0x43,0x00,0x00,  /* 00000008    "..BXPC.." */
     0x42,0x58,0x44,0x53,0x44,0x54,0x00,0x00,  /* 00000010    "BXDSDT.." */
     0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
     0x23,0x01,0x09,0x20,0x10,0x1C,0x5C,0x00,  /* 00000020    "#.. ..\." */
@@ -643,338 +643,368 @@ unsigned char AmlCode[] =
     0x08,0x5F,0x53,0x34,0x5F,0x12,0x06,0x04,  /* 000013A0    "._S4_..." */
     0x00,0x00,0x00,0x00,0x08,0x5F,0x53,0x35,  /* 000013A8    "....._S5" */
     0x5F,0x12,0x06,0x04,0x00,0x00,0x00,0x00,  /* 000013B0    "_......." */
-    0x10,0x49,0xA6,0x5F,0x47,0x50,0x45,0x08,  /* 000013B8    ".I._GPE." */
-    0x5F,0x48,0x49,0x44,0x0D,0x41,0x43,0x50,  /* 000013C0    "_HID.ACP" */
-    0x49,0x30,0x30,0x30,0x36,0x00,0x14,0x08,  /* 000013C8    "I0006..." */
-    0x5F,0x4C,0x30,0x30,0x00,0xA4,0x01,0x14,  /* 000013D0    "_L00...." */
-    0x4C,0x9C,0x5F,0x4C,0x30,0x31,0x00,0xA0,  /* 000013D8    "L._L01.." */
-    0x25,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 000013E0    "%{\/._SB" */
-    0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49,  /* 000013E8    "_PCI0PCI" */
-    0x55,0x0A,0x02,0x00,0x86,0x5C,0x2F,0x03,  /* 000013F0    "U....\/." */
-    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 000013F8    "_SB_PCI0" */
-    0x53,0x31,0x5F,0x5F,0x01,0xA0,0x26,0x7B,  /* 00001400    "S1__..&{" */
-    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001408    "\/._SB_P" */
-    0x43,0x49,0x30,0x50,0x43,0x49,0x44,0x0A,  /* 00001410    "CI0PCID." */
-    0x02,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001418    "...\/._S" */
-    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x31,  /* 00001420    "B_PCI0S1" */
-    0x5F,0x5F,0x0A,0x03,0xA0,0x25,0x7B,0x5C,  /* 00001428    "__...%{\" */
-    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001430    "/._SB_PC" */
-    0x49,0x30,0x50,0x43,0x49,0x55,0x0A,0x04,  /* 00001438    "I0PCIU.." */
-    0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001440    "..\/._SB" */
-    0x5F,0x50,0x43,0x49,0x30,0x53,0x32,0x5F,  /* 00001448    "_PCI0S2_" */
-    0x5F,0x01,0xA0,0x26,0x7B,0x5C,0x2F,0x03,  /* 00001450    "_..&{\/." */
-    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001458    "_SB_PCI0" */
-    0x50,0x43,0x49,0x44,0x0A,0x04,0x00,0x86,  /* 00001460    "PCID...." */
-    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001468    "\/._SB_P" */
-    0x43,0x49,0x30,0x53,0x32,0x5F,0x5F,0x0A,  /* 00001470    "CI0S2__." */
-    0x03,0xA0,0x25,0x7B,0x5C,0x2F,0x03,0x5F,  /* 00001478    "..%{\/._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50,  /* 00001480    "SB_PCI0P" */
-    0x43,0x49,0x55,0x0A,0x08,0x00,0x86,0x5C,  /* 00001488    "CIU....\" */
-    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001490    "/._SB_PC" */
-    0x49,0x30,0x53,0x33,0x5F,0x5F,0x01,0xA0,  /* 00001498    "I0S3__.." */
-    0x26,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 000014A0    "&{\/._SB" */
-    0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49,  /* 000014A8    "_PCI0PCI" */
-    0x44,0x0A,0x08,0x00,0x86,0x5C,0x2F,0x03,  /* 000014B0    "D....\/." */
-    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 000014B8    "_SB_PCI0" */
-    0x53,0x33,0x5F,0x5F,0x0A,0x03,0xA0,0x25,  /* 000014C0    "S3__...%" */
-    0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 000014C8    "{\/._SB_" */
-    0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x55,  /* 000014D0    "PCI0PCIU" */
-    0x0A,0x10,0x00,0x86,0x5C,0x2F,0x03,0x5F,  /* 000014D8    "....\/._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 000014E0    "SB_PCI0S" */
-    0x34,0x5F,0x5F,0x01,0xA0,0x26,0x7B,0x5C,  /* 000014E8    "4__..&{\" */
-    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 000014F0    "/._SB_PC" */
-    0x49,0x30,0x50,0x43,0x49,0x44,0x0A,0x10,  /* 000014F8    "I0PCID.." */
-    0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001500    "..\/._SB" */
-    0x5F,0x50,0x43,0x49,0x30,0x53,0x34,0x5F,  /* 00001508    "_PCI0S4_" */
-    0x5F,0x0A,0x03,0xA0,0x25,0x7B,0x5C,0x2F,  /* 00001510    "_...%{\/" */
-    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001518    "._SB_PCI" */
-    0x30,0x50,0x43,0x49,0x55,0x0A,0x20,0x00,  /* 00001520    "0PCIU. ." */
-    0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001528    ".\/._SB_" */
-    0x50,0x43,0x49,0x30,0x53,0x35,0x5F,0x5F,  /* 00001530    "PCI0S5__" */
-    0x01,0xA0,0x26,0x7B,0x5C,0x2F,0x03,0x5F,  /* 00001538    "..&{\/._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50,  /* 00001540    "SB_PCI0P" */
-    0x43,0x49,0x44,0x0A,0x20,0x00,0x86,0x5C,  /* 00001548    "CID. ..\" */
-    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001550    "/._SB_PC" */
-    0x49,0x30,0x53,0x35,0x5F,0x5F,0x0A,0x03,  /* 00001558    "I0S5__.." */
-    0xA0,0x25,0x7B,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001560    ".%{\/._S" */
-    0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43,  /* 00001568    "B_PCI0PC" */
-    0x49,0x55,0x0A,0x40,0x00,0x86,0x5C,0x2F,  /* 00001570    "IU.@..\/" */
-    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001578    "._SB_PCI" */
-    0x30,0x53,0x36,0x5F,0x5F,0x01,0xA0,0x26,  /* 00001580    "0S6__..&" */
-    0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001588    "{\/._SB_" */
-    0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x44,  /* 00001590    "PCI0PCID" */
-    0x0A,0x40,0x00,0x86,0x5C,0x2F,0x03,0x5F,  /* 00001598    ".@..\/._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 000015A0    "SB_PCI0S" */
-    0x36,0x5F,0x5F,0x0A,0x03,0xA0,0x25,0x7B,  /* 000015A8    "6__...%{" */
-    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 000015B0    "\/._SB_P" */
-    0x43,0x49,0x30,0x50,0x43,0x49,0x55,0x0A,  /* 000015B8    "CI0PCIU." */
-    0x80,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 000015C0    "...\/._S" */
-    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x37,  /* 000015C8    "B_PCI0S7" */
-    0x5F,0x5F,0x01,0xA0,0x26,0x7B,0x5C,0x2F,  /* 000015D0    "__..&{\/" */
-    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 000015D8    "._SB_PCI" */
-    0x30,0x50,0x43,0x49,0x44,0x0A,0x80,0x00,  /* 000015E0    "0PCID..." */
-    0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 000015E8    ".\/._SB_" */
-    0x50,0x43,0x49,0x30,0x53,0x37,0x5F,0x5F,  /* 000015F0    "PCI0S7__" */
-    0x0A,0x03,0xA0,0x26,0x7B,0x5C,0x2F,0x03,  /* 000015F8    "...&{\/." */
-    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001600    "_SB_PCI0" */
-    0x50,0x43,0x49,0x55,0x0B,0x00,0x01,0x00,  /* 00001608    "PCIU...." */
-    0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001610    ".\/._SB_" */
-    0x50,0x43,0x49,0x30,0x53,0x38,0x5F,0x5F,  /* 00001618    "PCI0S8__" */
-    0x01,0xA0,0x27,0x7B,0x5C,0x2F,0x03,0x5F,  /* 00001620    "..'{\/._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50,  /* 00001628    "SB_PCI0P" */
-    0x43,0x49,0x44,0x0B,0x00,0x01,0x00,0x86,  /* 00001630    "CID....." */
-    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001638    "\/._SB_P" */
-    0x43,0x49,0x30,0x53,0x38,0x5F,0x5F,0x0A,  /* 00001640    "CI0S8__." */
-    0x03,0xA0,0x26,0x7B,0x5C,0x2F,0x03,0x5F,  /* 00001648    "..&{\/._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50,  /* 00001650    "SB_PCI0P" */
-    0x43,0x49,0x55,0x0B,0x00,0x02,0x00,0x86,  /* 00001658    "CIU....." */
+    0x10,0x49,0x0E,0x5F,0x53,0x42,0x5F,0x14,  /* 000013B8    ".I._SB_." */
+    0x35,0x43,0x50,0x4D,0x41,0x01,0x70,0x83,  /* 000013C0    "5CPMA.p." */
+    0x88,0x43,0x50,0x4F,0x4E,0x68,0x00,0x60,  /* 000013C8    ".CPONh.`" */
+    0x70,0x11,0x0B,0x0A,0x08,0x00,0x08,0x00,  /* 000013D0    "p......." */
+    0x00,0x00,0x00,0x00,0x00,0x61,0x70,0x68,  /* 000013D8    ".....aph" */
+    0x88,0x61,0x0A,0x02,0x00,0x70,0x68,0x88,  /* 000013E0    ".a...ph." */
+    0x61,0x0A,0x03,0x00,0x70,0x60,0x88,0x61,  /* 000013E8    "a...p`.a" */
+    0x0A,0x04,0x00,0xA4,0x61,0x14,0x1A,0x43,  /* 000013F0    "....a..C" */
+    0x50,0x53,0x54,0x01,0x70,0x83,0x88,0x43,  /* 000013F8    "PST.p..C" */
+    0x50,0x4F,0x4E,0x68,0x00,0x60,0xA0,0x05,  /* 00001400    "PONh.`.." */
+    0x60,0xA4,0x0A,0x0F,0xA1,0x03,0xA4,0x00,  /* 00001408    "`......." */
+    0x14,0x0A,0x43,0x50,0x45,0x4A,0x02,0x5B,  /* 00001410    "..CPEJ.[" */
+    0x22,0x0A,0xC8,0x5B,0x80,0x50,0x52,0x53,  /* 00001418    ""..[.PRS" */
+    0x54,0x01,0x0B,0x00,0xAF,0x0A,0x20,0x5B,  /* 00001420    "T..... [" */
+    0x81,0x0C,0x50,0x52,0x53,0x54,0x01,0x50,  /* 00001428    "..PRST.P" */
+    0x52,0x53,0x5F,0x40,0x10,0x14,0x4C,0x06,  /* 00001430    "RS_@..L." */
+    0x50,0x52,0x53,0x43,0x00,0x70,0x50,0x52,  /* 00001438    "PRSC.pPR" */
+    0x53,0x5F,0x65,0x70,0x00,0x62,0x70,0x00,  /* 00001440    "S_ep.bp." */
+    0x60,0xA2,0x46,0x05,0x95,0x60,0x87,0x43,  /* 00001448    "`.F..`.C" */
+    0x50,0x4F,0x4E,0x70,0x83,0x88,0x43,0x50,  /* 00001450    "PONp..CP" */
+    0x4F,0x4E,0x60,0x00,0x61,0xA0,0x0A,0x7B,  /* 00001458    "ON`.a..{" */
+    0x60,0x0A,0x07,0x00,0x7A,0x62,0x01,0x62,  /* 00001460    "`...zb.b" */
+    0xA1,0x0C,0x70,0x83,0x88,0x65,0x7A,0x60,  /* 00001468    "..p..ez`" */
+    0x0A,0x03,0x00,0x00,0x62,0x70,0x7B,0x62,  /* 00001470    "....bp{b" */
+    0x01,0x00,0x63,0xA0,0x22,0x92,0x93,0x61,  /* 00001478    "..c."..a" */
+    0x63,0x70,0x63,0x88,0x43,0x50,0x4F,0x4E,  /* 00001480    "cpc.CPON" */
+    0x60,0x00,0xA0,0x0A,0x93,0x63,0x01,0x4E,  /* 00001488    "`....c.N" */
+    0x54,0x46,0x59,0x60,0x01,0xA1,0x08,0x4E,  /* 00001490    "TFY`...N" */
+    0x54,0x46,0x59,0x60,0x0A,0x03,0x75,0x60,  /* 00001498    "TFY`..u`" */
+    0xA4,0x01,0x10,0x42,0xA7,0x5F,0x47,0x50,  /* 000014A0    "...B._GP" */
+    0x45,0x08,0x5F,0x48,0x49,0x44,0x0D,0x41,  /* 000014A8    "E._HID.A" */
+    0x43,0x50,0x49,0x30,0x30,0x30,0x36,0x00,  /* 000014B0    "CPI0006." */
+    0x14,0x08,0x5F,0x4C,0x30,0x30,0x00,0xA4,  /* 000014B8    ".._L00.." */
+    0x01,0x14,0x4C,0x9C,0x5F,0x4C,0x30,0x31,  /* 000014C0    "..L._L01" */
+    0x00,0xA0,0x25,0x7B,0x5C,0x2F,0x03,0x5F,  /* 000014C8    "..%{\/._" */
+    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50,  /* 000014D0    "SB_PCI0P" */
+    0x43,0x49,0x55,0x0A,0x02,0x00,0x86,0x5C,  /* 000014D8    "CIU....\" */
+    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 000014E0    "/._SB_PC" */
+    0x49,0x30,0x53,0x31,0x5F,0x5F,0x01,0xA0,  /* 000014E8    "I0S1__.." */
+    0x26,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 000014F0    "&{\/._SB" */
+    0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49,  /* 000014F8    "_PCI0PCI" */
+    0x44,0x0A,0x02,0x00,0x86,0x5C,0x2F,0x03,  /* 00001500    "D....\/." */
+    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001508    "_SB_PCI0" */
+    0x53,0x31,0x5F,0x5F,0x0A,0x03,0xA0,0x25,  /* 00001510    "S1__...%" */
+    0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001518    "{\/._SB_" */
+    0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x55,  /* 00001520    "PCI0PCIU" */
+    0x0A,0x04,0x00,0x86,0x5C,0x2F,0x03,0x5F,  /* 00001528    "....\/._" */
+    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 00001530    "SB_PCI0S" */
+    0x32,0x5F,0x5F,0x01,0xA0,0x26,0x7B,0x5C,  /* 00001538    "2__..&{\" */
+    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001540    "/._SB_PC" */
+    0x49,0x30,0x50,0x43,0x49,0x44,0x0A,0x04,  /* 00001548    "I0PCID.." */
+    0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001550    "..\/._SB" */
+    0x5F,0x50,0x43,0x49,0x30,0x53,0x32,0x5F,  /* 00001558    "_PCI0S2_" */
+    0x5F,0x0A,0x03,0xA0,0x25,0x7B,0x5C,0x2F,  /* 00001560    "_...%{\/" */
+    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001568    "._SB_PCI" */
+    0x30,0x50,0x43,0x49,0x55,0x0A,0x08,0x00,  /* 00001570    "0PCIU..." */
+    0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001578    ".\/._SB_" */
+    0x50,0x43,0x49,0x30,0x53,0x33,0x5F,0x5F,  /* 00001580    "PCI0S3__" */
+    0x01,0xA0,0x26,0x7B,0x5C,0x2F,0x03,0x5F,  /* 00001588    "..&{\/._" */
+    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50,  /* 00001590    "SB_PCI0P" */
+    0x43,0x49,0x44,0x0A,0x08,0x00,0x86,0x5C,  /* 00001598    "CID....\" */
+    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 000015A0    "/._SB_PC" */
+    0x49,0x30,0x53,0x33,0x5F,0x5F,0x0A,0x03,  /* 000015A8    "I0S3__.." */
+    0xA0,0x25,0x7B,0x5C,0x2F,0x03,0x5F,0x53,  /* 000015B0    ".%{\/._S" */
+    0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43,  /* 000015B8    "B_PCI0PC" */
+    0x49,0x55,0x0A,0x10,0x00,0x86,0x5C,0x2F,  /* 000015C0    "IU....\/" */
+    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 000015C8    "._SB_PCI" */
+    0x30,0x53,0x34,0x5F,0x5F,0x01,0xA0,0x26,  /* 000015D0    "0S4__..&" */
+    0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 000015D8    "{\/._SB_" */
+    0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x44,  /* 000015E0    "PCI0PCID" */
+    0x0A,0x10,0x00,0x86,0x5C,0x2F,0x03,0x5F,  /* 000015E8    "....\/._" */
+    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 000015F0    "SB_PCI0S" */
+    0x34,0x5F,0x5F,0x0A,0x03,0xA0,0x25,0x7B,  /* 000015F8    "4__...%{" */
+    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001600    "\/._SB_P" */
+    0x43,0x49,0x30,0x50,0x43,0x49,0x55,0x0A,  /* 00001608    "CI0PCIU." */
+    0x20,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001610    " ..\/._S" */
+    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x35,  /* 00001618    "B_PCI0S5" */
+    0x5F,0x5F,0x01,0xA0,0x26,0x7B,0x5C,0x2F,  /* 00001620    "__..&{\/" */
+    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001628    "._SB_PCI" */
+    0x30,0x50,0x43,0x49,0x44,0x0A,0x20,0x00,  /* 00001630    "0PCID. ." */
+    0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001638    ".\/._SB_" */
+    0x50,0x43,0x49,0x30,0x53,0x35,0x5F,0x5F,  /* 00001640    "PCI0S5__" */
+    0x0A,0x03,0xA0,0x25,0x7B,0x5C,0x2F,0x03,  /* 00001648    "...%{\/." */
+    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001650    "_SB_PCI0" */
+    0x50,0x43,0x49,0x55,0x0A,0x40,0x00,0x86,  /* 00001658    "PCIU.@.." */
     0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001660    "\/._SB_P" */
-    0x43,0x49,0x30,0x53,0x39,0x5F,0x5F,0x01,  /* 00001668    "CI0S9__." */
-    0xA0,0x27,0x7B,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001670    ".'{\/._S" */
+    0x43,0x49,0x30,0x53,0x36,0x5F,0x5F,0x01,  /* 00001668    "CI0S6__." */
+    0xA0,0x26,0x7B,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001670    ".&{\/._S" */
     0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43,  /* 00001678    "B_PCI0PC" */
-    0x49,0x44,0x0B,0x00,0x02,0x00,0x86,0x5C,  /* 00001680    "ID.....\" */
-    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001688    "/._SB_PC" */
-    0x49,0x30,0x53,0x39,0x5F,0x5F,0x0A,0x03,  /* 00001690    "I0S9__.." */
-    0xA0,0x26,0x7B,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001698    ".&{\/._S" */
-    0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43,  /* 000016A0    "B_PCI0PC" */
-    0x49,0x55,0x0B,0x00,0x04,0x00,0x86,0x5C,  /* 000016A8    "IU.....\" */
-    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 000016B0    "/._SB_PC" */
-    0x49,0x30,0x53,0x31,0x30,0x5F,0x01,0xA0,  /* 000016B8    "I0S10_.." */
-    0x27,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 000016C0    "'{\/._SB" */
-    0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49,  /* 000016C8    "_PCI0PCI" */
-    0x44,0x0B,0x00,0x04,0x00,0x86,0x5C,0x2F,  /* 000016D0    "D.....\/" */
-    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 000016D8    "._SB_PCI" */
-    0x30,0x53,0x31,0x30,0x5F,0x0A,0x03,0xA0,  /* 000016E0    "0S10_..." */
-    0x26,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 000016E8    "&{\/._SB" */
-    0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49,  /* 000016F0    "_PCI0PCI" */
-    0x55,0x0B,0x00,0x08,0x00,0x86,0x5C,0x2F,  /* 000016F8    "U.....\/" */
-    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001700    "._SB_PCI" */
-    0x30,0x53,0x31,0x31,0x5F,0x01,0xA0,0x27,  /* 00001708    "0S11_..'" */
-    0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001710    "{\/._SB_" */
-    0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x44,  /* 00001718    "PCI0PCID" */
-    0x0B,0x00,0x08,0x00,0x86,0x5C,0x2F,0x03,  /* 00001720    ".....\/." */
-    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001728    "_SB_PCI0" */
-    0x53,0x31,0x31,0x5F,0x0A,0x03,0xA0,0x26,  /* 00001730    "S11_...&" */
-    0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001738    "{\/._SB_" */
-    0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x55,  /* 00001740    "PCI0PCIU" */
-    0x0B,0x00,0x10,0x00,0x86,0x5C,0x2F,0x03,  /* 00001748    ".....\/." */
-    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001750    "_SB_PCI0" */
-    0x53,0x31,0x32,0x5F,0x01,0xA0,0x27,0x7B,  /* 00001758    "S12_..'{" */
-    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001760    "\/._SB_P" */
-    0x43,0x49,0x30,0x50,0x43,0x49,0x44,0x0B,  /* 00001768    "CI0PCID." */
-    0x00,0x10,0x00,0x86,0x5C,0x2F,0x03,0x5F,  /* 00001770    "....\/._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 00001778    "SB_PCI0S" */
-    0x31,0x32,0x5F,0x0A,0x03,0xA0,0x26,0x7B,  /* 00001780    "12_...&{" */
-    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001788    "\/._SB_P" */
-    0x43,0x49,0x30,0x50,0x43,0x49,0x55,0x0B,  /* 00001790    "CI0PCIU." */
-    0x00,0x20,0x00,0x86,0x5C,0x2F,0x03,0x5F,  /* 00001798    ". ..\/._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 000017A0    "SB_PCI0S" */
-    0x31,0x33,0x5F,0x01,0xA0,0x27,0x7B,0x5C,  /* 000017A8    "13_..'{\" */
-    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 000017B0    "/._SB_PC" */
-    0x49,0x30,0x50,0x43,0x49,0x44,0x0B,0x00,  /* 000017B8    "I0PCID.." */
-    0x20,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 000017C0    " ..\/._S" */
-    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x31,  /* 000017C8    "B_PCI0S1" */
-    0x33,0x5F,0x0A,0x03,0xA0,0x26,0x7B,0x5C,  /* 000017D0    "3_...&{\" */
-    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 000017D8    "/._SB_PC" */
-    0x49,0x30,0x50,0x43,0x49,0x55,0x0B,0x00,  /* 000017E0    "I0PCIU.." */
-    0x40,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 000017E8    "@..\/._S" */
-    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x31,  /* 000017F0    "B_PCI0S1" */
-    0x34,0x5F,0x01,0xA0,0x27,0x7B,0x5C,0x2F,  /* 000017F8    "4_..'{\/" */
-    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001800    "._SB_PCI" */
-    0x30,0x50,0x43,0x49,0x44,0x0B,0x00,0x40,  /* 00001808    "0PCID..@" */
-    0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001810    "..\/._SB" */
-    0x5F,0x50,0x43,0x49,0x30,0x53,0x31,0x34,  /* 00001818    "_PCI0S14" */
-    0x5F,0x0A,0x03,0xA0,0x26,0x7B,0x5C,0x2F,  /* 00001820    "_...&{\/" */
-    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001828    "._SB_PCI" */
-    0x30,0x50,0x43,0x49,0x55,0x0B,0x00,0x80,  /* 00001830    "0PCIU..." */
-    0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001838    "..\/._SB" */
-    0x5F,0x50,0x43,0x49,0x30,0x53,0x31,0x35,  /* 00001840    "_PCI0S15" */
-    0x5F,0x01,0xA0,0x27,0x7B,0x5C,0x2F,0x03,  /* 00001848    "_..'{\/." */
-    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001850    "_SB_PCI0" */
-    0x50,0x43,0x49,0x44,0x0B,0x00,0x80,0x00,  /* 00001858    "PCID...." */
-    0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001860    ".\/._SB_" */
-    0x50,0x43,0x49,0x30,0x53,0x31,0x35,0x5F,  /* 00001868    "PCI0S15_" */
-    0x0A,0x03,0xA0,0x28,0x7B,0x5C,0x2F,0x03,  /* 00001870    "...({\/." */
-    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001878    "_SB_PCI0" */
-    0x50,0x43,0x49,0x55,0x0C,0x00,0x00,0x01,  /* 00001880    "PCIU...." */
-    0x00,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001888    "...\/._S" */
-    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x31,  /* 00001890    "B_PCI0S1" */
-    0x36,0x5F,0x01,0xA0,0x29,0x7B,0x5C,0x2F,  /* 00001898    "6_..){\/" */
-    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 000018A0    "._SB_PCI" */
-    0x30,0x50,0x43,0x49,0x44,0x0C,0x00,0x00,  /* 000018A8    "0PCID..." */
-    0x01,0x00,0x00,0x86,0x5C,0x2F,0x03,0x5F,  /* 000018B0    "....\/._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 000018B8    "SB_PCI0S" */
-    0x31,0x36,0x5F,0x0A,0x03,0xA0,0x28,0x7B,  /* 000018C0    "16_...({" */
-    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 000018C8    "\/._SB_P" */
-    0x43,0x49,0x30,0x50,0x43,0x49,0x55,0x0C,  /* 000018D0    "CI0PCIU." */
-    0x00,0x00,0x02,0x00,0x00,0x86,0x5C,0x2F,  /* 000018D8    "......\/" */
-    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 000018E0    "._SB_PCI" */
-    0x30,0x53,0x31,0x37,0x5F,0x01,0xA0,0x29,  /* 000018E8    "0S17_..)" */
-    0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 000018F0    "{\/._SB_" */
-    0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x44,  /* 000018F8    "PCI0PCID" */
-    0x0C,0x00,0x00,0x02,0x00,0x00,0x86,0x5C,  /* 00001900    ".......\" */
-    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001908    "/._SB_PC" */
-    0x49,0x30,0x53,0x31,0x37,0x5F,0x0A,0x03,  /* 00001910    "I0S17_.." */
-    0xA0,0x28,0x7B,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001918    ".({\/._S" */
-    0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43,  /* 00001920    "B_PCI0PC" */
-    0x49,0x55,0x0C,0x00,0x00,0x04,0x00,0x00,  /* 00001928    "IU......" */
-    0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001930    ".\/._SB_" */
-    0x50,0x43,0x49,0x30,0x53,0x31,0x38,0x5F,  /* 00001938    "PCI0S18_" */
-    0x01,0xA0,0x29,0x7B,0x5C,0x2F,0x03,0x5F,  /* 00001940    "..){\/._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50,  /* 00001948    "SB_PCI0P" */
-    0x43,0x49,0x44,0x0C,0x00,0x00,0x04,0x00,  /* 00001950    "CID....." */
-    0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001958    "..\/._SB" */
-    0x5F,0x50,0x43,0x49,0x30,0x53,0x31,0x38,  /* 00001960    "_PCI0S18" */
-    0x5F,0x0A,0x03,0xA0,0x28,0x7B,0x5C,0x2F,  /* 00001968    "_...({\/" */
-    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001970    "._SB_PCI" */
-    0x30,0x50,0x43,0x49,0x55,0x0C,0x00,0x00,  /* 00001978    "0PCIU..." */
-    0x08,0x00,0x00,0x86,0x5C,0x2F,0x03,0x5F,  /* 00001980    "....\/._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 00001988    "SB_PCI0S" */
-    0x31,0x39,0x5F,0x01,0xA0,0x29,0x7B,0x5C,  /* 00001990    "19_..){\" */
-    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001998    "/._SB_PC" */
-    0x49,0x30,0x50,0x43,0x49,0x44,0x0C,0x00,  /* 000019A0    "I0PCID.." */
-    0x00,0x08,0x00,0x00,0x86,0x5C,0x2F,0x03,  /* 000019A8    ".....\/." */
-    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 000019B0    "_SB_PCI0" */
-    0x53,0x31,0x39,0x5F,0x0A,0x03,0xA0,0x28,  /* 000019B8    "S19_...(" */
-    0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 000019C0    "{\/._SB_" */
-    0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x55,  /* 000019C8    "PCI0PCIU" */
-    0x0C,0x00,0x00,0x10,0x00,0x00,0x86,0x5C,  /* 000019D0    ".......\" */
-    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 000019D8    "/._SB_PC" */
-    0x49,0x30,0x53,0x32,0x30,0x5F,0x01,0xA0,  /* 000019E0    "I0S20_.." */
-    0x29,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 000019E8    "){\/._SB" */
-    0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49,  /* 000019F0    "_PCI0PCI" */
-    0x44,0x0C,0x00,0x00,0x10,0x00,0x00,0x86,  /* 000019F8    "D......." */
-    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001A00    "\/._SB_P" */
-    0x43,0x49,0x30,0x53,0x32,0x30,0x5F,0x0A,  /* 00001A08    "CI0S20_." */
-    0x03,0xA0,0x28,0x7B,0x5C,0x2F,0x03,0x5F,  /* 00001A10    "..({\/._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50,  /* 00001A18    "SB_PCI0P" */
-    0x43,0x49,0x55,0x0C,0x00,0x00,0x20,0x00,  /* 00001A20    "CIU... ." */
-    0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001A28    "..\/._SB" */
-    0x5F,0x50,0x43,0x49,0x30,0x53,0x32,0x31,  /* 00001A30    "_PCI0S21" */
-    0x5F,0x01,0xA0,0x29,0x7B,0x5C,0x2F,0x03,  /* 00001A38    "_..){\/." */
-    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001A40    "_SB_PCI0" */
-    0x50,0x43,0x49,0x44,0x0C,0x00,0x00,0x20,  /* 00001A48    "PCID... " */
-    0x00,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001A50    "...\/._S" */
-    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x32,  /* 00001A58    "B_PCI0S2" */
-    0x31,0x5F,0x0A,0x03,0xA0,0x28,0x7B,0x5C,  /* 00001A60    "1_...({\" */
-    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001A68    "/._SB_PC" */
-    0x49,0x30,0x50,0x43,0x49,0x55,0x0C,0x00,  /* 00001A70    "I0PCIU.." */
-    0x00,0x40,0x00,0x00,0x86,0x5C,0x2F,0x03,  /* 00001A78    ".@...\/." */
-    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001A80    "_SB_PCI0" */
-    0x53,0x32,0x32,0x5F,0x01,0xA0,0x29,0x7B,  /* 00001A88    "S22_..){" */
-    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001A90    "\/._SB_P" */
-    0x43,0x49,0x30,0x50,0x43,0x49,0x44,0x0C,  /* 00001A98    "CI0PCID." */
-    0x00,0x00,0x40,0x00,0x00,0x86,0x5C,0x2F,  /* 00001AA0    "..@...\/" */
-    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001AA8    "._SB_PCI" */
-    0x30,0x53,0x32,0x32,0x5F,0x0A,0x03,0xA0,  /* 00001AB0    "0S22_..." */
-    0x28,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001AB8    "({\/._SB" */
-    0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49,  /* 00001AC0    "_PCI0PCI" */
-    0x55,0x0C,0x00,0x00,0x80,0x00,0x00,0x86,  /* 00001AC8    "U......." */
-    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001AD0    "\/._SB_P" */
-    0x43,0x49,0x30,0x53,0x32,0x33,0x5F,0x01,  /* 00001AD8    "CI0S23_." */
-    0xA0,0x29,0x7B,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001AE0    ".){\/._S" */
-    0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43,  /* 00001AE8    "B_PCI0PC" */
-    0x49,0x44,0x0C,0x00,0x00,0x80,0x00,0x00,  /* 00001AF0    "ID......" */
-    0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001AF8    ".\/._SB_" */
-    0x50,0x43,0x49,0x30,0x53,0x32,0x33,0x5F,  /* 00001B00    "PCI0S23_" */
-    0x0A,0x03,0xA0,0x28,0x7B,0x5C,0x2F,0x03,  /* 00001B08    "...({\/." */
-    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001B10    "_SB_PCI0" */
-    0x50,0x43,0x49,0x55,0x0C,0x00,0x00,0x00,  /* 00001B18    "PCIU...." */
-    0x01,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001B20    "...\/._S" */
-    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x32,  /* 00001B28    "B_PCI0S2" */
-    0x34,0x5F,0x01,0xA0,0x29,0x7B,0x5C,0x2F,  /* 00001B30    "4_..){\/" */
-    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001B38    "._SB_PCI" */
-    0x30,0x50,0x43,0x49,0x44,0x0C,0x00,0x00,  /* 00001B40    "0PCID..." */
-    0x00,0x01,0x00,0x86,0x5C,0x2F,0x03,0x5F,  /* 00001B48    "....\/._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 00001B50    "SB_PCI0S" */
-    0x32,0x34,0x5F,0x0A,0x03,0xA0,0x28,0x7B,  /* 00001B58    "24_...({" */
-    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001B60    "\/._SB_P" */
-    0x43,0x49,0x30,0x50,0x43,0x49,0x55,0x0C,  /* 00001B68    "CI0PCIU." */
-    0x00,0x00,0x00,0x02,0x00,0x86,0x5C,0x2F,  /* 00001B70    "......\/" */
-    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001B78    "._SB_PCI" */
-    0x30,0x53,0x32,0x35,0x5F,0x01,0xA0,0x29,  /* 00001B80    "0S25_..)" */
-    0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001B88    "{\/._SB_" */
-    0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x44,  /* 00001B90    "PCI0PCID" */
-    0x0C,0x00,0x00,0x00,0x02,0x00,0x86,0x5C,  /* 00001B98    ".......\" */
-    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001BA0    "/._SB_PC" */
-    0x49,0x30,0x53,0x32,0x35,0x5F,0x0A,0x03,  /* 00001BA8    "I0S25_.." */
-    0xA0,0x28,0x7B,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001BB0    ".({\/._S" */
-    0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43,  /* 00001BB8    "B_PCI0PC" */
-    0x49,0x55,0x0C,0x00,0x00,0x00,0x04,0x00,  /* 00001BC0    "IU......" */
-    0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001BC8    ".\/._SB_" */
-    0x50,0x43,0x49,0x30,0x53,0x32,0x36,0x5F,  /* 00001BD0    "PCI0S26_" */
-    0x01,0xA0,0x29,0x7B,0x5C,0x2F,0x03,0x5F,  /* 00001BD8    "..){\/._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50,  /* 00001BE0    "SB_PCI0P" */
-    0x43,0x49,0x44,0x0C,0x00,0x00,0x00,0x04,  /* 00001BE8    "CID....." */
-    0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001BF0    "..\/._SB" */
-    0x5F,0x50,0x43,0x49,0x30,0x53,0x32,0x36,  /* 00001BF8    "_PCI0S26" */
-    0x5F,0x0A,0x03,0xA0,0x28,0x7B,0x5C,0x2F,  /* 00001C00    "_...({\/" */
-    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001C08    "._SB_PCI" */
-    0x30,0x50,0x43,0x49,0x55,0x0C,0x00,0x00,  /* 00001C10    "0PCIU..." */
-    0x00,0x08,0x00,0x86,0x5C,0x2F,0x03,0x5F,  /* 00001C18    "....\/._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 00001C20    "SB_PCI0S" */
-    0x32,0x37,0x5F,0x01,0xA0,0x29,0x7B,0x5C,  /* 00001C28    "27_..){\" */
-    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001C30    "/._SB_PC" */
-    0x49,0x30,0x50,0x43,0x49,0x44,0x0C,0x00,  /* 00001C38    "I0PCID.." */
-    0x00,0x00,0x08,0x00,0x86,0x5C,0x2F,0x03,  /* 00001C40    ".....\/." */
-    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001C48    "_SB_PCI0" */
-    0x53,0x32,0x37,0x5F,0x0A,0x03,0xA0,0x28,  /* 00001C50    "S27_...(" */
-    0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001C58    "{\/._SB_" */
-    0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x55,  /* 00001C60    "PCI0PCIU" */
-    0x0C,0x00,0x00,0x00,0x10,0x00,0x86,0x5C,  /* 00001C68    ".......\" */
-    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001C70    "/._SB_PC" */
-    0x49,0x30,0x53,0x32,0x38,0x5F,0x01,0xA0,  /* 00001C78    "I0S28_.." */
-    0x29,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001C80    "){\/._SB" */
-    0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49,  /* 00001C88    "_PCI0PCI" */
-    0x44,0x0C,0x00,0x00,0x00,0x10,0x00,0x86,  /* 00001C90    "D......." */
-    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001C98    "\/._SB_P" */
-    0x43,0x49,0x30,0x53,0x32,0x38,0x5F,0x0A,  /* 00001CA0    "CI0S28_." */
-    0x03,0xA0,0x28,0x7B,0x5C,0x2F,0x03,0x5F,  /* 00001CA8    "..({\/._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50,  /* 00001CB0    "SB_PCI0P" */
-    0x43,0x49,0x55,0x0C,0x00,0x00,0x00,0x20,  /* 00001CB8    "CIU.... " */
-    0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001CC0    "..\/._SB" */
-    0x5F,0x50,0x43,0x49,0x30,0x53,0x32,0x39,  /* 00001CC8    "_PCI0S29" */
-    0x5F,0x01,0xA0,0x29,0x7B,0x5C,0x2F,0x03,  /* 00001CD0    "_..){\/." */
-    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001CD8    "_SB_PCI0" */
-    0x50,0x43,0x49,0x44,0x0C,0x00,0x00,0x00,  /* 00001CE0    "PCID...." */
-    0x20,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001CE8    " ..\/._S" */
-    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x32,  /* 00001CF0    "B_PCI0S2" */
-    0x39,0x5F,0x0A,0x03,0xA0,0x28,0x7B,0x5C,  /* 00001CF8    "9_...({\" */
-    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001D00    "/._SB_PC" */
-    0x49,0x30,0x50,0x43,0x49,0x55,0x0C,0x00,  /* 00001D08    "I0PCIU.." */
-    0x00,0x00,0x40,0x00,0x86,0x5C,0x2F,0x03,  /* 00001D10    "..@..\/." */
-    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001D18    "_SB_PCI0" */
-    0x53,0x33,0x30,0x5F,0x01,0xA0,0x29,0x7B,  /* 00001D20    "S30_..){" */
-    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001D28    "\/._SB_P" */
-    0x43,0x49,0x30,0x50,0x43,0x49,0x44,0x0C,  /* 00001D30    "CI0PCID." */
-    0x00,0x00,0x00,0x40,0x00,0x86,0x5C,0x2F,  /* 00001D38    "...@..\/" */
-    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001D40    "._SB_PCI" */
-    0x30,0x53,0x33,0x30,0x5F,0x0A,0x03,0xA0,  /* 00001D48    "0S30_..." */
-    0x28,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001D50    "({\/._SB" */
-    0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49,  /* 00001D58    "_PCI0PCI" */
-    0x55,0x0C,0x00,0x00,0x00,0x80,0x00,0x86,  /* 00001D60    "U......." */
-    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001D68    "\/._SB_P" */
-    0x43,0x49,0x30,0x53,0x33,0x31,0x5F,0x01,  /* 00001D70    "CI0S31_." */
-    0xA0,0x29,0x7B,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001D78    ".){\/._S" */
-    0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43,  /* 00001D80    "B_PCI0PC" */
-    0x49,0x44,0x0C,0x00,0x00,0x00,0x80,0x00,  /* 00001D88    "ID......" */
-    0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001D90    ".\/._SB_" */
-    0x50,0x43,0x49,0x30,0x53,0x33,0x31,0x5F,  /* 00001D98    "PCI0S31_" */
-    0x0A,0x03,0xA4,0x01,0x14,0x08,0x5F,0x4C,  /* 00001DA0    "......_L" */
-    0x30,0x32,0x00,0xA4,0x01,0x14,0x08,0x5F,  /* 00001DA8    "02....._" */
-    0x4C,0x30,0x33,0x00,0xA4,0x01,0x14,0x08,  /* 00001DB0    "L03....." */
-    0x5F,0x4C,0x30,0x34,0x00,0xA4,0x01,0x14,  /* 00001DB8    "_L04...." */
-    0x08,0x5F,0x4C,0x30,0x35,0x00,0xA4,0x01,  /* 00001DC0    "._L05..." */
-    0x14,0x08,0x5F,0x4C,0x30,0x36,0x00,0xA4,  /* 00001DC8    ".._L06.." */
-    0x01,0x14,0x08,0x5F,0x4C,0x30,0x37,0x00,  /* 00001DD0    "..._L07." */
-    0xA4,0x01,0x14,0x08,0x5F,0x4C,0x30,0x38,  /* 00001DD8    "...._L08" */
-    0x00,0xA4,0x01,0x14,0x08,0x5F,0x4C,0x30,  /* 00001DE0    "....._L0" */
-    0x39,0x00,0xA4,0x01,0x14,0x08,0x5F,0x4C,  /* 00001DE8    "9....._L" */
-    0x30,0x41,0x00,0xA4,0x01,0x14,0x08,0x5F,  /* 00001DF0    "0A....._" */
-    0x4C,0x30,0x42,0x00,0xA4,0x01,0x14,0x08,  /* 00001DF8    "L0B....." */
-    0x5F,0x4C,0x30,0x43,0x00,0xA4,0x01,0x14,  /* 00001E00    "_L0C...." */
-    0x08,0x5F,0x4C,0x30,0x44,0x00,0xA4,0x01,  /* 00001E08    "._L0D..." */
-    0x14,0x08,0x5F,0x4C,0x30,0x45,0x00,0xA4,  /* 00001E10    ".._L0E.." */
-    0x01,0x14,0x08,0x5F,0x4C,0x30,0x46,0x00,  /* 00001E18    "..._L0F." */
-    0xA4,0x01,
+    0x49,0x44,0x0A,0x40,0x00,0x86,0x5C,0x2F,  /* 00001680    "ID.@..\/" */
+    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001688    "._SB_PCI" */
+    0x30,0x53,0x36,0x5F,0x5F,0x0A,0x03,0xA0,  /* 00001690    "0S6__..." */
+    0x25,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001698    "%{\/._SB" */
+    0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49,  /* 000016A0    "_PCI0PCI" */
+    0x55,0x0A,0x80,0x00,0x86,0x5C,0x2F,0x03,  /* 000016A8    "U....\/." */
+    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 000016B0    "_SB_PCI0" */
+    0x53,0x37,0x5F,0x5F,0x01,0xA0,0x26,0x7B,  /* 000016B8    "S7__..&{" */
+    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 000016C0    "\/._SB_P" */
+    0x43,0x49,0x30,0x50,0x43,0x49,0x44,0x0A,  /* 000016C8    "CI0PCID." */
+    0x80,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 000016D0    "...\/._S" */
+    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x37,  /* 000016D8    "B_PCI0S7" */
+    0x5F,0x5F,0x0A,0x03,0xA0,0x26,0x7B,0x5C,  /* 000016E0    "__...&{\" */
+    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 000016E8    "/._SB_PC" */
+    0x49,0x30,0x50,0x43,0x49,0x55,0x0B,0x00,  /* 000016F0    "I0PCIU.." */
+    0x01,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 000016F8    "...\/._S" */
+    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x38,  /* 00001700    "B_PCI0S8" */
+    0x5F,0x5F,0x01,0xA0,0x27,0x7B,0x5C,0x2F,  /* 00001708    "__..'{\/" */
+    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001710    "._SB_PCI" */
+    0x30,0x50,0x43,0x49,0x44,0x0B,0x00,0x01,  /* 00001718    "0PCID..." */
+    0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001720    "..\/._SB" */
+    0x5F,0x50,0x43,0x49,0x30,0x53,0x38,0x5F,  /* 00001728    "_PCI0S8_" */
+    0x5F,0x0A,0x03,0xA0,0x26,0x7B,0x5C,0x2F,  /* 00001730    "_...&{\/" */
+    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001738    "._SB_PCI" */
+    0x30,0x50,0x43,0x49,0x55,0x0B,0x00,0x02,  /* 00001740    "0PCIU..." */
+    0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001748    "..\/._SB" */
+    0x5F,0x50,0x43,0x49,0x30,0x53,0x39,0x5F,  /* 00001750    "_PCI0S9_" */
+    0x5F,0x01,0xA0,0x27,0x7B,0x5C,0x2F,0x03,  /* 00001758    "_..'{\/." */
+    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001760    "_SB_PCI0" */
+    0x50,0x43,0x49,0x44,0x0B,0x00,0x02,0x00,  /* 00001768    "PCID...." */
+    0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001770    ".\/._SB_" */
+    0x50,0x43,0x49,0x30,0x53,0x39,0x5F,0x5F,  /* 00001778    "PCI0S9__" */
+    0x0A,0x03,0xA0,0x26,0x7B,0x5C,0x2F,0x03,  /* 00001780    "...&{\/." */
+    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001788    "_SB_PCI0" */
+    0x50,0x43,0x49,0x55,0x0B,0x00,0x04,0x00,  /* 00001790    "PCIU...." */
+    0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001798    ".\/._SB_" */
+    0x50,0x43,0x49,0x30,0x53,0x31,0x30,0x5F,  /* 000017A0    "PCI0S10_" */
+    0x01,0xA0,0x27,0x7B,0x5C,0x2F,0x03,0x5F,  /* 000017A8    "..'{\/._" */
+    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50,  /* 000017B0    "SB_PCI0P" */
+    0x43,0x49,0x44,0x0B,0x00,0x04,0x00,0x86,  /* 000017B8    "CID....." */
+    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 000017C0    "\/._SB_P" */
+    0x43,0x49,0x30,0x53,0x31,0x30,0x5F,0x0A,  /* 000017C8    "CI0S10_." */
+    0x03,0xA0,0x26,0x7B,0x5C,0x2F,0x03,0x5F,  /* 000017D0    "..&{\/._" */
+    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50,  /* 000017D8    "SB_PCI0P" */
+    0x43,0x49,0x55,0x0B,0x00,0x08,0x00,0x86,  /* 000017E0    "CIU....." */
+    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 000017E8    "\/._SB_P" */
+    0x43,0x49,0x30,0x53,0x31,0x31,0x5F,0x01,  /* 000017F0    "CI0S11_." */
+    0xA0,0x27,0x7B,0x5C,0x2F,0x03,0x5F,0x53,  /* 000017F8    ".'{\/._S" */
+    0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43,  /* 00001800    "B_PCI0PC" */
+    0x49,0x44,0x0B,0x00,0x08,0x00,0x86,0x5C,  /* 00001808    "ID.....\" */
+    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001810    "/._SB_PC" */
+    0x49,0x30,0x53,0x31,0x31,0x5F,0x0A,0x03,  /* 00001818    "I0S11_.." */
+    0xA0,0x26,0x7B,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001820    ".&{\/._S" */
+    0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43,  /* 00001828    "B_PCI0PC" */
+    0x49,0x55,0x0B,0x00,0x10,0x00,0x86,0x5C,  /* 00001830    "IU.....\" */
+    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001838    "/._SB_PC" */
+    0x49,0x30,0x53,0x31,0x32,0x5F,0x01,0xA0,  /* 00001840    "I0S12_.." */
+    0x27,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001848    "'{\/._SB" */
+    0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49,  /* 00001850    "_PCI0PCI" */
+    0x44,0x0B,0x00,0x10,0x00,0x86,0x5C,0x2F,  /* 00001858    "D.....\/" */
+    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001860    "._SB_PCI" */
+    0x30,0x53,0x31,0x32,0x5F,0x0A,0x03,0xA0,  /* 00001868    "0S12_..." */
+    0x26,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001870    "&{\/._SB" */
+    0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49,  /* 00001878    "_PCI0PCI" */
+    0x55,0x0B,0x00,0x20,0x00,0x86,0x5C,0x2F,  /* 00001880    "U.. ..\/" */
+    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001888    "._SB_PCI" */
+    0x30,0x53,0x31,0x33,0x5F,0x01,0xA0,0x27,  /* 00001890    "0S13_..'" */
+    0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001898    "{\/._SB_" */
+    0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x44,  /* 000018A0    "PCI0PCID" */
+    0x0B,0x00,0x20,0x00,0x86,0x5C,0x2F,0x03,  /* 000018A8    ".. ..\/." */
+    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 000018B0    "_SB_PCI0" */
+    0x53,0x31,0x33,0x5F,0x0A,0x03,0xA0,0x26,  /* 000018B8    "S13_...&" */
+    0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 000018C0    "{\/._SB_" */
+    0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x55,  /* 000018C8    "PCI0PCIU" */
+    0x0B,0x00,0x40,0x00,0x86,0x5C,0x2F,0x03,  /* 000018D0    "..@..\/." */
+    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 000018D8    "_SB_PCI0" */
+    0x53,0x31,0x34,0x5F,0x01,0xA0,0x27,0x7B,  /* 000018E0    "S14_..'{" */
+    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 000018E8    "\/._SB_P" */
+    0x43,0x49,0x30,0x50,0x43,0x49,0x44,0x0B,  /* 000018F0    "CI0PCID." */
+    0x00,0x40,0x00,0x86,0x5C,0x2F,0x03,0x5F,  /* 000018F8    ".@..\/._" */
+    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 00001900    "SB_PCI0S" */
+    0x31,0x34,0x5F,0x0A,0x03,0xA0,0x26,0x7B,  /* 00001908    "14_...&{" */
+    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001910    "\/._SB_P" */
+    0x43,0x49,0x30,0x50,0x43,0x49,0x55,0x0B,  /* 00001918    "CI0PCIU." */
+    0x00,0x80,0x00,0x86,0x5C,0x2F,0x03,0x5F,  /* 00001920    "....\/._" */
+    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 00001928    "SB_PCI0S" */
+    0x31,0x35,0x5F,0x01,0xA0,0x27,0x7B,0x5C,  /* 00001930    "15_..'{\" */
+    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001938    "/._SB_PC" */
+    0x49,0x30,0x50,0x43,0x49,0x44,0x0B,0x00,  /* 00001940    "I0PCID.." */
+    0x80,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001948    "...\/._S" */
+    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x31,  /* 00001950    "B_PCI0S1" */
+    0x35,0x5F,0x0A,0x03,0xA0,0x28,0x7B,0x5C,  /* 00001958    "5_...({\" */
+    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001960    "/._SB_PC" */
+    0x49,0x30,0x50,0x43,0x49,0x55,0x0C,0x00,  /* 00001968    "I0PCIU.." */
+    0x00,0x01,0x00,0x00,0x86,0x5C,0x2F,0x03,  /* 00001970    ".....\/." */
+    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001978    "_SB_PCI0" */
+    0x53,0x31,0x36,0x5F,0x01,0xA0,0x29,0x7B,  /* 00001980    "S16_..){" */
+    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001988    "\/._SB_P" */
+    0x43,0x49,0x30,0x50,0x43,0x49,0x44,0x0C,  /* 00001990    "CI0PCID." */
+    0x00,0x00,0x01,0x00,0x00,0x86,0x5C,0x2F,  /* 00001998    "......\/" */
+    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 000019A0    "._SB_PCI" */
+    0x30,0x53,0x31,0x36,0x5F,0x0A,0x03,0xA0,  /* 000019A8    "0S16_..." */
+    0x28,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 000019B0    "({\/._SB" */
+    0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49,  /* 000019B8    "_PCI0PCI" */
+    0x55,0x0C,0x00,0x00,0x02,0x00,0x00,0x86,  /* 000019C0    "U......." */
+    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 000019C8    "\/._SB_P" */
+    0x43,0x49,0x30,0x53,0x31,0x37,0x5F,0x01,  /* 000019D0    "CI0S17_." */
+    0xA0,0x29,0x7B,0x5C,0x2F,0x03,0x5F,0x53,  /* 000019D8    ".){\/._S" */
+    0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43,  /* 000019E0    "B_PCI0PC" */
+    0x49,0x44,0x0C,0x00,0x00,0x02,0x00,0x00,  /* 000019E8    "ID......" */
+    0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 000019F0    ".\/._SB_" */
+    0x50,0x43,0x49,0x30,0x53,0x31,0x37,0x5F,  /* 000019F8    "PCI0S17_" */
+    0x0A,0x03,0xA0,0x28,0x7B,0x5C,0x2F,0x03,  /* 00001A00    "...({\/." */
+    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001A08    "_SB_PCI0" */
+    0x50,0x43,0x49,0x55,0x0C,0x00,0x00,0x04,  /* 00001A10    "PCIU...." */
+    0x00,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001A18    "...\/._S" */
+    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x31,  /* 00001A20    "B_PCI0S1" */
+    0x38,0x5F,0x01,0xA0,0x29,0x7B,0x5C,0x2F,  /* 00001A28    "8_..){\/" */
+    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001A30    "._SB_PCI" */
+    0x30,0x50,0x43,0x49,0x44,0x0C,0x00,0x00,  /* 00001A38    "0PCID..." */
+    0x04,0x00,0x00,0x86,0x5C,0x2F,0x03,0x5F,  /* 00001A40    "....\/._" */
+    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 00001A48    "SB_PCI0S" */
+    0x31,0x38,0x5F,0x0A,0x03,0xA0,0x28,0x7B,  /* 00001A50    "18_...({" */
+    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001A58    "\/._SB_P" */
+    0x43,0x49,0x30,0x50,0x43,0x49,0x55,0x0C,  /* 00001A60    "CI0PCIU." */
+    0x00,0x00,0x08,0x00,0x00,0x86,0x5C,0x2F,  /* 00001A68    "......\/" */
+    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001A70    "._SB_PCI" */
+    0x30,0x53,0x31,0x39,0x5F,0x01,0xA0,0x29,  /* 00001A78    "0S19_..)" */
+    0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001A80    "{\/._SB_" */
+    0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x44,  /* 00001A88    "PCI0PCID" */
+    0x0C,0x00,0x00,0x08,0x00,0x00,0x86,0x5C,  /* 00001A90    ".......\" */
+    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001A98    "/._SB_PC" */
+    0x49,0x30,0x53,0x31,0x39,0x5F,0x0A,0x03,  /* 00001AA0    "I0S19_.." */
+    0xA0,0x28,0x7B,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001AA8    ".({\/._S" */
+    0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43,  /* 00001AB0    "B_PCI0PC" */
+    0x49,0x55,0x0C,0x00,0x00,0x10,0x00,0x00,  /* 00001AB8    "IU......" */
+    0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001AC0    ".\/._SB_" */
+    0x50,0x43,0x49,0x30,0x53,0x32,0x30,0x5F,  /* 00001AC8    "PCI0S20_" */
+    0x01,0xA0,0x29,0x7B,0x5C,0x2F,0x03,0x5F,  /* 00001AD0    "..){\/._" */
+    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50,  /* 00001AD8    "SB_PCI0P" */
+    0x43,0x49,0x44,0x0C,0x00,0x00,0x10,0x00,  /* 00001AE0    "CID....." */
+    0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001AE8    "..\/._SB" */
+    0x5F,0x50,0x43,0x49,0x30,0x53,0x32,0x30,  /* 00001AF0    "_PCI0S20" */
+    0x5F,0x0A,0x03,0xA0,0x28,0x7B,0x5C,0x2F,  /* 00001AF8    "_...({\/" */
+    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001B00    "._SB_PCI" */
+    0x30,0x50,0x43,0x49,0x55,0x0C,0x00,0x00,  /* 00001B08    "0PCIU..." */
+    0x20,0x00,0x00,0x86,0x5C,0x2F,0x03,0x5F,  /* 00001B10    " ...\/._" */
+    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 00001B18    "SB_PCI0S" */
+    0x32,0x31,0x5F,0x01,0xA0,0x29,0x7B,0x5C,  /* 00001B20    "21_..){\" */
+    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001B28    "/._SB_PC" */
+    0x49,0x30,0x50,0x43,0x49,0x44,0x0C,0x00,  /* 00001B30    "I0PCID.." */
+    0x00,0x20,0x00,0x00,0x86,0x5C,0x2F,0x03,  /* 00001B38    ". ...\/." */
+    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001B40    "_SB_PCI0" */
+    0x53,0x32,0x31,0x5F,0x0A,0x03,0xA0,0x28,  /* 00001B48    "S21_...(" */
+    0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001B50    "{\/._SB_" */
+    0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x55,  /* 00001B58    "PCI0PCIU" */
+    0x0C,0x00,0x00,0x40,0x00,0x00,0x86,0x5C,  /* 00001B60    "...@...\" */
+    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001B68    "/._SB_PC" */
+    0x49,0x30,0x53,0x32,0x32,0x5F,0x01,0xA0,  /* 00001B70    "I0S22_.." */
+    0x29,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001B78    "){\/._SB" */
+    0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49,  /* 00001B80    "_PCI0PCI" */
+    0x44,0x0C,0x00,0x00,0x40,0x00,0x00,0x86,  /* 00001B88    "D...@..." */
+    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001B90    "\/._SB_P" */
+    0x43,0x49,0x30,0x53,0x32,0x32,0x5F,0x0A,  /* 00001B98    "CI0S22_." */
+    0x03,0xA0,0x28,0x7B,0x5C,0x2F,0x03,0x5F,  /* 00001BA0    "..({\/._" */
+    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50,  /* 00001BA8    "SB_PCI0P" */
+    0x43,0x49,0x55,0x0C,0x00,0x00,0x80,0x00,  /* 00001BB0    "CIU....." */
+    0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001BB8    "..\/._SB" */
+    0x5F,0x50,0x43,0x49,0x30,0x53,0x32,0x33,  /* 00001BC0    "_PCI0S23" */
+    0x5F,0x01,0xA0,0x29,0x7B,0x5C,0x2F,0x03,  /* 00001BC8    "_..){\/." */
+    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001BD0    "_SB_PCI0" */
+    0x50,0x43,0x49,0x44,0x0C,0x00,0x00,0x80,  /* 00001BD8    "PCID...." */
+    0x00,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001BE0    "...\/._S" */
+    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x32,  /* 00001BE8    "B_PCI0S2" */
+    0x33,0x5F,0x0A,0x03,0xA0,0x28,0x7B,0x5C,  /* 00001BF0    "3_...({\" */
+    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001BF8    "/._SB_PC" */
+    0x49,0x30,0x50,0x43,0x49,0x55,0x0C,0x00,  /* 00001C00    "I0PCIU.." */
+    0x00,0x00,0x01,0x00,0x86,0x5C,0x2F,0x03,  /* 00001C08    ".....\/." */
+    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001C10    "_SB_PCI0" */
+    0x53,0x32,0x34,0x5F,0x01,0xA0,0x29,0x7B,  /* 00001C18    "S24_..){" */
+    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001C20    "\/._SB_P" */
+    0x43,0x49,0x30,0x50,0x43,0x49,0x44,0x0C,  /* 00001C28    "CI0PCID." */
+    0x00,0x00,0x00,0x01,0x00,0x86,0x5C,0x2F,  /* 00001C30    "......\/" */
+    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001C38    "._SB_PCI" */
+    0x30,0x53,0x32,0x34,0x5F,0x0A,0x03,0xA0,  /* 00001C40    "0S24_..." */
+    0x28,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001C48    "({\/._SB" */
+    0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49,  /* 00001C50    "_PCI0PCI" */
+    0x55,0x0C,0x00,0x00,0x00,0x02,0x00,0x86,  /* 00001C58    "U......." */
+    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001C60    "\/._SB_P" */
+    0x43,0x49,0x30,0x53,0x32,0x35,0x5F,0x01,  /* 00001C68    "CI0S25_." */
+    0xA0,0x29,0x7B,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001C70    ".){\/._S" */
+    0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43,  /* 00001C78    "B_PCI0PC" */
+    0x49,0x44,0x0C,0x00,0x00,0x00,0x02,0x00,  /* 00001C80    "ID......" */
+    0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001C88    ".\/._SB_" */
+    0x50,0x43,0x49,0x30,0x53,0x32,0x35,0x5F,  /* 00001C90    "PCI0S25_" */
+    0x0A,0x03,0xA0,0x28,0x7B,0x5C,0x2F,0x03,  /* 00001C98    "...({\/." */
+    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001CA0    "_SB_PCI0" */
+    0x50,0x43,0x49,0x55,0x0C,0x00,0x00,0x00,  /* 00001CA8    "PCIU...." */
+    0x04,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001CB0    "...\/._S" */
+    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x32,  /* 00001CB8    "B_PCI0S2" */
+    0x36,0x5F,0x01,0xA0,0x29,0x7B,0x5C,0x2F,  /* 00001CC0    "6_..){\/" */
+    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001CC8    "._SB_PCI" */
+    0x30,0x50,0x43,0x49,0x44,0x0C,0x00,0x00,  /* 00001CD0    "0PCID..." */
+    0x00,0x04,0x00,0x86,0x5C,0x2F,0x03,0x5F,  /* 00001CD8    "....\/._" */
+    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 00001CE0    "SB_PCI0S" */
+    0x32,0x36,0x5F,0x0A,0x03,0xA0,0x28,0x7B,  /* 00001CE8    "26_...({" */
+    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001CF0    "\/._SB_P" */
+    0x43,0x49,0x30,0x50,0x43,0x49,0x55,0x0C,  /* 00001CF8    "CI0PCIU." */
+    0x00,0x00,0x00,0x08,0x00,0x86,0x5C,0x2F,  /* 00001D00    "......\/" */
+    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001D08    "._SB_PCI" */
+    0x30,0x53,0x32,0x37,0x5F,0x01,0xA0,0x29,  /* 00001D10    "0S27_..)" */
+    0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001D18    "{\/._SB_" */
+    0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x44,  /* 00001D20    "PCI0PCID" */
+    0x0C,0x00,0x00,0x00,0x08,0x00,0x86,0x5C,  /* 00001D28    ".......\" */
+    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001D30    "/._SB_PC" */
+    0x49,0x30,0x53,0x32,0x37,0x5F,0x0A,0x03,  /* 00001D38    "I0S27_.." */
+    0xA0,0x28,0x7B,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001D40    ".({\/._S" */
+    0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43,  /* 00001D48    "B_PCI0PC" */
+    0x49,0x55,0x0C,0x00,0x00,0x00,0x10,0x00,  /* 00001D50    "IU......" */
+    0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001D58    ".\/._SB_" */
+    0x50,0x43,0x49,0x30,0x53,0x32,0x38,0x5F,  /* 00001D60    "PCI0S28_" */
+    0x01,0xA0,0x29,0x7B,0x5C,0x2F,0x03,0x5F,  /* 00001D68    "..){\/._" */
+    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50,  /* 00001D70    "SB_PCI0P" */
+    0x43,0x49,0x44,0x0C,0x00,0x00,0x00,0x10,  /* 00001D78    "CID....." */
+    0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001D80    "..\/._SB" */
+    0x5F,0x50,0x43,0x49,0x30,0x53,0x32,0x38,  /* 00001D88    "_PCI0S28" */
+    0x5F,0x0A,0x03,0xA0,0x28,0x7B,0x5C,0x2F,  /* 00001D90    "_...({\/" */
+    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001D98    "._SB_PCI" */
+    0x30,0x50,0x43,0x49,0x55,0x0C,0x00,0x00,  /* 00001DA0    "0PCIU..." */
+    0x00,0x20,0x00,0x86,0x5C,0x2F,0x03,0x5F,  /* 00001DA8    ". ..\/._" */
+    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 00001DB0    "SB_PCI0S" */
+    0x32,0x39,0x5F,0x01,0xA0,0x29,0x7B,0x5C,  /* 00001DB8    "29_..){\" */
+    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001DC0    "/._SB_PC" */
+    0x49,0x30,0x50,0x43,0x49,0x44,0x0C,0x00,  /* 00001DC8    "I0PCID.." */
+    0x00,0x00,0x20,0x00,0x86,0x5C,0x2F,0x03,  /* 00001DD0    ".. ..\/." */
+    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001DD8    "_SB_PCI0" */
+    0x53,0x32,0x39,0x5F,0x0A,0x03,0xA0,0x28,  /* 00001DE0    "S29_...(" */
+    0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,  /* 00001DE8    "{\/._SB_" */
+    0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x55,  /* 00001DF0    "PCI0PCIU" */
+    0x0C,0x00,0x00,0x00,0x40,0x00,0x86,0x5C,  /* 00001DF8    "....@..\" */
+    0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,  /* 00001E00    "/._SB_PC" */
+    0x49,0x30,0x53,0x33,0x30,0x5F,0x01,0xA0,  /* 00001E08    "I0S30_.." */
+    0x29,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001E10    "){\/._SB" */
+    0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49,  /* 00001E18    "_PCI0PCI" */
+    0x44,0x0C,0x00,0x00,0x00,0x40,0x00,0x86,  /* 00001E20    "D....@.." */
+    0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,  /* 00001E28    "\/._SB_P" */
+    0x43,0x49,0x30,0x53,0x33,0x30,0x5F,0x0A,  /* 00001E30    "CI0S30_." */
+    0x03,0xA0,0x28,0x7B,0x5C,0x2F,0x03,0x5F,  /* 00001E38    "..({\/._" */
+    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50,  /* 00001E40    "SB_PCI0P" */
+    0x43,0x49,0x55,0x0C,0x00,0x00,0x00,0x80,  /* 00001E48    "CIU....." */
+    0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,  /* 00001E50    "..\/._SB" */
+    0x5F,0x50,0x43,0x49,0x30,0x53,0x33,0x31,  /* 00001E58    "_PCI0S31" */
+    0x5F,0x01,0xA0,0x29,0x7B,0x5C,0x2F,0x03,  /* 00001E60    "_..){\/." */
+    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001E68    "_SB_PCI0" */
+    0x50,0x43,0x49,0x44,0x0C,0x00,0x00,0x00,  /* 00001E70    "PCID...." */
+    0x80,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001E78    "...\/._S" */
+    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x33,  /* 00001E80    "B_PCI0S3" */
+    0x31,0x5F,0x0A,0x03,0xA4,0x01,0x14,0x11,  /* 00001E88    "1_......" */
+    0x5F,0x4C,0x30,0x32,0x00,0xA4,0x5C,0x2E,  /* 00001E90    "_L02..\." */
+    0x5F,0x53,0x42,0x5F,0x50,0x52,0x53,0x43,  /* 00001E98    "_SB_PRSC" */
+    0x14,0x08,0x5F,0x4C,0x30,0x33,0x00,0xA4,  /* 00001EA0    ".._L03.." */
+    0x01,0x14,0x08,0x5F,0x4C,0x30,0x34,0x00,  /* 00001EA8    "..._L04." */
+    0xA4,0x01,0x14,0x08,0x5F,0x4C,0x30,0x35,  /* 00001EB0    "...._L05" */
+    0x00,0xA4,0x01,0x14,0x08,0x5F,0x4C,0x30,  /* 00001EB8    "....._L0" */
+    0x36,0x00,0xA4,0x01,0x14,0x08,0x5F,0x4C,  /* 00001EC0    "6....._L" */
+    0x30,0x37,0x00,0xA4,0x01,0x14,0x08,0x5F,  /* 00001EC8    "07....._" */
+    0x4C,0x30,0x38,0x00,0xA4,0x01,0x14,0x08,  /* 00001ED0    "L08....." */
+    0x5F,0x4C,0x30,0x39,0x00,0xA4,0x01,0x14,  /* 00001ED8    "_L09...." */
+    0x08,0x5F,0x4C,0x30,0x41,0x00,0xA4,0x01,  /* 00001EE0    "._L0A..." */
+    0x14,0x08,0x5F,0x4C,0x30,0x42,0x00,0xA4,  /* 00001EE8    ".._L0B.." */
+    0x01,0x14,0x08,0x5F,0x4C,0x30,0x43,0x00,  /* 00001EF0    "..._L0C." */
+    0xA4,0x01,0x14,0x08,0x5F,0x4C,0x30,0x44,  /* 00001EF8    "...._L0D" */
+    0x00,0xA4,0x01,0x14,0x08,0x5F,0x4C,0x30,  /* 00001F00    "....._L0" */
+    0x45,0x00,0xA4,0x01,0x14,0x08,0x5F,0x4C,  /* 00001F08    "E....._L" */
+    0x30,0x46,0x00,0xA4,0x01,
 };
index e91f8e001f941868d1784d5d47210fd5487bcfcd..18830dcf0d6b94965653da12f49871f1163f51e3 100644 (file)
@@ -1,6 +1,6 @@
 // Support for generating ACPI tables (on emulators)
 //
-// Copyright (C) 2008,2009  Kevin O'Connor <kevin@koconnor.net>
+// Copyright (C) 2008-2010  Kevin O'Connor <kevin@koconnor.net>
 // Copyright (C) 2006 Fabrice Bellard
 //
 // This file may be distributed under the terms of the GNU LGPLv3 license.
@@ -329,64 +329,121 @@ build_madt(void)
     return madt;
 }
 
+// Encode a hex value
+static inline char getHex(u32 val) {
+    val &= 0x0f;
+    return (val <= 9) ? ('0' + val) : ('A' + val - 10);
+}
+
+// Encode a length in an SSDT.
+static u8 *
+encodeLen(u8 *ssdt_ptr, int length, int bytes)
+{
+    switch (bytes) {
+    default:
+    case 4: ssdt_ptr[3] = ((length >> 20) & 0xff);
+    case 3: ssdt_ptr[2] = ((length >> 12) & 0xff);
+    case 2: ssdt_ptr[1] = ((length >> 4) & 0xff);
+            ssdt_ptr[0] = (((bytes-1) & 0x3) << 6) | (length & 0x0f);
+            break;
+    case 1: ssdt_ptr[0] = length & 0x3f;
+    }
+    return ssdt_ptr + bytes;
+}
+
+// AML Processor() object.  See src/ssdt-proc.dsl for info.
+static unsigned char ssdt_proc[] = {
+    0x5b,0x83,0x42,0x05,0x43,0x50,0x41,0x41,
+    0xaa,0x10,0xb0,0x00,0x00,0x06,0x08,0x49,
+    0x44,0x5f,0x5f,0x0a,0xaa,0x08,0x5f,0x48,
+    0x49,0x44,0x0d,0x41,0x43,0x50,0x49,0x30,
+    0x30,0x30,0x37,0x00,0x14,0x0f,0x5f,0x4d,
+    0x41,0x54,0x00,0xa4,0x43,0x50,0x4d,0x41,
+    0x49,0x44,0x5f,0x5f,0x14,0x0f,0x5f,0x53,
+    0x54,0x41,0x00,0xa4,0x43,0x50,0x53,0x54,
+    0x49,0x44,0x5f,0x5f,0x14,0x0f,0x5f,0x45,
+    0x4a,0x30,0x01,0x43,0x50,0x45,0x4a,0x49,
+    0x44,0x5f,0x5f,0x68
+};
+#define SD_OFFSET_CPUHEX 6
+#define SD_OFFSET_CPUID1 8
+#define SD_OFFSET_CPUID2 20
+
 #define SSDT_SIGNATURE 0x54445353 // SSDT
 static void*
 build_ssdt(void)
 {
     int acpi_cpus = MaxCountCPUs > 0xff ? 0xff : MaxCountCPUs;
-    // calculate the length of processor block and scope block
-    // excluding PkgLength
-    int cpu_length = 13 * acpi_cpus + 4;
-
-    int length = sizeof(struct acpi_table_header) + 3 + cpu_length;
-    u8 *ssdt = malloc_high(length);
+    // length = ScopeOp + procs + NTYF method + CPON package
+    int length = ((1+3+4)
+                  + (acpi_cpus * sizeof(ssdt_proc))
+                  + (1+2+5+(12*acpi_cpus))
+                  + (6+2+1+(1*acpi_cpus)));
+    u8 *ssdt = malloc_high(sizeof(struct acpi_table_header) + length);
     if (! ssdt) {
         warn_noalloc();
         return NULL;
     }
+    u8 *ssdt_ptr = ssdt + sizeof(struct acpi_table_header);
 
-    u8 *ssdt_ptr = ssdt;
-    ssdt_ptr[9] = 0; // checksum;
-    ssdt_ptr += sizeof(struct acpi_table_header);
-
-    // build processor scope header
+    // build Scope(_SB_) header
     *(ssdt_ptr++) = 0x10; // ScopeOp
-    if (cpu_length <= 0x3e) {
-        /* Handle 1-4 CPUs with one byte encoding */
-        *(ssdt_ptr++) = cpu_length + 1;
-    } else {
-        /* Handle 5-314 CPUs with two byte encoding */
-        *(ssdt_ptr++) = 0x40 | ((cpu_length + 2) & 0xf);
-        *(ssdt_ptr++) = (cpu_length + 2) >> 4;
-    }
-    *(ssdt_ptr++) = '_'; // Name
-    *(ssdt_ptr++) = 'P';
-    *(ssdt_ptr++) = 'R';
+    ssdt_ptr = encodeLen(ssdt_ptr, length-1, 3);
+    *(ssdt_ptr++) = '_';
+    *(ssdt_ptr++) = 'S';
+    *(ssdt_ptr++) = 'B';
     *(ssdt_ptr++) = '_';
 
-    // build object for each processor
+    // build Processor object for each processor
     int i;
     for (i=0; i<acpi_cpus; i++) {
-        *(ssdt_ptr++) = 0x5B; // ProcessorOp
-        *(ssdt_ptr++) = 0x83;
-        *(ssdt_ptr++) = 0x0B; // Length
-        *(ssdt_ptr++) = 'C';  // Name (CPUxx)
-        *(ssdt_ptr++) = 'P';
-        if ((i & 0xf0) != 0)
-            *(ssdt_ptr++) = (i >> 4) < 0xa ? (i >> 4) + '0' : (i >> 4) + 'A' - 0xa;
-        else
-            *(ssdt_ptr++) = 'U';
-        *(ssdt_ptr++) = (i & 0xf) < 0xa ? (i & 0xf) + '0' : (i & 0xf) + 'A' - 0xa;
+        memcpy(ssdt_ptr, ssdt_proc, sizeof(ssdt_proc));
+        ssdt_ptr[SD_OFFSET_CPUHEX] = getHex(i >> 4);
+        ssdt_ptr[SD_OFFSET_CPUHEX+1] = getHex(i);
+        ssdt_ptr[SD_OFFSET_CPUID1] = i;
+        ssdt_ptr[SD_OFFSET_CPUID2] = i;
+        ssdt_ptr += sizeof(ssdt_proc);
+    }
+
+    // build "Method(NTFY, 2) {If (LEqual(Arg0, 0x00)) {Notify(CP00, Arg1)} ...}"
+    *(ssdt_ptr++) = 0x14; // MethodOp
+    ssdt_ptr = encodeLen(ssdt_ptr, 2+5+(12*acpi_cpus), 2);
+    *(ssdt_ptr++) = 'N';
+    *(ssdt_ptr++) = 'T';
+    *(ssdt_ptr++) = 'F';
+    *(ssdt_ptr++) = 'Y';
+    *(ssdt_ptr++) = 0x02;
+    for (i=0; i<acpi_cpus; i++) {
+        *(ssdt_ptr++) = 0xA0; // IfOp
+        ssdt_ptr = encodeLen(ssdt_ptr, 11, 1);
+        *(ssdt_ptr++) = 0x93; // LEqualOp
+        *(ssdt_ptr++) = 0x68; // Arg0Op
+        *(ssdt_ptr++) = 0x0A; // BytePrefix
         *(ssdt_ptr++) = i;
-        *(ssdt_ptr++) = 0x10; // Processor block address
-        *(ssdt_ptr++) = 0xb0;
-        *(ssdt_ptr++) = 0;
-        *(ssdt_ptr++) = 0;
-        *(ssdt_ptr++) = 6;    // Processor block length
+        *(ssdt_ptr++) = 0x86; // NotifyOp
+        *(ssdt_ptr++) = 'C';
+        *(ssdt_ptr++) = 'P';
+        *(ssdt_ptr++) = getHex(i >> 4);
+        *(ssdt_ptr++) = getHex(i);
+        *(ssdt_ptr++) = 0x69; // Arg1Op
     }
 
+    // build "Name(CPON, Package() { One, One, ..., Zero, Zero, ... })"
+    *(ssdt_ptr++) = 0x08; // NameOp
+    *(ssdt_ptr++) = 'C';
+    *(ssdt_ptr++) = 'P';
+    *(ssdt_ptr++) = 'O';
+    *(ssdt_ptr++) = 'N';
+    *(ssdt_ptr++) = 0x12; // PackageOp
+    ssdt_ptr = encodeLen(ssdt_ptr, 2+1+(1*acpi_cpus), 2);
+    *(ssdt_ptr++) = acpi_cpus;
+    for (i=0; i<acpi_cpus; i++)
+        *(ssdt_ptr++) = (i < CountCPUs) ? 0x01 : 0x00;
+
     build_header((void*)ssdt, SSDT_SIGNATURE, ssdt_ptr - ssdt, 1);
 
+    //hexdump(ssdt, ssdt_ptr - ssdt);
+
     return ssdt;
 }
 
diff --git a/src/ssdt-proc.dsl b/src/ssdt-proc.dsl
new file mode 100644 (file)
index 0000000..358afa8
--- /dev/null
@@ -0,0 +1,50 @@
+/* This file is the basis for the ssdt_proc[] variable in src/acpi.c.
+ * It defines the contents of the per-cpu Processor() object.  At
+ * runtime, a dynamically generated SSDT will contain one copy of this
+ * AML snippet for every possible cpu in the system.  The objects will
+ * be placed in the \_SB_ namespace.
+ *
+ * To generate a new ssdt_proc[], run the commands:
+ *   cpp -P src/ssdt-proc.dsl > out/ssdt-proc.dsl.i
+ *   iasl -ta -p out/ssdt-proc out/ssdt-proc.dsl.i
+ *   tail -c +37 < out/ssdt-proc.aml | hexdump -e '"    " 8/1 "0x%02x," "\n"'
+ * and then cut-and-paste the output into the src/acpi.c ssdt_proc[]
+ * array.
+ *
+ * In addition to the aml code generated from this file, the
+ * src/acpi.c file creates a NTFY method with an entry for each cpu:
+ *     Method(NTFY, 2) {
+ *         If (LEqual(Arg0, 0x00)) { Notify(CP00, Arg1) }
+ *         If (LEqual(Arg0, 0x01)) { Notify(CP01, Arg1) }
+ *         ...
+ *     }
+ * and a CPON array with the list of active and inactive cpus:
+ *     Name(CPON, Package() { One, One, ..., Zero, Zero, ... })
+ */
+DefinitionBlock ("ssdt-proc.aml", "SSDT", 0x01, "BXPC", "BXSSDT", 0x1)
+/*  v------------------ DO NOT EDIT ------------------v */
+{
+    Processor (CPAA, 0xAA, 0x0000b010, 0x06) {
+        Name (ID, 0xAA)
+/*  ^------------------ DO NOT EDIT ------------------^
+ *
+ * The src/acpi.c code requires the above layout so that it can update
+ * CPAA and 0xAA with the appropriate CPU id (see
+ * SD_OFFSET_CPUHEX/CPUID1/CPUID2).  Don't change the above without
+ * also updating the C code.
+ */
+        Name (_HID, "ACPI0007")
+        External(CPMA, MethodObj)
+        External(CPST, MethodObj)
+        External(CPEJ, MethodObj)
+        Method(_MAT, 0) {
+            Return(CPMA(ID))
+        }
+        Method (_STA, 0) {
+            Return(CPST(ID))
+        }
+        Method (_EJ0, 1, NotSerialized) {
+            CPEJ(ID, Arg0)
+        }
+    }
+}