mail.coreboot.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
List overview
Download
SeaBIOS
September 2011
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
seabios@seabios.org
15 participants
31 discussions
Start a n
N
ew thread
Re: [SeaBIOS] [PATCH] memory hotplug
by Lai Jiangshan
06 Sep '11
06 Sep '11
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 "_@..L.ME" */ > + 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(a)vger.kernel.org > More majordomo info at
http://vger.kernel.org/majordomo-info.html
>
2
1
0
0
← Newer
1
2
3
4
Older →
Jump to page:
1
2
3
4
Results per page:
10
25
50
100
200