Hi, Vasilis Liaskovitis When I test it, the guest OS become non-available, but it does not crash. It also cause the disk fault. It is hard to dig the reason. Or I missed something? Thank, Lai dmesg: Hotplug Mem Device init_memory_mapping: 0000000100000000-0000000108000000 0100000000 - 0108000000 page 2M Built 1 zonelists in Node order, mobility grouping on. Total pages: 274232 Policy zone: Normal nommu_map_sg: overflow 107861000+4096 of device mask ffffffff ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0 ata1.00: failed command: WRITE DMA ata1.00: cmd ca/00:08:28:08:44/00:00:00:00:00/e0 tag 0 dma 4096 out res 50/01:00:40:11:84/00:00:00:00:00/e0 Emask 0x40 (internal error) ata1.00: status: { DRDY } ata1.00: configured for MWDMA2 ata1: EH complete nommu_map_sg: overflow 107861000+4096 of device mask ffffffff ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0 ata1.00: failed command: WRITE DMA ata1.00: cmd ca/00:08:28:08:44/00:00:00:00:00/e0 tag 0 dma 4096 out res 50/01:00:00:00:00/00:00:00:00:00/a0 Emask 0x40 (internal error) ata1.00: status: { DRDY } ata1.00: configured for MWDMA2 ata1: EH complete nommu_map_sg: overflow 107861000+4096 of device mask ffffffff ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0 ata1.00: failed command: WRITE DMA ata1.00: cmd ca/00:08:28:08:44/00:00:00:00:00/e0 tag 0 dma 4096 out res 50/01:00:00:00:00/00:00:00:00:00/a0 Emask 0x40 (internal error) ata1.00: status: { DRDY } ata1.00: configured for MWDMA2 ata1: EH complete nommu_map_sg: overflow 107861000+4096 of device mask ffffffff ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0 ata1.00: failed command: WRITE DMA ata1.00: cmd ca/00:08:28:08:44/00:00:00:00:00/e0 tag 0 dma 4096 out res 50/01:00:00:00:00/00:00:00:00:00/a0 Emask 0x40 (internal error) ata1.00: status: { DRDY } ata1.00: configured for MWDMA2 ata1: EH complete ...... On 08/11/2011 10:39 PM, Vasilis Liaskovitis wrote: > Hi, > > I am testing a set of experimental patches for memory-hotplug on x86_64 host / > guest combinations. I have implemented this in a similar way to cpu-hotplug. > > A dynamic SSDT table with all memory devices is created at boot time. This > table calls static methods from the DSDT. A byte array indicates which memory > device is online or not. This array is kept in sync with a qemu-kvm bitmap array > through ioport 0xaf20. Qemu-kvm updates this table on a "mem_set" command and > an ACPI event is triggered. > > Memory devices are 128MB in size (to match /sys/devices/memory/block_size_bytes > in x86_64). They are constructed dynamically in src/ssdt-mem.asl , similarly to > hotpluggable-CPUs. The _CRS memstart-memend attribute for each memory device is > defined accordingly, skipping the hole at 0xe0000000 - 0x100000000. > Hotpluggable memory is always located above 4GB. > > Qemu-kvm sets the upper bound of hotpluggable memory with "maxmem = [totalmemory in > MB]" on the command line. Maxmem is an argument for "-m" similar to maxcpus for smp. > E.g. "-m 1024,maxmem=2048" on the qemu command line will create memory devices > for 2GB of RAM, enabling only 1GB initially. > > Qemu_monitor triggers a memory hotplug with: > (qemu) mem_set [memory range in MBs] online > > Testing: > - Linux guests boot fine and memory hotplug works so far. > > - Windows2008 guest complains about "non ACPI compliant BIOS". Specifically: > STOP 0x000000A5 (0x0000000D, Parameter2, Parameter3, Parameter4) > "This error generally occurs if either the _HID or _ADR object is missing. " > according to a microsoft support site. I do specify _HID in the memory device > definition. I have tried to specify _ADR to be equal to the memstart parameter > in each memory device, but the problem remains. Any advice on the _ADR object? > Perhaps the memory layout I describe in the memory devices is not compatible > with Windows memory usage? > > Other comments on the patches are welcome. > > The 3 patches are below in order (on top of today's master for both qemu-kvm and > SeaBIOS): > > - qemu-kvm patch > - seabios src/ssdt-mem.asl > - seabios patch on existing code > > thanks, > > - Vasilis > > > cpu-all.h | 1 + > hmp-commands.hx | 14 ++++++++ > hw/acpi_piix4.c | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++- > hw/fw_cfg.c | 13 +++++++ > hw/fw_cfg.h | 2 + > hw/loader.c | 2 +- > hw/pc.c | 1 + > hw/pc.h | 4 ++ > hw/pc_piix.c | 4 ++- > monitor.c | 22 ++++++++++++ > sysemu.h | 1 + > vl.c | 41 ++++++++++++++++++++++- > 12 files changed, 201 insertions(+), 5 deletions(-) > > diff --git a/cpu-all.h b/cpu-all.h > index fa0205c..21aa4ea 100644 > --- a/cpu-all.h > +++ b/cpu-all.h > @@ -470,6 +470,7 @@ target_phys_addr_t cpu_get_phys_page_debug(CPUState *env, target_ulong addr); > > extern int phys_ram_fd; > extern ram_addr_t ram_size; > +extern ram_addr_t maxram_size; > > /* RAM is pre-allocated and passed into qemu_ram_alloc_from_ptr */ > #define RAM_PREALLOC_MASK (1 << 0) > diff --git a/hmp-commands.hx b/hmp-commands.hx > index ed5c9b9..5a95c4e 100644 > --- a/hmp-commands.hx > +++ b/hmp-commands.hx > @@ -1229,6 +1229,20 @@ Set CPU @var{cpu} online or offline. > ETEXI > > { > + .name = "mem_set", > + .args_type = "mem:i,state:s", > + .params = "mem [online|offline]", > + .help = "change memory device state", > + .mhandler.cmd = do_mem_set_nr, > + }, > + > +STEXI > +@item mem_set @var{mem} [online|offline] > +Set MEM @var{mem} online or offline. > + > +ETEXI > + > + { > .name = "set_password", > .args_type = "protocol:s,password:s,connected:s?", > .params = "protocol password action-if-connected", > diff --git a/hw/acpi_piix4.c b/hw/acpi_piix4.c > index 44eb8ae..7ca33ab 100644 > --- a/hw/acpi_piix4.c > +++ b/hw/acpi_piix4.c > @@ -24,6 +24,8 @@ > #include "sysemu.h" > #include "range.h" > #include "ioport.h" > +#include "fw_cfg.h" > +#include "cpu-all.h" > > //#define DEBUG > > @@ -37,16 +39,19 @@ > > #define GPE_BASE 0xafe0 > #define PROC_BASE 0xaf00 > +#define MEM_BASE 0xaf20 > #define GPE_LEN 4 > #define PCI_BASE 0xae00 > #define PCI_EJ_BASE 0xae08 > #define PCI_RMV_BASE 0xae0c > > +#define PIIX4_MEM_HOTPLUG_STATUS 8 > #define PIIX4_CPU_HOTPLUG_STATUS 4 > #define PIIX4_PCI_HOTPLUG_STATUS 2 > > struct gpe_regs { > uint8_t cpus_sts[32]; > + uint8_t mems_sts[32]; > }; > > struct pci_status { > @@ -94,7 +99,8 @@ static void pm_update_sci(PIIX4PMState *s) > ACPI_BITMASK_POWER_BUTTON_ENABLE | > ACPI_BITMASK_GLOBAL_LOCK_ENABLE | > ACPI_BITMASK_TIMER_ENABLE)) != 0) || > - (((s->gpe.sts[0] & s->gpe.en[0]) & PIIX4_PCI_HOTPLUG_STATUS) != 0); > + (((s->gpe.sts[0] & s->gpe.en[0]) & > + (PIIX4_PCI_HOTPLUG_STATUS | PIIX4_MEM_HOTPLUG_STATUS | PIIX4_CPU_HOTPLUG_STATUS) ) != 0); > > qemu_set_irq(s->irq, sci_level); > /* schedule a timer interruption if needed */ > @@ -447,6 +453,9 @@ static uint32_t gpe_readb(void *opaque, uint32_t addr) > case PROC_BASE ... PROC_BASE+31: > val = g->cpus_sts[addr - PROC_BASE]; > break; > + case MEM_BASE ... MEM_BASE+31: > + val = g->mems_sts[addr - MEM_BASE]; > + break; > default: > val = acpi_gpe_ioport_readb(&s->gpe, addr); > } > @@ -538,6 +547,7 @@ static void pcirmv_write(void *opaque, uint32_t addr, uint32_t val) > } > > extern const char *global_cpu_model; > +extern FWCfgState *fw_cfg; > > static int piix4_device_hotplug(DeviceState *qdev, PCIDevice *dev, > PCIHotplugState state); > @@ -545,13 +555,19 @@ static int piix4_device_hotplug(DeviceState *qdev, PCIDevice *dev, > static void piix4_acpi_system_hot_add_init(PCIBus *bus, PIIX4PMState *s) > { > struct pci_status *pci0_status = &s->pci0_status; > - int i = 0, cpus = smp_cpus; > + int i = 0, cpus = smp_cpus, memdev; > > while (cpus > 0) { > s->gpe_cpu.cpus_sts[i++] = (cpus < 8) ? (1 << cpus) - 1 : 0xff; > cpus -= 8; > } > > + i = 0; > + memdev = ram_size / LINUX_MIN_BLOCK_SIZE; > + while (memdev > 0) { > + s->gpe_cpu.mems_sts[i++] = (memdev < 8) ? (1 << memdev) - 1 : 0xff; > + memdev -= 8; > + } > register_ioport_write(GPE_BASE, GPE_LEN, 1, gpe_writeb, s); > register_ioport_read(GPE_BASE, GPE_LEN, 1, gpe_readb, s); > acpi_gpe_blk(&s->gpe, GPE_BASE); > @@ -559,6 +575,9 @@ static void piix4_acpi_system_hot_add_init(PCIBus *bus, PIIX4PMState *s) > register_ioport_write(PROC_BASE, 32, 1, gpe_writeb, s); > register_ioport_read(PROC_BASE, 32, 1, gpe_readb, s); > > + register_ioport_write(MEM_BASE, 32, 1, gpe_writeb, s); > + register_ioport_read(MEM_BASE, 32, 1, gpe_readb, s); > + > register_ioport_write(PCI_BASE, 8, 4, pcihotplug_write, pci0_status); > register_ioport_read(PCI_BASE, 8, 4, pcihotplug_read, pci0_status); > > @@ -571,6 +590,20 @@ static void piix4_acpi_system_hot_add_init(PCIBus *bus, PIIX4PMState *s) > pci_bus_hotplug(bus, piix4_device_hotplug, &s->dev.qdev); > } > > +static void enable_mem_device(PIIX4PMState *s, int memdevice) > +{ > + struct gpe_regs *g = &s->gpe_cpu; > + s->gpe.sts[0] |= PIIX4_MEM_HOTPLUG_STATUS; > + g->mems_sts[memdevice/8] |= (1 << (memdevice%8)); > +} > + > +static void disable_mem_device(PIIX4PMState *s, int memdevice) > +{ > + struct gpe_regs *g = &s->gpe_cpu; > + s->gpe.sts[0] |= PIIX4_MEM_HOTPLUG_STATUS; > + g->mems_sts[memdevice/8] &= ~(1 << (memdevice%8)); > +} > + > #if defined(TARGET_I386) > static void enable_processor(PIIX4PMState *s, int cpu) > { > @@ -611,6 +644,70 @@ void qemu_system_cpu_hot_add(int cpu, int state) > > pm_update_sci(s); > } > + > +void qemu_system_mem_hot_add(int64_t value, int state) > +{ > + PIIX4PMState *s = global_piix4_pm_state; > + static unsigned int hotmemcount = 1; > + char buf[32]; > + int64_t memdev, tmpvalue; > + > + /* Expects memory range in MBs currently. */ > + value = 1024 * 1024 * value; > + > + if (value % LINUX_MIN_BLOCK_SIZE) { > + fprintf(stderr, "memory hotadd range must be a multiple of %lu bytes\n", > + LINUX_MIN_BLOCK_SIZE); > + return; > + } > + > + if (value + ram_size > maxram_size) { > + fprintf(stderr, "failure: memory hotadd exceeds total available memory range\n"); > + return; > + } > + > + if (state) { > + ram_addr_t size = value; > + ram_addr_t ram_addr; > + > + target_phys_addr_t start_addr; > + start_addr = global_ram_hotplug_offset; > + > + sprintf(buf, "pc.extraram%u", hotmemcount); > + ram_addr = qemu_ram_alloc(NULL, buf, size); > + cpu_register_physical_memory(start_addr, > + size, ram_addr); > + e820_add_entry(start_addr, size, E820_RAM); > + > + tmpvalue = value; > + memdev = ram_size / LINUX_MIN_BLOCK_SIZE; > + while (tmpvalue) { > + enable_mem_device(s, memdev); > + tmpvalue -= LINUX_MIN_BLOCK_SIZE; > + memdev++; > + } > + ram_size += value; > + > + fw_cfg_update_i64(fw_cfg, FW_CFG_RAM_SIZE, (uint64_t)ram_size); > + global_ram_hotplug_offset += value; > + hotmemcount++; > + } > + > + else { > + tmpvalue = value; > + memdev = ram_size / LINUX_MIN_BLOCK_SIZE - 1; > + while (tmpvalue) { > + disable_mem_device(s, memdev); > + tmpvalue -= LINUX_MIN_BLOCK_SIZE; > + memdev--; > + } > + ram_size -= value; > + fw_cfg_update_i64(fw_cfg, FW_CFG_RAM_SIZE, (uint64_t)ram_size); > + > + } > + > + pm_update_sci(s); > +} > #endif > > static void enable_device(PIIX4PMState *s, int slot) > diff --git a/hw/fw_cfg.c b/hw/fw_cfg.c > index e4847b7..f9a2b3d 100644 > --- a/hw/fw_cfg.c > +++ b/hw/fw_cfg.c > @@ -408,6 +408,19 @@ int fw_cfg_add_i64(FWCfgState *s, uint16_t key, uint64_t value) > return fw_cfg_add_bytes(s, key, (uint8_t *)copy, sizeof(value)); > } > > +int fw_cfg_update_i64(FWCfgState *s, uint64_t key, uint64_t data) > +{ > + int arch = !!(key & FW_CFG_ARCH_LOCAL); > + uint64_t *p; > + > + key &= FW_CFG_ENTRY_MASK; > + > + p = (uint64_t*)s->entries[arch][key].data; > + *p = cpu_to_le64(data); > + > + return 1; > +} > + > int fw_cfg_add_callback(FWCfgState *s, uint16_t key, FWCfgCallback callback, > void *callback_opaque, uint8_t *data, size_t len) > { > diff --git a/hw/fw_cfg.h b/hw/fw_cfg.h > index 856bf91..83c2b34 100644 > --- a/hw/fw_cfg.h > +++ b/hw/fw_cfg.h > @@ -27,6 +27,7 @@ > #define FW_CFG_SETUP_SIZE 0x17 > #define FW_CFG_SETUP_DATA 0x18 > #define FW_CFG_FILE_DIR 0x19 > +#define FW_CFG_MAXRAM_SIZE 0x1A > > #define FW_CFG_FILE_FIRST 0x20 > #define FW_CFG_FILE_SLOTS 0x10 > @@ -58,6 +59,7 @@ int fw_cfg_add_bytes(FWCfgState *s, uint16_t key, uint8_t *data, uint32_t len); > int fw_cfg_add_i16(FWCfgState *s, uint16_t key, uint16_t value); > int fw_cfg_add_i32(FWCfgState *s, uint16_t key, uint32_t value); > int fw_cfg_add_i64(FWCfgState *s, uint16_t key, uint64_t value); > +int fw_cfg_update_i64(FWCfgState *s, uint64_t key, uint64_t data); > int fw_cfg_add_callback(FWCfgState *s, uint16_t key, FWCfgCallback callback, > void *callback_opaque, uint8_t *data, size_t len); > int fw_cfg_add_file(FWCfgState *s, const char *filename, uint8_t *data, > diff --git a/hw/loader.c b/hw/loader.c > index 35d792e..2a017d1 100644 > --- a/hw/loader.c > +++ b/hw/loader.c > @@ -536,7 +536,7 @@ struct Rom { > QTAILQ_ENTRY(Rom) next; > }; > > -static FWCfgState *fw_cfg; > +FWCfgState *fw_cfg; > static QTAILQ_HEAD(, Rom) roms = QTAILQ_HEAD_INITIALIZER(roms); > > static void rom_insert(Rom *rom) > diff --git a/hw/pc.c b/hw/pc.c > index d1dfc83..c6595e1 100644 > --- a/hw/pc.c > +++ b/hw/pc.c > @@ -603,6 +603,7 @@ static void *bochs_bios_init(void) > > fw_cfg_add_i32(fw_cfg, FW_CFG_ID, 1); > fw_cfg_add_i64(fw_cfg, FW_CFG_RAM_SIZE, (uint64_t)ram_size); > + fw_cfg_add_i64(fw_cfg, FW_CFG_MAXRAM_SIZE, (uint64_t)maxram_size); > fw_cfg_add_bytes(fw_cfg, FW_CFG_ACPI_TABLES, (uint8_t *)acpi_tables, > acpi_tables_len); > fw_cfg_add_i32(fw_cfg, FW_CFG_IRQ0_OVERRIDE, kvm_allows_irq0_override()); > diff --git a/hw/pc.h b/hw/pc.h > index c8d4280..a00aca6 100644 > --- a/hw/pc.h > +++ b/hw/pc.h > @@ -9,6 +9,10 @@ > #include "net.h" > #include "memory.h" > > +#define LINUX_MIN_BLOCK_SIZE 0x8000000LU > +#define MEM_HOTPLUG_OFFSET 0x100000000LLU > + > +extern ram_addr_t global_ram_hotplug_offset; > /* PC-style peripherals (also used by other machines). */ > > /* serial.c */ > diff --git a/hw/pc_piix.c b/hw/pc_piix.c > index 3d5f6e7..063b462 100644 > --- a/hw/pc_piix.c > +++ b/hw/pc_piix.c > @@ -46,7 +46,7 @@ > #endif > > qemu_irq *ioapic_irq_hack; > - > +ram_addr_t global_ram_hotplug_offset; > #define MAX_IDE_BUS 2 > > static const int ide_iobase[MAX_IDE_BUS] = { 0x1f0, 0x170 }; > @@ -109,9 +109,11 @@ static void pc_init1(MemoryRegion *system_memory, > if (ram_size >= 0xe0000000 ) { > above_4g_mem_size = ram_size - 0xe0000000; > below_4g_mem_size = 0xe0000000; > + global_ram_hotplug_offset = ram_size + 0x20000000LLU; > } else { > above_4g_mem_size = 0; > below_4g_mem_size = ram_size; > + global_ram_hotplug_offset = MEM_HOTPLUG_OFFSET; > } > > /* allocate ram and load rom/bios */ > diff --git a/monitor.c b/monitor.c > index caaa05c..fdf1dc9 100644 > --- a/monitor.c > +++ b/monitor.c > @@ -984,6 +984,28 @@ static void do_cpu_set_nr(Monitor *mon, const QDict *qdict) > #endif > } > > +static void do_mem_set_nr(Monitor *mon, const QDict *qdict) > +{ > + int state; > + int64_t value; > + const char *status; > + > + status = qdict_get_str(qdict, "state"); > + value = qdict_get_int(qdict, "mem"); > + > + if (!strcmp(status, "online")) > + state = 1; > + else if (!strcmp(status, "offline")) > + state = 0; > + else { > + monitor_printf(mon, "invalid status: %s\n", status); > + return; > + } > +#if defined(TARGET_I386) || defined(TARGET_X86_64) > + qemu_system_mem_hot_add(value, state); > +#endif > +} > + > static void do_info_jit(Monitor *mon) > { > dump_exec_info((FILE *)mon, monitor_fprintf); > diff --git a/sysemu.h b/sysemu.h > index fc2bf36..c2bb3cd 100644 > --- a/sysemu.h > +++ b/sysemu.h > @@ -146,6 +146,7 @@ extern unsigned int nb_prom_envs; > > /* acpi */ > void qemu_system_cpu_hot_add(int cpu, int state); > +void qemu_system_mem_hot_add(int64_t value, int state); > > /* pci-hotplug */ > void pci_device_hot_add(Monitor *mon, const QDict *qdict); > diff --git a/vl.c b/vl.c > index f6a77f7..474c935 100644 > --- a/vl.c > +++ b/vl.c > @@ -178,6 +178,7 @@ DisplayType display_type = DT_DEFAULT; > int display_remote = 0; > const char* keyboard_layout = NULL; > ram_addr_t ram_size; > +ram_addr_t maxram_size; > const char *mem_path = NULL; > #ifdef MAP_POPULATE > int mem_prealloc = 0; /* force preallocation of physical target memory */ > @@ -2127,6 +2128,7 @@ int main(int argc, char **argv, char **envp) > cpu_model = NULL; > initrd_filename = NULL; > ram_size = 0; > + maxram_size = 0; > snapshot = 0; > kernel_filename = NULL; > kernel_cmdline = ""; > @@ -2455,8 +2457,10 @@ int main(int argc, char **argv, char **envp) > break; > case QEMU_OPTION_m: { > int64_t value; > + char *endptr; > + char option[128]; > > - value = strtosz(optarg, NULL); > + value = strtosz(optarg, &endptr); > if (value < 0) { > fprintf(stderr, "qemu: invalid ram size: %s\n", optarg); > exit(1); > @@ -2467,6 +2471,41 @@ int main(int argc, char **argv, char **envp) > exit(1); > } > ram_size = value; > + > + if (endptr != optarg) { > + if (*endptr == ',') { > + endptr++; > + } > + } > + > + if (get_param_value(option, 128, "maxmem", endptr) != 0) { > + value = strtosz(option, NULL); > + > + if (value < 0) { > + fprintf(stderr, "qemu: invalid ram size: %s\n", endptr); > + exit(1); > + } > + > + /* On 32-bit hosts, QEMU is limited by virtual address space */ > + if (value > (2047 << 20) && HOST_LONG_BITS == 32) { > + fprintf(stderr, "qemu: at most 2047 MB RAM can be simulated\n"); > + exit(1); > + } > + if (value != (uint64_t)(ram_addr_t)value) { > + fprintf(stderr, "qemu: ram size too large\n"); > + exit(1); > + } > + if (value < ram_size) { > + fprintf(stderr, "qemu: max ram size cannot be less than initial ram size\n"); > + exit(1); > + } > + > + maxram_size = value; > + > + } > + else > + maxram_size = ram_size; > + fprintf(stderr, "ramsize = %ld maxramsize = %ld\n", ram_size, maxram_size); > break; > } > case QEMU_OPTION_mempath: > > > > > > src/ssdt-mem.dsl | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 files changed, 65 insertions(+), 0 deletions(-) > > diff --git a/src/ssdt-mem.dsl b/src/ssdt-mem.dsl > new file mode 100644 > index 0000000..60abb05 > --- /dev/null > +++ b/src/ssdt-mem.dsl > @@ -0,0 +1,65 @@ > +/* This file is the basis for the ssdt_mem[] variable in src/acpi.c. > + * It is similar in design to the ssdt_proc variable. > + * 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 memory device in the system. The > + * objects will * be placed in the \_SB_ namespace. > + * > + * To generate a new ssdt_memc[], run the commands: > + * cpp -P src/ssdt-mem.dsl > out/ssdt-mem.dsl.i > + * iasl -ta -p out/ssdt-mem out/ssdt-mem.dsl.i > + * tail -c +37 < out/ssdt-mem.aml | hexdump -e '" " 8/1 "0x%02x," "\n"' > + * and then cut-and-paste the output into the src/acpi.c ssdt_mem[] > + * array. > + * > + * In addition to the aml code generated from this file, the > + * src/acpi.c file creates a MEMNTFY method with an entry for each memdevice: > + * Method(MTFY, 2) { > + * If (LEqual(Arg0, 0x00)) { Notify(MP00, Arg1) } > + * If (LEqual(Arg0, 0x01)) { Notify(MP01, Arg1) } > + * ... > + * } > + * and a MEON array with the list of active and inactive memory devices: > + * Name(MEON, Package() { One, One, ..., Zero, Zero, ... }) > + */ > +DefinitionBlock ("ssdt-mem.aml", "SSDT", 0x02, "BXPC", "CSSDT", 0x1) > +/* v------------------ DO NOT EDIT ------------------v */ > +{ > + Device(MPAA) { > + Name(ID, 0xAA) > +/* ^------------------ DO NOT EDIT ------------------^ > + * > + * The src/acpi.c code requires the above layout so that it can update > + * MPAA and 0xAA with the appropriate MEMDEVICE id (see > + * SD_OFFSET_MEMHEX/MEMID1/MEMID2). Don't change the above without > + * also updating the C code. > + */ > + Name(_HID, EISAID("PNP0C80")) > + > + External(CMST, MethodObj) > + External(MPEJ, MethodObj) > + > + Name(_CRS, ResourceTemplate() { > + QwordMemory( > + ResourceConsumer, > + , > + MinFixed, > + MaxFixed, > + Cacheable, > + ReadWrite, > + 0x0, > + 0xDEADBEEF, > + 0xE6ADBEEE, > + 0x00000000, > + 0x08000000, > + ) > + }) > + Method (_STA, 0) { > + Return(CMST(ID)) > + } > + Method (_EJ0, 1, NotSerialized) { > + MPEJ(ID, Arg0) > + } > + } > +} > + > > > > > > src/acpi-dsdt.dsl | 55 ++++- > src/acpi-dsdt.hex | 701 +++++++++++++++++++++++++++-------------------------- > src/acpi.c | 125 ++++++++++ > src/biosvar.h | 5 + > src/paravirt.c | 22 ++ > src/paravirt.h | 4 + > 6 files changed, 571 insertions(+), 341 deletions(-) > > diff --git a/src/acpi-dsdt.dsl b/src/acpi-dsdt.dsl > index 08412e2..e9b250d 100644 > --- a/src/acpi-dsdt.dsl > +++ b/src/acpi-dsdt.dsl > @@ -768,6 +768,9 @@ DefinitionBlock ( > External(NTFY, MethodObj) > External(CPON, PkgObj) > > + External(MTFY, MethodObj) > + External(MEON, PkgObj) > + > /* Methods called by run-time generated SSDT Processor objects */ > Method (CPMA, 1, NotSerialized) { > // _MAT method - create an madt apic buffer > @@ -832,6 +835,56 @@ DefinitionBlock ( > } > Return(One) > } > + > + Method (CMST, 1, NotSerialized) { > + // _STA method - return ON status of memdevice > + // Local0 = MEON flag for this cpu > + Store(DerefOf(Index(MEON, Arg0)), Local0) > + If (Local0) { Return(0xF) } Else { Return(0x0) } > + } > + > + /* Memory hotplug notify method */ > + OperationRegion(MEST, SystemIO, 0xaf20, 32) > + Field (MEST, ByteAcc, NoLock, Preserve) > + { > + MES, 256 > + } > + > + Method(MESC, 0) { > + // Local5 = active memdevice bitmap > + Store (MES, Local5) > + // Local2 = last read byte from bitmap > + Store (Zero, Local2) > + // Local0 = cpuid iterator > + Store (Zero, Local0) > + While (LLess(Local0, SizeOf(MEON))) { > + // Local1 = MEON flag for this cpu > + Store(DerefOf(Index(MEON, Local0)), Local1) > + If (And(Local0, 0x07)) { > + // Shift down previously read bitmap byte > + ShiftRight(Local2, 1, Local2) > + } Else { > + // Read next byte from memdevice 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 MEON with new state > + Store(Local3, Index(MEON, Local0)) > + // Do MEM notify > + If (LEqual(Local3, 1)) { > + MTFY(Local0, 1) > + } Else { > + MTFY(Local0, 3) > + } > + } > + Increment(Local0) > + } > + Return(One) > + } > + > } > > Scope (\_GPE) > @@ -891,7 +944,7 @@ DefinitionBlock ( > Return(\_SB.PRSC()) > } > Method(_L03) { > - Return(0x01) > + Return(\_SB.MESC()) > } > Method(_L04) { > Return(0x01) > diff --git a/src/acpi-dsdt.hex b/src/acpi-dsdt.hex > index d0a09f3..d71aca1 100644 > --- a/src/acpi-dsdt.hex > +++ b/src/acpi-dsdt.hex > @@ -1,20 +1,20 @@ > /* > * > * Intel ACPI Component Architecture > - * ASL Optimizing Compiler version 20100528 [Jul 1 2010] > + * ASL Optimizing Compiler version 20100528 [Jul 2 2010] > * Copyright (c) 2000 - 2010 Intel Corporation > * Supports ACPI Specification Revision 4.0a > * > - * Compilation of "out/acpi-dsdt.dsl.i" - Tue May 24 22:35:17 2011 > + * Compilation of "out/acpi-dsdt.dsl.i" - Thu Aug 11 14:20:43 2011 > * > * C source code output > - * AML code block contains 0x2589 bytes > + * AML code block contains 0x2634 bytes > * > */ > unsigned char AmlCode[] = > { > - 0x44,0x53,0x44,0x54,0x89,0x25,0x00,0x00, /* 00000000 "DSDT.%.." */ > - 0x01,0x13,0x42,0x58,0x50,0x43,0x00,0x00, /* 00000008 "..BXPC.." */ > + 0x44,0x53,0x44,0x54,0x34,0x26,0x00,0x00, /* 00000000 "DSDT4&.." */ > + 0x01,0x45,0x42,0x58,0x50,0x43,0x00,0x00, /* 00000008 ".EBXPC.." */ > 0x42,0x58,0x44,0x53,0x44,0x54,0x00,0x00, /* 00000010 "BXDSDT.." */ > 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ > 0x28,0x05,0x10,0x20,0x10,0x49,0x04,0x5C, /* 00000020 "(.. .I.\" */ > @@ -850,7 +850,7 @@ unsigned char AmlCode[] = > 0x01,0x01,0x00,0x00,0x08,0x5F,0x53,0x34, /* 00001A10 "....._S4" */ > 0x5F,0x12,0x06,0x04,0x00,0x00,0x00,0x00, /* 00001A18 "_......." */ > 0x08,0x5F,0x53,0x35,0x5F,0x12,0x06,0x04, /* 00001A20 "._S5_..." */ > - 0x00,0x00,0x00,0x00,0x10,0x49,0x0E,0x5F, /* 00001A28 ".....I._" */ > + 0x00,0x00,0x00,0x00,0x10,0x4B,0x18,0x5F, /* 00001A28 ".....K._" */ > 0x53,0x42,0x5F,0x14,0x35,0x43,0x50,0x4D, /* 00001A30 "SB_.5CPM" */ > 0x41,0x01,0x70,0x83,0x88,0x43,0x50,0x4F, /* 00001A38 "A.p..CPO" */ > 0x4E,0x68,0x00,0x60,0x70,0x11,0x0B,0x0A, /* 00001A40 "Nh.`p..." */ > @@ -879,340 +879,361 @@ unsigned char AmlCode[] = > 0x43,0x50,0x4F,0x4E,0x60,0x00,0xA0,0x0A, /* 00001AF8 "CPON`..." */ > 0x93,0x63,0x01,0x4E,0x54,0x46,0x59,0x60, /* 00001B00 ".c.NTFY`" */ > 0x01,0xA1,0x08,0x4E,0x54,0x46,0x59,0x60, /* 00001B08 "...NTFY`" */ > - 0x0A,0x03,0x75,0x60,0xA4,0x01,0x10,0x42, /* 00001B10 "..u`...B" */ > - 0xA7,0x5F,0x47,0x50,0x45,0x08,0x5F,0x48, /* 00001B18 "._GPE._H" */ > - 0x49,0x44,0x0D,0x41,0x43,0x50,0x49,0x30, /* 00001B20 "ID.ACPI0" */ > - 0x30,0x30,0x36,0x00,0x14,0x08,0x5F,0x4C, /* 00001B28 "006..._L" */ > - 0x30,0x30,0x00,0xA4,0x01,0x14,0x4C,0x9C, /* 00001B30 "00....L." */ > - 0x5F,0x4C,0x30,0x31,0x00,0xA0,0x25,0x7B, /* 00001B38 "_L01..%{" */ > - 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00001B40 "\/._SB_P" */ > - 0x43,0x49,0x30,0x50,0x43,0x49,0x55,0x0A, /* 00001B48 "CI0PCIU." */ > - 0x02,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 00001B50 "...\/._S" */ > - 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x31, /* 00001B58 "B_PCI0S1" */ > - 0x5F,0x5F,0x01,0xA0,0x26,0x7B,0x5C,0x2F, /* 00001B60 "__..&{\/" */ > - 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00001B68 "._SB_PCI" */ > - 0x30,0x50,0x43,0x49,0x44,0x0A,0x02,0x00, /* 00001B70 "0PCID..." */ > - 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00001B78 ".\/._SB_" */ > - 0x50,0x43,0x49,0x30,0x53,0x31,0x5F,0x5F, /* 00001B80 "PCI0S1__" */ > - 0x0A,0x03,0xA0,0x25,0x7B,0x5C,0x2F,0x03, /* 00001B88 "...%{\/." */ > - 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00001B90 "_SB_PCI0" */ > - 0x50,0x43,0x49,0x55,0x0A,0x04,0x00,0x86, /* 00001B98 "PCIU...." */ > - 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00001BA0 "\/._SB_P" */ > - 0x43,0x49,0x30,0x53,0x32,0x5F,0x5F,0x01, /* 00001BA8 "CI0S2__." */ > - 0xA0,0x26,0x7B,0x5C,0x2F,0x03,0x5F,0x53, /* 00001BB0 ".&{\/._S" */ > - 0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43, /* 00001BB8 "B_PCI0PC" */ > - 0x49,0x44,0x0A,0x04,0x00,0x86,0x5C,0x2F, /* 00001BC0 "ID....\/" */ > - 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00001BC8 "._SB_PCI" */ > - 0x30,0x53,0x32,0x5F,0x5F,0x0A,0x03,0xA0, /* 00001BD0 "0S2__..." */ > - 0x25,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00001BD8 "%{\/._SB" */ > - 0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49, /* 00001BE0 "_PCI0PCI" */ > - 0x55,0x0A,0x08,0x00,0x86,0x5C,0x2F,0x03, /* 00001BE8 "U....\/." */ > - 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00001BF0 "_SB_PCI0" */ > - 0x53,0x33,0x5F,0x5F,0x01,0xA0,0x26,0x7B, /* 00001BF8 "S3__..&{" */ > - 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00001C00 "\/._SB_P" */ > - 0x43,0x49,0x30,0x50,0x43,0x49,0x44,0x0A, /* 00001C08 "CI0PCID." */ > - 0x08,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 00001C10 "...\/._S" */ > - 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x33, /* 00001C18 "B_PCI0S3" */ > - 0x5F,0x5F,0x0A,0x03,0xA0,0x25,0x7B,0x5C, /* 00001C20 "__...%{\" */ > - 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00001C28 "/._SB_PC" */ > - 0x49,0x30,0x50,0x43,0x49,0x55,0x0A,0x10, /* 00001C30 "I0PCIU.." */ > - 0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00001C38 "..\/._SB" */ > - 0x5F,0x50,0x43,0x49,0x30,0x53,0x34,0x5F, /* 00001C40 "_PCI0S4_" */ > - 0x5F,0x01,0xA0,0x26,0x7B,0x5C,0x2F,0x03, /* 00001C48 "_..&{\/." */ > - 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00001C50 "_SB_PCI0" */ > - 0x50,0x43,0x49,0x44,0x0A,0x10,0x00,0x86, /* 00001C58 "PCID...." */ > - 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00001C60 "\/._SB_P" */ > - 0x43,0x49,0x30,0x53,0x34,0x5F,0x5F,0x0A, /* 00001C68 "CI0S4__." */ > - 0x03,0xA0,0x25,0x7B,0x5C,0x2F,0x03,0x5F, /* 00001C70 "..%{\/._" */ > - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50, /* 00001C78 "SB_PCI0P" */ > - 0x43,0x49,0x55,0x0A,0x20,0x00,0x86,0x5C, /* 00001C80 "CIU. ..\" */ > - 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00001C88 "/._SB_PC" */ > - 0x49,0x30,0x53,0x35,0x5F,0x5F,0x01,0xA0, /* 00001C90 "I0S5__.." */ > - 0x26,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00001C98 "&{\/._SB" */ > - 0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49, /* 00001CA0 "_PCI0PCI" */ > - 0x44,0x0A,0x20,0x00,0x86,0x5C,0x2F,0x03, /* 00001CA8 "D. ..\/." */ > - 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00001CB0 "_SB_PCI0" */ > - 0x53,0x35,0x5F,0x5F,0x0A,0x03,0xA0,0x25, /* 00001CB8 "S5__...%" */ > - 0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00001CC0 "{\/._SB_" */ > - 0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x55, /* 00001CC8 "PCI0PCIU" */ > - 0x0A,0x40,0x00,0x86,0x5C,0x2F,0x03,0x5F, /* 00001CD0 ".@..\/._" */ > - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53, /* 00001CD8 "SB_PCI0S" */ > - 0x36,0x5F,0x5F,0x01,0xA0,0x26,0x7B,0x5C, /* 00001CE0 "6__..&{\" */ > - 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00001CE8 "/._SB_PC" */ > - 0x49,0x30,0x50,0x43,0x49,0x44,0x0A,0x40, /* 00001CF0 "I0PCID.@" */ > - 0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00001CF8 "..\/._SB" */ > - 0x5F,0x50,0x43,0x49,0x30,0x53,0x36,0x5F, /* 00001D00 "_PCI0S6_" */ > - 0x5F,0x0A,0x03,0xA0,0x25,0x7B,0x5C,0x2F, /* 00001D08 "_...%{\/" */ > - 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00001D10 "._SB_PCI" */ > - 0x30,0x50,0x43,0x49,0x55,0x0A,0x80,0x00, /* 00001D18 "0PCIU..." */ > - 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00001D20 ".\/._SB_" */ > - 0x50,0x43,0x49,0x30,0x53,0x37,0x5F,0x5F, /* 00001D28 "PCI0S7__" */ > - 0x01,0xA0,0x26,0x7B,0x5C,0x2F,0x03,0x5F, /* 00001D30 "..&{\/._" */ > - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50, /* 00001D38 "SB_PCI0P" */ > - 0x43,0x49,0x44,0x0A,0x80,0x00,0x86,0x5C, /* 00001D40 "CID....\" */ > - 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00001D48 "/._SB_PC" */ > - 0x49,0x30,0x53,0x37,0x5F,0x5F,0x0A,0x03, /* 00001D50 "I0S7__.." */ > - 0xA0,0x26,0x7B,0x5C,0x2F,0x03,0x5F,0x53, /* 00001D58 ".&{\/._S" */ > - 0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43, /* 00001D60 "B_PCI0PC" */ > - 0x49,0x55,0x0B,0x00,0x01,0x00,0x86,0x5C, /* 00001D68 "IU.....\" */ > - 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00001D70 "/._SB_PC" */ > - 0x49,0x30,0x53,0x38,0x5F,0x5F,0x01,0xA0, /* 00001D78 "I0S8__.." */ > - 0x27,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00001D80 "'{\/._SB" */ > - 0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49, /* 00001D88 "_PCI0PCI" */ > - 0x44,0x0B,0x00,0x01,0x00,0x86,0x5C,0x2F, /* 00001D90 "D.....\/" */ > - 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00001D98 "._SB_PCI" */ > - 0x30,0x53,0x38,0x5F,0x5F,0x0A,0x03,0xA0, /* 00001DA0 "0S8__..." */ > - 0x26,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00001DA8 "&{\/._SB" */ > - 0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49, /* 00001DB0 "_PCI0PCI" */ > - 0x55,0x0B,0x00,0x02,0x00,0x86,0x5C,0x2F, /* 00001DB8 "U.....\/" */ > - 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00001DC0 "._SB_PCI" */ > - 0x30,0x53,0x39,0x5F,0x5F,0x01,0xA0,0x27, /* 00001DC8 "0S9__..'" */ > - 0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00001DD0 "{\/._SB_" */ > - 0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x44, /* 00001DD8 "PCI0PCID" */ > - 0x0B,0x00,0x02,0x00,0x86,0x5C,0x2F,0x03, /* 00001DE0 ".....\/." */ > - 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00001DE8 "_SB_PCI0" */ > - 0x53,0x39,0x5F,0x5F,0x0A,0x03,0xA0,0x26, /* 00001DF0 "S9__...&" */ > - 0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00001DF8 "{\/._SB_" */ > - 0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x55, /* 00001E00 "PCI0PCIU" */ > - 0x0B,0x00,0x04,0x00,0x86,0x5C,0x2F,0x03, /* 00001E08 ".....\/." */ > - 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00001E10 "_SB_PCI0" */ > - 0x53,0x31,0x30,0x5F,0x01,0xA0,0x27,0x7B, /* 00001E18 "S10_..'{" */ > - 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00001E20 "\/._SB_P" */ > - 0x43,0x49,0x30,0x50,0x43,0x49,0x44,0x0B, /* 00001E28 "CI0PCID." */ > - 0x00,0x04,0x00,0x86,0x5C,0x2F,0x03,0x5F, /* 00001E30 "....\/._" */ > - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53, /* 00001E38 "SB_PCI0S" */ > - 0x31,0x30,0x5F,0x0A,0x03,0xA0,0x26,0x7B, /* 00001E40 "10_...&{" */ > - 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00001E48 "\/._SB_P" */ > - 0x43,0x49,0x30,0x50,0x43,0x49,0x55,0x0B, /* 00001E50 "CI0PCIU." */ > - 0x00,0x08,0x00,0x86,0x5C,0x2F,0x03,0x5F, /* 00001E58 "....\/._" */ > - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53, /* 00001E60 "SB_PCI0S" */ > - 0x31,0x31,0x5F,0x01,0xA0,0x27,0x7B,0x5C, /* 00001E68 "11_..'{\" */ > - 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00001E70 "/._SB_PC" */ > - 0x49,0x30,0x50,0x43,0x49,0x44,0x0B,0x00, /* 00001E78 "I0PCID.." */ > - 0x08,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 00001E80 "...\/._S" */ > - 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x31, /* 00001E88 "B_PCI0S1" */ > - 0x31,0x5F,0x0A,0x03,0xA0,0x26,0x7B,0x5C, /* 00001E90 "1_...&{\" */ > - 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00001E98 "/._SB_PC" */ > - 0x49,0x30,0x50,0x43,0x49,0x55,0x0B,0x00, /* 00001EA0 "I0PCIU.." */ > - 0x10,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 00001EA8 "...\/._S" */ > - 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x31, /* 00001EB0 "B_PCI0S1" */ > - 0x32,0x5F,0x01,0xA0,0x27,0x7B,0x5C,0x2F, /* 00001EB8 "2_..'{\/" */ > - 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00001EC0 "._SB_PCI" */ > - 0x30,0x50,0x43,0x49,0x44,0x0B,0x00,0x10, /* 00001EC8 "0PCID..." */ > - 0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00001ED0 "..\/._SB" */ > - 0x5F,0x50,0x43,0x49,0x30,0x53,0x31,0x32, /* 00001ED8 "_PCI0S12" */ > - 0x5F,0x0A,0x03,0xA0,0x26,0x7B,0x5C,0x2F, /* 00001EE0 "_...&{\/" */ > - 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00001EE8 "._SB_PCI" */ > - 0x30,0x50,0x43,0x49,0x55,0x0B,0x00,0x20, /* 00001EF0 "0PCIU.. " */ > - 0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00001EF8 "..\/._SB" */ > - 0x5F,0x50,0x43,0x49,0x30,0x53,0x31,0x33, /* 00001F00 "_PCI0S13" */ > - 0x5F,0x01,0xA0,0x27,0x7B,0x5C,0x2F,0x03, /* 00001F08 "_..'{\/." */ > - 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00001F10 "_SB_PCI0" */ > - 0x50,0x43,0x49,0x44,0x0B,0x00,0x20,0x00, /* 00001F18 "PCID.. ." */ > - 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00001F20 ".\/._SB_" */ > - 0x50,0x43,0x49,0x30,0x53,0x31,0x33,0x5F, /* 00001F28 "PCI0S13_" */ > - 0x0A,0x03,0xA0,0x26,0x7B,0x5C,0x2F,0x03, /* 00001F30 "...&{\/." */ > - 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00001F38 "_SB_PCI0" */ > - 0x50,0x43,0x49,0x55,0x0B,0x00,0x40,0x00, /* 00001F40 "PCIU..@." */ > - 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00001F48 ".\/._SB_" */ > - 0x50,0x43,0x49,0x30,0x53,0x31,0x34,0x5F, /* 00001F50 "PCI0S14_" */ > - 0x01,0xA0,0x27,0x7B,0x5C,0x2F,0x03,0x5F, /* 00001F58 "..'{\/._" */ > - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50, /* 00001F60 "SB_PCI0P" */ > - 0x43,0x49,0x44,0x0B,0x00,0x40,0x00,0x86, /* 00001F68 "CID..@.." */ > - 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00001F70 "\/._SB_P" */ > - 0x43,0x49,0x30,0x53,0x31,0x34,0x5F,0x0A, /* 00001F78 "CI0S14_." */ > - 0x03,0xA0,0x26,0x7B,0x5C,0x2F,0x03,0x5F, /* 00001F80 "..&{\/._" */ > - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50, /* 00001F88 "SB_PCI0P" */ > - 0x43,0x49,0x55,0x0B,0x00,0x80,0x00,0x86, /* 00001F90 "CIU....." */ > - 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00001F98 "\/._SB_P" */ > - 0x43,0x49,0x30,0x53,0x31,0x35,0x5F,0x01, /* 00001FA0 "CI0S15_." */ > - 0xA0,0x27,0x7B,0x5C,0x2F,0x03,0x5F,0x53, /* 00001FA8 ".'{\/._S" */ > - 0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43, /* 00001FB0 "B_PCI0PC" */ > - 0x49,0x44,0x0B,0x00,0x80,0x00,0x86,0x5C, /* 00001FB8 "ID.....\" */ > - 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00001FC0 "/._SB_PC" */ > - 0x49,0x30,0x53,0x31,0x35,0x5F,0x0A,0x03, /* 00001FC8 "I0S15_.." */ > - 0xA0,0x28,0x7B,0x5C,0x2F,0x03,0x5F,0x53, /* 00001FD0 ".({\/._S" */ > - 0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43, /* 00001FD8 "B_PCI0PC" */ > - 0x49,0x55,0x0C,0x00,0x00,0x01,0x00,0x00, /* 00001FE0 "IU......" */ > - 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00001FE8 ".\/._SB_" */ > - 0x50,0x43,0x49,0x30,0x53,0x31,0x36,0x5F, /* 00001FF0 "PCI0S16_" */ > - 0x01,0xA0,0x29,0x7B,0x5C,0x2F,0x03,0x5F, /* 00001FF8 "..){\/._" */ > - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50, /* 00002000 "SB_PCI0P" */ > - 0x43,0x49,0x44,0x0C,0x00,0x00,0x01,0x00, /* 00002008 "CID....." */ > + 0x0A,0x03,0x75,0x60,0xA4,0x01,0x14,0x1A, /* 00001B10 "..u`...." */ > + 0x43,0x4D,0x53,0x54,0x01,0x70,0x83,0x88, /* 00001B18 "CMST.p.." */ > + 0x4D,0x45,0x4F,0x4E,0x68,0x00,0x60,0xA0, /* 00001B20 "MEONh.`." */ > + 0x05,0x60,0xA4,0x0A,0x0F,0xA1,0x03,0xA4, /* 00001B28 ".`......" */ > + 0x00,0x5B,0x80,0x4D,0x45,0x53,0x54,0x01, /* 00001B30 ".[.MEST." */ > + 0x0B,0x20,0xAF,0x0A,0x20,0x5B,0x81,0x0C, /* 00001B38 ". .. [.." */ > + 0x4D,0x45,0x53,0x54,0x01,0x4D,0x45,0x53, /* 00001B40 "MEST.MES" */ > + 0x5F,0x40,0x10,0x14,0x4C,0x06,0x4D,0x45, /* 00001B48 "_@xxxxxx" */ > + 0x53,0x43,0x00,0x70,0x4D,0x45,0x53,0x5F, /* 00001B50 "SC.pMES_" */ > + 0x65,0x70,0x00,0x62,0x70,0x00,0x60,0xA2, /* 00001B58 "ep.bp.`." */ > + 0x46,0x05,0x95,0x60,0x87,0x4D,0x45,0x4F, /* 00001B60 "F..`.MEO" */ > + 0x4E,0x70,0x83,0x88,0x4D,0x45,0x4F,0x4E, /* 00001B68 "Np..MEON" */ > + 0x60,0x00,0x61,0xA0,0x0A,0x7B,0x60,0x0A, /* 00001B70 "`.a..{`." */ > + 0x07,0x00,0x7A,0x62,0x01,0x62,0xA1,0x0C, /* 00001B78 "..zb.b.." */ > + 0x70,0x83,0x88,0x65,0x7A,0x60,0x0A,0x03, /* 00001B80 "p..ez`.." */ > + 0x00,0x00,0x62,0x70,0x7B,0x62,0x01,0x00, /* 00001B88 "..bp{b.." */ > + 0x63,0xA0,0x22,0x92,0x93,0x61,0x63,0x70, /* 00001B90 "c."..acp" */ > + 0x63,0x88,0x4D,0x45,0x4F,0x4E,0x60,0x00, /* 00001B98 "c.MEON`." */ > + 0xA0,0x0A,0x93,0x63,0x01,0x4D,0x54,0x46, /* 00001BA0 "...c.MTF" */ > + 0x59,0x60,0x01,0xA1,0x08,0x4D,0x54,0x46, /* 00001BA8 "Y`...MTF" */ > + 0x59,0x60,0x0A,0x03,0x75,0x60,0xA4,0x01, /* 00001BB0 "Y`..u`.." */ > + 0x10,0x4B,0xA7,0x5F,0x47,0x50,0x45,0x08, /* 00001BB8 ".K._GPE." */ > + 0x5F,0x48,0x49,0x44,0x0D,0x41,0x43,0x50, /* 00001BC0 "_HID.ACP" */ > + 0x49,0x30,0x30,0x30,0x36,0x00,0x14,0x08, /* 00001BC8 "I0006..." */ > + 0x5F,0x4C,0x30,0x30,0x00,0xA4,0x01,0x14, /* 00001BD0 "_L00...." */ > + 0x4C,0x9C,0x5F,0x4C,0x30,0x31,0x00,0xA0, /* 00001BD8 "L._L01.." */ > + 0x25,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00001BE0 "%{\/._SB" */ > + 0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49, /* 00001BE8 "_PCI0PCI" */ > + 0x55,0x0A,0x02,0x00,0x86,0x5C,0x2F,0x03, /* 00001BF0 "U....\/." */ > + 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00001BF8 "_SB_PCI0" */ > + 0x53,0x31,0x5F,0x5F,0x01,0xA0,0x26,0x7B, /* 00001C00 "S1__..&{" */ > + 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00001C08 "\/._SB_P" */ > + 0x43,0x49,0x30,0x50,0x43,0x49,0x44,0x0A, /* 00001C10 "CI0PCID." */ > + 0x02,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 00001C18 "...\/._S" */ > + 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x31, /* 00001C20 "B_PCI0S1" */ > + 0x5F,0x5F,0x0A,0x03,0xA0,0x25,0x7B,0x5C, /* 00001C28 "__...%{\" */ > + 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00001C30 "/._SB_PC" */ > + 0x49,0x30,0x50,0x43,0x49,0x55,0x0A,0x04, /* 00001C38 "I0PCIU.." */ > + 0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00001C40 "..\/._SB" */ > + 0x5F,0x50,0x43,0x49,0x30,0x53,0x32,0x5F, /* 00001C48 "_PCI0S2_" */ > + 0x5F,0x01,0xA0,0x26,0x7B,0x5C,0x2F,0x03, /* 00001C50 "_..&{\/." */ > + 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00001C58 "_SB_PCI0" */ > + 0x50,0x43,0x49,0x44,0x0A,0x04,0x00,0x86, /* 00001C60 "PCID...." */ > + 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00001C68 "\/._SB_P" */ > + 0x43,0x49,0x30,0x53,0x32,0x5F,0x5F,0x0A, /* 00001C70 "CI0S2__." */ > + 0x03,0xA0,0x25,0x7B,0x5C,0x2F,0x03,0x5F, /* 00001C78 "..%{\/._" */ > + 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50, /* 00001C80 "SB_PCI0P" */ > + 0x43,0x49,0x55,0x0A,0x08,0x00,0x86,0x5C, /* 00001C88 "CIU....\" */ > + 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00001C90 "/._SB_PC" */ > + 0x49,0x30,0x53,0x33,0x5F,0x5F,0x01,0xA0, /* 00001C98 "I0S3__.." */ > + 0x26,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00001CA0 "&{\/._SB" */ > + 0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49, /* 00001CA8 "_PCI0PCI" */ > + 0x44,0x0A,0x08,0x00,0x86,0x5C,0x2F,0x03, /* 00001CB0 "D....\/." */ > + 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00001CB8 "_SB_PCI0" */ > + 0x53,0x33,0x5F,0x5F,0x0A,0x03,0xA0,0x25, /* 00001CC0 "S3__...%" */ > + 0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00001CC8 "{\/._SB_" */ > + 0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x55, /* 00001CD0 "PCI0PCIU" */ > + 0x0A,0x10,0x00,0x86,0x5C,0x2F,0x03,0x5F, /* 00001CD8 "....\/._" */ > + 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53, /* 00001CE0 "SB_PCI0S" */ > + 0x34,0x5F,0x5F,0x01,0xA0,0x26,0x7B,0x5C, /* 00001CE8 "4__..&{\" */ > + 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00001CF0 "/._SB_PC" */ > + 0x49,0x30,0x50,0x43,0x49,0x44,0x0A,0x10, /* 00001CF8 "I0PCID.." */ > + 0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00001D00 "..\/._SB" */ > + 0x5F,0x50,0x43,0x49,0x30,0x53,0x34,0x5F, /* 00001D08 "_PCI0S4_" */ > + 0x5F,0x0A,0x03,0xA0,0x25,0x7B,0x5C,0x2F, /* 00001D10 "_...%{\/" */ > + 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00001D18 "._SB_PCI" */ > + 0x30,0x50,0x43,0x49,0x55,0x0A,0x20,0x00, /* 00001D20 "0PCIU. ." */ > + 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00001D28 ".\/._SB_" */ > + 0x50,0x43,0x49,0x30,0x53,0x35,0x5F,0x5F, /* 00001D30 "PCI0S5__" */ > + 0x01,0xA0,0x26,0x7B,0x5C,0x2F,0x03,0x5F, /* 00001D38 "..&{\/._" */ > + 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50, /* 00001D40 "SB_PCI0P" */ > + 0x43,0x49,0x44,0x0A,0x20,0x00,0x86,0x5C, /* 00001D48 "CID. ..\" */ > + 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00001D50 "/._SB_PC" */ > + 0x49,0x30,0x53,0x35,0x5F,0x5F,0x0A,0x03, /* 00001D58 "I0S5__.." */ > + 0xA0,0x25,0x7B,0x5C,0x2F,0x03,0x5F,0x53, /* 00001D60 ".%{\/._S" */ > + 0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43, /* 00001D68 "B_PCI0PC" */ > + 0x49,0x55,0x0A,0x40,0x00,0x86,0x5C,0x2F, /* 00001D70 "IU.@..\/" */ > + 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00001D78 "._SB_PCI" */ > + 0x30,0x53,0x36,0x5F,0x5F,0x01,0xA0,0x26, /* 00001D80 "0S6__..&" */ > + 0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00001D88 "{\/._SB_" */ > + 0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x44, /* 00001D90 "PCI0PCID" */ > + 0x0A,0x40,0x00,0x86,0x5C,0x2F,0x03,0x5F, /* 00001D98 ".@..\/._" */ > + 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53, /* 00001DA0 "SB_PCI0S" */ > + 0x36,0x5F,0x5F,0x0A,0x03,0xA0,0x25,0x7B, /* 00001DA8 "6__...%{" */ > + 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00001DB0 "\/._SB_P" */ > + 0x43,0x49,0x30,0x50,0x43,0x49,0x55,0x0A, /* 00001DB8 "CI0PCIU." */ > + 0x80,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 00001DC0 "...\/._S" */ > + 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x37, /* 00001DC8 "B_PCI0S7" */ > + 0x5F,0x5F,0x01,0xA0,0x26,0x7B,0x5C,0x2F, /* 00001DD0 "__..&{\/" */ > + 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00001DD8 "._SB_PCI" */ > + 0x30,0x50,0x43,0x49,0x44,0x0A,0x80,0x00, /* 00001DE0 "0PCID..." */ > + 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00001DE8 ".\/._SB_" */ > + 0x50,0x43,0x49,0x30,0x53,0x37,0x5F,0x5F, /* 00001DF0 "PCI0S7__" */ > + 0x0A,0x03,0xA0,0x26,0x7B,0x5C,0x2F,0x03, /* 00001DF8 "...&{\/." */ > + 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00001E00 "_SB_PCI0" */ > + 0x50,0x43,0x49,0x55,0x0B,0x00,0x01,0x00, /* 00001E08 "PCIU...." */ > + 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00001E10 ".\/._SB_" */ > + 0x50,0x43,0x49,0x30,0x53,0x38,0x5F,0x5F, /* 00001E18 "PCI0S8__" */ > + 0x01,0xA0,0x27,0x7B,0x5C,0x2F,0x03,0x5F, /* 00001E20 "..'{\/._" */ > + 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50, /* 00001E28 "SB_PCI0P" */ > + 0x43,0x49,0x44,0x0B,0x00,0x01,0x00,0x86, /* 00001E30 "CID....." */ > + 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00001E38 "\/._SB_P" */ > + 0x43,0x49,0x30,0x53,0x38,0x5F,0x5F,0x0A, /* 00001E40 "CI0S8__." */ > + 0x03,0xA0,0x26,0x7B,0x5C,0x2F,0x03,0x5F, /* 00001E48 "..&{\/._" */ > + 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50, /* 00001E50 "SB_PCI0P" */ > + 0x43,0x49,0x55,0x0B,0x00,0x02,0x00,0x86, /* 00001E58 "CIU....." */ > + 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00001E60 "\/._SB_P" */ > + 0x43,0x49,0x30,0x53,0x39,0x5F,0x5F,0x01, /* 00001E68 "CI0S9__." */ > + 0xA0,0x27,0x7B,0x5C,0x2F,0x03,0x5F,0x53, /* 00001E70 ".'{\/._S" */ > + 0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43, /* 00001E78 "B_PCI0PC" */ > + 0x49,0x44,0x0B,0x00,0x02,0x00,0x86,0x5C, /* 00001E80 "ID.....\" */ > + 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00001E88 "/._SB_PC" */ > + 0x49,0x30,0x53,0x39,0x5F,0x5F,0x0A,0x03, /* 00001E90 "I0S9__.." */ > + 0xA0,0x26,0x7B,0x5C,0x2F,0x03,0x5F,0x53, /* 00001E98 ".&{\/._S" */ > + 0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43, /* 00001EA0 "B_PCI0PC" */ > + 0x49,0x55,0x0B,0x00,0x04,0x00,0x86,0x5C, /* 00001EA8 "IU.....\" */ > + 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00001EB0 "/._SB_PC" */ > + 0x49,0x30,0x53,0x31,0x30,0x5F,0x01,0xA0, /* 00001EB8 "I0S10_.." */ > + 0x27,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00001EC0 "'{\/._SB" */ > + 0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49, /* 00001EC8 "_PCI0PCI" */ > + 0x44,0x0B,0x00,0x04,0x00,0x86,0x5C,0x2F, /* 00001ED0 "D.....\/" */ > + 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00001ED8 "._SB_PCI" */ > + 0x30,0x53,0x31,0x30,0x5F,0x0A,0x03,0xA0, /* 00001EE0 "0S10_..." */ > + 0x26,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00001EE8 "&{\/._SB" */ > + 0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49, /* 00001EF0 "_PCI0PCI" */ > + 0x55,0x0B,0x00,0x08,0x00,0x86,0x5C,0x2F, /* 00001EF8 "U.....\/" */ > + 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00001F00 "._SB_PCI" */ > + 0x30,0x53,0x31,0x31,0x5F,0x01,0xA0,0x27, /* 00001F08 "0S11_..'" */ > + 0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00001F10 "{\/._SB_" */ > + 0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x44, /* 00001F18 "PCI0PCID" */ > + 0x0B,0x00,0x08,0x00,0x86,0x5C,0x2F,0x03, /* 00001F20 ".....\/." */ > + 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00001F28 "_SB_PCI0" */ > + 0x53,0x31,0x31,0x5F,0x0A,0x03,0xA0,0x26, /* 00001F30 "S11_...&" */ > + 0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00001F38 "{\/._SB_" */ > + 0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x55, /* 00001F40 "PCI0PCIU" */ > + 0x0B,0x00,0x10,0x00,0x86,0x5C,0x2F,0x03, /* 00001F48 ".....\/." */ > + 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00001F50 "_SB_PCI0" */ > + 0x53,0x31,0x32,0x5F,0x01,0xA0,0x27,0x7B, /* 00001F58 "S12_..'{" */ > + 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00001F60 "\/._SB_P" */ > + 0x43,0x49,0x30,0x50,0x43,0x49,0x44,0x0B, /* 00001F68 "CI0PCID." */ > + 0x00,0x10,0x00,0x86,0x5C,0x2F,0x03,0x5F, /* 00001F70 "....\/._" */ > + 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53, /* 00001F78 "SB_PCI0S" */ > + 0x31,0x32,0x5F,0x0A,0x03,0xA0,0x26,0x7B, /* 00001F80 "12_...&{" */ > + 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00001F88 "\/._SB_P" */ > + 0x43,0x49,0x30,0x50,0x43,0x49,0x55,0x0B, /* 00001F90 "CI0PCIU." */ > + 0x00,0x20,0x00,0x86,0x5C,0x2F,0x03,0x5F, /* 00001F98 ". ..\/._" */ > + 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53, /* 00001FA0 "SB_PCI0S" */ > + 0x31,0x33,0x5F,0x01,0xA0,0x27,0x7B,0x5C, /* 00001FA8 "13_..'{\" */ > + 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00001FB0 "/._SB_PC" */ > + 0x49,0x30,0x50,0x43,0x49,0x44,0x0B,0x00, /* 00001FB8 "I0PCID.." */ > + 0x20,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 00001FC0 " ..\/._S" */ > + 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x31, /* 00001FC8 "B_PCI0S1" */ > + 0x33,0x5F,0x0A,0x03,0xA0,0x26,0x7B,0x5C, /* 00001FD0 "3_...&{\" */ > + 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00001FD8 "/._SB_PC" */ > + 0x49,0x30,0x50,0x43,0x49,0x55,0x0B,0x00, /* 00001FE0 "I0PCIU.." */ > + 0x40,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 00001FE8 "@..\/._S" */ > + 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x31, /* 00001FF0 "B_PCI0S1" */ > + 0x34,0x5F,0x01,0xA0,0x27,0x7B,0x5C,0x2F, /* 00001FF8 "4_..'{\/" */ > + 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00002000 "._SB_PCI" */ > + 0x30,0x50,0x43,0x49,0x44,0x0B,0x00,0x40, /* 00002008 "0PCID..@" */ > 0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00002010 "..\/._SB" */ > - 0x5F,0x50,0x43,0x49,0x30,0x53,0x31,0x36, /* 00002018 "_PCI0S16" */ > - 0x5F,0x0A,0x03,0xA0,0x28,0x7B,0x5C,0x2F, /* 00002020 "_...({\/" */ > + 0x5F,0x50,0x43,0x49,0x30,0x53,0x31,0x34, /* 00002018 "_PCI0S14" */ > + 0x5F,0x0A,0x03,0xA0,0x26,0x7B,0x5C,0x2F, /* 00002020 "_...&{\/" */ > 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00002028 "._SB_PCI" */ > - 0x30,0x50,0x43,0x49,0x55,0x0C,0x00,0x00, /* 00002030 "0PCIU..." */ > - 0x02,0x00,0x00,0x86,0x5C,0x2F,0x03,0x5F, /* 00002038 "....\/._" */ > - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53, /* 00002040 "SB_PCI0S" */ > - 0x31,0x37,0x5F,0x01,0xA0,0x29,0x7B,0x5C, /* 00002048 "17_..){\" */ > - 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00002050 "/._SB_PC" */ > - 0x49,0x30,0x50,0x43,0x49,0x44,0x0C,0x00, /* 00002058 "I0PCID.." */ > - 0x00,0x02,0x00,0x00,0x86,0x5C,0x2F,0x03, /* 00002060 ".....\/." */ > - 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00002068 "_SB_PCI0" */ > - 0x53,0x31,0x37,0x5F,0x0A,0x03,0xA0,0x28, /* 00002070 "S17_...(" */ > - 0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002078 "{\/._SB_" */ > - 0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x55, /* 00002080 "PCI0PCIU" */ > - 0x0C,0x00,0x00,0x04,0x00,0x00,0x86,0x5C, /* 00002088 ".......\" */ > - 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00002090 "/._SB_PC" */ > - 0x49,0x30,0x53,0x31,0x38,0x5F,0x01,0xA0, /* 00002098 "I0S18_.." */ > - 0x29,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 000020A0 "){\/._SB" */ > - 0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49, /* 000020A8 "_PCI0PCI" */ > - 0x44,0x0C,0x00,0x00,0x04,0x00,0x00,0x86, /* 000020B0 "D......." */ > - 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 000020B8 "\/._SB_P" */ > - 0x43,0x49,0x30,0x53,0x31,0x38,0x5F,0x0A, /* 000020C0 "CI0S18_." */ > - 0x03,0xA0,0x28,0x7B,0x5C,0x2F,0x03,0x5F, /* 000020C8 "..({\/._" */ > - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50, /* 000020D0 "SB_PCI0P" */ > - 0x43,0x49,0x55,0x0C,0x00,0x00,0x08,0x00, /* 000020D8 "CIU....." */ > - 0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 000020E0 "..\/._SB" */ > - 0x5F,0x50,0x43,0x49,0x30,0x53,0x31,0x39, /* 000020E8 "_PCI0S19" */ > - 0x5F,0x01,0xA0,0x29,0x7B,0x5C,0x2F,0x03, /* 000020F0 "_..){\/." */ > - 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 000020F8 "_SB_PCI0" */ > - 0x50,0x43,0x49,0x44,0x0C,0x00,0x00,0x08, /* 00002100 "PCID...." */ > - 0x00,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 00002108 "...\/._S" */ > - 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x31, /* 00002110 "B_PCI0S1" */ > - 0x39,0x5F,0x0A,0x03,0xA0,0x28,0x7B,0x5C, /* 00002118 "9_...({\" */ > - 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00002120 "/._SB_PC" */ > - 0x49,0x30,0x50,0x43,0x49,0x55,0x0C,0x00, /* 00002128 "I0PCIU.." */ > - 0x00,0x10,0x00,0x00,0x86,0x5C,0x2F,0x03, /* 00002130 ".....\/." */ > - 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00002138 "_SB_PCI0" */ > - 0x53,0x32,0x30,0x5F,0x01,0xA0,0x29,0x7B, /* 00002140 "S20_..){" */ > - 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00002148 "\/._SB_P" */ > - 0x43,0x49,0x30,0x50,0x43,0x49,0x44,0x0C, /* 00002150 "CI0PCID." */ > - 0x00,0x00,0x10,0x00,0x00,0x86,0x5C,0x2F, /* 00002158 "......\/" */ > - 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00002160 "._SB_PCI" */ > - 0x30,0x53,0x32,0x30,0x5F,0x0A,0x03,0xA0, /* 00002168 "0S20_..." */ > - 0x28,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00002170 "({\/._SB" */ > - 0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49, /* 00002178 "_PCI0PCI" */ > - 0x55,0x0C,0x00,0x00,0x20,0x00,0x00,0x86, /* 00002180 "U... ..." */ > - 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00002188 "\/._SB_P" */ > - 0x43,0x49,0x30,0x53,0x32,0x31,0x5F,0x01, /* 00002190 "CI0S21_." */ > - 0xA0,0x29,0x7B,0x5C,0x2F,0x03,0x5F,0x53, /* 00002198 ".){\/._S" */ > - 0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43, /* 000021A0 "B_PCI0PC" */ > - 0x49,0x44,0x0C,0x00,0x00,0x20,0x00,0x00, /* 000021A8 "ID... .." */ > - 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 000021B0 ".\/._SB_" */ > - 0x50,0x43,0x49,0x30,0x53,0x32,0x31,0x5F, /* 000021B8 "PCI0S21_" */ > - 0x0A,0x03,0xA0,0x28,0x7B,0x5C,0x2F,0x03, /* 000021C0 "...({\/." */ > - 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 000021C8 "_SB_PCI0" */ > - 0x50,0x43,0x49,0x55,0x0C,0x00,0x00,0x40, /* 000021D0 "PCIU...@" */ > - 0x00,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 000021D8 "...\/._S" */ > - 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x32, /* 000021E0 "B_PCI0S2" */ > - 0x32,0x5F,0x01,0xA0,0x29,0x7B,0x5C,0x2F, /* 000021E8 "2_..){\/" */ > - 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 000021F0 "._SB_PCI" */ > - 0x30,0x50,0x43,0x49,0x44,0x0C,0x00,0x00, /* 000021F8 "0PCID..." */ > - 0x40,0x00,0x00,0x86,0x5C,0x2F,0x03,0x5F, /* 00002200 "@...\/._" */ > - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53, /* 00002208 "SB_PCI0S" */ > - 0x32,0x32,0x5F,0x0A,0x03,0xA0,0x28,0x7B, /* 00002210 "22_...({" */ > - 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00002218 "\/._SB_P" */ > - 0x43,0x49,0x30,0x50,0x43,0x49,0x55,0x0C, /* 00002220 "CI0PCIU." */ > - 0x00,0x00,0x80,0x00,0x00,0x86,0x5C,0x2F, /* 00002228 "......\/" */ > - 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00002230 "._SB_PCI" */ > - 0x30,0x53,0x32,0x33,0x5F,0x01,0xA0,0x29, /* 00002238 "0S23_..)" */ > - 0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002240 "{\/._SB_" */ > - 0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x44, /* 00002248 "PCI0PCID" */ > - 0x0C,0x00,0x00,0x80,0x00,0x00,0x86,0x5C, /* 00002250 ".......\" */ > - 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00002258 "/._SB_PC" */ > - 0x49,0x30,0x53,0x32,0x33,0x5F,0x0A,0x03, /* 00002260 "I0S23_.." */ > - 0xA0,0x28,0x7B,0x5C,0x2F,0x03,0x5F,0x53, /* 00002268 ".({\/._S" */ > - 0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43, /* 00002270 "B_PCI0PC" */ > - 0x49,0x55,0x0C,0x00,0x00,0x00,0x01,0x00, /* 00002278 "IU......" */ > - 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002280 ".\/._SB_" */ > - 0x50,0x43,0x49,0x30,0x53,0x32,0x34,0x5F, /* 00002288 "PCI0S24_" */ > - 0x01,0xA0,0x29,0x7B,0x5C,0x2F,0x03,0x5F, /* 00002290 "..){\/._" */ > - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50, /* 00002298 "SB_PCI0P" */ > - 0x43,0x49,0x44,0x0C,0x00,0x00,0x00,0x01, /* 000022A0 "CID....." */ > - 0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 000022A8 "..\/._SB" */ > - 0x5F,0x50,0x43,0x49,0x30,0x53,0x32,0x34, /* 000022B0 "_PCI0S24" */ > - 0x5F,0x0A,0x03,0xA0,0x28,0x7B,0x5C,0x2F, /* 000022B8 "_...({\/" */ > - 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 000022C0 "._SB_PCI" */ > - 0x30,0x50,0x43,0x49,0x55,0x0C,0x00,0x00, /* 000022C8 "0PCIU..." */ > - 0x00,0x02,0x00,0x86,0x5C,0x2F,0x03,0x5F, /* 000022D0 "....\/._" */ > - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53, /* 000022D8 "SB_PCI0S" */ > - 0x32,0x35,0x5F,0x01,0xA0,0x29,0x7B,0x5C, /* 000022E0 "25_..){\" */ > - 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 000022E8 "/._SB_PC" */ > - 0x49,0x30,0x50,0x43,0x49,0x44,0x0C,0x00, /* 000022F0 "I0PCID.." */ > - 0x00,0x00,0x02,0x00,0x86,0x5C,0x2F,0x03, /* 000022F8 ".....\/." */ > - 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00002300 "_SB_PCI0" */ > - 0x53,0x32,0x35,0x5F,0x0A,0x03,0xA0,0x28, /* 00002308 "S25_...(" */ > - 0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002310 "{\/._SB_" */ > - 0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x55, /* 00002318 "PCI0PCIU" */ > - 0x0C,0x00,0x00,0x00,0x04,0x00,0x86,0x5C, /* 00002320 ".......\" */ > - 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00002328 "/._SB_PC" */ > - 0x49,0x30,0x53,0x32,0x36,0x5F,0x01,0xA0, /* 00002330 "I0S26_.." */ > - 0x29,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00002338 "){\/._SB" */ > - 0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49, /* 00002340 "_PCI0PCI" */ > - 0x44,0x0C,0x00,0x00,0x00,0x04,0x00,0x86, /* 00002348 "D......." */ > - 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00002350 "\/._SB_P" */ > - 0x43,0x49,0x30,0x53,0x32,0x36,0x5F,0x0A, /* 00002358 "CI0S26_." */ > - 0x03,0xA0,0x28,0x7B,0x5C,0x2F,0x03,0x5F, /* 00002360 "..({\/._" */ > - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50, /* 00002368 "SB_PCI0P" */ > - 0x43,0x49,0x55,0x0C,0x00,0x00,0x00,0x08, /* 00002370 "CIU....." */ > - 0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00002378 "..\/._SB" */ > - 0x5F,0x50,0x43,0x49,0x30,0x53,0x32,0x37, /* 00002380 "_PCI0S27" */ > - 0x5F,0x01,0xA0,0x29,0x7B,0x5C,0x2F,0x03, /* 00002388 "_..){\/." */ > - 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00002390 "_SB_PCI0" */ > - 0x50,0x43,0x49,0x44,0x0C,0x00,0x00,0x00, /* 00002398 "PCID...." */ > - 0x08,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 000023A0 "...\/._S" */ > - 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x32, /* 000023A8 "B_PCI0S2" */ > - 0x37,0x5F,0x0A,0x03,0xA0,0x28,0x7B,0x5C, /* 000023B0 "7_...({\" */ > - 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 000023B8 "/._SB_PC" */ > - 0x49,0x30,0x50,0x43,0x49,0x55,0x0C,0x00, /* 000023C0 "I0PCIU.." */ > - 0x00,0x00,0x10,0x00,0x86,0x5C,0x2F,0x03, /* 000023C8 ".....\/." */ > - 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 000023D0 "_SB_PCI0" */ > - 0x53,0x32,0x38,0x5F,0x01,0xA0,0x29,0x7B, /* 000023D8 "S28_..){" */ > - 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 000023E0 "\/._SB_P" */ > - 0x43,0x49,0x30,0x50,0x43,0x49,0x44,0x0C, /* 000023E8 "CI0PCID." */ > - 0x00,0x00,0x00,0x10,0x00,0x86,0x5C,0x2F, /* 000023F0 "......\/" */ > - 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 000023F8 "._SB_PCI" */ > - 0x30,0x53,0x32,0x38,0x5F,0x0A,0x03,0xA0, /* 00002400 "0S28_..." */ > - 0x28,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00002408 "({\/._SB" */ > - 0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49, /* 00002410 "_PCI0PCI" */ > - 0x55,0x0C,0x00,0x00,0x00,0x20,0x00,0x86, /* 00002418 "U.... .." */ > - 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00002420 "\/._SB_P" */ > - 0x43,0x49,0x30,0x53,0x32,0x39,0x5F,0x01, /* 00002428 "CI0S29_." */ > - 0xA0,0x29,0x7B,0x5C,0x2F,0x03,0x5F,0x53, /* 00002430 ".){\/._S" */ > - 0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43, /* 00002438 "B_PCI0PC" */ > - 0x49,0x44,0x0C,0x00,0x00,0x00,0x20,0x00, /* 00002440 "ID.... ." */ > - 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002448 ".\/._SB_" */ > - 0x50,0x43,0x49,0x30,0x53,0x32,0x39,0x5F, /* 00002450 "PCI0S29_" */ > - 0x0A,0x03,0xA0,0x28,0x7B,0x5C,0x2F,0x03, /* 00002458 "...({\/." */ > - 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00002460 "_SB_PCI0" */ > - 0x50,0x43,0x49,0x55,0x0C,0x00,0x00,0x00, /* 00002468 "PCIU...." */ > - 0x40,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 00002470 "@..\/._S" */ > - 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x33, /* 00002478 "B_PCI0S3" */ > - 0x30,0x5F,0x01,0xA0,0x29,0x7B,0x5C,0x2F, /* 00002480 "0_..){\/" */ > - 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00002488 "._SB_PCI" */ > - 0x30,0x50,0x43,0x49,0x44,0x0C,0x00,0x00, /* 00002490 "0PCID..." */ > - 0x00,0x40,0x00,0x86,0x5C,0x2F,0x03,0x5F, /* 00002498 ".@..\/._" */ > - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53, /* 000024A0 "SB_PCI0S" */ > - 0x33,0x30,0x5F,0x0A,0x03,0xA0,0x28,0x7B, /* 000024A8 "30_...({" */ > - 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 000024B0 "\/._SB_P" */ > - 0x43,0x49,0x30,0x50,0x43,0x49,0x55,0x0C, /* 000024B8 "CI0PCIU." */ > - 0x00,0x00,0x00,0x80,0x00,0x86,0x5C,0x2F, /* 000024C0 "......\/" */ > - 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 000024C8 "._SB_PCI" */ > - 0x30,0x53,0x33,0x31,0x5F,0x01,0xA0,0x29, /* 000024D0 "0S31_..)" */ > - 0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 000024D8 "{\/._SB_" */ > - 0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x44, /* 000024E0 "PCI0PCID" */ > - 0x0C,0x00,0x00,0x00,0x80,0x00,0x86,0x5C, /* 000024E8 ".......\" */ > - 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 000024F0 "/._SB_PC" */ > - 0x49,0x30,0x53,0x33,0x31,0x5F,0x0A,0x03, /* 000024F8 "I0S31_.." */ > - 0xA4,0x01,0x14,0x11,0x5F,0x4C,0x30,0x32, /* 00002500 "...._L02" */ > - 0x00,0xA4,0x5C,0x2E,0x5F,0x53,0x42,0x5F, /* 00002508 "..\._SB_" */ > - 0x50,0x52,0x53,0x43,0x14,0x08,0x5F,0x4C, /* 00002510 "PRSC.._L" */ > - 0x30,0x33,0x00,0xA4,0x01,0x14,0x08,0x5F, /* 00002518 "03....._" */ > - 0x4C,0x30,0x34,0x00,0xA4,0x01,0x14,0x08, /* 00002520 "L04....." */ > - 0x5F,0x4C,0x30,0x35,0x00,0xA4,0x01,0x14, /* 00002528 "_L05...." */ > - 0x08,0x5F,0x4C,0x30,0x36,0x00,0xA4,0x01, /* 00002530 "._L06..." */ > - 0x14,0x08,0x5F,0x4C,0x30,0x37,0x00,0xA4, /* 00002538 ".._L07.." */ > - 0x01,0x14,0x08,0x5F,0x4C,0x30,0x38,0x00, /* 00002540 "..._L08." */ > - 0xA4,0x01,0x14,0x08,0x5F,0x4C,0x30,0x39, /* 00002548 "...._L09" */ > - 0x00,0xA4,0x01,0x14,0x08,0x5F,0x4C,0x30, /* 00002550 "....._L0" */ > - 0x41,0x00,0xA4,0x01,0x14,0x08,0x5F,0x4C, /* 00002558 "A....._L" */ > - 0x30,0x42,0x00,0xA4,0x01,0x14,0x08,0x5F, /* 00002560 "0B....._" */ > - 0x4C,0x30,0x43,0x00,0xA4,0x01,0x14,0x08, /* 00002568 "L0C....." */ > - 0x5F,0x4C,0x30,0x44,0x00,0xA4,0x01,0x14, /* 00002570 "_L0D...." */ > - 0x08,0x5F,0x4C,0x30,0x45,0x00,0xA4,0x01, /* 00002578 "._L0E..." */ > - 0x14,0x08,0x5F,0x4C,0x30,0x46,0x00,0xA4, /* 00002580 ".._L0F.." */ > - 0x01 /* 00002588 "." */ > + 0x30,0x50,0x43,0x49,0x55,0x0B,0x00,0x80, /* 00002030 "0PCIU..." */ > + 0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00002038 "..\/._SB" */ > + 0x5F,0x50,0x43,0x49,0x30,0x53,0x31,0x35, /* 00002040 "_PCI0S15" */ > + 0x5F,0x01,0xA0,0x27,0x7B,0x5C,0x2F,0x03, /* 00002048 "_..'{\/." */ > + 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00002050 "_SB_PCI0" */ > + 0x50,0x43,0x49,0x44,0x0B,0x00,0x80,0x00, /* 00002058 "PCID...." */ > + 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002060 ".\/._SB_" */ > + 0x50,0x43,0x49,0x30,0x53,0x31,0x35,0x5F, /* 00002068 "PCI0S15_" */ > + 0x0A,0x03,0xA0,0x28,0x7B,0x5C,0x2F,0x03, /* 00002070 "...({\/." */ > + 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00002078 "_SB_PCI0" */ > + 0x50,0x43,0x49,0x55,0x0C,0x00,0x00,0x01, /* 00002080 "PCIU...." */ > + 0x00,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 00002088 "...\/._S" */ > + 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x31, /* 00002090 "B_PCI0S1" */ > + 0x36,0x5F,0x01,0xA0,0x29,0x7B,0x5C,0x2F, /* 00002098 "6_..){\/" */ > + 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 000020A0 "._SB_PCI" */ > + 0x30,0x50,0x43,0x49,0x44,0x0C,0x00,0x00, /* 000020A8 "0PCID..." */ > + 0x01,0x00,0x00,0x86,0x5C,0x2F,0x03,0x5F, /* 000020B0 "....\/._" */ > + 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53, /* 000020B8 "SB_PCI0S" */ > + 0x31,0x36,0x5F,0x0A,0x03,0xA0,0x28,0x7B, /* 000020C0 "16_...({" */ > + 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 000020C8 "\/._SB_P" */ > + 0x43,0x49,0x30,0x50,0x43,0x49,0x55,0x0C, /* 000020D0 "CI0PCIU." */ > + 0x00,0x00,0x02,0x00,0x00,0x86,0x5C,0x2F, /* 000020D8 "......\/" */ > + 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 000020E0 "._SB_PCI" */ > + 0x30,0x53,0x31,0x37,0x5F,0x01,0xA0,0x29, /* 000020E8 "0S17_..)" */ > + 0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 000020F0 "{\/._SB_" */ > + 0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x44, /* 000020F8 "PCI0PCID" */ > + 0x0C,0x00,0x00,0x02,0x00,0x00,0x86,0x5C, /* 00002100 ".......\" */ > + 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00002108 "/._SB_PC" */ > + 0x49,0x30,0x53,0x31,0x37,0x5F,0x0A,0x03, /* 00002110 "I0S17_.." */ > + 0xA0,0x28,0x7B,0x5C,0x2F,0x03,0x5F,0x53, /* 00002118 ".({\/._S" */ > + 0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43, /* 00002120 "B_PCI0PC" */ > + 0x49,0x55,0x0C,0x00,0x00,0x04,0x00,0x00, /* 00002128 "IU......" */ > + 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002130 ".\/._SB_" */ > + 0x50,0x43,0x49,0x30,0x53,0x31,0x38,0x5F, /* 00002138 "PCI0S18_" */ > + 0x01,0xA0,0x29,0x7B,0x5C,0x2F,0x03,0x5F, /* 00002140 "..){\/._" */ > + 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50, /* 00002148 "SB_PCI0P" */ > + 0x43,0x49,0x44,0x0C,0x00,0x00,0x04,0x00, /* 00002150 "CID....." */ > + 0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00002158 "..\/._SB" */ > + 0x5F,0x50,0x43,0x49,0x30,0x53,0x31,0x38, /* 00002160 "_PCI0S18" */ > + 0x5F,0x0A,0x03,0xA0,0x28,0x7B,0x5C,0x2F, /* 00002168 "_...({\/" */ > + 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00002170 "._SB_PCI" */ > + 0x30,0x50,0x43,0x49,0x55,0x0C,0x00,0x00, /* 00002178 "0PCIU..." */ > + 0x08,0x00,0x00,0x86,0x5C,0x2F,0x03,0x5F, /* 00002180 "....\/._" */ > + 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53, /* 00002188 "SB_PCI0S" */ > + 0x31,0x39,0x5F,0x01,0xA0,0x29,0x7B,0x5C, /* 00002190 "19_..){\" */ > + 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00002198 "/._SB_PC" */ > + 0x49,0x30,0x50,0x43,0x49,0x44,0x0C,0x00, /* 000021A0 "I0PCID.." */ > + 0x00,0x08,0x00,0x00,0x86,0x5C,0x2F,0x03, /* 000021A8 ".....\/." */ > + 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 000021B0 "_SB_PCI0" */ > + 0x53,0x31,0x39,0x5F,0x0A,0x03,0xA0,0x28, /* 000021B8 "S19_...(" */ > + 0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 000021C0 "{\/._SB_" */ > + 0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x55, /* 000021C8 "PCI0PCIU" */ > + 0x0C,0x00,0x00,0x10,0x00,0x00,0x86,0x5C, /* 000021D0 ".......\" */ > + 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 000021D8 "/._SB_PC" */ > + 0x49,0x30,0x53,0x32,0x30,0x5F,0x01,0xA0, /* 000021E0 "I0S20_.." */ > + 0x29,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 000021E8 "){\/._SB" */ > + 0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49, /* 000021F0 "_PCI0PCI" */ > + 0x44,0x0C,0x00,0x00,0x10,0x00,0x00,0x86, /* 000021F8 "D......." */ > + 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00002200 "\/._SB_P" */ > + 0x43,0x49,0x30,0x53,0x32,0x30,0x5F,0x0A, /* 00002208 "CI0S20_." */ > + 0x03,0xA0,0x28,0x7B,0x5C,0x2F,0x03,0x5F, /* 00002210 "..({\/._" */ > + 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50, /* 00002218 "SB_PCI0P" */ > + 0x43,0x49,0x55,0x0C,0x00,0x00,0x20,0x00, /* 00002220 "CIU... ." */ > + 0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00002228 "..\/._SB" */ > + 0x5F,0x50,0x43,0x49,0x30,0x53,0x32,0x31, /* 00002230 "_PCI0S21" */ > + 0x5F,0x01,0xA0,0x29,0x7B,0x5C,0x2F,0x03, /* 00002238 "_..){\/." */ > + 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00002240 "_SB_PCI0" */ > + 0x50,0x43,0x49,0x44,0x0C,0x00,0x00,0x20, /* 00002248 "PCID... " */ > + 0x00,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 00002250 "...\/._S" */ > + 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x32, /* 00002258 "B_PCI0S2" */ > + 0x31,0x5F,0x0A,0x03,0xA0,0x28,0x7B,0x5C, /* 00002260 "1_...({\" */ > + 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00002268 "/._SB_PC" */ > + 0x49,0x30,0x50,0x43,0x49,0x55,0x0C,0x00, /* 00002270 "I0PCIU.." */ > + 0x00,0x40,0x00,0x00,0x86,0x5C,0x2F,0x03, /* 00002278 ".@...\/." */ > + 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00002280 "_SB_PCI0" */ > + 0x53,0x32,0x32,0x5F,0x01,0xA0,0x29,0x7B, /* 00002288 "S22_..){" */ > + 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00002290 "\/._SB_P" */ > + 0x43,0x49,0x30,0x50,0x43,0x49,0x44,0x0C, /* 00002298 "CI0PCID." */ > + 0x00,0x00,0x40,0x00,0x00,0x86,0x5C,0x2F, /* 000022A0 "..@...\/" */ > + 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 000022A8 "._SB_PCI" */ > + 0x30,0x53,0x32,0x32,0x5F,0x0A,0x03,0xA0, /* 000022B0 "0S22_..." */ > + 0x28,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 000022B8 "({\/._SB" */ > + 0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49, /* 000022C0 "_PCI0PCI" */ > + 0x55,0x0C,0x00,0x00,0x80,0x00,0x00,0x86, /* 000022C8 "U......." */ > + 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 000022D0 "\/._SB_P" */ > + 0x43,0x49,0x30,0x53,0x32,0x33,0x5F,0x01, /* 000022D8 "CI0S23_." */ > + 0xA0,0x29,0x7B,0x5C,0x2F,0x03,0x5F,0x53, /* 000022E0 ".){\/._S" */ > + 0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43, /* 000022E8 "B_PCI0PC" */ > + 0x49,0x44,0x0C,0x00,0x00,0x80,0x00,0x00, /* 000022F0 "ID......" */ > + 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 000022F8 ".\/._SB_" */ > + 0x50,0x43,0x49,0x30,0x53,0x32,0x33,0x5F, /* 00002300 "PCI0S23_" */ > + 0x0A,0x03,0xA0,0x28,0x7B,0x5C,0x2F,0x03, /* 00002308 "...({\/." */ > + 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00002310 "_SB_PCI0" */ > + 0x50,0x43,0x49,0x55,0x0C,0x00,0x00,0x00, /* 00002318 "PCIU...." */ > + 0x01,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 00002320 "...\/._S" */ > + 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x32, /* 00002328 "B_PCI0S2" */ > + 0x34,0x5F,0x01,0xA0,0x29,0x7B,0x5C,0x2F, /* 00002330 "4_..){\/" */ > + 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00002338 "._SB_PCI" */ > + 0x30,0x50,0x43,0x49,0x44,0x0C,0x00,0x00, /* 00002340 "0PCID..." */ > + 0x00,0x01,0x00,0x86,0x5C,0x2F,0x03,0x5F, /* 00002348 "....\/._" */ > + 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53, /* 00002350 "SB_PCI0S" */ > + 0x32,0x34,0x5F,0x0A,0x03,0xA0,0x28,0x7B, /* 00002358 "24_...({" */ > + 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00002360 "\/._SB_P" */ > + 0x43,0x49,0x30,0x50,0x43,0x49,0x55,0x0C, /* 00002368 "CI0PCIU." */ > + 0x00,0x00,0x00,0x02,0x00,0x86,0x5C,0x2F, /* 00002370 "......\/" */ > + 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00002378 "._SB_PCI" */ > + 0x30,0x53,0x32,0x35,0x5F,0x01,0xA0,0x29, /* 00002380 "0S25_..)" */ > + 0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002388 "{\/._SB_" */ > + 0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x44, /* 00002390 "PCI0PCID" */ > + 0x0C,0x00,0x00,0x00,0x02,0x00,0x86,0x5C, /* 00002398 ".......\" */ > + 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 000023A0 "/._SB_PC" */ > + 0x49,0x30,0x53,0x32,0x35,0x5F,0x0A,0x03, /* 000023A8 "I0S25_.." */ > + 0xA0,0x28,0x7B,0x5C,0x2F,0x03,0x5F,0x53, /* 000023B0 ".({\/._S" */ > + 0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43, /* 000023B8 "B_PCI0PC" */ > + 0x49,0x55,0x0C,0x00,0x00,0x00,0x04,0x00, /* 000023C0 "IU......" */ > + 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 000023C8 ".\/._SB_" */ > + 0x50,0x43,0x49,0x30,0x53,0x32,0x36,0x5F, /* 000023D0 "PCI0S26_" */ > + 0x01,0xA0,0x29,0x7B,0x5C,0x2F,0x03,0x5F, /* 000023D8 "..){\/._" */ > + 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50, /* 000023E0 "SB_PCI0P" */ > + 0x43,0x49,0x44,0x0C,0x00,0x00,0x00,0x04, /* 000023E8 "CID....." */ > + 0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 000023F0 "..\/._SB" */ > + 0x5F,0x50,0x43,0x49,0x30,0x53,0x32,0x36, /* 000023F8 "_PCI0S26" */ > + 0x5F,0x0A,0x03,0xA0,0x28,0x7B,0x5C,0x2F, /* 00002400 "_...({\/" */ > + 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00002408 "._SB_PCI" */ > + 0x30,0x50,0x43,0x49,0x55,0x0C,0x00,0x00, /* 00002410 "0PCIU..." */ > + 0x00,0x08,0x00,0x86,0x5C,0x2F,0x03,0x5F, /* 00002418 "....\/._" */ > + 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53, /* 00002420 "SB_PCI0S" */ > + 0x32,0x37,0x5F,0x01,0xA0,0x29,0x7B,0x5C, /* 00002428 "27_..){\" */ > + 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00002430 "/._SB_PC" */ > + 0x49,0x30,0x50,0x43,0x49,0x44,0x0C,0x00, /* 00002438 "I0PCID.." */ > + 0x00,0x00,0x08,0x00,0x86,0x5C,0x2F,0x03, /* 00002440 ".....\/." */ > + 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00002448 "_SB_PCI0" */ > + 0x53,0x32,0x37,0x5F,0x0A,0x03,0xA0,0x28, /* 00002450 "S27_...(" */ > + 0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002458 "{\/._SB_" */ > + 0x50,0x43,0x49,0x30,0x50,0x43,0x49,0x55, /* 00002460 "PCI0PCIU" */ > + 0x0C,0x00,0x00,0x00,0x10,0x00,0x86,0x5C, /* 00002468 ".......\" */ > + 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00002470 "/._SB_PC" */ > + 0x49,0x30,0x53,0x32,0x38,0x5F,0x01,0xA0, /* 00002478 "I0S28_.." */ > + 0x29,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00002480 "){\/._SB" */ > + 0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49, /* 00002488 "_PCI0PCI" */ > + 0x44,0x0C,0x00,0x00,0x00,0x10,0x00,0x86, /* 00002490 "D......." */ > + 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00002498 "\/._SB_P" */ > + 0x43,0x49,0x30,0x53,0x32,0x38,0x5F,0x0A, /* 000024A0 "CI0S28_." */ > + 0x03,0xA0,0x28,0x7B,0x5C,0x2F,0x03,0x5F, /* 000024A8 "..({\/._" */ > + 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x50, /* 000024B0 "SB_PCI0P" */ > + 0x43,0x49,0x55,0x0C,0x00,0x00,0x00,0x20, /* 000024B8 "CIU.... " */ > + 0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 000024C0 "..\/._SB" */ > + 0x5F,0x50,0x43,0x49,0x30,0x53,0x32,0x39, /* 000024C8 "_PCI0S29" */ > + 0x5F,0x01,0xA0,0x29,0x7B,0x5C,0x2F,0x03, /* 000024D0 "_..){\/." */ > + 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 000024D8 "_SB_PCI0" */ > + 0x50,0x43,0x49,0x44,0x0C,0x00,0x00,0x00, /* 000024E0 "PCID...." */ > + 0x20,0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 000024E8 " ..\/._S" */ > + 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x32, /* 000024F0 "B_PCI0S2" */ > + 0x39,0x5F,0x0A,0x03,0xA0,0x28,0x7B,0x5C, /* 000024F8 "9_...({\" */ > + 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 00002500 "/._SB_PC" */ > + 0x49,0x30,0x50,0x43,0x49,0x55,0x0C,0x00, /* 00002508 "I0PCIU.." */ > + 0x00,0x00,0x40,0x00,0x86,0x5C,0x2F,0x03, /* 00002510 "..@..\/." */ > + 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00002518 "_SB_PCI0" */ > + 0x53,0x33,0x30,0x5F,0x01,0xA0,0x29,0x7B, /* 00002520 "S30_..){" */ > + 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00002528 "\/._SB_P" */ > + 0x43,0x49,0x30,0x50,0x43,0x49,0x44,0x0C, /* 00002530 "CI0PCID." */ > + 0x00,0x00,0x00,0x40,0x00,0x86,0x5C,0x2F, /* 00002538 "...@..\/" */ > + 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00002540 "._SB_PCI" */ > + 0x30,0x53,0x33,0x30,0x5F,0x0A,0x03,0xA0, /* 00002548 "0S30_..." */ > + 0x28,0x7B,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00002550 "({\/._SB" */ > + 0x5F,0x50,0x43,0x49,0x30,0x50,0x43,0x49, /* 00002558 "_PCI0PCI" */ > + 0x55,0x0C,0x00,0x00,0x00,0x80,0x00,0x86, /* 00002560 "U......." */ > + 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 00002568 "\/._SB_P" */ > + 0x43,0x49,0x30,0x53,0x33,0x31,0x5F,0x01, /* 00002570 "CI0S31_." */ > + 0xA0,0x29,0x7B,0x5C,0x2F,0x03,0x5F,0x53, /* 00002578 ".){\/._S" */ > + 0x42,0x5F,0x50,0x43,0x49,0x30,0x50,0x43, /* 00002580 "B_PCI0PC" */ > + 0x49,0x44,0x0C,0x00,0x00,0x00,0x80,0x00, /* 00002588 "ID......" */ > + 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002590 ".\/._SB_" */ > + 0x50,0x43,0x49,0x30,0x53,0x33,0x31,0x5F, /* 00002598 "PCI0S31_" */ > + 0x0A,0x03,0xA4,0x01,0x14,0x11,0x5F,0x4C, /* 000025A0 "......_L" */ > + 0x30,0x32,0x00,0xA4,0x5C,0x2E,0x5F,0x53, /* 000025A8 "02..\._S" */ > + 0x42,0x5F,0x50,0x52,0x53,0x43,0x14,0x11, /* 000025B0 "B_PRSC.." */ > + 0x5F,0x4C,0x30,0x33,0x00,0xA4,0x5C,0x2E, /* 000025B8 "_L03..\." */ > + 0x5F,0x53,0x42,0x5F,0x4D,0x45,0x53,0x43, /* 000025C0 "_SB_MESC" */ > + 0x14,0x08,0x5F,0x4C,0x30,0x34,0x00,0xA4, /* 000025C8 ".._L04.." */ > + 0x01,0x14,0x08,0x5F,0x4C,0x30,0x35,0x00, /* 000025D0 "..._L05." */ > + 0xA4,0x01,0x14,0x08,0x5F,0x4C,0x30,0x36, /* 000025D8 "...._L06" */ > + 0x00,0xA4,0x01,0x14,0x08,0x5F,0x4C,0x30, /* 000025E0 "....._L0" */ > + 0x37,0x00,0xA4,0x01,0x14,0x08,0x5F,0x4C, /* 000025E8 "7....._L" */ > + 0x30,0x38,0x00,0xA4,0x01,0x14,0x08,0x5F, /* 000025F0 "08....._" */ > + 0x4C,0x30,0x39,0x00,0xA4,0x01,0x14,0x08, /* 000025F8 "L09....." */ > + 0x5F,0x4C,0x30,0x41,0x00,0xA4,0x01,0x14, /* 00002600 "_L0A...." */ > + 0x08,0x5F,0x4C,0x30,0x42,0x00,0xA4,0x01, /* 00002608 "._L0B..." */ > + 0x14,0x08,0x5F,0x4C,0x30,0x43,0x00,0xA4, /* 00002610 ".._L0C.." */ > + 0x01,0x14,0x08,0x5F,0x4C,0x30,0x44,0x00, /* 00002618 "..._L0D." */ > + 0xA4,0x01,0x14,0x08,0x5F,0x4C,0x30,0x45, /* 00002620 "...._L0E" */ > + 0x00,0xA4,0x01,0x14,0x08,0x5F,0x4C,0x30, /* 00002628 "....._L0" */ > + 0x46,0x00,0xA4,0x01 /* 00002630 "F..." */ > }; > diff --git a/src/acpi.c b/src/acpi.c > index ea7b171..7153e3e 100644 > --- a/src/acpi.c > +++ b/src/acpi.c > @@ -378,10 +378,14 @@ static unsigned char ssdt_proc[] = { > 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) > @@ -460,6 +464,126 @@ build_ssdt(void) > return ssdt; > } > > +static unsigned char ssdt_mem[] = { > + > + > + 0x5b,0x82,0x40,0x07,0x4d,0x50,0x41,0x41, > + 0x08,0x49,0x44,0x5f,0x5f,0x0a,0xaa,0x08, > + 0x5f,0x48,0x49,0x44,0x0c,0x41,0xd0,0x0c, > + 0x80,0x08,0x5f,0x43,0x52,0x53,0x11,0x33, > + 0x0a,0x30,0x8a,0x2b,0x00,0x00,0x0d,0x03, > + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, > + 0xef,0xbe,0xad,0xde,0x00,0x00,0x00,0x00, > + 0xee,0xbe,0xad,0xe6,0x00,0x00,0x00,0x00, > + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, > + 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00, > + 0x79,0x00,0x14,0x0f,0x5f,0x53,0x54,0x41, > + 0x00,0xa4,0x43,0x4d,0x53,0x54,0x49,0x44, > + 0x5f,0x5f,0x14,0x0f,0x5f,0x45,0x4a,0x30, > + 0x01,0x4d,0x50,0x45,0x4a,0x49,0x44,0x5f, > + 0x5f,0x68 > + > +}; > + > +#define SD_OFFSET_MEMHEX 6 > +#define SD_OFFSET_MEMID1 14 > +#define SD_OFFSET_MEMSTART 48 > +#define SD_OFFSET_MEMEND 56 > + > + > +static void* > +build_memssdt(void) > +{ > + u64 memstart; > + u64 start_ramsize, ramsize, maxramsize; > + int memdevs, enabled_memdevs; > + > + ramsize = qemu_cfg_get_ramsize(); > + maxramsize = qemu_cfg_get_maxramsize(); > + memdevs = maxramsize / LINUX_MIN_BLOCK_SIZE; > + enabled_memdevs = ramsize / LINUX_MIN_BLOCK_SIZE; > + start_ramsize = (u64)RamSize; > + > + // length = ScopeOp + memdevs + MTFY method + MEON package > + int length = ((1+3+4) > + + (memdevs * sizeof(ssdt_mem)) > + + (1+2+5+(12*memdevs)) > + + (6+2+1+(1*memdevs))); > + 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); > + > + // build Scope(_SB_) header > + *(ssdt_ptr++) = 0x10; // ScopeOp > + ssdt_ptr = encodeLen(ssdt_ptr, length-1, 3); > + *(ssdt_ptr++) = '_'; > + *(ssdt_ptr++) = 'S'; > + *(ssdt_ptr++) = 'B'; > + *(ssdt_ptr++) = '_'; > + > + // build Memory Device object for each processor > + int i; > + memstart = 0; > + for (i=0; i<memdevs; i++) { > + memcpy(ssdt_ptr, ssdt_mem, sizeof(ssdt_mem)); > + ssdt_ptr[SD_OFFSET_MEMHEX] = getHex(i >> 4); > + ssdt_ptr[SD_OFFSET_MEMHEX+1] = getHex(i); > + ssdt_ptr[SD_OFFSET_MEMID1] = i; > + /* initial memory (when >4GB) or hotpluggable memory is above 4GB, due to hole at 0x0e0000000-0x100000000 */ > + if ( (memstart == MEM_HOLE) || (memstart == start_ramsize)) { > + memstart = MEM_HOTPLUG_OFFSET; > + } > + > + *(u64*)(ssdt_ptr + SD_OFFSET_MEMSTART) = memstart; > + *(u64*)(ssdt_ptr + SD_OFFSET_MEMEND) = memstart + LINUX_MIN_BLOCK_SIZE - 1; > + ssdt_ptr += sizeof(ssdt_mem); > + memstart += LINUX_MIN_BLOCK_SIZE; > + > + } > + > + // build "Method(MTFY, 2) {If (LEqual(Arg0, 0x00)) {Notify(CM00, Arg1)} ...}" > + *(ssdt_ptr++) = 0x14; // MethodOp > + ssdt_ptr = encodeLen(ssdt_ptr, 2+5+(12*memdevs), 2); > + *(ssdt_ptr++) = 'M'; > + *(ssdt_ptr++) = 'T'; > + *(ssdt_ptr++) = 'F'; > + *(ssdt_ptr++) = 'Y'; > + *(ssdt_ptr++) = 0x02; > + for (i=0; i<memdevs; 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++) = 0x86; // NotifyOp > + *(ssdt_ptr++) = 'M'; > + *(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++) = 'M'; > + *(ssdt_ptr++) = 'E'; > + *(ssdt_ptr++) = 'O'; > + *(ssdt_ptr++) = 'N'; > + *(ssdt_ptr++) = 0x12; // PackageOp > + ssdt_ptr = encodeLen(ssdt_ptr, 2+1+(1*memdevs), 2); > + *(ssdt_ptr++) = memdevs; > + for (i=0; i<memdevs; i++) > + *(ssdt_ptr++) = ( i < enabled_memdevs ) ? 0x01 : 0x00; > + > + build_header((void*)ssdt, SSDT_SIGNATURE, ssdt_ptr - ssdt, 1); > + > + return ssdt; > +} > + > #define HPET_SIGNATURE 0x54455048 //HPET > static void* > build_hpet(void) > @@ -635,6 +759,7 @@ acpi_bios_init(void) > // Add tables > ACPI_INIT_TABLE(build_fadt(pci)); > ACPI_INIT_TABLE(build_ssdt()); > + ACPI_INIT_TABLE(build_memssdt()); > ACPI_INIT_TABLE(build_madt()); > ACPI_INIT_TABLE(build_hpet()); > ACPI_INIT_TABLE(build_srat()); > diff --git a/src/biosvar.h b/src/biosvar.h > index 2b755e3..3356ebd 100644 > --- a/src/biosvar.h > +++ b/src/biosvar.h > @@ -329,4 +329,9 @@ struct bios_config_table_s { > > extern struct bios_config_table_s BIOS_CONFIG_TABLE __aligned(1); > > + > +#define LINUX_MIN_BLOCK_SIZE 0x8000000LU > +#define MEM_HOTPLUG_OFFSET 0x100000000LLU > +#define MEM_HOLE 0xe0000000LLU > + > #endif // __BIOSVAR_H > diff --git a/src/paravirt.c b/src/paravirt.c > index 9cf77de..1e1b83b 100644 > --- a/src/paravirt.c > +++ b/src/paravirt.c > @@ -305,6 +305,28 @@ u16 qemu_cfg_get_max_cpus(void) > return cnt; > } > > +u64 qemu_cfg_get_ramsize(void) > +{ > + u64 cnt; > + > + if (!qemu_cfg_present) > + return 0; > + > + qemu_cfg_read_entry(&cnt, QEMU_CFG_RAMSIZE, sizeof(cnt)); > + return cnt; > +} > + > +u64 qemu_cfg_get_maxramsize(void) > +{ > + u64 cnt; > + > + if (!qemu_cfg_present) > + return 0; > + > + qemu_cfg_read_entry(&cnt, QEMU_CFG_MAXRAMSIZE, sizeof(cnt)); > + return cnt; > +} > + > static QemuCfgFile LastFile; > > static u32 > diff --git a/src/paravirt.h b/src/paravirt.h > index 4a370a0..df43534 100644 > --- a/src/paravirt.h > +++ b/src/paravirt.h > @@ -29,6 +29,8 @@ static inline int kvm_para_available(void) > #define QEMU_CFG_SIGNATURE 0x00 > #define QEMU_CFG_ID 0x01 > #define QEMU_CFG_UUID 0x02 > +#define QEMU_CFG_RAMSIZE 0x03 > +#define QEMU_CFG_MAXRAMSIZE 0x1a > #define QEMU_CFG_NUMA 0x0d > #define QEMU_CFG_BOOT_MENU 0x0e > #define QEMU_CFG_MAX_CPUS 0x0f > @@ -55,6 +57,8 @@ int qemu_cfg_smbios_load_external(int type, char **p, unsigned *nr_structs, > int qemu_cfg_get_numa_nodes(void); > void qemu_cfg_get_numa_data(u64 *data, int n); > u16 qemu_cfg_get_max_cpus(void); > +u64 qemu_cfg_get_ramsize(void); > +u64 qemu_cfg_get_maxramsize(void); > > typedef struct QemuCfgFile { > u32 size; /* file size */ > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html