On Fri, Jan 22, 2010 at 09:35:55AM +0800, Liu, Jinsong wrote:
> >From cb997030cba02e7e74a29b3d942aeba9808ed293 Mon Sep 17 00:00:00 2001
> From: Liu, Jinsong <jinsong.liu(a)intel.com>
> Date: Fri, 22 Jan 2010 03:18:46 +0800
> Subject: [PATCH] Setup vcpu add/remove infrastructure, including madt bios_info and dsdt.
>
> 1. setup madt bios_info structure, so that static dsdt get
> run-time madt info like checksum address, lapic address,
> max cpu numbers, with least hardcode magic number (realmode
> address of bios_info).
> 2. setup vcpu add/remove dsdt infrastructure, including processor
> related acpi objects and control methods. vcpu add/remove will
> trigger SCI and then control method _L02. By matching madt, vcpu
> number and add/remove action were found, then by notify control
> method, it will notify OS acpi driver.
>
> Signed-off-by: Liu, Jinsong <jinsong.liu(a)intel.com>
As far as I can see this is the same version as previous one. No
comments addressed.
> ---
> src/acpi-dsdt.dsl | 131 ++++++++++++++++-
> src/acpi-dsdt.hex | 441 ++++++++++++++++++++++++++++++++++++++++++++++++++---
> src/acpi.c | 7 +
> src/biosvar.h | 14 ++
> src/post.c | 13 ++
> 5 files changed, 582 insertions(+), 24 deletions(-)
>
> diff --git a/src/acpi-dsdt.dsl b/src/acpi-dsdt.dsl
> index cc31112..ed78489 100644
> --- a/src/acpi-dsdt.dsl
> +++ b/src/acpi-dsdt.dsl
> @@ -700,8 +700,11 @@ DefinitionBlock (
> Return (0x01)
>
> }
> + /*
> + * _L02 method for CPU notification
> + */
> Method(_L02) {
> - Return(0x01)
> + Return(\_PR.PRSC())
> }
> Method(_L03) {
> Return(0x01)
> @@ -744,4 +747,130 @@ DefinitionBlock (
> }
> }
>
> +
> + Scope (\_PR)
> + {
> + /* BIOS_INFO_PHYSICAL_ADDRESS == 0xEA000 */
> + OperationRegion(BIOS, SystemMemory, 0xEA000, 16)
> + Field(BIOS, DwordAcc, NoLock, Preserve)
> + {
> + MSUA, 32, /* MADT checksum address */
> + MAPA, 32, /* MADT LAPIC0 address */
> + PBYT, 32, /* bytes of max vcpus bitmap */
> + PBIT, 32 /* bits of last byte of max vcpus bitmap */
> + }
> +
> + OperationRegion(MSUM, SystemMemory, MSUA, 1)
> + Field(MSUM, ByteAcc, NoLock, Preserve)
> + {
> + MSU, 8 /* MADT checksum */
> + }
> +
> + #define gen_processor(nr, name) \
> + Processor (C##name, nr, 0x0000b010, 0x06) { \
> + Name (_HID, "ACPI0007") \
> + OperationRegion(MATR, SystemMemory, Add(MAPA, Multiply(nr,8)), 8) \
> + Field (MATR, ByteAcc, NoLock, Preserve) \
> + { \
> + MAT, 64 \
> + } \
> + Field (MATR, ByteAcc, NoLock, Preserve) \
> + { \
> + Offset(4), \
> + FLG, 1 \
> + } \
> + Method(_MAT, 0) { \
> + Return(ToBuffer(MAT)) \
> + } \
> + Method (_STA) { \
> + If (FLG) { Return(0xF) } Else { Return(0x9) } \
> + } \
> + Method (_EJ0, 1, NotSerialized) { \
> + Sleep (0xC8) \
> + } \
> + } \
> +
> + gen_processor(0, 0)
> + gen_processor(1, 1)
> + gen_processor(2, 2)
> + gen_processor(3, 3)
> + gen_processor(4, 4)
> + gen_processor(5, 5)
> + gen_processor(6, 6)
> + gen_processor(7, 7)
> + gen_processor(8, 8)
> + gen_processor(9, 9)
> + gen_processor(10, A)
> + gen_processor(11, B)
> + gen_processor(12, C)
> + gen_processor(13, D)
> + gen_processor(14, E)
> +
> +
> + Method (NTFY, 2) {
> + #define gen_ntfy(nr) \
> + If (LEqual(Arg0, 0x##nr)) { \
> + If (LNotEqual(Arg1, \_PR.C##nr.FLG)) { \
> + Store (Arg1, \_PR.C##nr.FLG) \
> + If (LEqual(Arg1, 1)) { \
> + Notify(C##nr, 1) \
> + Subtract(\_PR.MSU, 1, \_PR.MSU) \
> + } Else { \
> + Notify(C##nr, 3) \
> + Add(\_PR.MSU, 1, \_PR.MSU) \
> + } \
> + } \
> + }
> +
> + gen_ntfy(0)
> + gen_ntfy(1)
> + gen_ntfy(2)
> + gen_ntfy(3)
> + gen_ntfy(4)
> + gen_ntfy(5)
> + gen_ntfy(6)
> + gen_ntfy(7)
> + gen_ntfy(8)
> + gen_ntfy(9)
> + gen_ntfy(A)
> + gen_ntfy(B)
> + gen_ntfy(C)
> + gen_ntfy(D)
> + gen_ntfy(E)
> +
> + Return(One)
> + }
> +
> +
> + OperationRegion(PRST, SystemIO, 0xaf00, 32)
> + Field (PRST, ByteAcc, NoLock, Preserve)
> + {
> + PRS, 256
> + }
> +
> + Method(PRSC, 0) {
> + Store(PRS, Local3)
> + Store(Zero, Local0)
> + While(LLess(Local0, \_PR.PBYT)) {
> + Store(Zero, Local1)
> + Store(DerefOf(Index(Local3, Local0)), Local2)
> + While(LLess(Local1, 8)) {
> + NTFY(Add(Multiply(Local0, 8), Local1), And(Local2, 1))
> + ShiftRight(Local2, 1, Local2)
> + Increment(Local1)
> + }
> + Increment(Local0)
> + }
> +
> + Store(Zero, Local1)
> + Store(DerefOf(Index(Local3, Local0)), Local2)
> + While(LLess(Local1, \_PR.PBIT)) {
> + NTFY(Add(Multiply(Local0, 8), Local1), And(Local2, 1))
> + ShiftRight(Local2, 1, Local2)
> + Increment(Local1)
> + }
> +
> + Return(One)
> + }
> + }
> }
> diff --git a/src/acpi-dsdt.hex b/src/acpi-dsdt.hex
> index 465e93e..85d6d69 100644
> --- a/src/acpi-dsdt.hex
> +++ b/src/acpi-dsdt.hex
> @@ -1,22 +1,22 @@
> /*
> *
> * Intel ACPI Component Architecture
> - * ASL Optimizing Compiler version 20090123 [Feb 25 2009]
> - * Copyright (C) 2000 - 2009 Intel Corporation
> + * ASL Optimizing Compiler version 20061109 [Jul 16 2007]
> + * Copyright (C) 2000 - 2006 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" - Fri Jan 22 02:12:21 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,0x7D,0x2A,0x00,0x00, /* 00000000 "DSDT}*.." */
> + 0x01,0x68,0x42,0x58,0x50,0x43,0x00,0x00, /* 00000008 ".hBXPC.." */
> 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 "#.. ..\." */
> + 0x09,0x11,0x06,0x20,0x10,0x1C,0x5C,0x00, /* 00000020 "... ..\." */
> 0x5B,0x80,0x44,0x42,0x47,0x5F,0x01,0x0B, /* 00000028 "[.DBG_.." */
> 0x44,0xB0,0x0A,0x04,0x5B,0x81,0x0B,0x44, /* 00000030 "D...[..D" */
> 0x42,0x47,0x5F,0x03,0x44,0x42,0x47,0x4C, /* 00000038 "BG_.DBGL" */
> @@ -643,7 +643,7 @@ 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." */
> + 0x10,0x42,0xA7,0x5F,0x47,0x50,0x45,0x08, /* 000013B8 ".B._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...." */
> @@ -960,21 +960,416 @@ unsigned char AmlCode[] =
> 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" */
> + 0x0A,0x03,0xA4,0x01,0x14,0x11,0x5F,0x4C, /* 00001DA0 "......_L" */
> + 0x30,0x32,0x00,0xA4,0x5C,0x2E,0x5F,0x50, /* 00001DA8 "02..\._P" */
> + 0x52,0x5F,0x50,0x52,0x53,0x43,0x14,0x08, /* 00001DB0 "R_PRSC.." */
> + 0x5F,0x4C,0x30,0x33,0x00,0xA4,0x01,0x14, /* 00001DB8 "_L03...." */
> + 0x08,0x5F,0x4C,0x30,0x34,0x00,0xA4,0x01, /* 00001DC0 "._L04..." */
> + 0x14,0x08,0x5F,0x4C,0x30,0x35,0x00,0xA4, /* 00001DC8 ".._L05.." */
> + 0x01,0x14,0x08,0x5F,0x4C,0x30,0x36,0x00, /* 00001DD0 "..._L06." */
> + 0xA4,0x01,0x14,0x08,0x5F,0x4C,0x30,0x37, /* 00001DD8 "...._L07" */
> 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,
> + 0x38,0x00,0xA4,0x01,0x14,0x08,0x5F,0x4C, /* 00001DE8 "8....._L" */
> + 0x30,0x39,0x00,0xA4,0x01,0x14,0x08,0x5F, /* 00001DF0 "09....._" */
> + 0x4C,0x30,0x41,0x00,0xA4,0x01,0x14,0x08, /* 00001DF8 "L0A....." */
> + 0x5F,0x4C,0x30,0x42,0x00,0xA4,0x01,0x14, /* 00001E00 "_L0B...." */
> + 0x08,0x5F,0x4C,0x30,0x43,0x00,0xA4,0x01, /* 00001E08 "._L0C..." */
> + 0x14,0x08,0x5F,0x4C,0x30,0x44,0x00,0xA4, /* 00001E10 ".._L0D.." */
> + 0x01,0x14,0x08,0x5F,0x4C,0x30,0x45,0x00, /* 00001E18 "..._L0E." */
> + 0xA4,0x01,0x14,0x08,0x5F,0x4C,0x30,0x46, /* 00001E20 "...._L0F" */
> + 0x00,0xA4,0x01,0x10,0x41,0xC5,0x5F,0x50, /* 00001E28 "....A._P" */
> + 0x52,0x5F,0x5B,0x80,0x42,0x49,0x4F,0x53, /* 00001E30 "R_[.BIOS" */
> + 0x00,0x0C,0x00,0xA0,0x0E,0x00,0x0A,0x10, /* 00001E38 "........" */
> + 0x5B,0x81,0x1A,0x42,0x49,0x4F,0x53,0x03, /* 00001E40 "[..BIOS." */
> + 0x4D,0x53,0x55,0x41,0x20,0x4D,0x41,0x50, /* 00001E48 "MSUA MAP" */
> + 0x41,0x20,0x50,0x42,0x59,0x54,0x20,0x50, /* 00001E50 "A PBYT P" */
> + 0x42,0x49,0x54,0x20,0x5B,0x80,0x4D,0x53, /* 00001E58 "BIT [.MS" */
> + 0x55,0x4D,0x00,0x4D,0x53,0x55,0x41,0x01, /* 00001E60 "UM.MSUA." */
> + 0x5B,0x81,0x0B,0x4D,0x53,0x55,0x4D,0x01, /* 00001E68 "[..MSUM." */
> + 0x4D,0x53,0x55,0x5F,0x08,0x5B,0x83,0x46, /* 00001E70 "MSU_.[.F" */
> + 0x07,0x43,0x30,0x5F,0x5F,0x00,0x10,0xB0, /* 00001E78 ".C0__..." */
> + 0x00,0x00,0x06,0x08,0x5F,0x48,0x49,0x44, /* 00001E80 "...._HID" */
> + 0x0D,0x41,0x43,0x50,0x49,0x30,0x30,0x30, /* 00001E88 ".ACPI000" */
> + 0x37,0x00,0x5B,0x80,0x4D,0x41,0x54,0x52, /* 00001E90 "7.[.MATR" */
> + 0x00,0x72,0x4D,0x41,0x50,0x41,0x00,0x00, /* 00001E98 ".rMAPA.." */
> + 0x0A,0x08,0x5B,0x81,0x0C,0x4D,0x41,0x54, /* 00001EA0 "..[..MAT" */
> + 0x52,0x01,0x4D,0x41,0x54,0x5F,0x40,0x04, /* 00001EA8 "R.MAT_@." */
> + 0x5B,0x81,0x0D,0x4D,0x41,0x54,0x52,0x01, /* 00001EB0 "[..MATR." */
> + 0x00,0x20,0x46,0x4C,0x47,0x5F,0x01,0x14, /* 00001EB8 ". FLG_.." */
> + 0x0D,0x5F,0x4D,0x41,0x54,0x00,0xA4,0x96, /* 00001EC0 "._MAT..." */
> + 0x4D,0x41,0x54,0x5F,0x00,0x14,0x14,0x5F, /* 00001EC8 "MAT_..._" */
> + 0x53,0x54,0x41,0x00,0xA0,0x08,0x46,0x4C, /* 00001ED0 "STA...FL" */
> + 0x47,0x5F,0xA4,0x0A,0x0F,0xA1,0x04,0xA4, /* 00001ED8 "G_......" */
> + 0x0A,0x09,0x14,0x0A,0x5F,0x45,0x4A,0x30, /* 00001EE0 "...._EJ0" */
> + 0x01,0x5B,0x22,0x0A,0xC8,0x5B,0x83,0x47, /* 00001EE8 ".["..[.G" */
> + 0x07,0x43,0x31,0x5F,0x5F,0x01,0x10,0xB0, /* 00001EF0 ".C1__..." */
> + 0x00,0x00,0x06,0x08,0x5F,0x48,0x49,0x44, /* 00001EF8 "...._HID" */
> + 0x0D,0x41,0x43,0x50,0x49,0x30,0x30,0x30, /* 00001F00 ".ACPI000" */
> + 0x37,0x00,0x5B,0x80,0x4D,0x41,0x54,0x52, /* 00001F08 "7.[.MATR" */
> + 0x00,0x72,0x4D,0x41,0x50,0x41,0x0A,0x08, /* 00001F10 ".rMAPA.." */
> + 0x00,0x0A,0x08,0x5B,0x81,0x0C,0x4D,0x41, /* 00001F18 "...[..MA" */
> + 0x54,0x52,0x01,0x4D,0x41,0x54,0x5F,0x40, /* 00001F20 "TR.MAT_@" */
> + 0x04,0x5B,0x81,0x0D,0x4D,0x41,0x54,0x52, /* 00001F28 ".[..MATR" */
> + 0x01,0x00,0x20,0x46,0x4C,0x47,0x5F,0x01, /* 00001F30 ".. FLG_." */
> + 0x14,0x0D,0x5F,0x4D,0x41,0x54,0x00,0xA4, /* 00001F38 ".._MAT.." */
> + 0x96,0x4D,0x41,0x54,0x5F,0x00,0x14,0x14, /* 00001F40 ".MAT_..." */
> + 0x5F,0x53,0x54,0x41,0x00,0xA0,0x08,0x46, /* 00001F48 "_STA...F" */
> + 0x4C,0x47,0x5F,0xA4,0x0A,0x0F,0xA1,0x04, /* 00001F50 "LG_....." */
> + 0xA4,0x0A,0x09,0x14,0x0A,0x5F,0x45,0x4A, /* 00001F58 "....._EJ" */
> + 0x30,0x01,0x5B,0x22,0x0A,0xC8,0x5B,0x83, /* 00001F60 "0.["..[." */
> + 0x47,0x07,0x43,0x32,0x5F,0x5F,0x02,0x10, /* 00001F68 "G.C2__.." */
> + 0xB0,0x00,0x00,0x06,0x08,0x5F,0x48,0x49, /* 00001F70 "....._HI" */
> + 0x44,0x0D,0x41,0x43,0x50,0x49,0x30,0x30, /* 00001F78 "D.ACPI00" */
> + 0x30,0x37,0x00,0x5B,0x80,0x4D,0x41,0x54, /* 00001F80 "07.[.MAT" */
> + 0x52,0x00,0x72,0x4D,0x41,0x50,0x41,0x0A, /* 00001F88 "R.rMAPA." */
> + 0x10,0x00,0x0A,0x08,0x5B,0x81,0x0C,0x4D, /* 00001F90 "....[..M" */
> + 0x41,0x54,0x52,0x01,0x4D,0x41,0x54,0x5F, /* 00001F98 "ATR.MAT_" */
> + 0x40,0x04,0x5B,0x81,0x0D,0x4D,0x41,0x54, /* 00001FA0 "@.[..MAT" */
> + 0x52,0x01,0x00,0x20,0x46,0x4C,0x47,0x5F, /* 00001FA8 "R.. FLG_" */
> + 0x01,0x14,0x0D,0x5F,0x4D,0x41,0x54,0x00, /* 00001FB0 "..._MAT." */
> + 0xA4,0x96,0x4D,0x41,0x54,0x5F,0x00,0x14, /* 00001FB8 "..MAT_.." */
> + 0x14,0x5F,0x53,0x54,0x41,0x00,0xA0,0x08, /* 00001FC0 "._STA..." */
> + 0x46,0x4C,0x47,0x5F,0xA4,0x0A,0x0F,0xA1, /* 00001FC8 "FLG_...." */
> + 0x04,0xA4,0x0A,0x09,0x14,0x0A,0x5F,0x45, /* 00001FD0 "......_E" */
> + 0x4A,0x30,0x01,0x5B,0x22,0x0A,0xC8,0x5B, /* 00001FD8 "J0.["..[" */
> + 0x83,0x47,0x07,0x43,0x33,0x5F,0x5F,0x03, /* 00001FE0 ".G.C3__." */
> + 0x10,0xB0,0x00,0x00,0x06,0x08,0x5F,0x48, /* 00001FE8 "......_H" */
> + 0x49,0x44,0x0D,0x41,0x43,0x50,0x49,0x30, /* 00001FF0 "ID.ACPI0" */
> + 0x30,0x30,0x37,0x00,0x5B,0x80,0x4D,0x41, /* 00001FF8 "007.[.MA" */
> + 0x54,0x52,0x00,0x72,0x4D,0x41,0x50,0x41, /* 00002000 "TR.rMAPA" */
> + 0x0A,0x18,0x00,0x0A,0x08,0x5B,0x81,0x0C, /* 00002008 ".....[.." */
> + 0x4D,0x41,0x54,0x52,0x01,0x4D,0x41,0x54, /* 00002010 "MATR.MAT" */
> + 0x5F,0x40,0x04,0x5B,0x81,0x0D,0x4D,0x41, /* 00002018 "_@.[..MA" */
> + 0x54,0x52,0x01,0x00,0x20,0x46,0x4C,0x47, /* 00002020 "TR.. FLG" */
> + 0x5F,0x01,0x14,0x0D,0x5F,0x4D,0x41,0x54, /* 00002028 "_..._MAT" */
> + 0x00,0xA4,0x96,0x4D,0x41,0x54,0x5F,0x00, /* 00002030 "...MAT_." */
> + 0x14,0x14,0x5F,0x53,0x54,0x41,0x00,0xA0, /* 00002038 ".._STA.." */
> + 0x08,0x46,0x4C,0x47,0x5F,0xA4,0x0A,0x0F, /* 00002040 ".FLG_..." */
> + 0xA1,0x04,0xA4,0x0A,0x09,0x14,0x0A,0x5F, /* 00002048 "......._" */
> + 0x45,0x4A,0x30,0x01,0x5B,0x22,0x0A,0xC8, /* 00002050 "EJ0.[".." */
> + 0x5B,0x83,0x47,0x07,0x43,0x34,0x5F,0x5F, /* 00002058 "[.G.C4__" */
> + 0x04,0x10,0xB0,0x00,0x00,0x06,0x08,0x5F, /* 00002060 "......._" */
> + 0x48,0x49,0x44,0x0D,0x41,0x43,0x50,0x49, /* 00002068 "HID.ACPI" */
> + 0x30,0x30,0x30,0x37,0x00,0x5B,0x80,0x4D, /* 00002070 "0007.[.M" */
> + 0x41,0x54,0x52,0x00,0x72,0x4D,0x41,0x50, /* 00002078 "ATR.rMAP" */
> + 0x41,0x0A,0x20,0x00,0x0A,0x08,0x5B,0x81, /* 00002080 "A. ...[." */
> + 0x0C,0x4D,0x41,0x54,0x52,0x01,0x4D,0x41, /* 00002088 ".MATR.MA" */
> + 0x54,0x5F,0x40,0x04,0x5B,0x81,0x0D,0x4D, /* 00002090 "T_@.[..M" */
> + 0x41,0x54,0x52,0x01,0x00,0x20,0x46,0x4C, /* 00002098 "ATR.. FL" */
> + 0x47,0x5F,0x01,0x14,0x0D,0x5F,0x4D,0x41, /* 000020A0 "G_..._MA" */
> + 0x54,0x00,0xA4,0x96,0x4D,0x41,0x54,0x5F, /* 000020A8 "T...MAT_" */
> + 0x00,0x14,0x14,0x5F,0x53,0x54,0x41,0x00, /* 000020B0 "..._STA." */
> + 0xA0,0x08,0x46,0x4C,0x47,0x5F,0xA4,0x0A, /* 000020B8 "..FLG_.." */
> + 0x0F,0xA1,0x04,0xA4,0x0A,0x09,0x14,0x0A, /* 000020C0 "........" */
> + 0x5F,0x45,0x4A,0x30,0x01,0x5B,0x22,0x0A, /* 000020C8 "_EJ0.["." */
> + 0xC8,0x5B,0x83,0x47,0x07,0x43,0x35,0x5F, /* 000020D0 ".[.G.C5_" */
> + 0x5F,0x05,0x10,0xB0,0x00,0x00,0x06,0x08, /* 000020D8 "_......." */
> + 0x5F,0x48,0x49,0x44,0x0D,0x41,0x43,0x50, /* 000020E0 "_HID.ACP" */
> + 0x49,0x30,0x30,0x30,0x37,0x00,0x5B,0x80, /* 000020E8 "I0007.[." */
> + 0x4D,0x41,0x54,0x52,0x00,0x72,0x4D,0x41, /* 000020F0 "MATR.rMA" */
> + 0x50,0x41,0x0A,0x28,0x00,0x0A,0x08,0x5B, /* 000020F8 "PA.(...[" */
> + 0x81,0x0C,0x4D,0x41,0x54,0x52,0x01,0x4D, /* 00002100 "..MATR.M" */
> + 0x41,0x54,0x5F,0x40,0x04,0x5B,0x81,0x0D, /* 00002108 "AT_@.[.." */
> + 0x4D,0x41,0x54,0x52,0x01,0x00,0x20,0x46, /* 00002110 "MATR.. F" */
> + 0x4C,0x47,0x5F,0x01,0x14,0x0D,0x5F,0x4D, /* 00002118 "LG_..._M" */
> + 0x41,0x54,0x00,0xA4,0x96,0x4D,0x41,0x54, /* 00002120 "AT...MAT" */
> + 0x5F,0x00,0x14,0x14,0x5F,0x53,0x54,0x41, /* 00002128 "_..._STA" */
> + 0x00,0xA0,0x08,0x46,0x4C,0x47,0x5F,0xA4, /* 00002130 "...FLG_." */
> + 0x0A,0x0F,0xA1,0x04,0xA4,0x0A,0x09,0x14, /* 00002138 "........" */
> + 0x0A,0x5F,0x45,0x4A,0x30,0x01,0x5B,0x22, /* 00002140 "._EJ0.["" */
> + 0x0A,0xC8,0x5B,0x83,0x47,0x07,0x43,0x36, /* 00002148 "..[.G.C6" */
> + 0x5F,0x5F,0x06,0x10,0xB0,0x00,0x00,0x06, /* 00002150 "__......" */
> + 0x08,0x5F,0x48,0x49,0x44,0x0D,0x41,0x43, /* 00002158 "._HID.AC" */
> + 0x50,0x49,0x30,0x30,0x30,0x37,0x00,0x5B, /* 00002160 "PI0007.[" */
> + 0x80,0x4D,0x41,0x54,0x52,0x00,0x72,0x4D, /* 00002168 ".MATR.rM" */
> + 0x41,0x50,0x41,0x0A,0x30,0x00,0x0A,0x08, /* 00002170 "APA.0..." */
> + 0x5B,0x81,0x0C,0x4D,0x41,0x54,0x52,0x01, /* 00002178 "[..MATR." */
> + 0x4D,0x41,0x54,0x5F,0x40,0x04,0x5B,0x81, /* 00002180 "MAT_@.[." */
> + 0x0D,0x4D,0x41,0x54,0x52,0x01,0x00,0x20, /* 00002188 ".MATR.. " */
> + 0x46,0x4C,0x47,0x5F,0x01,0x14,0x0D,0x5F, /* 00002190 "FLG_..._" */
> + 0x4D,0x41,0x54,0x00,0xA4,0x96,0x4D,0x41, /* 00002198 "MAT...MA" */
> + 0x54,0x5F,0x00,0x14,0x14,0x5F,0x53,0x54, /* 000021A0 "T_..._ST" */
> + 0x41,0x00,0xA0,0x08,0x46,0x4C,0x47,0x5F, /* 000021A8 "A...FLG_" */
> + 0xA4,0x0A,0x0F,0xA1,0x04,0xA4,0x0A,0x09, /* 000021B0 "........" */
> + 0x14,0x0A,0x5F,0x45,0x4A,0x30,0x01,0x5B, /* 000021B8 ".._EJ0.[" */
> + 0x22,0x0A,0xC8,0x5B,0x83,0x47,0x07,0x43, /* 000021C0 ""..[.G.C" */
> + 0x37,0x5F,0x5F,0x07,0x10,0xB0,0x00,0x00, /* 000021C8 "7__....." */
> + 0x06,0x08,0x5F,0x48,0x49,0x44,0x0D,0x41, /* 000021D0 ".._HID.A" */
> + 0x43,0x50,0x49,0x30,0x30,0x30,0x37,0x00, /* 000021D8 "CPI0007." */
> + 0x5B,0x80,0x4D,0x41,0x54,0x52,0x00,0x72, /* 000021E0 "[.MATR.r" */
> + 0x4D,0x41,0x50,0x41,0x0A,0x38,0x00,0x0A, /* 000021E8 "MAPA.8.." */
> + 0x08,0x5B,0x81,0x0C,0x4D,0x41,0x54,0x52, /* 000021F0 ".[..MATR" */
> + 0x01,0x4D,0x41,0x54,0x5F,0x40,0x04,0x5B, /* 000021F8 ".MAT_@.[" */
> + 0x81,0x0D,0x4D,0x41,0x54,0x52,0x01,0x00, /* 00002200 "..MATR.." */
> + 0x20,0x46,0x4C,0x47,0x5F,0x01,0x14,0x0D, /* 00002208 " FLG_..." */
> + 0x5F,0x4D,0x41,0x54,0x00,0xA4,0x96,0x4D, /* 00002210 "_MAT...M" */
> + 0x41,0x54,0x5F,0x00,0x14,0x14,0x5F,0x53, /* 00002218 "AT_..._S" */
> + 0x54,0x41,0x00,0xA0,0x08,0x46,0x4C,0x47, /* 00002220 "TA...FLG" */
> + 0x5F,0xA4,0x0A,0x0F,0xA1,0x04,0xA4,0x0A, /* 00002228 "_......." */
> + 0x09,0x14,0x0A,0x5F,0x45,0x4A,0x30,0x01, /* 00002230 "..._EJ0." */
> + 0x5B,0x22,0x0A,0xC8,0x5B,0x83,0x47,0x07, /* 00002238 "["..[.G." */
> + 0x43,0x38,0x5F,0x5F,0x08,0x10,0xB0,0x00, /* 00002240 "C8__...." */
> + 0x00,0x06,0x08,0x5F,0x48,0x49,0x44,0x0D, /* 00002248 "..._HID." */
> + 0x41,0x43,0x50,0x49,0x30,0x30,0x30,0x37, /* 00002250 "ACPI0007" */
> + 0x00,0x5B,0x80,0x4D,0x41,0x54,0x52,0x00, /* 00002258 ".[.MATR." */
> + 0x72,0x4D,0x41,0x50,0x41,0x0A,0x40,0x00, /* 00002260 "rMAPA.@." */
> + 0x0A,0x08,0x5B,0x81,0x0C,0x4D,0x41,0x54, /* 00002268 "..[..MAT" */
> + 0x52,0x01,0x4D,0x41,0x54,0x5F,0x40,0x04, /* 00002270 "R.MAT_@." */
> + 0x5B,0x81,0x0D,0x4D,0x41,0x54,0x52,0x01, /* 00002278 "[..MATR." */
> + 0x00,0x20,0x46,0x4C,0x47,0x5F,0x01,0x14, /* 00002280 ". FLG_.." */
> + 0x0D,0x5F,0x4D,0x41,0x54,0x00,0xA4,0x96, /* 00002288 "._MAT..." */
> + 0x4D,0x41,0x54,0x5F,0x00,0x14,0x14,0x5F, /* 00002290 "MAT_..._" */
> + 0x53,0x54,0x41,0x00,0xA0,0x08,0x46,0x4C, /* 00002298 "STA...FL" */
> + 0x47,0x5F,0xA4,0x0A,0x0F,0xA1,0x04,0xA4, /* 000022A0 "G_......" */
> + 0x0A,0x09,0x14,0x0A,0x5F,0x45,0x4A,0x30, /* 000022A8 "...._EJ0" */
> + 0x01,0x5B,0x22,0x0A,0xC8,0x5B,0x83,0x47, /* 000022B0 ".["..[.G" */
> + 0x07,0x43,0x39,0x5F,0x5F,0x09,0x10,0xB0, /* 000022B8 ".C9__..." */
> + 0x00,0x00,0x06,0x08,0x5F,0x48,0x49,0x44, /* 000022C0 "...._HID" */
> + 0x0D,0x41,0x43,0x50,0x49,0x30,0x30,0x30, /* 000022C8 ".ACPI000" */
> + 0x37,0x00,0x5B,0x80,0x4D,0x41,0x54,0x52, /* 000022D0 "7.[.MATR" */
> + 0x00,0x72,0x4D,0x41,0x50,0x41,0x0A,0x48, /* 000022D8 ".rMAPA.H" */
> + 0x00,0x0A,0x08,0x5B,0x81,0x0C,0x4D,0x41, /* 000022E0 "...[..MA" */
> + 0x54,0x52,0x01,0x4D,0x41,0x54,0x5F,0x40, /* 000022E8 "TR.MAT_@" */
> + 0x04,0x5B,0x81,0x0D,0x4D,0x41,0x54,0x52, /* 000022F0 ".[..MATR" */
> + 0x01,0x00,0x20,0x46,0x4C,0x47,0x5F,0x01, /* 000022F8 ".. FLG_." */
> + 0x14,0x0D,0x5F,0x4D,0x41,0x54,0x00,0xA4, /* 00002300 ".._MAT.." */
> + 0x96,0x4D,0x41,0x54,0x5F,0x00,0x14,0x14, /* 00002308 ".MAT_..." */
> + 0x5F,0x53,0x54,0x41,0x00,0xA0,0x08,0x46, /* 00002310 "_STA...F" */
> + 0x4C,0x47,0x5F,0xA4,0x0A,0x0F,0xA1,0x04, /* 00002318 "LG_....." */
> + 0xA4,0x0A,0x09,0x14,0x0A,0x5F,0x45,0x4A, /* 00002320 "....._EJ" */
> + 0x30,0x01,0x5B,0x22,0x0A,0xC8,0x5B,0x83, /* 00002328 "0.["..[." */
> + 0x47,0x07,0x43,0x41,0x5F,0x5F,0x0A,0x10, /* 00002330 "G.CA__.." */
> + 0xB0,0x00,0x00,0x06,0x08,0x5F,0x48,0x49, /* 00002338 "....._HI" */
> + 0x44,0x0D,0x41,0x43,0x50,0x49,0x30,0x30, /* 00002340 "D.ACPI00" */
> + 0x30,0x37,0x00,0x5B,0x80,0x4D,0x41,0x54, /* 00002348 "07.[.MAT" */
> + 0x52,0x00,0x72,0x4D,0x41,0x50,0x41,0x0A, /* 00002350 "R.rMAPA." */
> + 0x50,0x00,0x0A,0x08,0x5B,0x81,0x0C,0x4D, /* 00002358 "P...[..M" */
> + 0x41,0x54,0x52,0x01,0x4D,0x41,0x54,0x5F, /* 00002360 "ATR.MAT_" */
> + 0x40,0x04,0x5B,0x81,0x0D,0x4D,0x41,0x54, /* 00002368 "@.[..MAT" */
> + 0x52,0x01,0x00,0x20,0x46,0x4C,0x47,0x5F, /* 00002370 "R.. FLG_" */
> + 0x01,0x14,0x0D,0x5F,0x4D,0x41,0x54,0x00, /* 00002378 "..._MAT." */
> + 0xA4,0x96,0x4D,0x41,0x54,0x5F,0x00,0x14, /* 00002380 "..MAT_.." */
> + 0x14,0x5F,0x53,0x54,0x41,0x00,0xA0,0x08, /* 00002388 "._STA..." */
> + 0x46,0x4C,0x47,0x5F,0xA4,0x0A,0x0F,0xA1, /* 00002390 "FLG_...." */
> + 0x04,0xA4,0x0A,0x09,0x14,0x0A,0x5F,0x45, /* 00002398 "......_E" */
> + 0x4A,0x30,0x01,0x5B,0x22,0x0A,0xC8,0x5B, /* 000023A0 "J0.["..[" */
> + 0x83,0x47,0x07,0x43,0x42,0x5F,0x5F,0x0B, /* 000023A8 ".G.CB__." */
> + 0x10,0xB0,0x00,0x00,0x06,0x08,0x5F,0x48, /* 000023B0 "......_H" */
> + 0x49,0x44,0x0D,0x41,0x43,0x50,0x49,0x30, /* 000023B8 "ID.ACPI0" */
> + 0x30,0x30,0x37,0x00,0x5B,0x80,0x4D,0x41, /* 000023C0 "007.[.MA" */
> + 0x54,0x52,0x00,0x72,0x4D,0x41,0x50,0x41, /* 000023C8 "TR.rMAPA" */
> + 0x0A,0x58,0x00,0x0A,0x08,0x5B,0x81,0x0C, /* 000023D0 ".X...[.." */
> + 0x4D,0x41,0x54,0x52,0x01,0x4D,0x41,0x54, /* 000023D8 "MATR.MAT" */
> + 0x5F,0x40,0x04,0x5B,0x81,0x0D,0x4D,0x41, /* 000023E0 "_@.[..MA" */
> + 0x54,0x52,0x01,0x00,0x20,0x46,0x4C,0x47, /* 000023E8 "TR.. FLG" */
> + 0x5F,0x01,0x14,0x0D,0x5F,0x4D,0x41,0x54, /* 000023F0 "_..._MAT" */
> + 0x00,0xA4,0x96,0x4D,0x41,0x54,0x5F,0x00, /* 000023F8 "...MAT_." */
> + 0x14,0x14,0x5F,0x53,0x54,0x41,0x00,0xA0, /* 00002400 ".._STA.." */
> + 0x08,0x46,0x4C,0x47,0x5F,0xA4,0x0A,0x0F, /* 00002408 ".FLG_..." */
> + 0xA1,0x04,0xA4,0x0A,0x09,0x14,0x0A,0x5F, /* 00002410 "......._" */
> + 0x45,0x4A,0x30,0x01,0x5B,0x22,0x0A,0xC8, /* 00002418 "EJ0.[".." */
> + 0x5B,0x83,0x47,0x07,0x43,0x43,0x5F,0x5F, /* 00002420 "[.G.CC__" */
> + 0x0C,0x10,0xB0,0x00,0x00,0x06,0x08,0x5F, /* 00002428 "......._" */
> + 0x48,0x49,0x44,0x0D,0x41,0x43,0x50,0x49, /* 00002430 "HID.ACPI" */
> + 0x30,0x30,0x30,0x37,0x00,0x5B,0x80,0x4D, /* 00002438 "0007.[.M" */
> + 0x41,0x54,0x52,0x00,0x72,0x4D,0x41,0x50, /* 00002440 "ATR.rMAP" */
> + 0x41,0x0A,0x60,0x00,0x0A,0x08,0x5B,0x81, /* 00002448 "A.`...[." */
> + 0x0C,0x4D,0x41,0x54,0x52,0x01,0x4D,0x41, /* 00002450 ".MATR.MA" */
> + 0x54,0x5F,0x40,0x04,0x5B,0x81,0x0D,0x4D, /* 00002458 "T_@.[..M" */
> + 0x41,0x54,0x52,0x01,0x00,0x20,0x46,0x4C, /* 00002460 "ATR.. FL" */
> + 0x47,0x5F,0x01,0x14,0x0D,0x5F,0x4D,0x41, /* 00002468 "G_..._MA" */
> + 0x54,0x00,0xA4,0x96,0x4D,0x41,0x54,0x5F, /* 00002470 "T...MAT_" */
> + 0x00,0x14,0x14,0x5F,0x53,0x54,0x41,0x00, /* 00002478 "..._STA." */
> + 0xA0,0x08,0x46,0x4C,0x47,0x5F,0xA4,0x0A, /* 00002480 "..FLG_.." */
> + 0x0F,0xA1,0x04,0xA4,0x0A,0x09,0x14,0x0A, /* 00002488 "........" */
> + 0x5F,0x45,0x4A,0x30,0x01,0x5B,0x22,0x0A, /* 00002490 "_EJ0.["." */
> + 0xC8,0x5B,0x83,0x47,0x07,0x43,0x44,0x5F, /* 00002498 ".[.G.CD_" */
> + 0x5F,0x0D,0x10,0xB0,0x00,0x00,0x06,0x08, /* 000024A0 "_......." */
> + 0x5F,0x48,0x49,0x44,0x0D,0x41,0x43,0x50, /* 000024A8 "_HID.ACP" */
> + 0x49,0x30,0x30,0x30,0x37,0x00,0x5B,0x80, /* 000024B0 "I0007.[." */
> + 0x4D,0x41,0x54,0x52,0x00,0x72,0x4D,0x41, /* 000024B8 "MATR.rMA" */
> + 0x50,0x41,0x0A,0x68,0x00,0x0A,0x08,0x5B, /* 000024C0 "PA.h...[" */
> + 0x81,0x0C,0x4D,0x41,0x54,0x52,0x01,0x4D, /* 000024C8 "..MATR.M" */
> + 0x41,0x54,0x5F,0x40,0x04,0x5B,0x81,0x0D, /* 000024D0 "AT_@.[.." */
> + 0x4D,0x41,0x54,0x52,0x01,0x00,0x20,0x46, /* 000024D8 "MATR.. F" */
> + 0x4C,0x47,0x5F,0x01,0x14,0x0D,0x5F,0x4D, /* 000024E0 "LG_..._M" */
> + 0x41,0x54,0x00,0xA4,0x96,0x4D,0x41,0x54, /* 000024E8 "AT...MAT" */
> + 0x5F,0x00,0x14,0x14,0x5F,0x53,0x54,0x41, /* 000024F0 "_..._STA" */
> + 0x00,0xA0,0x08,0x46,0x4C,0x47,0x5F,0xA4, /* 000024F8 "...FLG_." */
> + 0x0A,0x0F,0xA1,0x04,0xA4,0x0A,0x09,0x14, /* 00002500 "........" */
> + 0x0A,0x5F,0x45,0x4A,0x30,0x01,0x5B,0x22, /* 00002508 "._EJ0.["" */
> + 0x0A,0xC8,0x5B,0x83,0x47,0x07,0x43,0x45, /* 00002510 "..[.G.CE" */
> + 0x5F,0x5F,0x0E,0x10,0xB0,0x00,0x00,0x06, /* 00002518 "__......" */
> + 0x08,0x5F,0x48,0x49,0x44,0x0D,0x41,0x43, /* 00002520 "._HID.AC" */
> + 0x50,0x49,0x30,0x30,0x30,0x37,0x00,0x5B, /* 00002528 "PI0007.[" */
> + 0x80,0x4D,0x41,0x54,0x52,0x00,0x72,0x4D, /* 00002530 ".MATR.rM" */
> + 0x41,0x50,0x41,0x0A,0x70,0x00,0x0A,0x08, /* 00002538 "APA.p..." */
> + 0x5B,0x81,0x0C,0x4D,0x41,0x54,0x52,0x01, /* 00002540 "[..MATR." */
> + 0x4D,0x41,0x54,0x5F,0x40,0x04,0x5B,0x81, /* 00002548 "MAT_@.[." */
> + 0x0D,0x4D,0x41,0x54,0x52,0x01,0x00,0x20, /* 00002550 ".MATR.. " */
> + 0x46,0x4C,0x47,0x5F,0x01,0x14,0x0D,0x5F, /* 00002558 "FLG_..._" */
> + 0x4D,0x41,0x54,0x00,0xA4,0x96,0x4D,0x41, /* 00002560 "MAT...MA" */
> + 0x54,0x5F,0x00,0x14,0x14,0x5F,0x53,0x54, /* 00002568 "T_..._ST" */
> + 0x41,0x00,0xA0,0x08,0x46,0x4C,0x47,0x5F, /* 00002570 "A...FLG_" */
> + 0xA4,0x0A,0x0F,0xA1,0x04,0xA4,0x0A,0x09, /* 00002578 "........" */
> + 0x14,0x0A,0x5F,0x45,0x4A,0x30,0x01,0x5B, /* 00002580 ".._EJ0.[" */
> + 0x22,0x0A,0xC8,0x14,0x4C,0x46,0x4E,0x54, /* 00002588 ""...LFNT" */
> + 0x46,0x59,0x02,0xA0,0x49,0x04,0x93,0x68, /* 00002590 "FY..I..h" */
> + 0x00,0xA0,0x43,0x04,0x92,0x93,0x69,0x5E, /* 00002598 "..C...i^" */
> + 0x2E,0x43,0x30,0x5F,0x5F,0x46,0x4C,0x47, /* 000025A0 ".C0__FLG" */
> + 0x5F,0x70,0x69,0x5E,0x2E,0x43,0x30,0x5F, /* 000025A8 "_pi^.C0_" */
> + 0x5F,0x46,0x4C,0x47,0x5F,0xA0,0x14,0x93, /* 000025B0 "_FLG_..." */
> + 0x69,0x01,0x86,0x43,0x30,0x5F,0x5F,0x01, /* 000025B8 "i..C0__." */
> + 0x74,0x4D,0x53,0x55,0x5F,0x01,0x4D,0x53, /* 000025C0 "tMSU_.MS" */
> + 0x55,0x5F,0xA1,0x12,0x86,0x43,0x30,0x5F, /* 000025C8 "U_...C0_" */
> + 0x5F,0x0A,0x03,0x72,0x4D,0x53,0x55,0x5F, /* 000025D0 "_..rMSU_" */
> + 0x01,0x4D,0x53,0x55,0x5F,0xA0,0x49,0x04, /* 000025D8 ".MSU_.I." */
> + 0x93,0x68,0x01,0xA0,0x43,0x04,0x92,0x93, /* 000025E0 ".h..C..." */
> + 0x69,0x5E,0x2E,0x43,0x31,0x5F,0x5F,0x46, /* 000025E8 "i^.C1__F" */
> + 0x4C,0x47,0x5F,0x70,0x69,0x5E,0x2E,0x43, /* 000025F0 "LG_pi^.C" */
> + 0x31,0x5F,0x5F,0x46,0x4C,0x47,0x5F,0xA0, /* 000025F8 "1__FLG_." */
> + 0x14,0x93,0x69,0x01,0x86,0x43,0x31,0x5F, /* 00002600 "..i..C1_" */
> + 0x5F,0x01,0x74,0x4D,0x53,0x55,0x5F,0x01, /* 00002608 "_.tMSU_." */
> + 0x4D,0x53,0x55,0x5F,0xA1,0x12,0x86,0x43, /* 00002610 "MSU_...C" */
> + 0x31,0x5F,0x5F,0x0A,0x03,0x72,0x4D,0x53, /* 00002618 "1__..rMS" */
> + 0x55,0x5F,0x01,0x4D,0x53,0x55,0x5F,0xA0, /* 00002620 "U_.MSU_." */
> + 0x4A,0x04,0x93,0x68,0x0A,0x02,0xA0,0x43, /* 00002628 "J..h...C" */
> + 0x04,0x92,0x93,0x69,0x5E,0x2E,0x43,0x32, /* 00002630 "...i^.C2" */
> + 0x5F,0x5F,0x46,0x4C,0x47,0x5F,0x70,0x69, /* 00002638 "__FLG_pi" */
> + 0x5E,0x2E,0x43,0x32,0x5F,0x5F,0x46,0x4C, /* 00002640 "^.C2__FL" */
> + 0x47,0x5F,0xA0,0x14,0x93,0x69,0x01,0x86, /* 00002648 "G_...i.." */
> + 0x43,0x32,0x5F,0x5F,0x01,0x74,0x4D,0x53, /* 00002650 "C2__.tMS" */
> + 0x55,0x5F,0x01,0x4D,0x53,0x55,0x5F,0xA1, /* 00002658 "U_.MSU_." */
> + 0x12,0x86,0x43,0x32,0x5F,0x5F,0x0A,0x03, /* 00002660 "..C2__.." */
> + 0x72,0x4D,0x53,0x55,0x5F,0x01,0x4D,0x53, /* 00002668 "rMSU_.MS" */
> + 0x55,0x5F,0xA0,0x4A,0x04,0x93,0x68,0x0A, /* 00002670 "U_.J..h." */
> + 0x03,0xA0,0x43,0x04,0x92,0x93,0x69,0x5E, /* 00002678 "..C...i^" */
> + 0x2E,0x43,0x33,0x5F,0x5F,0x46,0x4C,0x47, /* 00002680 ".C3__FLG" */
> + 0x5F,0x70,0x69,0x5E,0x2E,0x43,0x33,0x5F, /* 00002688 "_pi^.C3_" */
> + 0x5F,0x46,0x4C,0x47,0x5F,0xA0,0x14,0x93, /* 00002690 "_FLG_..." */
> + 0x69,0x01,0x86,0x43,0x33,0x5F,0x5F,0x01, /* 00002698 "i..C3__." */
> + 0x74,0x4D,0x53,0x55,0x5F,0x01,0x4D,0x53, /* 000026A0 "tMSU_.MS" */
> + 0x55,0x5F,0xA1,0x12,0x86,0x43,0x33,0x5F, /* 000026A8 "U_...C3_" */
> + 0x5F,0x0A,0x03,0x72,0x4D,0x53,0x55,0x5F, /* 000026B0 "_..rMSU_" */
> + 0x01,0x4D,0x53,0x55,0x5F,0xA0,0x4A,0x04, /* 000026B8 ".MSU_.J." */
> + 0x93,0x68,0x0A,0x04,0xA0,0x43,0x04,0x92, /* 000026C0 ".h...C.." */
> + 0x93,0x69,0x5E,0x2E,0x43,0x34,0x5F,0x5F, /* 000026C8 ".i^.C4__" */
> + 0x46,0x4C,0x47,0x5F,0x70,0x69,0x5E,0x2E, /* 000026D0 "FLG_pi^." */
> + 0x43,0x34,0x5F,0x5F,0x46,0x4C,0x47,0x5F, /* 000026D8 "C4__FLG_" */
> + 0xA0,0x14,0x93,0x69,0x01,0x86,0x43,0x34, /* 000026E0 "...i..C4" */
> + 0x5F,0x5F,0x01,0x74,0x4D,0x53,0x55,0x5F, /* 000026E8 "__.tMSU_" */
> + 0x01,0x4D,0x53,0x55,0x5F,0xA1,0x12,0x86, /* 000026F0 ".MSU_..." */
> + 0x43,0x34,0x5F,0x5F,0x0A,0x03,0x72,0x4D, /* 000026F8 "C4__..rM" */
> + 0x53,0x55,0x5F,0x01,0x4D,0x53,0x55,0x5F, /* 00002700 "SU_.MSU_" */
> + 0xA0,0x4A,0x04,0x93,0x68,0x0A,0x05,0xA0, /* 00002708 ".J..h..." */
> + 0x43,0x04,0x92,0x93,0x69,0x5E,0x2E,0x43, /* 00002710 "C...i^.C" */
> + 0x35,0x5F,0x5F,0x46,0x4C,0x47,0x5F,0x70, /* 00002718 "5__FLG_p" */
> + 0x69,0x5E,0x2E,0x43,0x35,0x5F,0x5F,0x46, /* 00002720 "i^.C5__F" */
> + 0x4C,0x47,0x5F,0xA0,0x14,0x93,0x69,0x01, /* 00002728 "LG_...i." */
> + 0x86,0x43,0x35,0x5F,0x5F,0x01,0x74,0x4D, /* 00002730 ".C5__.tM" */
> + 0x53,0x55,0x5F,0x01,0x4D,0x53,0x55,0x5F, /* 00002738 "SU_.MSU_" */
> + 0xA1,0x12,0x86,0x43,0x35,0x5F,0x5F,0x0A, /* 00002740 "...C5__." */
> + 0x03,0x72,0x4D,0x53,0x55,0x5F,0x01,0x4D, /* 00002748 ".rMSU_.M" */
> + 0x53,0x55,0x5F,0xA0,0x4A,0x04,0x93,0x68, /* 00002750 "SU_.J..h" */
> + 0x0A,0x06,0xA0,0x43,0x04,0x92,0x93,0x69, /* 00002758 "...C...i" */
> + 0x5E,0x2E,0x43,0x36,0x5F,0x5F,0x46,0x4C, /* 00002760 "^.C6__FL" */
> + 0x47,0x5F,0x70,0x69,0x5E,0x2E,0x43,0x36, /* 00002768 "G_pi^.C6" */
> + 0x5F,0x5F,0x46,0x4C,0x47,0x5F,0xA0,0x14, /* 00002770 "__FLG_.." */
> + 0x93,0x69,0x01,0x86,0x43,0x36,0x5F,0x5F, /* 00002778 ".i..C6__" */
> + 0x01,0x74,0x4D,0x53,0x55,0x5F,0x01,0x4D, /* 00002780 ".tMSU_.M" */
> + 0x53,0x55,0x5F,0xA1,0x12,0x86,0x43,0x36, /* 00002788 "SU_...C6" */
> + 0x5F,0x5F,0x0A,0x03,0x72,0x4D,0x53,0x55, /* 00002790 "__..rMSU" */
> + 0x5F,0x01,0x4D,0x53,0x55,0x5F,0xA0,0x4A, /* 00002798 "_.MSU_.J" */
> + 0x04,0x93,0x68,0x0A,0x07,0xA0,0x43,0x04, /* 000027A0 "..h...C." */
> + 0x92,0x93,0x69,0x5E,0x2E,0x43,0x37,0x5F, /* 000027A8 "..i^.C7_" */
> + 0x5F,0x46,0x4C,0x47,0x5F,0x70,0x69,0x5E, /* 000027B0 "_FLG_pi^" */
> + 0x2E,0x43,0x37,0x5F,0x5F,0x46,0x4C,0x47, /* 000027B8 ".C7__FLG" */
> + 0x5F,0xA0,0x14,0x93,0x69,0x01,0x86,0x43, /* 000027C0 "_...i..C" */
> + 0x37,0x5F,0x5F,0x01,0x74,0x4D,0x53,0x55, /* 000027C8 "7__.tMSU" */
> + 0x5F,0x01,0x4D,0x53,0x55,0x5F,0xA1,0x12, /* 000027D0 "_.MSU_.." */
> + 0x86,0x43,0x37,0x5F,0x5F,0x0A,0x03,0x72, /* 000027D8 ".C7__..r" */
> + 0x4D,0x53,0x55,0x5F,0x01,0x4D,0x53,0x55, /* 000027E0 "MSU_.MSU" */
> + 0x5F,0xA0,0x4A,0x04,0x93,0x68,0x0A,0x08, /* 000027E8 "_.J..h.." */
> + 0xA0,0x43,0x04,0x92,0x93,0x69,0x5E,0x2E, /* 000027F0 ".C...i^." */
> + 0x43,0x38,0x5F,0x5F,0x46,0x4C,0x47,0x5F, /* 000027F8 "C8__FLG_" */
> + 0x70,0x69,0x5E,0x2E,0x43,0x38,0x5F,0x5F, /* 00002800 "pi^.C8__" */
> + 0x46,0x4C,0x47,0x5F,0xA0,0x14,0x93,0x69, /* 00002808 "FLG_...i" */
> + 0x01,0x86,0x43,0x38,0x5F,0x5F,0x01,0x74, /* 00002810 "..C8__.t" */
> + 0x4D,0x53,0x55,0x5F,0x01,0x4D,0x53,0x55, /* 00002818 "MSU_.MSU" */
> + 0x5F,0xA1,0x12,0x86,0x43,0x38,0x5F,0x5F, /* 00002820 "_...C8__" */
> + 0x0A,0x03,0x72,0x4D,0x53,0x55,0x5F,0x01, /* 00002828 "..rMSU_." */
> + 0x4D,0x53,0x55,0x5F,0xA0,0x4A,0x04,0x93, /* 00002830 "MSU_.J.." */
> + 0x68,0x0A,0x09,0xA0,0x43,0x04,0x92,0x93, /* 00002838 "h...C..." */
> + 0x69,0x5E,0x2E,0x43,0x39,0x5F,0x5F,0x46, /* 00002840 "i^.C9__F" */
> + 0x4C,0x47,0x5F,0x70,0x69,0x5E,0x2E,0x43, /* 00002848 "LG_pi^.C" */
> + 0x39,0x5F,0x5F,0x46,0x4C,0x47,0x5F,0xA0, /* 00002850 "9__FLG_." */
> + 0x14,0x93,0x69,0x01,0x86,0x43,0x39,0x5F, /* 00002858 "..i..C9_" */
> + 0x5F,0x01,0x74,0x4D,0x53,0x55,0x5F,0x01, /* 00002860 "_.tMSU_." */
> + 0x4D,0x53,0x55,0x5F,0xA1,0x12,0x86,0x43, /* 00002868 "MSU_...C" */
> + 0x39,0x5F,0x5F,0x0A,0x03,0x72,0x4D,0x53, /* 00002870 "9__..rMS" */
> + 0x55,0x5F,0x01,0x4D,0x53,0x55,0x5F,0xA0, /* 00002878 "U_.MSU_." */
> + 0x4A,0x04,0x93,0x68,0x0A,0x0A,0xA0,0x43, /* 00002880 "J..h...C" */
> + 0x04,0x92,0x93,0x69,0x5E,0x2E,0x43,0x41, /* 00002888 "...i^.CA" */
> + 0x5F,0x5F,0x46,0x4C,0x47,0x5F,0x70,0x69, /* 00002890 "__FLG_pi" */
> + 0x5E,0x2E,0x43,0x41,0x5F,0x5F,0x46,0x4C, /* 00002898 "^.CA__FL" */
> + 0x47,0x5F,0xA0,0x14,0x93,0x69,0x01,0x86, /* 000028A0 "G_...i.." */
> + 0x43,0x41,0x5F,0x5F,0x01,0x74,0x4D,0x53, /* 000028A8 "CA__.tMS" */
> + 0x55,0x5F,0x01,0x4D,0x53,0x55,0x5F,0xA1, /* 000028B0 "U_.MSU_." */
> + 0x12,0x86,0x43,0x41,0x5F,0x5F,0x0A,0x03, /* 000028B8 "..CA__.." */
> + 0x72,0x4D,0x53,0x55,0x5F,0x01,0x4D,0x53, /* 000028C0 "rMSU_.MS" */
> + 0x55,0x5F,0xA0,0x4A,0x04,0x93,0x68,0x0A, /* 000028C8 "U_.J..h." */
> + 0x0B,0xA0,0x43,0x04,0x92,0x93,0x69,0x5E, /* 000028D0 "..C...i^" */
> + 0x2E,0x43,0x42,0x5F,0x5F,0x46,0x4C,0x47, /* 000028D8 ".CB__FLG" */
> + 0x5F,0x70,0x69,0x5E,0x2E,0x43,0x42,0x5F, /* 000028E0 "_pi^.CB_" */
> + 0x5F,0x46,0x4C,0x47,0x5F,0xA0,0x14,0x93, /* 000028E8 "_FLG_..." */
> + 0x69,0x01,0x86,0x43,0x42,0x5F,0x5F,0x01, /* 000028F0 "i..CB__." */
> + 0x74,0x4D,0x53,0x55,0x5F,0x01,0x4D,0x53, /* 000028F8 "tMSU_.MS" */
> + 0x55,0x5F,0xA1,0x12,0x86,0x43,0x42,0x5F, /* 00002900 "U_...CB_" */
> + 0x5F,0x0A,0x03,0x72,0x4D,0x53,0x55,0x5F, /* 00002908 "_..rMSU_" */
> + 0x01,0x4D,0x53,0x55,0x5F,0xA0,0x4A,0x04, /* 00002910 ".MSU_.J." */
> + 0x93,0x68,0x0A,0x0C,0xA0,0x43,0x04,0x92, /* 00002918 ".h...C.." */
> + 0x93,0x69,0x5E,0x2E,0x43,0x43,0x5F,0x5F, /* 00002920 ".i^.CC__" */
> + 0x46,0x4C,0x47,0x5F,0x70,0x69,0x5E,0x2E, /* 00002928 "FLG_pi^." */
> + 0x43,0x43,0x5F,0x5F,0x46,0x4C,0x47,0x5F, /* 00002930 "CC__FLG_" */
> + 0xA0,0x14,0x93,0x69,0x01,0x86,0x43,0x43, /* 00002938 "...i..CC" */
> + 0x5F,0x5F,0x01,0x74,0x4D,0x53,0x55,0x5F, /* 00002940 "__.tMSU_" */
> + 0x01,0x4D,0x53,0x55,0x5F,0xA1,0x12,0x86, /* 00002948 ".MSU_..." */
> + 0x43,0x43,0x5F,0x5F,0x0A,0x03,0x72,0x4D, /* 00002950 "CC__..rM" */
> + 0x53,0x55,0x5F,0x01,0x4D,0x53,0x55,0x5F, /* 00002958 "SU_.MSU_" */
> + 0xA0,0x4A,0x04,0x93,0x68,0x0A,0x0D,0xA0, /* 00002960 ".J..h..." */
> + 0x43,0x04,0x92,0x93,0x69,0x5E,0x2E,0x43, /* 00002968 "C...i^.C" */
> + 0x44,0x5F,0x5F,0x46,0x4C,0x47,0x5F,0x70, /* 00002970 "D__FLG_p" */
> + 0x69,0x5E,0x2E,0x43,0x44,0x5F,0x5F,0x46, /* 00002978 "i^.CD__F" */
> + 0x4C,0x47,0x5F,0xA0,0x14,0x93,0x69,0x01, /* 00002980 "LG_...i." */
> + 0x86,0x43,0x44,0x5F,0x5F,0x01,0x74,0x4D, /* 00002988 ".CD__.tM" */
> + 0x53,0x55,0x5F,0x01,0x4D,0x53,0x55,0x5F, /* 00002990 "SU_.MSU_" */
> + 0xA1,0x12,0x86,0x43,0x44,0x5F,0x5F,0x0A, /* 00002998 "...CD__." */
> + 0x03,0x72,0x4D,0x53,0x55,0x5F,0x01,0x4D, /* 000029A0 ".rMSU_.M" */
> + 0x53,0x55,0x5F,0xA0,0x4A,0x04,0x93,0x68, /* 000029A8 "SU_.J..h" */
> + 0x0A,0x0E,0xA0,0x43,0x04,0x92,0x93,0x69, /* 000029B0 "...C...i" */
> + 0x5E,0x2E,0x43,0x45,0x5F,0x5F,0x46,0x4C, /* 000029B8 "^.CE__FL" */
> + 0x47,0x5F,0x70,0x69,0x5E,0x2E,0x43,0x45, /* 000029C0 "G_pi^.CE" */
> + 0x5F,0x5F,0x46,0x4C,0x47,0x5F,0xA0,0x14, /* 000029C8 "__FLG_.." */
> + 0x93,0x69,0x01,0x86,0x43,0x45,0x5F,0x5F, /* 000029D0 ".i..CE__" */
> + 0x01,0x74,0x4D,0x53,0x55,0x5F,0x01,0x4D, /* 000029D8 ".tMSU_.M" */
> + 0x53,0x55,0x5F,0xA1,0x12,0x86,0x43,0x45, /* 000029E0 "SU_...CE" */
> + 0x5F,0x5F,0x0A,0x03,0x72,0x4D,0x53,0x55, /* 000029E8 "__..rMSU" */
> + 0x5F,0x01,0x4D,0x53,0x55,0x5F,0xA4,0x01, /* 000029F0 "_.MSU_.." */
> + 0x5B,0x80,0x50,0x52,0x53,0x54,0x01,0x0B, /* 000029F8 "[.PRST.." */
> + 0x00,0xAF,0x0A,0x20,0x5B,0x81,0x0C,0x50, /* 00002A00 "... [..P" */
> + 0x52,0x53,0x54,0x01,0x50,0x52,0x53,0x5F, /* 00002A08 "RST.PRS_" */
> + 0x40,0x10,0x14,0x4A,0x06,0x50,0x52,0x53, /* 00002A10 "@..J.PRS" */
> + 0x43,0x00,0x70,0x50,0x52,0x53,0x5F,0x63, /* 00002A18 "C.pPRS_c" */
> + 0x70,0x00,0x60,0xA2,0x2F,0x95,0x60,0x50, /* 00002A20 "p.`./.`P" */
> + 0x42,0x59,0x54,0x70,0x00,0x61,0x70,0x83, /* 00002A28 "BYTp.ap." */
> + 0x88,0x63,0x60,0x00,0x62,0xA2,0x1B,0x95, /* 00002A30 ".c`.b..." */
> + 0x61,0x0A,0x08,0x4E,0x54,0x46,0x59,0x72, /* 00002A38 "a..NTFYr" */
> + 0x77,0x60,0x0A,0x08,0x00,0x61,0x00,0x7B, /* 00002A40 "w`...a.{" */
> + 0x62,0x01,0x00,0x7A,0x62,0x01,0x62,0x75, /* 00002A48 "b..zb.bu" */
> + 0x61,0x75,0x60,0x70,0x00,0x61,0x70,0x83, /* 00002A50 "au`p.ap." */
> + 0x88,0x63,0x60,0x00,0x62,0xA2,0x1D,0x95, /* 00002A58 ".c`.b..." */
> + 0x61,0x50,0x42,0x49,0x54,0x4E,0x54,0x46, /* 00002A60 "aPBITNTF" */
> + 0x59,0x72,0x77,0x60,0x0A,0x08,0x00,0x61, /* 00002A68 "Yrw`...a" */
> + 0x00,0x7B,0x62,0x01,0x00,0x7A,0x62,0x01, /* 00002A70 ".{b..zb." */
> + 0x62,0x75,0x61,0xA4,0x01,
> };
> diff --git a/src/acpi.c b/src/acpi.c
> index f613b03..037da46 100644
> --- a/src/acpi.c
> +++ b/src/acpi.c
> @@ -344,6 +344,9 @@ build_fadt(int bdf)
> return fadt;
> }
>
> +u32 madt_csum_addr, madt_lapic0_addr;
> +u32 max_cpus_byte, max_cpus_bit;
> +
> static void*
> build_madt(void)
> {
> @@ -360,6 +363,10 @@ build_madt(void)
> madt->local_apic_address = cpu_to_le32(BUILD_APIC_ADDR);
> madt->flags = cpu_to_le32(1);
> struct madt_processor_apic *apic = (void*)&madt[1];
> + madt_csum_addr = (u32)&madt->checksum;
> + madt_lapic0_addr = (u32)apic;
> + max_cpus_byte = MaxCountCPUs / 8;
> + max_cpus_bit = MaxCountCPUs % 8;
> int i;
> for (i=0; i<MaxCountCPUs; i++) {
> apic->type = APIC_PROCESSOR;
> diff --git a/src/biosvar.h b/src/biosvar.h
> index b6e061b..57dd86b 100644
> --- a/src/biosvar.h
> +++ b/src/biosvar.h
> @@ -11,6 +11,20 @@
> #include "config.h" // CONFIG_*
> #include "disk.h" // struct chs_s
>
> +/* *****************************************************************
> + * use bios_info to enable dsdt get run-time madt and cpu info,
> + * and to avoid more hardcode magic number.
> + *******************************************************************/
> +#define BIOS_INFO_PHYSICAL_ADDRESS 0x000EA000
> +struct bios_info {
> + u32 madt_csum_addr; /* address of MADT checksum */
> + u32 madt_lapic0_addr; /* address of first MADT LAPIC struct */
> + u32 max_cpus_byte; /* max cpus bitmap bytes */
> + u32 max_cpus_bit; /* max cpus bitmap bits of last byte */
> +};
> +
> +extern u32 madt_csum_addr, madt_lapic0_addr;
> +extern u32 max_cpus_byte, max_cpus_bit;
>
> /****************************************************************
> * Interupt vector table
> diff --git a/src/post.c b/src/post.c
> index fb3b37f..8e30a57 100644
> --- a/src/post.c
> +++ b/src/post.c
> @@ -161,6 +161,18 @@ init_bios_tables(void)
> acpi_bios_init();
> }
>
> +static void init_bios_info(void)
> +{
> + struct bios_info *bios_info;
> +
> + bios_info = (struct bios_info *)BIOS_INFO_PHYSICAL_ADDRESS;
> + memset(bios_info, 0, sizeof(*bios_info));
> + bios_info->madt_csum_addr = madt_csum_addr;
> + bios_info->madt_lapic0_addr = madt_lapic0_addr;
> + bios_info->max_cpus_byte = max_cpus_byte;
> + bios_info->max_cpus_bit = max_cpus_bit;
> +}
> +
> // Main setup code.
> static void
> post(void)
> @@ -195,6 +207,7 @@ post(void)
> kbd_setup();
> mouse_setup();
> init_bios_tables();
> + init_bios_info();
>
> // Run vga option rom (if running synchronously)
> if (!CONFIG_THREADS || !CONFIG_THREAD_OPTIONROMS)
> --
> 1.6.5.6
--
Gleb.