[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] merge with xen-unstable.hg
# HG changeset patch # User Isaku Yamahata <yamahata@xxxxxxxxxxxxx> # Date 1236650434 -32400 # Node ID dee5bc89873e33641c5ad4f5ae3990e8a5ddc246 # Parent 2a4eaa76d9749977fe52895c43eed4a57252e864 # Parent d035b66b5b4db5afd42b1ac0bb4ec6bce0c4ece3 merge with xen-unstable.hg --- docs/src/user.tex | 3 extras/mini-os/arch/x86/mm.c | 13 tools/blktap/drivers/block-qcow2.c | 27 tools/examples/xmexample.hvm | 9 tools/examples/xmexample.hvm-dm | 2 tools/examples/xmexample.pv-grub | 12 tools/examples/xmexample.vti | 2 tools/examples/xmexample1 | 12 tools/examples/xmexample2 | 12 tools/examples/xmexample3 | 12 tools/firmware/hvmloader/acpi/dsdt.asl | 192 ++++ tools/firmware/hvmloader/acpi/dsdt.c | 1249 ++++++++++++++++++------------- tools/libxc/xc_cpufeature.h | 1 tools/libxc/xc_cpuid_x86.c | 1 tools/pygrub/src/pygrub | 4 tools/python/xen/xend/XendConfig.py | 8 tools/python/xen/xend/XendDomainInfo.py | 85 +- tools/python/xen/xend/image.py | 20 tools/python/xen/xend/server/pciif.py | 2 tools/python/xen/xm/create.py | 30 tools/python/xen/xm/xenapi_create.py | 1 tools/xm-test/lib/XmTestLib/NetConfig.py | 8 xen/Makefile | 1 xen/arch/ia64/xen/xensetup.c | 6 xen/arch/x86/bzimage.c | 3 xen/arch/x86/hvm/vpt.c | 3 xen/arch/x86/mm/hap/hap.c | 5 xen/arch/x86/mm/p2m.c | 4 xen/arch/x86/mm/shadow/common.c | 6 xen/arch/x86/mm/shadow/multi.c | 2 xen/arch/x86/mm/shadow/private.h | 2 xen/arch/x86/setup.c | 46 - xen/arch/x86/tboot.c | 2 xen/arch/x86/traps.c | 1 xen/common/domctl.c | 2 xen/common/page_alloc.c | 341 ++++++++ xen/common/sched_credit.c | 144 --- xen/common/schedule.c | 15 xen/common/sysctl.c | 55 + xen/drivers/char/console.c | 21 xen/drivers/passthrough/vtd/x86/vtd.c | 5 xen/include/asm-ia64/mm.h | 23 xen/include/asm-x86/cpufeature.h | 1 xen/include/asm-x86/mm.h | 23 xen/include/public/sysctl.h | 49 + xen/include/public/trace.h | 3 xen/include/public/xen.h | 3 xen/include/xen/cpumask.h | 17 xen/include/xen/mm.h | 3 xen/include/xen/perfc_defn.h | 35 50 files changed, 1775 insertions(+), 751 deletions(-) diff -r 2a4eaa76d974 -r dee5bc89873e docs/src/user.tex --- a/docs/src/user.tex Fri Mar 06 12:22:22 2009 +0900 +++ b/docs/src/user.tex Tue Mar 10 11:00:34 2009 +0900 @@ -4194,6 +4194,9 @@ writing to the VGA console after domain \item [ dma\_bits=xxx ] Specify width of DMA addresses in bits. This is used in NUMA systems to prevent this special DMA memory from being exhausted in one node when remote nodes have available memory. +\item [ vcpu\_migration\_delay=$<$minimum\_time$>$] Set minimum time of + vcpu migration in microseconds (default 0). This parameter avoids agressive + vcpu migration. For example, the linux kernel uses 0.5ms by default. \end{description} In addition, the following options may be specified on the Xen command diff -r 2a4eaa76d974 -r dee5bc89873e extras/mini-os/arch/x86/mm.c --- a/extras/mini-os/arch/x86/mm.c Fri Mar 06 12:22:22 2009 +0900 +++ b/extras/mini-os/arch/x86/mm.c Tue Mar 10 11:00:34 2009 +0900 @@ -778,8 +778,7 @@ void arch_init_p2m(unsigned long max_pfn void arch_init_mm(unsigned long* start_pfn_p, unsigned long* max_pfn_p) { - - unsigned long start_pfn, max_pfn, virt_pfns; + unsigned long start_pfn, max_pfn; printk(" _text: %p(VA)\n", &_text); printk(" _etext: %p(VA)\n", &_etext); @@ -794,9 +793,13 @@ void arch_init_mm(unsigned long* start_p max_pfn = start_info.nr_pages; /* We need room for demand mapping and heap, clip available memory */ - virt_pfns = DEMAND_MAP_PAGES + HEAP_PAGES; - if ( max_pfn + virt_pfns + 1 < max_pfn ) - max_pfn = -(virt_pfns + 1); +#if defined(__i386__) + { + unsigned long virt_pfns = 1 + DEMAND_MAP_PAGES + 1 + HEAP_PAGES; + if (max_pfn + virt_pfns >= 0x100000) + max_pfn = 0x100000 - virt_pfns - 1; + } +#endif printk(" start_pfn: %lx\n", start_pfn); printk(" max_pfn: %lx\n", max_pfn); diff -r 2a4eaa76d974 -r dee5bc89873e tools/blktap/drivers/block-qcow2.c --- a/tools/blktap/drivers/block-qcow2.c Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/blktap/drivers/block-qcow2.c Tue Mar 10 11:00:34 2009 +0900 @@ -1984,6 +1984,7 @@ int qcow2_create(const char *filename, u const char *backing_file, int flags) { int fd, header_size, backing_filename_len, l1_size, i, shift, l2_bits; + int ret = 0; QCowHeader header; uint64_t tmp, offset; QCowCreateState s1, *s = &s1; @@ -2042,25 +2043,37 @@ int qcow2_create(const char *filename, u create_refcount_update(s, s->refcount_block_offset, s->cluster_size); /* write all the data */ - write(fd, &header, sizeof(header)); + ret = write(fd, &header, sizeof(header)); + if (ret < 0) + goto out; if (backing_file) { - write(fd, backing_file, backing_filename_len); + ret = write(fd, backing_file, backing_filename_len); + if (ret < 0) + goto out; } lseek(fd, s->l1_table_offset, SEEK_SET); tmp = 0; for(i = 0;i < l1_size; i++) { - write(fd, &tmp, sizeof(tmp)); + ret = write(fd, &tmp, sizeof(tmp)); + if (ret < 0) + goto out; } lseek(fd, s->refcount_table_offset, SEEK_SET); - write(fd, s->refcount_table, s->cluster_size); + ret = write(fd, s->refcount_table, s->cluster_size); + if (ret < 0) + goto out; lseek(fd, s->refcount_block_offset, SEEK_SET); - write(fd, s->refcount_block, s->cluster_size); - + ret = write(fd, s->refcount_block, s->cluster_size); + if (ret < 0) + goto out; + ret = 0; + + out: qemu_free(s->refcount_table); qemu_free(s->refcount_block); close(fd); - return 0; + return ret; } diff -r 2a4eaa76d974 -r dee5bc89873e tools/examples/xmexample.hvm --- a/tools/examples/xmexample.hvm Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/examples/xmexample.hvm Tue Mar 10 11:00:34 2009 +0900 @@ -308,6 +308,8 @@ serial='pty' # available options are: # - msitranslate=0|1 # per-device overriden of pci_msitranslate, see below +# - power_mgmt=0|1 +# per-device overriden of pci_power_mgmt, see below # #pci=[ '07:00.0', '07:00.1' ] @@ -321,6 +323,13 @@ serial='pty' # turned off. # #pci_msitranslate=1 + +# PCI Power Management: +# +# If it's set, the guest OS will be able to program D0-D3hot states of the +# PCI device for the purpose of low power consumption. +# +#pci_power_mgmt=0 #----------------------------------------------------------------------------- # Configure PVSCSI devices: diff -r 2a4eaa76d974 -r dee5bc89873e tools/examples/xmexample.hvm-dm --- a/tools/examples/xmexample.hvm-dm Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/examples/xmexample.hvm-dm Tue Mar 10 11:00:34 2009 +0900 @@ -11,4 +11,4 @@ disk = [ 'file:/var/images/min-el3-i386. disk = [ 'file:/var/images/min-el3-i386.img,hda,w', ',hdc:cdrom,r' ] # Actual output via PVFB -vfb = [ 'type=sdl' ] +vfb = [ 'sdl=1' ] diff -r 2a4eaa76d974 -r dee5bc89873e tools/examples/xmexample.pv-grub --- a/tools/examples/xmexample.pv-grub Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/examples/xmexample.pv-grub Tue Mar 10 11:00:34 2009 +0900 @@ -77,29 +77,29 @@ disk = [ 'phy:hda1,hda1,w' ] # # To create one using the SDL backend and sensible defaults: # -# vfb = [ 'type=sdl' ] +# vfb = [ 'sdl=1' ] # # This uses environment variables XAUTHORITY and DISPLAY. You # can override that: # -# vfb = [ 'type=sdl,xauthority=/home/bozo/.Xauthority,display=:1' ] +# vfb = [ 'sdl=1,xauthority=/home/bozo/.Xauthority,display=:1' ] # # To create one using the VNC backend and sensible defaults: # -# vfb = [ 'type=vnc' ] +# vfb = [ 'vnc=1' ] # # The backend listens on 127.0.0.1 port 5900+N by default, where N is # the domain ID. You can override both address and N: # -# vfb = [ 'type=vnc,vnclisten=127.0.0.1,vncdisplay=1' ] +# vfb = [ 'vnc=1,vnclisten=127.0.0.1,vncdisplay=1' ] # # Or you can bind the first unused port above 5900: # -# vfb = [ 'type=vnc,vnclisten=0.0.0.0,vncunused=1' ] +# vfb = [ 'vnc=1,vnclisten=0.0.0.0,vncunused=1' ] # # You can override the password: # -# vfb = [ 'type=vnc,vncpasswd=MYPASSWD' ] +# vfb = [ 'vnc=1,vncpasswd=MYPASSWD' ] # # Empty password disables authentication. Defaults to the vncpasswd # configured in xend-config.sxp. diff -r 2a4eaa76d974 -r dee5bc89873e tools/examples/xmexample.vti --- a/tools/examples/xmexample.vti Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/examples/xmexample.vti Tue Mar 10 11:00:34 2009 +0900 @@ -9,8 +9,6 @@ import os, re import os, re arch_libdir = 'lib' arch = os.uname()[4] -if os.uname()[0] == 'Linux' and re.search('64', arch): - arch_libdir = 'lib64' #---------------------------------------------------------------------------- # Kernel image file. diff -r 2a4eaa76d974 -r dee5bc89873e tools/examples/xmexample1 --- a/tools/examples/xmexample1 Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/examples/xmexample1 Tue Mar 10 11:00:34 2009 +0900 @@ -73,29 +73,29 @@ disk = [ 'phy:hda1,hda1,w' ] # # To create one using the SDL backend and sensible defaults: # -# vfb = [ 'type=sdl' ] +# vfb = [ 'sdl=1' ] # # This uses environment variables XAUTHORITY and DISPLAY. You # can override that: # -# vfb = [ 'type=sdl,xauthority=/home/bozo/.Xauthority,display=:1' ] +# vfb = [ 'sdl=1,xauthority=/home/bozo/.Xauthority,display=:1' ] # # To create one using the VNC backend and sensible defaults: # -# vfb = [ 'type=vnc' ] +# vfb = [ 'vnc=1' ] # # The backend listens on 127.0.0.1 port 5900+N by default, where N is # the domain ID. You can override both address and N: # -# vfb = [ 'type=vnc,vnclisten=127.0.0.1,vncdisplay=1' ] +# vfb = [ 'vnc=1,vnclisten=127.0.0.1,vncdisplay=1' ] # # Or you can bind the first unused port above 5900: # -# vfb = [ 'type=vnc,vnclisten=0.0.0.0,vncunused=1' ] +# vfb = [ 'vnc=1,vnclisten=0.0.0.0,vncunused=1' ] # # You can override the password: # -# vfb = [ 'type=vnc,vncpasswd=MYPASSWD' ] +# vfb = [ 'vnc=1,vncpasswd=MYPASSWD' ] # # Empty password disables authentication. Defaults to the vncpasswd # configured in xend-config.sxp. diff -r 2a4eaa76d974 -r dee5bc89873e tools/examples/xmexample2 --- a/tools/examples/xmexample2 Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/examples/xmexample2 Tue Mar 10 11:00:34 2009 +0900 @@ -109,29 +109,29 @@ disk = [ 'phy:sda%d,sda1,w' % (7+vmid), # # To create one using the SDL backend and sensible defaults: # -# vfb = [ 'type=sdl' ] +# vfb = [ 'sdl=1' ] # # This uses environment variables XAUTHORITY and DISPLAY. You # can override that: # -# vfb = [ 'type=sdl,xauthority=/home/bozo/.Xauthority,display=:1' ] +# vfb = [ 'sdl=1,xauthority=/home/bozo/.Xauthority,display=:1' ] # # To create one using the VNC backend and sensible defaults: # -# vfb = [ 'type=vnc' ] +# vfb = [ 'vnc=1' ] # # The backend listens on 127.0.0.1 port 5900+N by default, where N is # the domain ID. You can override both address and N: # -# vfb = [ 'type=vnc,vnclisten=127.0.0.1,vncdisplay=%d' % vmid ] +# vfb = [ 'vnc=1,vnclisten=127.0.0.1,vncdisplay=%d' % vmid ] # # Or you can bind the first unused port above 5900: # -# vfb = [ 'type=vnc,vnclisten=0.0.0.0,vncunused=1' ] +# vfb = [ 'vnc=1,vnclisten=0.0.0.0,vncunused=1' ] # # You can override the password: # -# vfb = [ 'type=vnc,vncpasswd=MYPASSWD' ] +# vfb = [ 'vnc=1,vncpasswd=MYPASSWD' ] # # Empty password disables authentication. Defaults to the vncpasswd # configured in xend-config.sxp. diff -r 2a4eaa76d974 -r dee5bc89873e tools/examples/xmexample3 --- a/tools/examples/xmexample3 Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/examples/xmexample3 Tue Mar 10 11:00:34 2009 +0900 @@ -94,29 +94,29 @@ disk = [ 'phy:hda%d,hda1,w' % (vmid)] # # To create one using the SDL backend and sensible defaults: # -# vfb = [ 'type=sdl' ] +# vfb = [ 'sdl=1' ] # # This uses environment variables XAUTHORITY and DISPLAY. You # can override that: # -# vfb = [ 'type=sdl,xauthority=/home/bozo/.Xauthority,display=:1' ] +# vfb = [ 'sdl=1,xauthority=/home/bozo/.Xauthority,display=:1' ] # # To create one using the VNC backend and sensible defaults: # -# vfb = [ 'type=vnc' ] +# vfb = [ 'vnc=1' ] # # The backend listens on 127.0.0.1 port 5900+N by default, where N is # the domain ID. You can override both address and N: # -# vfb = [ 'type=vnc,vnclisten=127.0.0.1,vncdisplay=%d' % vmid ] +# vfb = [ 'vnc=1,vnclisten=127.0.0.1,vncdisplay=%d' % vmid ] # # Or you can bind the first unused port above 5900: # -# vfb = [ 'type=vnc,vnclisten=0.0.0.0,vncunused=1' ] +# vfb = [ 'vnc=1,vnclisten=0.0.0.0,vncunused=1' ] # # You can override the password: # -# vfb = [ 'type=vnc,vncpasswd=MYPASSWD' ] +# vfb = [ 'vnc=1,vncpasswd=MYPASSWD' ] # # Empty password disables authentication. Defaults to the vncpasswd # configured in xend-config.sxp. diff -r 2a4eaa76d974 -r dee5bc89873e tools/firmware/hvmloader/acpi/dsdt.asl --- a/tools/firmware/hvmloader/acpi/dsdt.asl Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/firmware/hvmloader/acpi/dsdt.asl Tue Mar 10 11:00:34 2009 +0900 @@ -470,6 +470,102 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, Package(){0x000fffff, 1, \_SB.PCI0.LNKA, 0}, Package(){0x000fffff, 2, \_SB.PCI0.LNKB, 0}, Package(){0x000fffff, 3, \_SB.PCI0.LNKC, 0}, + + /* Device 16, INTA - INTD */ + Package(){0x0010ffff, 0, \_SB.PCI0.LNKA, 0}, + Package(){0x0010ffff, 1, \_SB.PCI0.LNKB, 0}, + Package(){0x0010ffff, 2, \_SB.PCI0.LNKC, 0}, + Package(){0x0010ffff, 3, \_SB.PCI0.LNKD, 0}, + + /* Device 17, INTA - INTD */ + Package(){0x0011ffff, 0, \_SB.PCI0.LNKB, 0}, + Package(){0x0011ffff, 1, \_SB.PCI0.LNKC, 0}, + Package(){0x0011ffff, 2, \_SB.PCI0.LNKD, 0}, + Package(){0x0011ffff, 3, \_SB.PCI0.LNKA, 0}, + + /* Device 18, INTA - INTD */ + Package(){0x0012ffff, 0, \_SB.PCI0.LNKC, 0}, + Package(){0x0012ffff, 1, \_SB.PCI0.LNKD, 0}, + Package(){0x0012ffff, 2, \_SB.PCI0.LNKA, 0}, + Package(){0x0012ffff, 3, \_SB.PCI0.LNKB, 0}, + + /* Device 19, INTA - INTD */ + Package(){0x0013ffff, 0, \_SB.PCI0.LNKD, 0}, + Package(){0x0013ffff, 1, \_SB.PCI0.LNKA, 0}, + Package(){0x0013ffff, 2, \_SB.PCI0.LNKB, 0}, + Package(){0x0013ffff, 3, \_SB.PCI0.LNKC, 0}, + + /* Device 20, INTA - INTD */ + Package(){0x0014ffff, 0, \_SB.PCI0.LNKA, 0}, + Package(){0x0014ffff, 1, \_SB.PCI0.LNKB, 0}, + Package(){0x0014ffff, 2, \_SB.PCI0.LNKC, 0}, + Package(){0x0014ffff, 3, \_SB.PCI0.LNKD, 0}, + + /* Device 21, INTA - INTD */ + Package(){0x0015ffff, 0, \_SB.PCI0.LNKB, 0}, + Package(){0x0015ffff, 1, \_SB.PCI0.LNKC, 0}, + Package(){0x0015ffff, 2, \_SB.PCI0.LNKD, 0}, + Package(){0x0015ffff, 3, \_SB.PCI0.LNKA, 0}, + + /* Device 22, INTA - INTD */ + Package(){0x0016ffff, 0, \_SB.PCI0.LNKC, 0}, + Package(){0x0016ffff, 1, \_SB.PCI0.LNKD, 0}, + Package(){0x0016ffff, 2, \_SB.PCI0.LNKA, 0}, + Package(){0x0016ffff, 3, \_SB.PCI0.LNKB, 0}, + + /* Device 23, INTA - INTD */ + Package(){0x0017ffff, 0, \_SB.PCI0.LNKD, 0}, + Package(){0x0017ffff, 1, \_SB.PCI0.LNKA, 0}, + Package(){0x0017ffff, 2, \_SB.PCI0.LNKB, 0}, + Package(){0x0017ffff, 3, \_SB.PCI0.LNKC, 0}, + + /* Device 24, INTA - INTD */ + Package(){0x0018ffff, 0, \_SB.PCI0.LNKA, 0}, + Package(){0x0018ffff, 1, \_SB.PCI0.LNKB, 0}, + Package(){0x0018ffff, 2, \_SB.PCI0.LNKC, 0}, + Package(){0x0018ffff, 3, \_SB.PCI0.LNKD, 0}, + + /* Device 25, INTA - INTD */ + Package(){0x0019ffff, 0, \_SB.PCI0.LNKB, 0}, + Package(){0x0019ffff, 1, \_SB.PCI0.LNKC, 0}, + Package(){0x0019ffff, 2, \_SB.PCI0.LNKD, 0}, + Package(){0x0019ffff, 3, \_SB.PCI0.LNKA, 0}, + + /* Device 26, INTA - INTD */ + Package(){0x001affff, 0, \_SB.PCI0.LNKC, 0}, + Package(){0x001affff, 1, \_SB.PCI0.LNKD, 0}, + Package(){0x001affff, 2, \_SB.PCI0.LNKA, 0}, + Package(){0x001affff, 3, \_SB.PCI0.LNKB, 0}, + + /* Device 27, INTA - INTD */ + Package(){0x001bffff, 0, \_SB.PCI0.LNKD, 0}, + Package(){0x001bffff, 1, \_SB.PCI0.LNKA, 0}, + Package(){0x001bffff, 2, \_SB.PCI0.LNKB, 0}, + Package(){0x001bffff, 3, \_SB.PCI0.LNKC, 0}, + + /* Device 28, INTA - INTD */ + Package(){0x001cffff, 0, \_SB.PCI0.LNKA, 0}, + Package(){0x001cffff, 1, \_SB.PCI0.LNKB, 0}, + Package(){0x001cffff, 2, \_SB.PCI0.LNKC, 0}, + Package(){0x001cffff, 3, \_SB.PCI0.LNKD, 0}, + + /* Device 29, INTA - INTD */ + Package(){0x001dffff, 0, \_SB.PCI0.LNKB, 0}, + Package(){0x001dffff, 1, \_SB.PCI0.LNKC, 0}, + Package(){0x001dffff, 2, \_SB.PCI0.LNKD, 0}, + Package(){0x001dffff, 3, \_SB.PCI0.LNKA, 0}, + + /* Device 30, INTA - INTD */ + Package(){0x001effff, 0, \_SB.PCI0.LNKC, 0}, + Package(){0x001effff, 1, \_SB.PCI0.LNKD, 0}, + Package(){0x001effff, 2, \_SB.PCI0.LNKA, 0}, + Package(){0x001effff, 3, \_SB.PCI0.LNKB, 0}, + + /* Device 31, INTA - INTD */ + Package(){0x001fffff, 0, \_SB.PCI0.LNKD, 0}, + Package(){0x001fffff, 1, \_SB.PCI0.LNKA, 0}, + Package(){0x001fffff, 2, \_SB.PCI0.LNKB, 0}, + Package(){0x001fffff, 3, \_SB.PCI0.LNKC, 0}, }) Name(PRTA, Package() { @@ -562,6 +658,102 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, Package(){0x000fffff, 1, 0, 46}, Package(){0x000fffff, 2, 0, 47}, Package(){0x000fffff, 3, 0, 16}, + + /* Device 16, INTA - INTD */ + Package(){0x0010ffff, 0, 0, 18}, + Package(){0x0010ffff, 1, 0, 19}, + Package(){0x0010ffff, 2, 0, 20}, + Package(){0x0010ffff, 3, 0, 21}, + + /* Device 17, INTA - INTD */ + Package(){0x0011ffff, 0, 0, 22}, + Package(){0x0011ffff, 1, 0, 23}, + Package(){0x0011ffff, 2, 0, 24}, + Package(){0x0011ffff, 3, 0, 25}, + + /* Device 18, INTA - INTD */ + Package(){0x0012ffff, 0, 0, 26}, + Package(){0x0012ffff, 1, 0, 27}, + Package(){0x0012ffff, 2, 0, 28}, + Package(){0x0012ffff, 3, 0, 29}, + + /* Device 19, INTA - INTD */ + Package(){0x0013ffff, 0, 0, 30}, + Package(){0x0013ffff, 1, 0, 31}, + Package(){0x0013ffff, 2, 0, 32}, + Package(){0x0013ffff, 3, 0, 33}, + + /* Device 20, INTA - INTD */ + Package(){0x0014ffff, 0, 0, 34}, + Package(){0x0014ffff, 1, 0, 35}, + Package(){0x0014ffff, 2, 0, 36}, + Package(){0x0014ffff, 3, 0, 37}, + + /* Device 21, INTA - INTD */ + Package(){0x0015ffff, 0, 0, 38}, + Package(){0x0015ffff, 1, 0, 39}, + Package(){0x0015ffff, 2, 0, 40}, + Package(){0x0015ffff, 3, 0, 41}, + + /* Device 22, INTA - INTD */ + Package(){0x0016ffff, 0, 0, 42}, + Package(){0x0016ffff, 1, 0, 43}, + Package(){0x0016ffff, 2, 0, 44}, + Package(){0x0016ffff, 3, 0, 45}, + + /* Device 23, INTA - INTD */ + Package(){0x0017ffff, 0, 0, 46}, + Package(){0x0017ffff, 1, 0, 47}, + Package(){0x0017ffff, 2, 0, 16}, + Package(){0x0017ffff, 3, 0, 17}, + + /* Device 24, INTA - INTD */ + Package(){0x0018ffff, 0, 0, 19}, + Package(){0x0018ffff, 1, 0, 20}, + Package(){0x0018ffff, 2, 0, 21}, + Package(){0x0018ffff, 3, 0, 22}, + + /* Device 25, INTA - INTD */ + Package(){0x0019ffff, 0, 0, 23}, + Package(){0x0019ffff, 1, 0, 24}, + Package(){0x0019ffff, 2, 0, 25}, + Package(){0x0019ffff, 3, 0, 26}, + + /* Device 26, INTA - INTD */ + Package(){0x001affff, 0, 0, 27}, + Package(){0x001affff, 1, 0, 28}, + Package(){0x001affff, 2, 0, 29}, + Package(){0x001affff, 3, 0, 30}, + + /* Device 27, INTA - INTD */ + Package(){0x001bffff, 0, 0, 31}, + Package(){0x001bffff, 1, 0, 32}, + Package(){0x001bffff, 2, 0, 33}, + Package(){0x001bffff, 3, 0, 34}, + + /* Device 28, INTA - INTD */ + Package(){0x001cffff, 0, 0, 35}, + Package(){0x001cffff, 1, 0, 36}, + Package(){0x001cffff, 2, 0, 37}, + Package(){0x001cffff, 3, 0, 38}, + + /* Device 29, INTA - INTD */ + Package(){0x001dffff, 0, 0, 39}, + Package(){0x001dffff, 1, 0, 40}, + Package(){0x001dffff, 2, 0, 41}, + Package(){0x001dffff, 3, 0, 42}, + + /* Device 30, INTA - INTD */ + Package(){0x001effff, 0, 0, 43}, + Package(){0x001effff, 1, 0, 44}, + Package(){0x001effff, 2, 0, 45}, + Package(){0x001effff, 3, 0, 46}, + + /* Device 31, INTA - INTD */ + Package(){0x001fffff, 0, 0, 47}, + Package(){0x001fffff, 1, 0, 16}, + Package(){0x001fffff, 2, 0, 17}, + Package(){0x001fffff, 3, 0, 18}, }) Device (ISA) diff -r 2a4eaa76d974 -r dee5bc89873e tools/firmware/hvmloader/acpi/dsdt.c --- a/tools/firmware/hvmloader/acpi/dsdt.c Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/firmware/hvmloader/acpi/dsdt.c Tue Mar 10 11:00:34 2009 +0900 @@ -1,22 +1,22 @@ /* * * Intel ACPI Component Architecture - * ASL Optimizing Compiler version 20081204 [Jan 23 2009] - * Copyright (C) 2000 - 2008 Intel Corporation + * ASL Optimizing Compiler version 20090220 [Mar 9 2009] + * Copyright (C) 2000 - 2009 Intel Corporation * Supports ACPI Specification Revision 3.0a * - * Compilation of "dsdt.asl" - Fri Jan 23 14:30:29 2009 + * Compilation of "dsdt.asl" - Mon Mar 9 09:11:00 2009 * * C source code output * */ unsigned char AmlCode[] = { - 0x44,0x53,0x44,0x54,0x5E,0x11,0x00,0x00, /* 00000000 "DSDT^..." */ - 0x02,0xEB,0x58,0x65,0x6E,0x00,0x00,0x00, /* 00000008 "..Xen..." */ + 0x44,0x53,0x44,0x54,0x20,0x18,0x00,0x00, /* 00000000 "DSDT ..." */ + 0x02,0x5B,0x58,0x65,0x6E,0x00,0x00,0x00, /* 00000008 ".[Xen..." */ 0x48,0x56,0x4D,0x00,0x00,0x00,0x00,0x00, /* 00000010 "HVM....." */ 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ - 0x04,0x12,0x08,0x20,0x08,0x50,0x4D,0x42, /* 00000020 "... .PMB" */ + 0x20,0x02,0x09,0x20,0x08,0x50,0x4D,0x42, /* 00000020 " .. .PMB" */ 0x53,0x0B,0x00,0x0C,0x08,0x50,0x4D,0x4C, /* 00000028 "S....PML" */ 0x4E,0x0A,0x08,0x08,0x49,0x4F,0x42,0x31, /* 00000030 "N...IOB1" */ 0x00,0x08,0x49,0x4F,0x4C,0x31,0x00,0x08, /* 00000038 "..IOL1.." */ @@ -56,517 +56,734 @@ unsigned char AmlCode[] = 0x07,0x0A,0x07,0x00,0x00,0x08,0x50,0x49, /* 00000148 "......PI" */ 0x43,0x44,0x00,0x14,0x0C,0x5F,0x50,0x49, /* 00000150 "CD..._PI" */ 0x43,0x01,0x70,0x68,0x50,0x49,0x43,0x44, /* 00000158 "C.phPICD" */ - 0x10,0x4E,0xF3,0x5F,0x53,0x42,0x5F,0x5B, /* 00000160 ".N._SB_[" */ - 0x80,0x42,0x49,0x4F,0x53,0x00,0x0C,0x00, /* 00000168 ".BIOS..." */ - 0xA0,0x0E,0x00,0x0A,0x10,0x5B,0x81,0x21, /* 00000170 ".....[.!" */ - 0x42,0x49,0x4F,0x53,0x01,0x55,0x41,0x52, /* 00000178 "BIOS.UAR" */ - 0x31,0x01,0x55,0x41,0x52,0x32,0x01,0x48, /* 00000180 "1.UAR2.H" */ - 0x50,0x45,0x54,0x01,0x00,0x1D,0x50,0x4D, /* 00000188 "PET...PM" */ - 0x49,0x4E,0x20,0x50,0x4C,0x45,0x4E,0x20, /* 00000190 "IN PLEN " */ - 0x5B,0x82,0x49,0x04,0x4D,0x45,0x4D,0x30, /* 00000198 "[.I.MEM0" */ - 0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0, /* 000001A0 "._HID.A." */ - 0x0C,0x02,0x08,0x5F,0x43,0x52,0x53,0x11, /* 000001A8 "..._CRS." */ - 0x33,0x0A,0x30,0x8A,0x2B,0x00,0x00,0x0D, /* 000001B0 "3.0.+..." */ - 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001B8 "........" */ + 0x10,0x80,0x60,0x01,0x5F,0x53,0x42,0x5F, /* 00000160 "..`._SB_" */ + 0x5B,0x80,0x42,0x49,0x4F,0x53,0x00,0x0C, /* 00000168 "[.BIOS.." */ + 0x00,0xA0,0x0E,0x00,0x0A,0x10,0x5B,0x81, /* 00000170 "......[." */ + 0x21,0x42,0x49,0x4F,0x53,0x01,0x55,0x41, /* 00000178 "!BIOS.UA" */ + 0x52,0x31,0x01,0x55,0x41,0x52,0x32,0x01, /* 00000180 "R1.UAR2." */ + 0x48,0x50,0x45,0x54,0x01,0x00,0x1D,0x50, /* 00000188 "HPET...P" */ + 0x4D,0x49,0x4E,0x20,0x50,0x4C,0x45,0x4E, /* 00000190 "MIN PLEN" */ + 0x20,0x5B,0x82,0x49,0x04,0x4D,0x45,0x4D, /* 00000198 " [.I.MEM" */ + 0x30,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 000001A0 "0._HID.A" */ + 0xD0,0x0C,0x02,0x08,0x5F,0x43,0x52,0x53, /* 000001A8 "...._CRS" */ + 0x11,0x33,0x0A,0x30,0x8A,0x2B,0x00,0x00, /* 000001B0 ".3.0.+.." */ + 0x0D,0x03,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001B8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001C0 "........" */ - 0x00,0xFF,0xFF,0x09,0x00,0x00,0x00,0x00, /* 000001C8 "........" */ + 0x00,0x00,0xFF,0xFF,0x09,0x00,0x00,0x00, /* 000001C8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001D0 "........" */ - 0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x00, /* 000001D8 "........" */ - 0x00,0x79,0x00,0x5B,0x82,0x4A,0xEB,0x50, /* 000001E0 ".y.[.J.P" */ - 0x43,0x49,0x30,0x08,0x5F,0x48,0x49,0x44, /* 000001E8 "CI0._HID" */ - 0x0C,0x41,0xD0,0x0A,0x03,0x08,0x5F,0x55, /* 000001F0 ".A...._U" */ - 0x49,0x44,0x00,0x08,0x5F,0x41,0x44,0x52, /* 000001F8 "ID.._ADR" */ - 0x00,0x08,0x5F,0x42,0x42,0x4E,0x00,0x5B, /* 00000200 ".._BBN.[" */ - 0x82,0x2A,0x48,0x50,0x30,0x5F,0x08,0x5F, /* 00000208 ".*HP0_._" */ - 0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,0x02, /* 00000210 "HID.A..." */ - 0x08,0x5F,0x43,0x52,0x53,0x11,0x15,0x0A, /* 00000218 "._CRS..." */ - 0x12,0x47,0x01,0xC0,0x10,0xC0,0x10,0x00, /* 00000220 ".G......" */ - 0x03,0x47,0x01,0x44,0xB0,0x44,0xB0,0x00, /* 00000228 ".G.D.D.." */ - 0x04,0x79,0x00,0x14,0x4E,0x0C,0x5F,0x43, /* 00000230 ".y..N._C" */ - 0x52,0x53,0x00,0x08,0x50,0x52,0x54,0x30, /* 00000238 "RS..PRT0" */ - 0x11,0x42,0x07,0x0A,0x6E,0x88,0x0D,0x00, /* 00000240 ".B..n..." */ - 0x02,0x0E,0x00,0x00,0x00,0x00,0x00,0xFF, /* 00000248 "........" */ - 0x00,0x00,0x00,0x00,0x01,0x47,0x01,0xF8, /* 00000250 ".....G.." */ - 0x0C,0xF8,0x0C,0x01,0x08,0x88,0x0D,0x00, /* 00000258 "........" */ - 0x01,0x0C,0x03,0x00,0x00,0x00,0x00,0xF7, /* 00000260 "........" */ - 0x0C,0x00,0x00,0xF8,0x0C,0x88,0x0D,0x00, /* 00000268 "........" */ - 0x01,0x0C,0x03,0x00,0x00,0x00,0x0D,0xFF, /* 00000270 "........" */ - 0xFF,0x00,0x00,0x00,0xF3,0x87,0x17,0x00, /* 00000278 "........" */ - 0x00,0x0C,0x03,0x00,0x00,0x00,0x00,0x00, /* 00000280 "........" */ - 0x00,0x0A,0x00,0xFF,0xFF,0x0B,0x00,0x00, /* 00000288 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x87, /* 00000290 "........" */ - 0x17,0x00,0x00,0x0C,0x03,0x00,0x00,0x00, /* 00000298 "........" */ - 0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF, /* 000002A0 "........" */ - 0xF4,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000002A8 "........" */ - 0x05,0x79,0x00,0x8A,0x50,0x52,0x54,0x30, /* 000002B0 ".y..PRT0" */ - 0x0A,0x5C,0x4D,0x4D,0x49,0x4E,0x8A,0x50, /* 000002B8 ".\MMIN.P" */ - 0x52,0x54,0x30,0x0A,0x60,0x4D,0x4D,0x41, /* 000002C0 "RT0.`MMA" */ - 0x58,0x8A,0x50,0x52,0x54,0x30,0x0A,0x68, /* 000002C8 "X.PRT0.h" */ - 0x4D,0x4C,0x45,0x4E,0x70,0x50,0x4D,0x49, /* 000002D0 "MLENpPMI" */ - 0x4E,0x4D,0x4D,0x49,0x4E,0x70,0x50,0x4C, /* 000002D8 "NMMINpPL" */ - 0x45,0x4E,0x4D,0x4C,0x45,0x4E,0x72,0x4D, /* 000002E0 "ENMLENrM" */ - 0x4D,0x49,0x4E,0x4D,0x4C,0x45,0x4E,0x4D, /* 000002E8 "MINMLENM" */ - 0x4D,0x41,0x58,0x74,0x4D,0x4D,0x41,0x58, /* 000002F0 "MAXtMMAX" */ - 0x01,0x4D,0x4D,0x41,0x58,0xA4,0x50,0x52, /* 000002F8 ".MMAX.PR" */ - 0x54,0x30,0x08,0x42,0x55,0x46,0x41,0x11, /* 00000300 "T0.BUFA." */ - 0x09,0x0A,0x06,0x23,0x20,0x0C,0x18,0x79, /* 00000308 "...# ..y" */ - 0x00,0x08,0x42,0x55,0x46,0x42,0x11,0x09, /* 00000310 "..BUFB.." */ - 0x0A,0x06,0x23,0x00,0x00,0x18,0x79,0x00, /* 00000318 "..#...y." */ - 0x8B,0x42,0x55,0x46,0x42,0x01,0x49,0x52, /* 00000320 ".BUFB.IR" */ - 0x51,0x56,0x5B,0x82,0x48,0x08,0x4C,0x4E, /* 00000328 "QV[.H.LN" */ - 0x4B,0x41,0x08,0x5F,0x48,0x49,0x44,0x0C, /* 00000330 "KA._HID." */ - 0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,0x49, /* 00000338 "A...._UI" */ - 0x44,0x01,0x14,0x1C,0x5F,0x53,0x54,0x41, /* 00000340 "D..._STA" */ - 0x00,0x7B,0x50,0x49,0x52,0x41,0x0A,0x80, /* 00000348 ".{PIRA.." */ - 0x60,0xA0,0x08,0x93,0x60,0x0A,0x80,0xA4, /* 00000350 "`...`..." */ - 0x0A,0x09,0xA1,0x04,0xA4,0x0A,0x0B,0x14, /* 00000358 "........" */ - 0x0B,0x5F,0x50,0x52,0x53,0x00,0xA4,0x42, /* 00000360 "._PRS..B" */ - 0x55,0x46,0x41,0x14,0x11,0x5F,0x44,0x49, /* 00000368 "UFA.._DI" */ - 0x53,0x00,0x7D,0x50,0x49,0x52,0x41,0x0A, /* 00000370 "S.}PIRA." */ - 0x80,0x50,0x49,0x52,0x41,0x14,0x1A,0x5F, /* 00000378 ".PIRA.._" */ - 0x43,0x52,0x53,0x00,0x7B,0x50,0x49,0x52, /* 00000380 "CRS.{PIR" */ - 0x41,0x0A,0x0F,0x60,0x79,0x01,0x60,0x49, /* 00000388 "A..`y.`I" */ - 0x52,0x51,0x56,0xA4,0x42,0x55,0x46,0x42, /* 00000390 "RQV.BUFB" */ - 0x14,0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B, /* 00000398 ".._SRS.." */ - 0x68,0x01,0x49,0x52,0x51,0x31,0x82,0x49, /* 000003A0 "h.IRQ1.I" */ - 0x52,0x51,0x31,0x60,0x76,0x60,0x70,0x60, /* 000003A8 "RQ1`v`p`" */ - 0x50,0x49,0x52,0x41,0x5B,0x82,0x49,0x08, /* 000003B0 "PIRA[.I." */ - 0x4C,0x4E,0x4B,0x42,0x08,0x5F,0x48,0x49, /* 000003B8 "LNKB._HI" */ - 0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F, /* 000003C0 "D.A...._" */ - 0x55,0x49,0x44,0x0A,0x02,0x14,0x1C,0x5F, /* 000003C8 "UID...._" */ - 0x53,0x54,0x41,0x00,0x7B,0x50,0x49,0x52, /* 000003D0 "STA.{PIR" */ - 0x42,0x0A,0x80,0x60,0xA0,0x08,0x93,0x60, /* 000003D8 "B..`...`" */ - 0x0A,0x80,0xA4,0x0A,0x09,0xA1,0x04,0xA4, /* 000003E0 "........" */ - 0x0A,0x0B,0x14,0x0B,0x5F,0x50,0x52,0x53, /* 000003E8 "...._PRS" */ - 0x00,0xA4,0x42,0x55,0x46,0x41,0x14,0x11, /* 000003F0 "..BUFA.." */ - 0x5F,0x44,0x49,0x53,0x00,0x7D,0x50,0x49, /* 000003F8 "_DIS.}PI" */ - 0x52,0x42,0x0A,0x80,0x50,0x49,0x52,0x42, /* 00000400 "RB..PIRB" */ - 0x14,0x1A,0x5F,0x43,0x52,0x53,0x00,0x7B, /* 00000408 ".._CRS.{" */ - 0x50,0x49,0x52,0x42,0x0A,0x0F,0x60,0x79, /* 00000410 "PIRB..`y" */ - 0x01,0x60,0x49,0x52,0x51,0x56,0xA4,0x42, /* 00000418 ".`IRQV.B" */ - 0x55,0x46,0x42,0x14,0x1B,0x5F,0x53,0x52, /* 00000420 "UFB.._SR" */ - 0x53,0x01,0x8B,0x68,0x01,0x49,0x52,0x51, /* 00000428 "S..h.IRQ" */ - 0x31,0x82,0x49,0x52,0x51,0x31,0x60,0x76, /* 00000430 "1.IRQ1`v" */ - 0x60,0x70,0x60,0x50,0x49,0x52,0x42,0x5B, /* 00000438 "`p`PIRB[" */ - 0x82,0x49,0x08,0x4C,0x4E,0x4B,0x43,0x08, /* 00000440 ".I.LNKC." */ - 0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C, /* 00000448 "_HID.A.." */ - 0x0F,0x08,0x5F,0x55,0x49,0x44,0x0A,0x03, /* 00000450 ".._UID.." */ - 0x14,0x1C,0x5F,0x53,0x54,0x41,0x00,0x7B, /* 00000458 ".._STA.{" */ - 0x50,0x49,0x52,0x43,0x0A,0x80,0x60,0xA0, /* 00000460 "PIRC..`." */ - 0x08,0x93,0x60,0x0A,0x80,0xA4,0x0A,0x09, /* 00000468 "..`....." */ - 0xA1,0x04,0xA4,0x0A,0x0B,0x14,0x0B,0x5F, /* 00000470 "......._" */ - 0x50,0x52,0x53,0x00,0xA4,0x42,0x55,0x46, /* 00000478 "PRS..BUF" */ - 0x41,0x14,0x11,0x5F,0x44,0x49,0x53,0x00, /* 00000480 "A.._DIS." */ - 0x7D,0x50,0x49,0x52,0x43,0x0A,0x80,0x50, /* 00000488 "}PIRC..P" */ - 0x49,0x52,0x43,0x14,0x1A,0x5F,0x43,0x52, /* 00000490 "IRC.._CR" */ - 0x53,0x00,0x7B,0x50,0x49,0x52,0x43,0x0A, /* 00000498 "S.{PIRC." */ - 0x0F,0x60,0x79,0x01,0x60,0x49,0x52,0x51, /* 000004A0 ".`y.`IRQ" */ - 0x56,0xA4,0x42,0x55,0x46,0x42,0x14,0x1B, /* 000004A8 "V.BUFB.." */ - 0x5F,0x53,0x52,0x53,0x01,0x8B,0x68,0x01, /* 000004B0 "_SRS..h." */ - 0x49,0x52,0x51,0x31,0x82,0x49,0x52,0x51, /* 000004B8 "IRQ1.IRQ" */ - 0x31,0x60,0x76,0x60,0x70,0x60,0x50,0x49, /* 000004C0 "1`v`p`PI" */ - 0x52,0x43,0x5B,0x82,0x49,0x08,0x4C,0x4E, /* 000004C8 "RC[.I.LN" */ - 0x4B,0x44,0x08,0x5F,0x48,0x49,0x44,0x0C, /* 000004D0 "KD._HID." */ - 0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,0x49, /* 000004D8 "A...._UI" */ - 0x44,0x0A,0x04,0x14,0x1C,0x5F,0x53,0x54, /* 000004E0 "D...._ST" */ - 0x41,0x00,0x7B,0x50,0x49,0x52,0x44,0x0A, /* 000004E8 "A.{PIRD." */ - 0x80,0x60,0xA0,0x08,0x93,0x60,0x0A,0x80, /* 000004F0 ".`...`.." */ - 0xA4,0x0A,0x09,0xA1,0x04,0xA4,0x0A,0x0B, /* 000004F8 "........" */ - 0x14,0x0B,0x5F,0x50,0x52,0x53,0x00,0xA4, /* 00000500 ".._PRS.." */ - 0x42,0x55,0x46,0x41,0x14,0x11,0x5F,0x44, /* 00000508 "BUFA.._D" */ - 0x49,0x53,0x00,0x7D,0x50,0x49,0x52,0x44, /* 00000510 "IS.}PIRD" */ - 0x0A,0x80,0x50,0x49,0x52,0x44,0x14,0x1A, /* 00000518 "..PIRD.." */ - 0x5F,0x43,0x52,0x53,0x00,0x7B,0x50,0x49, /* 00000520 "_CRS.{PI" */ - 0x52,0x44,0x0A,0x0F,0x60,0x79,0x01,0x60, /* 00000528 "RD..`y.`" */ - 0x49,0x52,0x51,0x56,0xA4,0x42,0x55,0x46, /* 00000530 "IRQV.BUF" */ - 0x42,0x14,0x1B,0x5F,0x53,0x52,0x53,0x01, /* 00000538 "B.._SRS." */ - 0x8B,0x68,0x01,0x49,0x52,0x51,0x31,0x82, /* 00000540 ".h.IRQ1." */ - 0x49,0x52,0x51,0x31,0x60,0x76,0x60,0x70, /* 00000548 "IRQ1`v`p" */ - 0x60,0x50,0x49,0x52,0x44,0x5B,0x82,0x44, /* 00000550 "`PIRD[.D" */ - 0x05,0x48,0x50,0x45,0x54,0x08,0x5F,0x48, /* 00000558 ".HPET._H" */ - 0x49,0x44,0x0C,0x41,0xD0,0x01,0x03,0x08, /* 00000560 "ID.A...." */ - 0x5F,0x55,0x49,0x44,0x00,0x14,0x18,0x5F, /* 00000568 "_UID..._" */ - 0x53,0x54,0x41,0x00,0xA0,0x0C,0x93,0x5E, /* 00000570 "STA....^" */ - 0x5E,0x5E,0x48,0x50,0x45,0x54,0x00,0xA4, /* 00000578 "^^HPET.." */ - 0x00,0xA1,0x04,0xA4,0x0A,0x0F,0x08,0x5F, /* 00000580 "......._" */ - 0x43,0x52,0x53,0x11,0x1F,0x0A,0x1C,0x87, /* 00000588 "CRS....." */ - 0x17,0x00,0x00,0x0D,0x01,0x00,0x00,0x00, /* 00000590 "........" */ - 0x00,0x00,0x00,0xD0,0xFE,0xFF,0x03,0xD0, /* 00000598 "........" */ - 0xFE,0x00,0x00,0x00,0x00,0x00,0x04,0x00, /* 000005A0 "........" */ - 0x00,0x79,0x00,0x14,0x16,0x5F,0x50,0x52, /* 000005A8 ".y..._PR" */ - 0x54,0x00,0xA0,0x0A,0x50,0x49,0x43,0x44, /* 000005B0 "T...PICD" */ - 0xA4,0x50,0x52,0x54,0x41,0xA4,0x50,0x52, /* 000005B8 ".PRTA.PR" */ - 0x54,0x50,0x08,0x50,0x52,0x54,0x50,0x12, /* 000005C0 "TP.PRTP." */ - 0x49,0x36,0x3C,0x12,0x0D,0x04,0x0C,0xFF, /* 000005C8 "I6<....." */ - 0xFF,0x01,0x00,0x00,0x4C,0x4E,0x4B,0x42, /* 000005D0 "....LNKB" */ - 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x01, /* 000005D8 "........" */ - 0x00,0x01,0x4C,0x4E,0x4B,0x43,0x00,0x12, /* 000005E0 "..LNKC.." */ - 0x0E,0x04,0x0C,0xFF,0xFF,0x01,0x00,0x0A, /* 000005E8 "........" */ - 0x02,0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0E, /* 000005F0 ".LNKD..." */ - 0x04,0x0C,0xFF,0xFF,0x01,0x00,0x0A,0x03, /* 000005F8 "........" */ - 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0D,0x04, /* 00000600 "LNKA...." */ - 0x0C,0xFF,0xFF,0x02,0x00,0x00,0x4C,0x4E, /* 00000608 "......LN" */ - 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000610 "KC......" */ - 0xFF,0x02,0x00,0x01,0x4C,0x4E,0x4B,0x44, /* 00000618 "....LNKD" */ - 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x02, /* 00000620 "........" */ - 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x41,0x00, /* 00000628 "...LNKA." */ - 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x02,0x00, /* 00000630 "........" */ - 0x0A,0x03,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000638 "..LNKB.." */ - 0x0D,0x04,0x0C,0xFF,0xFF,0x03,0x00,0x00, /* 00000640 "........" */ - 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 00000648 "LNKD...." */ - 0x0C,0xFF,0xFF,0x03,0x00,0x01,0x4C,0x4E, /* 00000650 "......LN" */ - 0x4B,0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 00000658 "KA......" */ - 0xFF,0x03,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 00000660 ".....LNK" */ - 0x42,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000668 "B......." */ - 0x03,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x43, /* 00000670 "....LNKC" */ - 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x04, /* 00000678 "........" */ - 0x00,0x00,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 00000680 "..LNKA.." */ - 0x0D,0x04,0x0C,0xFF,0xFF,0x04,0x00,0x01, /* 00000688 "........" */ - 0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04, /* 00000690 "LNKB...." */ - 0x0C,0xFF,0xFF,0x04,0x00,0x0A,0x02,0x4C, /* 00000698 ".......L" */ - 0x4E,0x4B,0x43,0x00,0x12,0x0E,0x04,0x0C, /* 000006A0 "NKC....." */ - 0xFF,0xFF,0x04,0x00,0x0A,0x03,0x4C,0x4E, /* 000006A8 "......LN" */ - 0x4B,0x44,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 000006B0 "KD......" */ - 0xFF,0x05,0x00,0x00,0x4C,0x4E,0x4B,0x42, /* 000006B8 "....LNKB" */ - 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x05, /* 000006C0 "........" */ - 0x00,0x01,0x4C,0x4E,0x4B,0x43,0x00,0x12, /* 000006C8 "..LNKC.." */ - 0x0E,0x04,0x0C,0xFF,0xFF,0x05,0x00,0x0A, /* 000006D0 "........" */ - 0x02,0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0E, /* 000006D8 ".LNKD..." */ - 0x04,0x0C,0xFF,0xFF,0x05,0x00,0x0A,0x03, /* 000006E0 "........" */ - 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0D,0x04, /* 000006E8 "LNKA...." */ - 0x0C,0xFF,0xFF,0x06,0x00,0x00,0x4C,0x4E, /* 000006F0 "......LN" */ - 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 000006F8 "KC......" */ - 0xFF,0x06,0x00,0x01,0x4C,0x4E,0x4B,0x44, /* 00000700 "....LNKD" */ - 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x06, /* 00000708 "........" */ - 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x41,0x00, /* 00000710 "...LNKA." */ - 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x06,0x00, /* 00000718 "........" */ - 0x0A,0x03,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000720 "..LNKB.." */ - 0x0D,0x04,0x0C,0xFF,0xFF,0x07,0x00,0x00, /* 00000728 "........" */ - 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 00000730 "LNKD...." */ - 0x0C,0xFF,0xFF,0x07,0x00,0x01,0x4C,0x4E, /* 00000738 "......LN" */ - 0x4B,0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 00000740 "KA......" */ - 0xFF,0x07,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 00000748 ".....LNK" */ - 0x42,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000750 "B......." */ - 0x07,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x43, /* 00000758 "....LNKC" */ - 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x08, /* 00000760 "........" */ - 0x00,0x00,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 00000768 "..LNKA.." */ - 0x0D,0x04,0x0C,0xFF,0xFF,0x08,0x00,0x01, /* 00000770 "........" */ - 0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04, /* 00000778 "LNKB...." */ - 0x0C,0xFF,0xFF,0x08,0x00,0x0A,0x02,0x4C, /* 00000780 ".......L" */ - 0x4E,0x4B,0x43,0x00,0x12,0x0E,0x04,0x0C, /* 00000788 "NKC....." */ - 0xFF,0xFF,0x08,0x00,0x0A,0x03,0x4C,0x4E, /* 00000790 "......LN" */ - 0x4B,0x44,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000798 "KD......" */ - 0xFF,0x09,0x00,0x00,0x4C,0x4E,0x4B,0x42, /* 000007A0 "....LNKB" */ - 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x09, /* 000007A8 "........" */ - 0x00,0x01,0x4C,0x4E,0x4B,0x43,0x00,0x12, /* 000007B0 "..LNKC.." */ - 0x0E,0x04,0x0C,0xFF,0xFF,0x09,0x00,0x0A, /* 000007B8 "........" */ - 0x02,0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0E, /* 000007C0 ".LNKD..." */ - 0x04,0x0C,0xFF,0xFF,0x09,0x00,0x0A,0x03, /* 000007C8 "........" */ - 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0D,0x04, /* 000007D0 "LNKA...." */ - 0x0C,0xFF,0xFF,0x0A,0x00,0x00,0x4C,0x4E, /* 000007D8 "......LN" */ - 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 000007E0 "KC......" */ - 0xFF,0x0A,0x00,0x01,0x4C,0x4E,0x4B,0x44, /* 000007E8 "....LNKD" */ - 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x0A, /* 000007F0 "........" */ - 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x41,0x00, /* 000007F8 "...LNKA." */ - 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x0A,0x00, /* 00000800 "........" */ - 0x0A,0x03,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000808 "..LNKB.." */ - 0x0D,0x04,0x0C,0xFF,0xFF,0x0B,0x00,0x00, /* 00000810 "........" */ - 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 00000818 "LNKD...." */ - 0x0C,0xFF,0xFF,0x0B,0x00,0x01,0x4C,0x4E, /* 00000820 "......LN" */ - 0x4B,0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 00000828 "KA......" */ - 0xFF,0x0B,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 00000830 ".....LNK" */ - 0x42,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000838 "B......." */ - 0x0B,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x43, /* 00000840 "....LNKC" */ - 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x0C, /* 00000848 "........" */ - 0x00,0x00,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 00000850 "..LNKA.." */ - 0x0D,0x04,0x0C,0xFF,0xFF,0x0C,0x00,0x01, /* 00000858 "........" */ - 0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04, /* 00000860 "LNKB...." */ - 0x0C,0xFF,0xFF,0x0C,0x00,0x0A,0x02,0x4C, /* 00000868 ".......L" */ - 0x4E,0x4B,0x43,0x00,0x12,0x0E,0x04,0x0C, /* 00000870 "NKC....." */ - 0xFF,0xFF,0x0C,0x00,0x0A,0x03,0x4C,0x4E, /* 00000878 "......LN" */ - 0x4B,0x44,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000880 "KD......" */ - 0xFF,0x0D,0x00,0x00,0x4C,0x4E,0x4B,0x42, /* 00000888 "....LNKB" */ - 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x0D, /* 00000890 "........" */ - 0x00,0x01,0x4C,0x4E,0x4B,0x43,0x00,0x12, /* 00000898 "..LNKC.." */ - 0x0E,0x04,0x0C,0xFF,0xFF,0x0D,0x00,0x0A, /* 000008A0 "........" */ - 0x02,0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0E, /* 000008A8 ".LNKD..." */ - 0x04,0x0C,0xFF,0xFF,0x0D,0x00,0x0A,0x03, /* 000008B0 "........" */ - 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0D,0x04, /* 000008B8 "LNKA...." */ - 0x0C,0xFF,0xFF,0x0E,0x00,0x00,0x4C,0x4E, /* 000008C0 "......LN" */ - 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 000008C8 "KC......" */ - 0xFF,0x0E,0x00,0x01,0x4C,0x4E,0x4B,0x44, /* 000008D0 "....LNKD" */ - 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x0E, /* 000008D8 "........" */ - 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x41,0x00, /* 000008E0 "...LNKA." */ - 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x0E,0x00, /* 000008E8 "........" */ - 0x0A,0x03,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 000008F0 "..LNKB.." */ - 0x0D,0x04,0x0C,0xFF,0xFF,0x0F,0x00,0x00, /* 000008F8 "........" */ - 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 00000900 "LNKD...." */ - 0x0C,0xFF,0xFF,0x0F,0x00,0x01,0x4C,0x4E, /* 00000908 "......LN" */ - 0x4B,0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 00000910 "KA......" */ - 0xFF,0x0F,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 00000918 ".....LNK" */ - 0x42,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000920 "B......." */ - 0x0F,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x43, /* 00000928 "....LNKC" */ - 0x00,0x08,0x50,0x52,0x54,0x41,0x12,0x41, /* 00000930 "..PRTA.A" */ - 0x2F,0x3C,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000938 "/<......" */ - 0x01,0x00,0x00,0x00,0x0A,0x14,0x12,0x0B, /* 00000940 "........" */ - 0x04,0x0C,0xFF,0xFF,0x01,0x00,0x01,0x00, /* 00000948 "........" */ - 0x0A,0x15,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 00000950 "........" */ - 0x01,0x00,0x0A,0x02,0x00,0x0A,0x16,0x12, /* 00000958 "........" */ - 0x0C,0x04,0x0C,0xFF,0xFF,0x01,0x00,0x0A, /* 00000960 "........" */ - 0x03,0x00,0x0A,0x17,0x12,0x0B,0x04,0x0C, /* 00000968 "........" */ - 0xFF,0xFF,0x02,0x00,0x00,0x00,0x0A,0x18, /* 00000970 "........" */ - 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x02,0x00, /* 00000978 "........" */ - 0x01,0x00,0x0A,0x19,0x12,0x0C,0x04,0x0C, /* 00000980 "........" */ - 0xFF,0xFF,0x02,0x00,0x0A,0x02,0x00,0x0A, /* 00000988 "........" */ - 0x1A,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x02, /* 00000990 "........" */ - 0x00,0x0A,0x03,0x00,0x0A,0x1B,0x12,0x0B, /* 00000998 "........" */ - 0x04,0x0C,0xFF,0xFF,0x03,0x00,0x00,0x00, /* 000009A0 "........" */ - 0x0A,0x1C,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 000009A8 "........" */ - 0x03,0x00,0x01,0x00,0x0A,0x1D,0x12,0x0C, /* 000009B0 "........" */ - 0x04,0x0C,0xFF,0xFF,0x03,0x00,0x0A,0x02, /* 000009B8 "........" */ - 0x00,0x0A,0x1E,0x12,0x0C,0x04,0x0C,0xFF, /* 000009C0 "........" */ - 0xFF,0x03,0x00,0x0A,0x03,0x00,0x0A,0x1F, /* 000009C8 "........" */ - 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x04,0x00, /* 000009D0 "........" */ - 0x00,0x00,0x0A,0x20,0x12,0x0B,0x04,0x0C, /* 000009D8 "... ...." */ - 0xFF,0xFF,0x04,0x00,0x01,0x00,0x0A,0x21, /* 000009E0 ".......!" */ - 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x04,0x00, /* 000009E8 "........" */ - 0x0A,0x02,0x00,0x0A,0x22,0x12,0x0C,0x04, /* 000009F0 "...."..." */ - 0x0C,0xFF,0xFF,0x04,0x00,0x0A,0x03,0x00, /* 000009F8 "........" */ - 0x0A,0x23,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000A00 ".#......" */ - 0x05,0x00,0x00,0x00,0x0A,0x24,0x12,0x0B, /* 00000A08 ".....$.." */ - 0x04,0x0C,0xFF,0xFF,0x05,0x00,0x01,0x00, /* 00000A10 "........" */ - 0x0A,0x25,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 00000A18 ".%......" */ - 0x05,0x00,0x0A,0x02,0x00,0x0A,0x26,0x12, /* 00000A20 "......&." */ - 0x0C,0x04,0x0C,0xFF,0xFF,0x05,0x00,0x0A, /* 00000A28 "........" */ - 0x03,0x00,0x0A,0x27,0x12,0x0B,0x04,0x0C, /* 00000A30 "...'...." */ - 0xFF,0xFF,0x06,0x00,0x00,0x00,0x0A,0x28, /* 00000A38 ".......(" */ - 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x06,0x00, /* 00000A40 "........" */ - 0x01,0x00,0x0A,0x29,0x12,0x0C,0x04,0x0C, /* 00000A48 "...)...." */ - 0xFF,0xFF,0x06,0x00,0x0A,0x02,0x00,0x0A, /* 00000A50 "........" */ - 0x2A,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x06, /* 00000A58 "*......." */ - 0x00,0x0A,0x03,0x00,0x0A,0x2B,0x12,0x0B, /* 00000A60 ".....+.." */ - 0x04,0x0C,0xFF,0xFF,0x07,0x00,0x00,0x00, /* 00000A68 "........" */ - 0x0A,0x2C,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000A70 ".,......" */ - 0x07,0x00,0x01,0x00,0x0A,0x2D,0x12,0x0C, /* 00000A78 ".....-.." */ - 0x04,0x0C,0xFF,0xFF,0x07,0x00,0x0A,0x02, /* 00000A80 "........" */ - 0x00,0x0A,0x2E,0x12,0x0C,0x04,0x0C,0xFF, /* 00000A88 "........" */ - 0xFF,0x07,0x00,0x0A,0x03,0x00,0x0A,0x2F, /* 00000A90 "......./" */ - 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x08,0x00, /* 00000A98 "........" */ - 0x00,0x00,0x0A,0x11,0x12,0x0B,0x04,0x0C, /* 00000AA0 "........" */ - 0xFF,0xFF,0x08,0x00,0x01,0x00,0x0A,0x12, /* 00000AA8 "........" */ - 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x08,0x00, /* 00000AB0 "........" */ - 0x0A,0x02,0x00,0x0A,0x13,0x12,0x0C,0x04, /* 00000AB8 "........" */ - 0x0C,0xFF,0xFF,0x08,0x00,0x0A,0x03,0x00, /* 00000AC0 "........" */ - 0x0A,0x14,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000AC8 "........" */ - 0x09,0x00,0x00,0x00,0x0A,0x15,0x12,0x0B, /* 00000AD0 "........" */ - 0x04,0x0C,0xFF,0xFF,0x09,0x00,0x01,0x00, /* 00000AD8 "........" */ - 0x0A,0x16,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 00000AE0 "........" */ - 0x09,0x00,0x0A,0x02,0x00,0x0A,0x17,0x12, /* 00000AE8 "........" */ - 0x0C,0x04,0x0C,0xFF,0xFF,0x09,0x00,0x0A, /* 00000AF0 "........" */ - 0x03,0x00,0x0A,0x18,0x12,0x0B,0x04,0x0C, /* 00000AF8 "........" */ - 0xFF,0xFF,0x0A,0x00,0x00,0x00,0x0A,0x19, /* 00000B00 "........" */ - 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x0A,0x00, /* 00000B08 "........" */ - 0x01,0x00,0x0A,0x1A,0x12,0x0C,0x04,0x0C, /* 00000B10 "........" */ - 0xFF,0xFF,0x0A,0x00,0x0A,0x02,0x00,0x0A, /* 00000B18 "........" */ - 0x1B,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x0A, /* 00000B20 "........" */ - 0x00,0x0A,0x03,0x00,0x0A,0x1C,0x12,0x0B, /* 00000B28 "........" */ - 0x04,0x0C,0xFF,0xFF,0x0B,0x00,0x00,0x00, /* 00000B30 "........" */ - 0x0A,0x1D,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000B38 "........" */ - 0x0B,0x00,0x01,0x00,0x0A,0x1E,0x12,0x0C, /* 00000B40 "........" */ - 0x04,0x0C,0xFF,0xFF,0x0B,0x00,0x0A,0x02, /* 00000B48 "........" */ - 0x00,0x0A,0x1F,0x12,0x0C,0x04,0x0C,0xFF, /* 00000B50 "........" */ - 0xFF,0x0B,0x00,0x0A,0x03,0x00,0x0A,0x20, /* 00000B58 "....... " */ - 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x0C,0x00, /* 00000B60 "........" */ - 0x00,0x00,0x0A,0x21,0x12,0x0B,0x04,0x0C, /* 00000B68 "...!...." */ - 0xFF,0xFF,0x0C,0x00,0x01,0x00,0x0A,0x22, /* 00000B70 "......."" */ - 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x0C,0x00, /* 00000B78 "........" */ - 0x0A,0x02,0x00,0x0A,0x23,0x12,0x0C,0x04, /* 00000B80 "....#..." */ - 0x0C,0xFF,0xFF,0x0C,0x00,0x0A,0x03,0x00, /* 00000B88 "........" */ - 0x0A,0x24,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000B90 ".$......" */ - 0x0D,0x00,0x00,0x00,0x0A,0x25,0x12,0x0B, /* 00000B98 ".....%.." */ - 0x04,0x0C,0xFF,0xFF,0x0D,0x00,0x01,0x00, /* 00000BA0 "........" */ - 0x0A,0x26,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 00000BA8 ".&......" */ - 0x0D,0x00,0x0A,0x02,0x00,0x0A,0x27,0x12, /* 00000BB0 "......'." */ - 0x0C,0x04,0x0C,0xFF,0xFF,0x0D,0x00,0x0A, /* 00000BB8 "........" */ - 0x03,0x00,0x0A,0x28,0x12,0x0B,0x04,0x0C, /* 00000BC0 "...(...." */ - 0xFF,0xFF,0x0E,0x00,0x00,0x00,0x0A,0x29, /* 00000BC8 ".......)" */ - 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x0E,0x00, /* 00000BD0 "........" */ - 0x01,0x00,0x0A,0x2A,0x12,0x0C,0x04,0x0C, /* 00000BD8 "...*...." */ - 0xFF,0xFF,0x0E,0x00,0x0A,0x02,0x00,0x0A, /* 00000BE0 "........" */ - 0x2B,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x0E, /* 00000BE8 "+......." */ - 0x00,0x0A,0x03,0x00,0x0A,0x2C,0x12,0x0B, /* 00000BF0 ".....,.." */ - 0x04,0x0C,0xFF,0xFF,0x0F,0x00,0x00,0x00, /* 00000BF8 "........" */ - 0x0A,0x2D,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000C00 ".-......" */ - 0x0F,0x00,0x01,0x00,0x0A,0x2E,0x12,0x0C, /* 00000C08 "........" */ - 0x04,0x0C,0xFF,0xFF,0x0F,0x00,0x0A,0x02, /* 00000C10 "........" */ - 0x00,0x0A,0x2F,0x12,0x0C,0x04,0x0C,0xFF, /* 00000C18 "../....." */ - 0xFF,0x0F,0x00,0x0A,0x03,0x00,0x0A,0x10, /* 00000C20 "........" */ - 0x5B,0x82,0x46,0x37,0x49,0x53,0x41,0x5F, /* 00000C28 "[.F7ISA_" */ - 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 00000C30 "._ADR..." */ - 0x01,0x00,0x5B,0x80,0x50,0x49,0x52,0x51, /* 00000C38 "..[.PIRQ" */ - 0x02,0x0A,0x60,0x0A,0x04,0x10,0x2E,0x5C, /* 00000C40 "..`....\" */ - 0x00,0x5B,0x81,0x29,0x5C,0x2F,0x04,0x5F, /* 00000C48 ".[.)\/._" */ - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x49, /* 00000C50 "SB_PCI0I" */ - 0x53,0x41,0x5F,0x50,0x49,0x52,0x51,0x01, /* 00000C58 "SA_PIRQ." */ - 0x50,0x49,0x52,0x41,0x08,0x50,0x49,0x52, /* 00000C60 "PIRA.PIR" */ - 0x42,0x08,0x50,0x49,0x52,0x43,0x08,0x50, /* 00000C68 "B.PIRC.P" */ - 0x49,0x52,0x44,0x08,0x5B,0x82,0x46,0x0B, /* 00000C70 "IRD.[.F." */ - 0x53,0x59,0x53,0x52,0x08,0x5F,0x48,0x49, /* 00000C78 "SYSR._HI" */ - 0x44,0x0C,0x41,0xD0,0x0C,0x02,0x08,0x5F, /* 00000C80 "D.A...._" */ - 0x55,0x49,0x44,0x01,0x08,0x43,0x52,0x53, /* 00000C88 "UID..CRS" */ - 0x5F,0x11,0x4E,0x08,0x0A,0x8A,0x47,0x01, /* 00000C90 "_.N...G." */ - 0x10,0x00,0x10,0x00,0x00,0x10,0x47,0x01, /* 00000C98 "......G." */ - 0x22,0x00,0x22,0x00,0x00,0x0C,0x47,0x01, /* 00000CA0 ""."...G." */ - 0x30,0x00,0x30,0x00,0x00,0x10,0x47,0x01, /* 00000CA8 "0.0...G." */ - 0x44,0x00,0x44,0x00,0x00,0x1C,0x47,0x01, /* 00000CB0 "D.D...G." */ - 0x62,0x00,0x62,0x00,0x00,0x02,0x47,0x01, /* 00000CB8 "b.b...G." */ - 0x65,0x00,0x65,0x00,0x00,0x0B,0x47,0x01, /* 00000CC0 "e.e...G." */ - 0x72,0x00,0x72,0x00,0x00,0x0E,0x47,0x01, /* 00000CC8 "r.r...G." */ - 0x80,0x00,0x80,0x00,0x00,0x01,0x47,0x01, /* 00000CD0 "......G." */ - 0x84,0x00,0x84,0x00,0x00,0x03,0x47,0x01, /* 00000CD8 "......G." */ - 0x88,0x00,0x88,0x00,0x00,0x01,0x47,0x01, /* 00000CE0 "......G." */ - 0x8C,0x00,0x8C,0x00,0x00,0x03,0x47,0x01, /* 00000CE8 "......G." */ - 0x90,0x00,0x90,0x00,0x00,0x10,0x47,0x01, /* 00000CF0 "......G." */ - 0xA2,0x00,0xA2,0x00,0x00,0x1C,0x47,0x01, /* 00000CF8 "......G." */ - 0xE0,0x00,0xE0,0x00,0x00,0x10,0x47,0x01, /* 00000D00 "......G." */ - 0xA0,0x08,0xA0,0x08,0x00,0x04,0x47,0x01, /* 00000D08 "......G." */ - 0xC0,0x0C,0xC0,0x0C,0x00,0x10,0x47,0x01, /* 00000D10 "......G." */ - 0xD0,0x04,0xD0,0x04,0x00,0x02,0x79,0x00, /* 00000D18 "......y." */ - 0x14,0x0B,0x5F,0x43,0x52,0x53,0x00,0xA4, /* 00000D20 ".._CRS.." */ - 0x43,0x52,0x53,0x5F,0x5B,0x82,0x2B,0x50, /* 00000D28 "CRS_[.+P" */ - 0x49,0x43,0x5F,0x08,0x5F,0x48,0x49,0x44, /* 00000D30 "IC_._HID" */ - 0x0B,0x41,0xD0,0x08,0x5F,0x43,0x52,0x53, /* 00000D38 ".A.._CRS" */ - 0x11,0x18,0x0A,0x15,0x47,0x01,0x20,0x00, /* 00000D40 "....G. ." */ - 0x20,0x00,0x01,0x02,0x47,0x01,0xA0,0x00, /* 00000D48 " ...G..." */ - 0xA0,0x00,0x01,0x02,0x22,0x04,0x00,0x79, /* 00000D50 "...."..y" */ - 0x00,0x5B,0x82,0x47,0x05,0x44,0x4D,0x41, /* 00000D58 ".[.G.DMA" */ - 0x30,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 00000D60 "0._HID.A" */ - 0xD0,0x02,0x00,0x08,0x5F,0x43,0x52,0x53, /* 00000D68 "...._CRS" */ - 0x11,0x41,0x04,0x0A,0x3D,0x2A,0x10,0x04, /* 00000D70 ".A..=*.." */ - 0x47,0x01,0x00,0x00,0x00,0x00,0x00,0x10, /* 00000D78 "G......." */ - 0x47,0x01,0x81,0x00,0x81,0x00,0x00,0x03, /* 00000D80 "G......." */ - 0x47,0x01,0x87,0x00,0x87,0x00,0x00,0x01, /* 00000D88 "G......." */ - 0x47,0x01,0x89,0x00,0x89,0x00,0x00,0x03, /* 00000D90 "G......." */ - 0x47,0x01,0x8F,0x00,0x8F,0x00,0x00,0x01, /* 00000D98 "G......." */ - 0x47,0x01,0xC0,0x00,0xC0,0x00,0x00,0x20, /* 00000DA0 "G...... " */ - 0x47,0x01,0x80,0x04,0x80,0x04,0x00,0x10, /* 00000DA8 "G......." */ - 0x79,0x00,0x5B,0x82,0x25,0x54,0x4D,0x52, /* 00000DB0 "y.[.%TMR" */ - 0x5F,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 00000DB8 "_._HID.A" */ - 0xD0,0x01,0x00,0x08,0x5F,0x43,0x52,0x53, /* 00000DC0 "...._CRS" */ - 0x11,0x10,0x0A,0x0D,0x47,0x01,0x40,0x00, /* 00000DC8 "....G.@." */ - 0x40,0x00,0x00,0x04,0x22,0x01,0x00,0x79, /* 00000DD0 "@..."..y" */ - 0x00,0x5B,0x82,0x25,0x52,0x54,0x43,0x5F, /* 00000DD8 ".[.%RTC_" */ - 0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0, /* 00000DE0 "._HID.A." */ - 0x0B,0x00,0x08,0x5F,0x43,0x52,0x53,0x11, /* 00000DE8 "..._CRS." */ - 0x10,0x0A,0x0D,0x47,0x01,0x70,0x00,0x70, /* 00000DF0 "...G.p.p" */ - 0x00,0x00,0x02,0x22,0x00,0x01,0x79,0x00, /* 00000DF8 "..."..y." */ - 0x5B,0x82,0x22,0x53,0x50,0x4B,0x52,0x08, /* 00000E00 "[."SPKR." */ - 0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x08, /* 00000E08 "_HID.A.." */ - 0x00,0x08,0x5F,0x43,0x52,0x53,0x11,0x0D, /* 00000E10 ".._CRS.." */ - 0x0A,0x0A,0x47,0x01,0x61,0x00,0x61,0x00, /* 00000E18 "..G.a.a." */ - 0x00,0x01,0x79,0x00,0x5B,0x82,0x31,0x50, /* 00000E20 "..y.[.1P" */ - 0x53,0x32,0x4D,0x08,0x5F,0x48,0x49,0x44, /* 00000E28 "S2M._HID" */ - 0x0C,0x41,0xD0,0x0F,0x13,0x08,0x5F,0x43, /* 00000E30 ".A...._C" */ - 0x49,0x44,0x0C,0x41,0xD0,0x0F,0x13,0x14, /* 00000E38 "ID.A...." */ - 0x09,0x5F,0x53,0x54,0x41,0x00,0xA4,0x0A, /* 00000E40 "._STA..." */ - 0x0F,0x08,0x5F,0x43,0x52,0x53,0x11,0x08, /* 00000E48 ".._CRS.." */ - 0x0A,0x05,0x22,0x00,0x10,0x79,0x00,0x5B, /* 00000E50 ".."..y.[" */ - 0x82,0x42,0x04,0x50,0x53,0x32,0x4B,0x08, /* 00000E58 ".B.PS2K." */ - 0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x03, /* 00000E60 "_HID.A.." */ - 0x03,0x08,0x5F,0x43,0x49,0x44,0x0C,0x41, /* 00000E68 ".._CID.A" */ - 0xD0,0x03,0x0B,0x14,0x09,0x5F,0x53,0x54, /* 00000E70 "....._ST" */ - 0x41,0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43, /* 00000E78 "A....._C" */ - 0x52,0x53,0x11,0x18,0x0A,0x15,0x47,0x01, /* 00000E80 "RS....G." */ - 0x60,0x00,0x60,0x00,0x00,0x01,0x47,0x01, /* 00000E88 "`.`...G." */ - 0x64,0x00,0x64,0x00,0x00,0x01,0x22,0x02, /* 00000E90 "d.d..."." */ - 0x00,0x79,0x00,0x5B,0x82,0x3A,0x46,0x44, /* 00000E98 ".y.[.:FD" */ - 0x43,0x30,0x08,0x5F,0x48,0x49,0x44,0x0C, /* 00000EA0 "C0._HID." */ - 0x41,0xD0,0x07,0x00,0x14,0x09,0x5F,0x53, /* 00000EA8 "A....._S" */ - 0x54,0x41,0x00,0xA4,0x0A,0x0F,0x08,0x5F, /* 00000EB0 "TA....._" */ - 0x43,0x52,0x53,0x11,0x1B,0x0A,0x18,0x47, /* 00000EB8 "CRS....G" */ - 0x01,0xF0,0x03,0xF0,0x03,0x01,0x06,0x47, /* 00000EC0 ".......G" */ - 0x01,0xF7,0x03,0xF7,0x03,0x01,0x01,0x22, /* 00000EC8 "......."" */ - 0x40,0x00,0x2A,0x04,0x00,0x79,0x00,0x5B, /* 00000ED0 "@.*..y.[" */ - 0x82,0x46,0x04,0x55,0x41,0x52,0x31,0x08, /* 00000ED8 ".F.UAR1." */ - 0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x05, /* 00000EE0 "_HID.A.." */ - 0x01,0x08,0x5F,0x55,0x49,0x44,0x01,0x14, /* 00000EE8 ".._UID.." */ - 0x19,0x5F,0x53,0x54,0x41,0x00,0xA0,0x0D, /* 00000EF0 "._STA..." */ - 0x93,0x5E,0x5E,0x5E,0x5E,0x55,0x41,0x52, /* 00000EF8 ".^^^^UAR" */ - 0x31,0x00,0xA4,0x00,0xA1,0x04,0xA4,0x0A, /* 00000F00 "1......." */ - 0x0F,0x08,0x5F,0x43,0x52,0x53,0x11,0x10, /* 00000F08 ".._CRS.." */ - 0x0A,0x0D,0x47,0x01,0xF8,0x03,0xF8,0x03, /* 00000F10 "..G....." */ - 0x08,0x08,0x22,0x10,0x00,0x79,0x00,0x5B, /* 00000F18 ".."..y.[" */ - 0x82,0x47,0x04,0x55,0x41,0x52,0x32,0x08, /* 00000F20 ".G.UAR2." */ - 0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x05, /* 00000F28 "_HID.A.." */ - 0x01,0x08,0x5F,0x55,0x49,0x44,0x0A,0x02, /* 00000F30 ".._UID.." */ - 0x14,0x19,0x5F,0x53,0x54,0x41,0x00,0xA0, /* 00000F38 ".._STA.." */ - 0x0D,0x93,0x5E,0x5E,0x5E,0x5E,0x55,0x41, /* 00000F40 "..^^^^UA" */ - 0x52,0x32,0x00,0xA4,0x00,0xA1,0x04,0xA4, /* 00000F48 "R2......" */ - 0x0A,0x0F,0x08,0x5F,0x43,0x52,0x53,0x11, /* 00000F50 "..._CRS." */ - 0x10,0x0A,0x0D,0x47,0x01,0xF8,0x02,0xF8, /* 00000F58 "...G...." */ - 0x02,0x08,0x08,0x22,0x08,0x00,0x79,0x00, /* 00000F60 "..."..y." */ - 0x5B,0x82,0x36,0x4C,0x54,0x50,0x31,0x08, /* 00000F68 "[.6LTP1." */ - 0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x04, /* 00000F70 "_HID.A.." */ - 0x00,0x08,0x5F,0x55,0x49,0x44,0x0A,0x02, /* 00000F78 ".._UID.." */ - 0x14,0x09,0x5F,0x53,0x54,0x41,0x00,0xA4, /* 00000F80 ".._STA.." */ - 0x0A,0x0F,0x08,0x5F,0x43,0x52,0x53,0x11, /* 00000F88 "..._CRS." */ - 0x10,0x0A,0x0D,0x47,0x01,0x78,0x03,0x78, /* 00000F90 "...G.x.x" */ - 0x03,0x08,0x08,0x22,0x80,0x00,0x79,0x00, /* 00000F98 "..."..y." */ - 0x5B,0x82,0x4D,0x07,0x53,0x31,0x46,0x30, /* 00000FA0 "[.M.S1F0" */ - 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 00000FA8 "._ADR..." */ - 0x06,0x00,0x08,0x5F,0x53,0x55,0x4E,0x01, /* 00000FB0 "..._SUN." */ - 0x14,0x13,0x5F,0x50,0x53,0x30,0x00,0x70, /* 00000FB8 ".._PS0.p" */ - 0x0A,0x80,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00000FC0 "..\._GPE" */ - 0x44,0x50,0x54,0x32,0x14,0x13,0x5F,0x50, /* 00000FC8 "DPT2.._P" */ - 0x53,0x33,0x00,0x70,0x0A,0x83,0x5C,0x2E, /* 00000FD0 "S3.p..\." */ - 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 00000FD8 "_GPEDPT2" */ - 0x14,0x1F,0x5F,0x45,0x4A,0x30,0x01,0x70, /* 00000FE0 ".._EJ0.p" */ - 0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00000FE8 "..\._GPE" */ - 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 00000FF0 "DPT2p.\." */ - 0x5F,0x47,0x50,0x45,0x50,0x48,0x50,0x31, /* 00000FF8 "_GPEPHP1" */ - 0x14,0x1E,0x5F,0x53,0x54,0x41,0x00,0x70, /* 00001000 ".._STA.p" */ - 0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001008 "..\._GPE" */ - 0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E,0x5F, /* 00001010 "DPT2.\._" */ - 0x47,0x50,0x45,0x50,0x48,0x50,0x31,0x5B, /* 00001018 "GPEPHP1[" */ - 0x82,0x4E,0x07,0x53,0x32,0x46,0x30,0x08, /* 00001020 ".N.S2F0." */ - 0x5F,0x41,0x44,0x52,0x0C,0x00,0x00,0x07, /* 00001028 "_ADR...." */ - 0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A,0x02, /* 00001030 ".._SUN.." */ - 0x14,0x13,0x5F,0x50,0x53,0x30,0x00,0x70, /* 00001038 ".._PS0.p" */ - 0x0A,0x90,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001040 "..\._GPE" */ - 0x44,0x50,0x54,0x32,0x14,0x13,0x5F,0x50, /* 00001048 "DPT2.._P" */ - 0x53,0x33,0x00,0x70,0x0A,0x93,0x5C,0x2E, /* 00001050 "S3.p..\." */ - 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 00001058 "_GPEDPT2" */ - 0x14,0x1F,0x5F,0x45,0x4A,0x30,0x01,0x70, /* 00001060 ".._EJ0.p" */ - 0x0A,0x98,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001068 "..\._GPE" */ - 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 00001070 "DPT2p.\." */ - 0x5F,0x47,0x50,0x45,0x50,0x48,0x50,0x32, /* 00001078 "_GPEPHP2" */ - 0x14,0x1E,0x5F,0x53,0x54,0x41,0x00,0x70, /* 00001080 ".._STA.p" */ - 0x0A,0x99,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001088 "..\._GPE" */ - 0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E,0x5F, /* 00001090 "DPT2.\._" */ - 0x47,0x50,0x45,0x50,0x48,0x50,0x32,0x10, /* 00001098 "GPEPHP2." */ - 0x4E,0x0B,0x5F,0x47,0x50,0x45,0x5B,0x80, /* 000010A0 "N._GPE[." */ - 0x50,0x48,0x50,0x5F,0x01,0x0B,0xC0,0x10, /* 000010A8 "PHP_...." */ - 0x0A,0x03,0x5B,0x81,0x15,0x50,0x48,0x50, /* 000010B0 "..[..PHP" */ - 0x5F,0x01,0x50,0x53,0x54,0x41,0x08,0x50, /* 000010B8 "_.PSTA.P" */ - 0x48,0x50,0x31,0x08,0x50,0x48,0x50,0x32, /* 000010C0 "HP1.PHP2" */ - 0x08,0x5B,0x80,0x44,0x47,0x31,0x5F,0x01, /* 000010C8 ".[.DG1_." */ - 0x0B,0x44,0xB0,0x0A,0x04,0x5B,0x81,0x10, /* 000010D0 ".D...[.." */ - 0x44,0x47,0x31,0x5F,0x01,0x44,0x50,0x54, /* 000010D8 "DG1_.DPT" */ - 0x31,0x08,0x44,0x50,0x54,0x32,0x08,0x14, /* 000010E0 "1.DPT2.." */ - 0x46,0x07,0x5F,0x4C,0x30,0x33,0x00,0x08, /* 000010E8 "F._L03.." */ - 0x53,0x4C,0x54,0x5F,0x00,0x08,0x45,0x56, /* 000010F0 "SLT_..EV" */ - 0x54,0x5F,0x00,0x70,0x50,0x53,0x54,0x41, /* 000010F8 "T_.pPSTA" */ - 0x61,0x7A,0x61,0x0A,0x04,0x53,0x4C,0x54, /* 00001100 "aza..SLT" */ - 0x5F,0x7B,0x61,0x0A,0x0F,0x45,0x56,0x54, /* 00001108 "_{a..EVT" */ - 0x5F,0x70,0x53,0x4C,0x54,0x5F,0x44,0x50, /* 00001110 "_pSLT_DP" */ - 0x54,0x31,0x70,0x45,0x56,0x54,0x5F,0x44, /* 00001118 "T1pEVT_D" */ - 0x50,0x54,0x32,0xA0,0x1B,0x93,0x53,0x4C, /* 00001120 "PT2...SL" */ - 0x54,0x5F,0x01,0x86,0x5C,0x2F,0x03,0x5F, /* 00001128 "T_..\/._" */ - 0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53, /* 00001130 "SB_PCI0S" */ - 0x31,0x46,0x30,0x45,0x56,0x54,0x5F,0xA1, /* 00001138 "1F0EVT_." */ - 0x1E,0xA0,0x1C,0x93,0x53,0x4C,0x54,0x5F, /* 00001140 "....SLT_" */ - 0x0A,0x02,0x86,0x5C,0x2F,0x03,0x5F,0x53, /* 00001148 "...\/._S" */ - 0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x32, /* 00001150 "B_PCI0S2" */ - 0x46,0x30,0x45,0x56,0x54,0x5F, + 0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00, /* 000001D8 "........" */ + 0x00,0x00,0x79,0x00,0x5B,0x82,0x8B,0x57, /* 000001E0 "..y.[..W" */ + 0x01,0x50,0x43,0x49,0x30,0x08,0x5F,0x48, /* 000001E8 ".PCI0._H" */ + 0x49,0x44,0x0C,0x41,0xD0,0x0A,0x03,0x08, /* 000001F0 "ID.A...." */ + 0x5F,0x55,0x49,0x44,0x00,0x08,0x5F,0x41, /* 000001F8 "_UID.._A" */ + 0x44,0x52,0x00,0x08,0x5F,0x42,0x42,0x4E, /* 00000200 "DR.._BBN" */ + 0x00,0x5B,0x82,0x2A,0x48,0x50,0x30,0x5F, /* 00000208 ".[.*HP0_" */ + 0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0, /* 00000210 "._HID.A." */ + 0x0C,0x02,0x08,0x5F,0x43,0x52,0x53,0x11, /* 00000218 "..._CRS." */ + 0x15,0x0A,0x12,0x47,0x01,0xC0,0x10,0xC0, /* 00000220 "...G...." */ + 0x10,0x00,0x03,0x47,0x01,0x44,0xB0,0x44, /* 00000228 "...G.D.D" */ + 0xB0,0x00,0x04,0x79,0x00,0x14,0x4E,0x0C, /* 00000230 "...y..N." */ + 0x5F,0x43,0x52,0x53,0x00,0x08,0x50,0x52, /* 00000238 "_CRS..PR" */ + 0x54,0x30,0x11,0x42,0x07,0x0A,0x6E,0x88, /* 00000240 "T0.B..n." */ + 0x0D,0x00,0x02,0x0E,0x00,0x00,0x00,0x00, /* 00000248 "........" */ + 0x00,0xFF,0x00,0x00,0x00,0x00,0x01,0x47, /* 00000250 ".......G" */ + 0x01,0xF8,0x0C,0xF8,0x0C,0x01,0x08,0x88, /* 00000258 "........" */ + 0x0D,0x00,0x01,0x0C,0x03,0x00,0x00,0x00, /* 00000260 "........" */ + 0x00,0xF7,0x0C,0x00,0x00,0xF8,0x0C,0x88, /* 00000268 "........" */ + 0x0D,0x00,0x01,0x0C,0x03,0x00,0x00,0x00, /* 00000270 "........" */ + 0x0D,0xFF,0xFF,0x00,0x00,0x00,0xF3,0x87, /* 00000278 "........" */ + 0x17,0x00,0x00,0x0C,0x03,0x00,0x00,0x00, /* 00000280 "........" */ + 0x00,0x00,0x00,0x0A,0x00,0xFF,0xFF,0x0B, /* 00000288 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02, /* 00000290 "........" */ + 0x00,0x87,0x17,0x00,0x00,0x0C,0x03,0x00, /* 00000298 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF, /* 000002A0 "........" */ + 0xFF,0xFF,0xF4,0x00,0x00,0x00,0x00,0x00, /* 000002A8 "........" */ + 0x00,0x00,0x05,0x79,0x00,0x8A,0x50,0x52, /* 000002B0 "...y..PR" */ + 0x54,0x30,0x0A,0x5C,0x4D,0x4D,0x49,0x4E, /* 000002B8 "T0.\MMIN" */ + 0x8A,0x50,0x52,0x54,0x30,0x0A,0x60,0x4D, /* 000002C0 ".PRT0.`M" */ + 0x4D,0x41,0x58,0x8A,0x50,0x52,0x54,0x30, /* 000002C8 "MAX.PRT0" */ + 0x0A,0x68,0x4D,0x4C,0x45,0x4E,0x70,0x50, /* 000002D0 ".hMLENpP" */ + 0x4D,0x49,0x4E,0x4D,0x4D,0x49,0x4E,0x70, /* 000002D8 "MINMMINp" */ + 0x50,0x4C,0x45,0x4E,0x4D,0x4C,0x45,0x4E, /* 000002E0 "PLENMLEN" */ + 0x72,0x4D,0x4D,0x49,0x4E,0x4D,0x4C,0x45, /* 000002E8 "rMMINMLE" */ + 0x4E,0x4D,0x4D,0x41,0x58,0x74,0x4D,0x4D, /* 000002F0 "NMMAXtMM" */ + 0x41,0x58,0x01,0x4D,0x4D,0x41,0x58,0xA4, /* 000002F8 "AX.MMAX." */ + 0x50,0x52,0x54,0x30,0x08,0x42,0x55,0x46, /* 00000300 "PRT0.BUF" */ + 0x41,0x11,0x09,0x0A,0x06,0x23,0x20,0x0C, /* 00000308 "A....# ." */ + 0x18,0x79,0x00,0x08,0x42,0x55,0x46,0x42, /* 00000310 ".y..BUFB" */ + 0x11,0x09,0x0A,0x06,0x23,0x00,0x00,0x18, /* 00000318 "....#..." */ + 0x79,0x00,0x8B,0x42,0x55,0x46,0x42,0x01, /* 00000320 "y..BUFB." */ + 0x49,0x52,0x51,0x56,0x5B,0x82,0x48,0x08, /* 00000328 "IRQV[.H." */ + 0x4C,0x4E,0x4B,0x41,0x08,0x5F,0x48,0x49, /* 00000330 "LNKA._HI" */ + 0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F, /* 00000338 "D.A...._" */ + 0x55,0x49,0x44,0x01,0x14,0x1C,0x5F,0x53, /* 00000340 "UID..._S" */ + 0x54,0x41,0x00,0x7B,0x50,0x49,0x52,0x41, /* 00000348 "TA.{PIRA" */ + 0x0A,0x80,0x60,0xA0,0x08,0x93,0x60,0x0A, /* 00000350 "..`...`." */ + 0x80,0xA4,0x0A,0x09,0xA1,0x04,0xA4,0x0A, /* 00000358 "........" */ + 0x0B,0x14,0x0B,0x5F,0x50,0x52,0x53,0x00, /* 00000360 "..._PRS." */ + 0xA4,0x42,0x55,0x46,0x41,0x14,0x11,0x5F, /* 00000368 ".BUFA.._" */ + 0x44,0x49,0x53,0x00,0x7D,0x50,0x49,0x52, /* 00000370 "DIS.}PIR" */ + 0x41,0x0A,0x80,0x50,0x49,0x52,0x41,0x14, /* 00000378 "A..PIRA." */ + 0x1A,0x5F,0x43,0x52,0x53,0x00,0x7B,0x50, /* 00000380 "._CRS.{P" */ + 0x49,0x52,0x41,0x0A,0x0F,0x60,0x79,0x01, /* 00000388 "IRA..`y." */ + 0x60,0x49,0x52,0x51,0x56,0xA4,0x42,0x55, /* 00000390 "`IRQV.BU" */ + 0x46,0x42,0x14,0x1B,0x5F,0x53,0x52,0x53, /* 00000398 "FB.._SRS" */ + 0x01,0x8B,0x68,0x01,0x49,0x52,0x51,0x31, /* 000003A0 "..h.IRQ1" */ + 0x82,0x49,0x52,0x51,0x31,0x60,0x76,0x60, /* 000003A8 ".IRQ1`v`" */ + 0x70,0x60,0x50,0x49,0x52,0x41,0x5B,0x82, /* 000003B0 "p`PIRA[." */ + 0x49,0x08,0x4C,0x4E,0x4B,0x42,0x08,0x5F, /* 000003B8 "I.LNKB._" */ + 0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0F, /* 000003C0 "HID.A..." */ + 0x08,0x5F,0x55,0x49,0x44,0x0A,0x02,0x14, /* 000003C8 "._UID..." */ + 0x1C,0x5F,0x53,0x54,0x41,0x00,0x7B,0x50, /* 000003D0 "._STA.{P" */ + 0x49,0x52,0x42,0x0A,0x80,0x60,0xA0,0x08, /* 000003D8 "IRB..`.." */ + 0x93,0x60,0x0A,0x80,0xA4,0x0A,0x09,0xA1, /* 000003E0 ".`......" */ + 0x04,0xA4,0x0A,0x0B,0x14,0x0B,0x5F,0x50, /* 000003E8 "......_P" */ + 0x52,0x53,0x00,0xA4,0x42,0x55,0x46,0x41, /* 000003F0 "RS..BUFA" */ + 0x14,0x11,0x5F,0x44,0x49,0x53,0x00,0x7D, /* 000003F8 ".._DIS.}" */ + 0x50,0x49,0x52,0x42,0x0A,0x80,0x50,0x49, /* 00000400 "PIRB..PI" */ + 0x52,0x42,0x14,0x1A,0x5F,0x43,0x52,0x53, /* 00000408 "RB.._CRS" */ + 0x00,0x7B,0x50,0x49,0x52,0x42,0x0A,0x0F, /* 00000410 ".{PIRB.." */ + 0x60,0x79,0x01,0x60,0x49,0x52,0x51,0x56, /* 00000418 "`y.`IRQV" */ + 0xA4,0x42,0x55,0x46,0x42,0x14,0x1B,0x5F, /* 00000420 ".BUFB.._" */ + 0x53,0x52,0x53,0x01,0x8B,0x68,0x01,0x49, /* 00000428 "SRS..h.I" */ + 0x52,0x51,0x31,0x82,0x49,0x52,0x51,0x31, /* 00000430 "RQ1.IRQ1" */ + 0x60,0x76,0x60,0x70,0x60,0x50,0x49,0x52, /* 00000438 "`v`p`PIR" */ + 0x42,0x5B,0x82,0x49,0x08,0x4C,0x4E,0x4B, /* 00000440 "B[.I.LNK" */ + 0x43,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 00000448 "C._HID.A" */ + 0xD0,0x0C,0x0F,0x08,0x5F,0x55,0x49,0x44, /* 00000450 "...._UID" */ + 0x0A,0x03,0x14,0x1C,0x5F,0x53,0x54,0x41, /* 00000458 "...._STA" */ + 0x00,0x7B,0x50,0x49,0x52,0x43,0x0A,0x80, /* 00000460 ".{PIRC.." */ + 0x60,0xA0,0x08,0x93,0x60,0x0A,0x80,0xA4, /* 00000468 "`...`..." */ + 0x0A,0x09,0xA1,0x04,0xA4,0x0A,0x0B,0x14, /* 00000470 "........" */ + 0x0B,0x5F,0x50,0x52,0x53,0x00,0xA4,0x42, /* 00000478 "._PRS..B" */ + 0x55,0x46,0x41,0x14,0x11,0x5F,0x44,0x49, /* 00000480 "UFA.._DI" */ + 0x53,0x00,0x7D,0x50,0x49,0x52,0x43,0x0A, /* 00000488 "S.}PIRC." */ + 0x80,0x50,0x49,0x52,0x43,0x14,0x1A,0x5F, /* 00000490 ".PIRC.._" */ + 0x43,0x52,0x53,0x00,0x7B,0x50,0x49,0x52, /* 00000498 "CRS.{PIR" */ + 0x43,0x0A,0x0F,0x60,0x79,0x01,0x60,0x49, /* 000004A0 "C..`y.`I" */ + 0x52,0x51,0x56,0xA4,0x42,0x55,0x46,0x42, /* 000004A8 "RQV.BUFB" */ + 0x14,0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B, /* 000004B0 ".._SRS.." */ + 0x68,0x01,0x49,0x52,0x51,0x31,0x82,0x49, /* 000004B8 "h.IRQ1.I" */ + 0x52,0x51,0x31,0x60,0x76,0x60,0x70,0x60, /* 000004C0 "RQ1`v`p`" */ + 0x50,0x49,0x52,0x43,0x5B,0x82,0x49,0x08, /* 000004C8 "PIRC[.I." */ + 0x4C,0x4E,0x4B,0x44,0x08,0x5F,0x48,0x49, /* 000004D0 "LNKD._HI" */ + 0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F, /* 000004D8 "D.A...._" */ + 0x55,0x49,0x44,0x0A,0x04,0x14,0x1C,0x5F, /* 000004E0 "UID...._" */ + 0x53,0x54,0x41,0x00,0x7B,0x50,0x49,0x52, /* 000004E8 "STA.{PIR" */ + 0x44,0x0A,0x80,0x60,0xA0,0x08,0x93,0x60, /* 000004F0 "D..`...`" */ + 0x0A,0x80,0xA4,0x0A,0x09,0xA1,0x04,0xA4, /* 000004F8 "........" */ + 0x0A,0x0B,0x14,0x0B,0x5F,0x50,0x52,0x53, /* 00000500 "...._PRS" */ + 0x00,0xA4,0x42,0x55,0x46,0x41,0x14,0x11, /* 00000508 "..BUFA.." */ + 0x5F,0x44,0x49,0x53,0x00,0x7D,0x50,0x49, /* 00000510 "_DIS.}PI" */ + 0x52,0x44,0x0A,0x80,0x50,0x49,0x52,0x44, /* 00000518 "RD..PIRD" */ + 0x14,0x1A,0x5F,0x43,0x52,0x53,0x00,0x7B, /* 00000520 ".._CRS.{" */ + 0x50,0x49,0x52,0x44,0x0A,0x0F,0x60,0x79, /* 00000528 "PIRD..`y" */ + 0x01,0x60,0x49,0x52,0x51,0x56,0xA4,0x42, /* 00000530 ".`IRQV.B" */ + 0x55,0x46,0x42,0x14,0x1B,0x5F,0x53,0x52, /* 00000538 "UFB.._SR" */ + 0x53,0x01,0x8B,0x68,0x01,0x49,0x52,0x51, /* 00000540 "S..h.IRQ" */ + 0x31,0x82,0x49,0x52,0x51,0x31,0x60,0x76, /* 00000548 "1.IRQ1`v" */ + 0x60,0x70,0x60,0x50,0x49,0x52,0x44,0x5B, /* 00000550 "`p`PIRD[" */ + 0x82,0x44,0x05,0x48,0x50,0x45,0x54,0x08, /* 00000558 ".D.HPET." */ + 0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x01, /* 00000560 "_HID.A.." */ + 0x03,0x08,0x5F,0x55,0x49,0x44,0x00,0x14, /* 00000568 ".._UID.." */ + 0x18,0x5F,0x53,0x54,0x41,0x00,0xA0,0x0C, /* 00000570 "._STA..." */ + 0x93,0x5E,0x5E,0x5E,0x48,0x50,0x45,0x54, /* 00000578 ".^^^HPET" */ + 0x00,0xA4,0x00,0xA1,0x04,0xA4,0x0A,0x0F, /* 00000580 "........" */ + 0x08,0x5F,0x43,0x52,0x53,0x11,0x1F,0x0A, /* 00000588 "._CRS..." */ + 0x1C,0x87,0x17,0x00,0x00,0x0D,0x01,0x00, /* 00000590 "........" */ + 0x00,0x00,0x00,0x00,0x00,0xD0,0xFE,0xFF, /* 00000598 "........" */ + 0x03,0xD0,0xFE,0x00,0x00,0x00,0x00,0x00, /* 000005A0 "........" */ + 0x04,0x00,0x00,0x79,0x00,0x14,0x16,0x5F, /* 000005A8 "...y..._" */ + 0x50,0x52,0x54,0x00,0xA0,0x0A,0x50,0x49, /* 000005B0 "PRT...PI" */ + 0x43,0x44,0xA4,0x50,0x52,0x54,0x41,0xA4, /* 000005B8 "CD.PRTA." */ + 0x50,0x52,0x54,0x50,0x08,0x50,0x52,0x54, /* 000005C0 "PRTP.PRT" */ + 0x50,0x12,0x49,0x70,0x7C,0x12,0x0D,0x04, /* 000005C8 "P.Ip|..." */ + 0x0C,0xFF,0xFF,0x01,0x00,0x00,0x4C,0x4E, /* 000005D0 "......LN" */ + 0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 000005D8 "KB......" */ + 0xFF,0x01,0x00,0x01,0x4C,0x4E,0x4B,0x43, /* 000005E0 "....LNKC" */ + 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x01, /* 000005E8 "........" */ + 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00, /* 000005F0 "...LNKD." */ + 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x01,0x00, /* 000005F8 "........" */ + 0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 00000600 "..LNKA.." */ + 0x0D,0x04,0x0C,0xFF,0xFF,0x02,0x00,0x00, /* 00000608 "........" */ + 0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04, /* 00000610 "LNKC...." */ + 0x0C,0xFF,0xFF,0x02,0x00,0x01,0x4C,0x4E, /* 00000618 "......LN" */ + 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 00000620 "KD......" */ + 0xFF,0x02,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 00000628 ".....LNK" */ + 0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000630 "A......." */ + 0x02,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42, /* 00000638 "....LNKB" */ + 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x03, /* 00000640 "........" */ + 0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12, /* 00000648 "..LNKD.." */ + 0x0D,0x04,0x0C,0xFF,0xFF,0x03,0x00,0x01, /* 00000650 "........" */ + 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 00000658 "LNKA...." */ + 0x0C,0xFF,0xFF,0x03,0x00,0x0A,0x02,0x4C, /* 00000660 ".......L" */ + 0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C, /* 00000668 "NKB....." */ + 0xFF,0xFF,0x03,0x00,0x0A,0x03,0x4C,0x4E, /* 00000670 "......LN" */ + 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000678 "KC......" */ + 0xFF,0x04,0x00,0x00,0x4C,0x4E,0x4B,0x41, /* 00000680 "....LNKA" */ + 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x04, /* 00000688 "........" */ + 0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000690 "..LNKB.." */ + 0x0E,0x04,0x0C,0xFF,0xFF,0x04,0x00,0x0A, /* 00000698 "........" */ + 0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E, /* 000006A0 ".LNKC..." */ + 0x04,0x0C,0xFF,0xFF,0x04,0x00,0x0A,0x03, /* 000006A8 "........" */ + 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 000006B0 "LNKD...." */ + 0x0C,0xFF,0xFF,0x05,0x00,0x00,0x4C,0x4E, /* 000006B8 "......LN" */ + 0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 000006C0 "KB......" */ + 0xFF,0x05,0x00,0x01,0x4C,0x4E,0x4B,0x43, /* 000006C8 "....LNKC" */ + 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x05, /* 000006D0 "........" */ + 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00, /* 000006D8 "...LNKD." */ + 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x05,0x00, /* 000006E0 "........" */ + 0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 000006E8 "..LNKA.." */ + 0x0D,0x04,0x0C,0xFF,0xFF,0x06,0x00,0x00, /* 000006F0 "........" */ + 0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04, /* 000006F8 "LNKC...." */ + 0x0C,0xFF,0xFF,0x06,0x00,0x01,0x4C,0x4E, /* 00000700 "......LN" */ + 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 00000708 "KD......" */ + 0xFF,0x06,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 00000710 ".....LNK" */ + 0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000718 "A......." */ + 0x06,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42, /* 00000720 "....LNKB" */ + 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x07, /* 00000728 "........" */ + 0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12, /* 00000730 "..LNKD.." */ + 0x0D,0x04,0x0C,0xFF,0xFF,0x07,0x00,0x01, /* 00000738 "........" */ + 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 00000740 "LNKA...." */ + 0x0C,0xFF,0xFF,0x07,0x00,0x0A,0x02,0x4C, /* 00000748 ".......L" */ + 0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C, /* 00000750 "NKB....." */ + 0xFF,0xFF,0x07,0x00,0x0A,0x03,0x4C,0x4E, /* 00000758 "......LN" */ + 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000760 "KC......" */ + 0xFF,0x08,0x00,0x00,0x4C,0x4E,0x4B,0x41, /* 00000768 "....LNKA" */ + 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x08, /* 00000770 "........" */ + 0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000778 "..LNKB.." */ + 0x0E,0x04,0x0C,0xFF,0xFF,0x08,0x00,0x0A, /* 00000780 "........" */ + 0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E, /* 00000788 ".LNKC..." */ + 0x04,0x0C,0xFF,0xFF,0x08,0x00,0x0A,0x03, /* 00000790 "........" */ + 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 00000798 "LNKD...." */ + 0x0C,0xFF,0xFF,0x09,0x00,0x00,0x4C,0x4E, /* 000007A0 "......LN" */ + 0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 000007A8 "KB......" */ + 0xFF,0x09,0x00,0x01,0x4C,0x4E,0x4B,0x43, /* 000007B0 "....LNKC" */ + 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x09, /* 000007B8 "........" */ + 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00, /* 000007C0 "...LNKD." */ + 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x09,0x00, /* 000007C8 "........" */ + 0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 000007D0 "..LNKA.." */ + 0x0D,0x04,0x0C,0xFF,0xFF,0x0A,0x00,0x00, /* 000007D8 "........" */ + 0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04, /* 000007E0 "LNKC...." */ + 0x0C,0xFF,0xFF,0x0A,0x00,0x01,0x4C,0x4E, /* 000007E8 "......LN" */ + 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 000007F0 "KD......" */ + 0xFF,0x0A,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 000007F8 ".....LNK" */ + 0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000800 "A......." */ + 0x0A,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42, /* 00000808 "....LNKB" */ + 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x0B, /* 00000810 "........" */ + 0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12, /* 00000818 "..LNKD.." */ + 0x0D,0x04,0x0C,0xFF,0xFF,0x0B,0x00,0x01, /* 00000820 "........" */ + 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 00000828 "LNKA...." */ + 0x0C,0xFF,0xFF,0x0B,0x00,0x0A,0x02,0x4C, /* 00000830 ".......L" */ + 0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C, /* 00000838 "NKB....." */ + 0xFF,0xFF,0x0B,0x00,0x0A,0x03,0x4C,0x4E, /* 00000840 "......LN" */ + 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000848 "KC......" */ + 0xFF,0x0C,0x00,0x00,0x4C,0x4E,0x4B,0x41, /* 00000850 "....LNKA" */ + 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x0C, /* 00000858 "........" */ + 0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000860 "..LNKB.." */ + 0x0E,0x04,0x0C,0xFF,0xFF,0x0C,0x00,0x0A, /* 00000868 "........" */ + 0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E, /* 00000870 ".LNKC..." */ + 0x04,0x0C,0xFF,0xFF,0x0C,0x00,0x0A,0x03, /* 00000878 "........" */ + 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 00000880 "LNKD...." */ + 0x0C,0xFF,0xFF,0x0D,0x00,0x00,0x4C,0x4E, /* 00000888 "......LN" */ + 0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000890 "KB......" */ + 0xFF,0x0D,0x00,0x01,0x4C,0x4E,0x4B,0x43, /* 00000898 "....LNKC" */ + 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x0D, /* 000008A0 "........" */ + 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00, /* 000008A8 "...LNKD." */ + 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x0D,0x00, /* 000008B0 "........" */ + 0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 000008B8 "..LNKA.." */ + 0x0D,0x04,0x0C,0xFF,0xFF,0x0E,0x00,0x00, /* 000008C0 "........" */ + 0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04, /* 000008C8 "LNKC...." */ + 0x0C,0xFF,0xFF,0x0E,0x00,0x01,0x4C,0x4E, /* 000008D0 "......LN" */ + 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 000008D8 "KD......" */ + 0xFF,0x0E,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 000008E0 ".....LNK" */ + 0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 000008E8 "A......." */ + 0x0E,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42, /* 000008F0 "....LNKB" */ + 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x0F, /* 000008F8 "........" */ + 0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12, /* 00000900 "..LNKD.." */ + 0x0D,0x04,0x0C,0xFF,0xFF,0x0F,0x00,0x01, /* 00000908 "........" */ + 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 00000910 "LNKA...." */ + 0x0C,0xFF,0xFF,0x0F,0x00,0x0A,0x02,0x4C, /* 00000918 ".......L" */ + 0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C, /* 00000920 "NKB....." */ + 0xFF,0xFF,0x0F,0x00,0x0A,0x03,0x4C,0x4E, /* 00000928 "......LN" */ + 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000930 "KC......" */ + 0xFF,0x10,0x00,0x00,0x4C,0x4E,0x4B,0x41, /* 00000938 "....LNKA" */ + 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x10, /* 00000940 "........" */ + 0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000948 "..LNKB.." */ + 0x0E,0x04,0x0C,0xFF,0xFF,0x10,0x00,0x0A, /* 00000950 "........" */ + 0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E, /* 00000958 ".LNKC..." */ + 0x04,0x0C,0xFF,0xFF,0x10,0x00,0x0A,0x03, /* 00000960 "........" */ + 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 00000968 "LNKD...." */ + 0x0C,0xFF,0xFF,0x11,0x00,0x00,0x4C,0x4E, /* 00000970 "......LN" */ + 0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000978 "KB......" */ + 0xFF,0x11,0x00,0x01,0x4C,0x4E,0x4B,0x43, /* 00000980 "....LNKC" */ + 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x11, /* 00000988 "........" */ + 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00, /* 00000990 "...LNKD." */ + 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x11,0x00, /* 00000998 "........" */ + 0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 000009A0 "..LNKA.." */ + 0x0D,0x04,0x0C,0xFF,0xFF,0x12,0x00,0x00, /* 000009A8 "........" */ + 0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04, /* 000009B0 "LNKC...." */ + 0x0C,0xFF,0xFF,0x12,0x00,0x01,0x4C,0x4E, /* 000009B8 "......LN" */ + 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 000009C0 "KD......" */ + 0xFF,0x12,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 000009C8 ".....LNK" */ + 0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 000009D0 "A......." */ + 0x12,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42, /* 000009D8 "....LNKB" */ + 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x13, /* 000009E0 "........" */ + 0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12, /* 000009E8 "..LNKD.." */ + 0x0D,0x04,0x0C,0xFF,0xFF,0x13,0x00,0x01, /* 000009F0 "........" */ + 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 000009F8 "LNKA...." */ + 0x0C,0xFF,0xFF,0x13,0x00,0x0A,0x02,0x4C, /* 00000A00 ".......L" */ + 0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C, /* 00000A08 "NKB....." */ + 0xFF,0xFF,0x13,0x00,0x0A,0x03,0x4C,0x4E, /* 00000A10 "......LN" */ + 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000A18 "KC......" */ + 0xFF,0x14,0x00,0x00,0x4C,0x4E,0x4B,0x41, /* 00000A20 "....LNKA" */ + 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x14, /* 00000A28 "........" */ + 0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000A30 "..LNKB.." */ + 0x0E,0x04,0x0C,0xFF,0xFF,0x14,0x00,0x0A, /* 00000A38 "........" */ + 0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E, /* 00000A40 ".LNKC..." */ + 0x04,0x0C,0xFF,0xFF,0x14,0x00,0x0A,0x03, /* 00000A48 "........" */ + 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 00000A50 "LNKD...." */ + 0x0C,0xFF,0xFF,0x15,0x00,0x00,0x4C,0x4E, /* 00000A58 "......LN" */ + 0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000A60 "KB......" */ + 0xFF,0x15,0x00,0x01,0x4C,0x4E,0x4B,0x43, /* 00000A68 "....LNKC" */ + 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x15, /* 00000A70 "........" */ + 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00, /* 00000A78 "...LNKD." */ + 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x15,0x00, /* 00000A80 "........" */ + 0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 00000A88 "..LNKA.." */ + 0x0D,0x04,0x0C,0xFF,0xFF,0x16,0x00,0x00, /* 00000A90 "........" */ + 0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04, /* 00000A98 "LNKC...." */ + 0x0C,0xFF,0xFF,0x16,0x00,0x01,0x4C,0x4E, /* 00000AA0 "......LN" */ + 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 00000AA8 "KD......" */ + 0xFF,0x16,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 00000AB0 ".....LNK" */ + 0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000AB8 "A......." */ + 0x16,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42, /* 00000AC0 "....LNKB" */ + 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x17, /* 00000AC8 "........" */ + 0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12, /* 00000AD0 "..LNKD.." */ + 0x0D,0x04,0x0C,0xFF,0xFF,0x17,0x00,0x01, /* 00000AD8 "........" */ + 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 00000AE0 "LNKA...." */ + 0x0C,0xFF,0xFF,0x17,0x00,0x0A,0x02,0x4C, /* 00000AE8 ".......L" */ + 0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C, /* 00000AF0 "NKB....." */ + 0xFF,0xFF,0x17,0x00,0x0A,0x03,0x4C,0x4E, /* 00000AF8 "......LN" */ + 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000B00 "KC......" */ + 0xFF,0x18,0x00,0x00,0x4C,0x4E,0x4B,0x41, /* 00000B08 "....LNKA" */ + 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x18, /* 00000B10 "........" */ + 0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000B18 "..LNKB.." */ + 0x0E,0x04,0x0C,0xFF,0xFF,0x18,0x00,0x0A, /* 00000B20 "........" */ + 0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E, /* 00000B28 ".LNKC..." */ + 0x04,0x0C,0xFF,0xFF,0x18,0x00,0x0A,0x03, /* 00000B30 "........" */ + 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 00000B38 "LNKD...." */ + 0x0C,0xFF,0xFF,0x19,0x00,0x00,0x4C,0x4E, /* 00000B40 "......LN" */ + 0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000B48 "KB......" */ + 0xFF,0x19,0x00,0x01,0x4C,0x4E,0x4B,0x43, /* 00000B50 "....LNKC" */ + 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x19, /* 00000B58 "........" */ + 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00, /* 00000B60 "...LNKD." */ + 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x19,0x00, /* 00000B68 "........" */ + 0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 00000B70 "..LNKA.." */ + 0x0D,0x04,0x0C,0xFF,0xFF,0x1A,0x00,0x00, /* 00000B78 "........" */ + 0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04, /* 00000B80 "LNKC...." */ + 0x0C,0xFF,0xFF,0x1A,0x00,0x01,0x4C,0x4E, /* 00000B88 "......LN" */ + 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 00000B90 "KD......" */ + 0xFF,0x1A,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 00000B98 ".....LNK" */ + 0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000BA0 "A......." */ + 0x1A,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42, /* 00000BA8 "....LNKB" */ + 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x1B, /* 00000BB0 "........" */ + 0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12, /* 00000BB8 "..LNKD.." */ + 0x0D,0x04,0x0C,0xFF,0xFF,0x1B,0x00,0x01, /* 00000BC0 "........" */ + 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 00000BC8 "LNKA...." */ + 0x0C,0xFF,0xFF,0x1B,0x00,0x0A,0x02,0x4C, /* 00000BD0 ".......L" */ + 0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C, /* 00000BD8 "NKB....." */ + 0xFF,0xFF,0x1B,0x00,0x0A,0x03,0x4C,0x4E, /* 00000BE0 "......LN" */ + 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000BE8 "KC......" */ + 0xFF,0x1C,0x00,0x00,0x4C,0x4E,0x4B,0x41, /* 00000BF0 "....LNKA" */ + 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x1C, /* 00000BF8 "........" */ + 0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000C00 "..LNKB.." */ + 0x0E,0x04,0x0C,0xFF,0xFF,0x1C,0x00,0x0A, /* 00000C08 "........" */ + 0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E, /* 00000C10 ".LNKC..." */ + 0x04,0x0C,0xFF,0xFF,0x1C,0x00,0x0A,0x03, /* 00000C18 "........" */ + 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 00000C20 "LNKD...." */ + 0x0C,0xFF,0xFF,0x1D,0x00,0x00,0x4C,0x4E, /* 00000C28 "......LN" */ + 0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000C30 "KB......" */ + 0xFF,0x1D,0x00,0x01,0x4C,0x4E,0x4B,0x43, /* 00000C38 "....LNKC" */ + 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x1D, /* 00000C40 "........" */ + 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00, /* 00000C48 "...LNKD." */ + 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x1D,0x00, /* 00000C50 "........" */ + 0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 00000C58 "..LNKA.." */ + 0x0D,0x04,0x0C,0xFF,0xFF,0x1E,0x00,0x00, /* 00000C60 "........" */ + 0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04, /* 00000C68 "LNKC...." */ + 0x0C,0xFF,0xFF,0x1E,0x00,0x01,0x4C,0x4E, /* 00000C70 "......LN" */ + 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 00000C78 "KD......" */ + 0xFF,0x1E,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 00000C80 ".....LNK" */ + 0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000C88 "A......." */ + 0x1E,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42, /* 00000C90 "....LNKB" */ + 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x1F, /* 00000C98 "........" */ + 0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12, /* 00000CA0 "..LNKD.." */ + 0x0D,0x04,0x0C,0xFF,0xFF,0x1F,0x00,0x01, /* 00000CA8 "........" */ + 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 00000CB0 "LNKA...." */ + 0x0C,0xFF,0xFF,0x1F,0x00,0x0A,0x02,0x4C, /* 00000CB8 ".......L" */ + 0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C, /* 00000CC0 "NKB....." */ + 0xFF,0xFF,0x1F,0x00,0x0A,0x03,0x4C,0x4E, /* 00000CC8 "......LN" */ + 0x4B,0x43,0x00,0x08,0x50,0x52,0x54,0x41, /* 00000CD0 "KC..PRTA" */ + 0x12,0x41,0x61,0x7C,0x12,0x0B,0x04,0x0C, /* 00000CD8 ".Aa|...." */ + 0xFF,0xFF,0x01,0x00,0x00,0x00,0x0A,0x14, /* 00000CE0 "........" */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x01,0x00, /* 00000CE8 "........" */ + 0x01,0x00,0x0A,0x15,0x12,0x0C,0x04,0x0C, /* 00000CF0 "........" */ + 0xFF,0xFF,0x01,0x00,0x0A,0x02,0x00,0x0A, /* 00000CF8 "........" */ + 0x16,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x01, /* 00000D00 "........" */ + 0x00,0x0A,0x03,0x00,0x0A,0x17,0x12,0x0B, /* 00000D08 "........" */ + 0x04,0x0C,0xFF,0xFF,0x02,0x00,0x00,0x00, /* 00000D10 "........" */ + 0x0A,0x18,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000D18 "........" */ + 0x02,0x00,0x01,0x00,0x0A,0x19,0x12,0x0C, /* 00000D20 "........" */ + 0x04,0x0C,0xFF,0xFF,0x02,0x00,0x0A,0x02, /* 00000D28 "........" */ + 0x00,0x0A,0x1A,0x12,0x0C,0x04,0x0C,0xFF, /* 00000D30 "........" */ + 0xFF,0x02,0x00,0x0A,0x03,0x00,0x0A,0x1B, /* 00000D38 "........" */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x03,0x00, /* 00000D40 "........" */ + 0x00,0x00,0x0A,0x1C,0x12,0x0B,0x04,0x0C, /* 00000D48 "........" */ + 0xFF,0xFF,0x03,0x00,0x01,0x00,0x0A,0x1D, /* 00000D50 "........" */ + 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x03,0x00, /* 00000D58 "........" */ + 0x0A,0x02,0x00,0x0A,0x1E,0x12,0x0C,0x04, /* 00000D60 "........" */ + 0x0C,0xFF,0xFF,0x03,0x00,0x0A,0x03,0x00, /* 00000D68 "........" */ + 0x0A,0x1F,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000D70 "........" */ + 0x04,0x00,0x00,0x00,0x0A,0x20,0x12,0x0B, /* 00000D78 "..... .." */ + 0x04,0x0C,0xFF,0xFF,0x04,0x00,0x01,0x00, /* 00000D80 "........" */ + 0x0A,0x21,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 00000D88 ".!......" */ + 0x04,0x00,0x0A,0x02,0x00,0x0A,0x22,0x12, /* 00000D90 "......"." */ + 0x0C,0x04,0x0C,0xFF,0xFF,0x04,0x00,0x0A, /* 00000D98 "........" */ + 0x03,0x00,0x0A,0x23,0x12,0x0B,0x04,0x0C, /* 00000DA0 "...#...." */ + 0xFF,0xFF,0x05,0x00,0x00,0x00,0x0A,0x24, /* 00000DA8 ".......$" */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x05,0x00, /* 00000DB0 "........" */ + 0x01,0x00,0x0A,0x25,0x12,0x0C,0x04,0x0C, /* 00000DB8 "...%...." */ + 0xFF,0xFF,0x05,0x00,0x0A,0x02,0x00,0x0A, /* 00000DC0 "........" */ + 0x26,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x05, /* 00000DC8 "&......." */ + 0x00,0x0A,0x03,0x00,0x0A,0x27,0x12,0x0B, /* 00000DD0 ".....'.." */ + 0x04,0x0C,0xFF,0xFF,0x06,0x00,0x00,0x00, /* 00000DD8 "........" */ + 0x0A,0x28,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000DE0 ".(......" */ + 0x06,0x00,0x01,0x00,0x0A,0x29,0x12,0x0C, /* 00000DE8 ".....).." */ + 0x04,0x0C,0xFF,0xFF,0x06,0x00,0x0A,0x02, /* 00000DF0 "........" */ + 0x00,0x0A,0x2A,0x12,0x0C,0x04,0x0C,0xFF, /* 00000DF8 "..*....." */ + 0xFF,0x06,0x00,0x0A,0x03,0x00,0x0A,0x2B, /* 00000E00 ".......+" */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x07,0x00, /* 00000E08 "........" */ + 0x00,0x00,0x0A,0x2C,0x12,0x0B,0x04,0x0C, /* 00000E10 "...,...." */ + 0xFF,0xFF,0x07,0x00,0x01,0x00,0x0A,0x2D, /* 00000E18 ".......-" */ + 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x07,0x00, /* 00000E20 "........" */ + 0x0A,0x02,0x00,0x0A,0x2E,0x12,0x0C,0x04, /* 00000E28 "........" */ + 0x0C,0xFF,0xFF,0x07,0x00,0x0A,0x03,0x00, /* 00000E30 "........" */ + 0x0A,0x2F,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000E38 "./......" */ + 0x08,0x00,0x00,0x00,0x0A,0x11,0x12,0x0B, /* 00000E40 "........" */ + 0x04,0x0C,0xFF,0xFF,0x08,0x00,0x01,0x00, /* 00000E48 "........" */ + 0x0A,0x12,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 00000E50 "........" */ + 0x08,0x00,0x0A,0x02,0x00,0x0A,0x13,0x12, /* 00000E58 "........" */ + 0x0C,0x04,0x0C,0xFF,0xFF,0x08,0x00,0x0A, /* 00000E60 "........" */ + 0x03,0x00,0x0A,0x14,0x12,0x0B,0x04,0x0C, /* 00000E68 "........" */ + 0xFF,0xFF,0x09,0x00,0x00,0x00,0x0A,0x15, /* 00000E70 "........" */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x09,0x00, /* 00000E78 "........" */ + 0x01,0x00,0x0A,0x16,0x12,0x0C,0x04,0x0C, /* 00000E80 "........" */ + 0xFF,0xFF,0x09,0x00,0x0A,0x02,0x00,0x0A, /* 00000E88 "........" */ + 0x17,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x09, /* 00000E90 "........" */ + 0x00,0x0A,0x03,0x00,0x0A,0x18,0x12,0x0B, /* 00000E98 "........" */ + 0x04,0x0C,0xFF,0xFF,0x0A,0x00,0x00,0x00, /* 00000EA0 "........" */ + 0x0A,0x19,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000EA8 "........" */ + 0x0A,0x00,0x01,0x00,0x0A,0x1A,0x12,0x0C, /* 00000EB0 "........" */ + 0x04,0x0C,0xFF,0xFF,0x0A,0x00,0x0A,0x02, /* 00000EB8 "........" */ + 0x00,0x0A,0x1B,0x12,0x0C,0x04,0x0C,0xFF, /* 00000EC0 "........" */ + 0xFF,0x0A,0x00,0x0A,0x03,0x00,0x0A,0x1C, /* 00000EC8 "........" */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x0B,0x00, /* 00000ED0 "........" */ + 0x00,0x00,0x0A,0x1D,0x12,0x0B,0x04,0x0C, /* 00000ED8 "........" */ + 0xFF,0xFF,0x0B,0x00,0x01,0x00,0x0A,0x1E, /* 00000EE0 "........" */ + 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x0B,0x00, /* 00000EE8 "........" */ + 0x0A,0x02,0x00,0x0A,0x1F,0x12,0x0C,0x04, /* 00000EF0 "........" */ + 0x0C,0xFF,0xFF,0x0B,0x00,0x0A,0x03,0x00, /* 00000EF8 "........" */ + 0x0A,0x20,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000F00 ". ......" */ + 0x0C,0x00,0x00,0x00,0x0A,0x21,0x12,0x0B, /* 00000F08 ".....!.." */ + 0x04,0x0C,0xFF,0xFF,0x0C,0x00,0x01,0x00, /* 00000F10 "........" */ + 0x0A,0x22,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 00000F18 "."......" */ + 0x0C,0x00,0x0A,0x02,0x00,0x0A,0x23,0x12, /* 00000F20 "......#." */ + 0x0C,0x04,0x0C,0xFF,0xFF,0x0C,0x00,0x0A, /* 00000F28 "........" */ + 0x03,0x00,0x0A,0x24,0x12,0x0B,0x04,0x0C, /* 00000F30 "...$...." */ + 0xFF,0xFF,0x0D,0x00,0x00,0x00,0x0A,0x25, /* 00000F38 ".......%" */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x0D,0x00, /* 00000F40 "........" */ + 0x01,0x00,0x0A,0x26,0x12,0x0C,0x04,0x0C, /* 00000F48 "...&...." */ + 0xFF,0xFF,0x0D,0x00,0x0A,0x02,0x00,0x0A, /* 00000F50 "........" */ + 0x27,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x0D, /* 00000F58 "'......." */ + 0x00,0x0A,0x03,0x00,0x0A,0x28,0x12,0x0B, /* 00000F60 ".....(.." */ + 0x04,0x0C,0xFF,0xFF,0x0E,0x00,0x00,0x00, /* 00000F68 "........" */ + 0x0A,0x29,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000F70 ".)......" */ + 0x0E,0x00,0x01,0x00,0x0A,0x2A,0x12,0x0C, /* 00000F78 ".....*.." */ + 0x04,0x0C,0xFF,0xFF,0x0E,0x00,0x0A,0x02, /* 00000F80 "........" */ + 0x00,0x0A,0x2B,0x12,0x0C,0x04,0x0C,0xFF, /* 00000F88 "..+....." */ + 0xFF,0x0E,0x00,0x0A,0x03,0x00,0x0A,0x2C, /* 00000F90 ".......," */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x0F,0x00, /* 00000F98 "........" */ + 0x00,0x00,0x0A,0x2D,0x12,0x0B,0x04,0x0C, /* 00000FA0 "...-...." */ + 0xFF,0xFF,0x0F,0x00,0x01,0x00,0x0A,0x2E, /* 00000FA8 "........" */ + 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x0F,0x00, /* 00000FB0 "........" */ + 0x0A,0x02,0x00,0x0A,0x2F,0x12,0x0C,0x04, /* 00000FB8 "..../..." */ + 0x0C,0xFF,0xFF,0x0F,0x00,0x0A,0x03,0x00, /* 00000FC0 "........" */ + 0x0A,0x10,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000FC8 "........" */ + 0x10,0x00,0x00,0x00,0x0A,0x12,0x12,0x0B, /* 00000FD0 "........" */ + 0x04,0x0C,0xFF,0xFF,0x10,0x00,0x01,0x00, /* 00000FD8 "........" */ + 0x0A,0x13,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 00000FE0 "........" */ + 0x10,0x00,0x0A,0x02,0x00,0x0A,0x14,0x12, /* 00000FE8 "........" */ + 0x0C,0x04,0x0C,0xFF,0xFF,0x10,0x00,0x0A, /* 00000FF0 "........" */ + 0x03,0x00,0x0A,0x15,0x12,0x0B,0x04,0x0C, /* 00000FF8 "........" */ + 0xFF,0xFF,0x11,0x00,0x00,0x00,0x0A,0x16, /* 00001000 "........" */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x11,0x00, /* 00001008 "........" */ + 0x01,0x00,0x0A,0x17,0x12,0x0C,0x04,0x0C, /* 00001010 "........" */ + 0xFF,0xFF,0x11,0x00,0x0A,0x02,0x00,0x0A, /* 00001018 "........" */ + 0x18,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x11, /* 00001020 "........" */ + 0x00,0x0A,0x03,0x00,0x0A,0x19,0x12,0x0B, /* 00001028 "........" */ + 0x04,0x0C,0xFF,0xFF,0x12,0x00,0x00,0x00, /* 00001030 "........" */ + 0x0A,0x1A,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00001038 "........" */ + 0x12,0x00,0x01,0x00,0x0A,0x1B,0x12,0x0C, /* 00001040 "........" */ + 0x04,0x0C,0xFF,0xFF,0x12,0x00,0x0A,0x02, /* 00001048 "........" */ + 0x00,0x0A,0x1C,0x12,0x0C,0x04,0x0C,0xFF, /* 00001050 "........" */ + 0xFF,0x12,0x00,0x0A,0x03,0x00,0x0A,0x1D, /* 00001058 "........" */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x13,0x00, /* 00001060 "........" */ + 0x00,0x00,0x0A,0x1E,0x12,0x0B,0x04,0x0C, /* 00001068 "........" */ + 0xFF,0xFF,0x13,0x00,0x01,0x00,0x0A,0x1F, /* 00001070 "........" */ + 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x13,0x00, /* 00001078 "........" */ + 0x0A,0x02,0x00,0x0A,0x20,0x12,0x0C,0x04, /* 00001080 ".... ..." */ + 0x0C,0xFF,0xFF,0x13,0x00,0x0A,0x03,0x00, /* 00001088 "........" */ + 0x0A,0x21,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00001090 ".!......" */ + 0x14,0x00,0x00,0x00,0x0A,0x22,0x12,0x0B, /* 00001098 ".....".." */ + 0x04,0x0C,0xFF,0xFF,0x14,0x00,0x01,0x00, /* 000010A0 "........" */ + 0x0A,0x23,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 000010A8 ".#......" */ + 0x14,0x00,0x0A,0x02,0x00,0x0A,0x24,0x12, /* 000010B0 "......$." */ + 0x0C,0x04,0x0C,0xFF,0xFF,0x14,0x00,0x0A, /* 000010B8 "........" */ + 0x03,0x00,0x0A,0x25,0x12,0x0B,0x04,0x0C, /* 000010C0 "...%...." */ + 0xFF,0xFF,0x15,0x00,0x00,0x00,0x0A,0x26, /* 000010C8 ".......&" */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x15,0x00, /* 000010D0 "........" */ + 0x01,0x00,0x0A,0x27,0x12,0x0C,0x04,0x0C, /* 000010D8 "...'...." */ + 0xFF,0xFF,0x15,0x00,0x0A,0x02,0x00,0x0A, /* 000010E0 "........" */ + 0x28,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x15, /* 000010E8 "(......." */ + 0x00,0x0A,0x03,0x00,0x0A,0x29,0x12,0x0B, /* 000010F0 ".....).." */ + 0x04,0x0C,0xFF,0xFF,0x16,0x00,0x00,0x00, /* 000010F8 "........" */ + 0x0A,0x2A,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00001100 ".*......" */ + 0x16,0x00,0x01,0x00,0x0A,0x2B,0x12,0x0C, /* 00001108 ".....+.." */ + 0x04,0x0C,0xFF,0xFF,0x16,0x00,0x0A,0x02, /* 00001110 "........" */ + 0x00,0x0A,0x2C,0x12,0x0C,0x04,0x0C,0xFF, /* 00001118 "..,....." */ + 0xFF,0x16,0x00,0x0A,0x03,0x00,0x0A,0x2D, /* 00001120 ".......-" */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x17,0x00, /* 00001128 "........" */ + 0x00,0x00,0x0A,0x2E,0x12,0x0B,0x04,0x0C, /* 00001130 "........" */ + 0xFF,0xFF,0x17,0x00,0x01,0x00,0x0A,0x2F, /* 00001138 "......./" */ + 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x17,0x00, /* 00001140 "........" */ + 0x0A,0x02,0x00,0x0A,0x10,0x12,0x0C,0x04, /* 00001148 "........" */ + 0x0C,0xFF,0xFF,0x17,0x00,0x0A,0x03,0x00, /* 00001150 "........" */ + 0x0A,0x11,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00001158 "........" */ + 0x18,0x00,0x00,0x00,0x0A,0x13,0x12,0x0B, /* 00001160 "........" */ + 0x04,0x0C,0xFF,0xFF,0x18,0x00,0x01,0x00, /* 00001168 "........" */ + 0x0A,0x14,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 00001170 "........" */ + 0x18,0x00,0x0A,0x02,0x00,0x0A,0x15,0x12, /* 00001178 "........" */ + 0x0C,0x04,0x0C,0xFF,0xFF,0x18,0x00,0x0A, /* 00001180 "........" */ + 0x03,0x00,0x0A,0x16,0x12,0x0B,0x04,0x0C, /* 00001188 "........" */ + 0xFF,0xFF,0x19,0x00,0x00,0x00,0x0A,0x17, /* 00001190 "........" */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x19,0x00, /* 00001198 "........" */ + 0x01,0x00,0x0A,0x18,0x12,0x0C,0x04,0x0C, /* 000011A0 "........" */ + 0xFF,0xFF,0x19,0x00,0x0A,0x02,0x00,0x0A, /* 000011A8 "........" */ + 0x19,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x19, /* 000011B0 "........" */ + 0x00,0x0A,0x03,0x00,0x0A,0x1A,0x12,0x0B, /* 000011B8 "........" */ + 0x04,0x0C,0xFF,0xFF,0x1A,0x00,0x00,0x00, /* 000011C0 "........" */ + 0x0A,0x1B,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 000011C8 "........" */ + 0x1A,0x00,0x01,0x00,0x0A,0x1C,0x12,0x0C, /* 000011D0 "........" */ + 0x04,0x0C,0xFF,0xFF,0x1A,0x00,0x0A,0x02, /* 000011D8 "........" */ + 0x00,0x0A,0x1D,0x12,0x0C,0x04,0x0C,0xFF, /* 000011E0 "........" */ + 0xFF,0x1A,0x00,0x0A,0x03,0x00,0x0A,0x1E, /* 000011E8 "........" */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x1B,0x00, /* 000011F0 "........" */ + 0x00,0x00,0x0A,0x1F,0x12,0x0B,0x04,0x0C, /* 000011F8 "........" */ + 0xFF,0xFF,0x1B,0x00,0x01,0x00,0x0A,0x20, /* 00001200 "....... " */ + 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x1B,0x00, /* 00001208 "........" */ + 0x0A,0x02,0x00,0x0A,0x21,0x12,0x0C,0x04, /* 00001210 "....!..." */ + 0x0C,0xFF,0xFF,0x1B,0x00,0x0A,0x03,0x00, /* 00001218 "........" */ + 0x0A,0x22,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00001220 "."......" */ + 0x1C,0x00,0x00,0x00,0x0A,0x23,0x12,0x0B, /* 00001228 ".....#.." */ + 0x04,0x0C,0xFF,0xFF,0x1C,0x00,0x01,0x00, /* 00001230 "........" */ + 0x0A,0x24,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 00001238 ".$......" */ + 0x1C,0x00,0x0A,0x02,0x00,0x0A,0x25,0x12, /* 00001240 "......%." */ + 0x0C,0x04,0x0C,0xFF,0xFF,0x1C,0x00,0x0A, /* 00001248 "........" */ + 0x03,0x00,0x0A,0x26,0x12,0x0B,0x04,0x0C, /* 00001250 "...&...." */ + 0xFF,0xFF,0x1D,0x00,0x00,0x00,0x0A,0x27, /* 00001258 ".......'" */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x1D,0x00, /* 00001260 "........" */ + 0x01,0x00,0x0A,0x28,0x12,0x0C,0x04,0x0C, /* 00001268 "...(...." */ + 0xFF,0xFF,0x1D,0x00,0x0A,0x02,0x00,0x0A, /* 00001270 "........" */ + 0x29,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x1D, /* 00001278 ")......." */ + 0x00,0x0A,0x03,0x00,0x0A,0x2A,0x12,0x0B, /* 00001280 ".....*.." */ + 0x04,0x0C,0xFF,0xFF,0x1E,0x00,0x00,0x00, /* 00001288 "........" */ + 0x0A,0x2B,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00001290 ".+......" */ + 0x1E,0x00,0x01,0x00,0x0A,0x2C,0x12,0x0C, /* 00001298 ".....,.." */ + 0x04,0x0C,0xFF,0xFF,0x1E,0x00,0x0A,0x02, /* 000012A0 "........" */ + 0x00,0x0A,0x2D,0x12,0x0C,0x04,0x0C,0xFF, /* 000012A8 "..-....." */ + 0xFF,0x1E,0x00,0x0A,0x03,0x00,0x0A,0x2E, /* 000012B0 "........" */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x1F,0x00, /* 000012B8 "........" */ + 0x00,0x00,0x0A,0x2F,0x12,0x0B,0x04,0x0C, /* 000012C0 ".../...." */ + 0xFF,0xFF,0x1F,0x00,0x01,0x00,0x0A,0x10, /* 000012C8 "........" */ + 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x1F,0x00, /* 000012D0 "........" */ + 0x0A,0x02,0x00,0x0A,0x11,0x12,0x0C,0x04, /* 000012D8 "........" */ + 0x0C,0xFF,0xFF,0x1F,0x00,0x0A,0x03,0x00, /* 000012E0 "........" */ + 0x0A,0x12,0x5B,0x82,0x46,0x37,0x49,0x53, /* 000012E8 "..[.F7IS" */ + 0x41,0x5F,0x08,0x5F,0x41,0x44,0x52,0x0C, /* 000012F0 "A_._ADR." */ + 0x00,0x00,0x01,0x00,0x5B,0x80,0x50,0x49, /* 000012F8 "....[.PI" */ + 0x52,0x51,0x02,0x0A,0x60,0x0A,0x04,0x10, /* 00001300 "RQ..`..." */ + 0x2E,0x5C,0x00,0x5B,0x81,0x29,0x5C,0x2F, /* 00001308 ".\.[.)\/" */ + 0x04,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00001310 "._SB_PCI" */ + 0x30,0x49,0x53,0x41,0x5F,0x50,0x49,0x52, /* 00001318 "0ISA_PIR" */ + 0x51,0x01,0x50,0x49,0x52,0x41,0x08,0x50, /* 00001320 "Q.PIRA.P" */ + 0x49,0x52,0x42,0x08,0x50,0x49,0x52,0x43, /* 00001328 "IRB.PIRC" */ + 0x08,0x50,0x49,0x52,0x44,0x08,0x5B,0x82, /* 00001330 ".PIRD.[." */ + 0x46,0x0B,0x53,0x59,0x53,0x52,0x08,0x5F, /* 00001338 "F.SYSR._" */ + 0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,0x02, /* 00001340 "HID.A..." */ + 0x08,0x5F,0x55,0x49,0x44,0x01,0x08,0x43, /* 00001348 "._UID..C" */ + 0x52,0x53,0x5F,0x11,0x4E,0x08,0x0A,0x8A, /* 00001350 "RS_.N..." */ + 0x47,0x01,0x10,0x00,0x10,0x00,0x00,0x10, /* 00001358 "G......." */ + 0x47,0x01,0x22,0x00,0x22,0x00,0x00,0x0C, /* 00001360 "G."."..." */ + 0x47,0x01,0x30,0x00,0x30,0x00,0x00,0x10, /* 00001368 "G.0.0..." */ + 0x47,0x01,0x44,0x00,0x44,0x00,0x00,0x1C, /* 00001370 "G.D.D..." */ + 0x47,0x01,0x62,0x00,0x62,0x00,0x00,0x02, /* 00001378 "G.b.b..." */ + 0x47,0x01,0x65,0x00,0x65,0x00,0x00,0x0B, /* 00001380 "G.e.e..." */ + 0x47,0x01,0x72,0x00,0x72,0x00,0x00,0x0E, /* 00001388 "G.r.r..." */ + 0x47,0x01,0x80,0x00,0x80,0x00,0x00,0x01, /* 00001390 "G......." */ + 0x47,0x01,0x84,0x00,0x84,0x00,0x00,0x03, /* 00001398 "G......." */ + 0x47,0x01,0x88,0x00,0x88,0x00,0x00,0x01, /* 000013A0 "G......." */ + 0x47,0x01,0x8C,0x00,0x8C,0x00,0x00,0x03, /* 000013A8 "G......." */ + 0x47,0x01,0x90,0x00,0x90,0x00,0x00,0x10, /* 000013B0 "G......." */ + 0x47,0x01,0xA2,0x00,0xA2,0x00,0x00,0x1C, /* 000013B8 "G......." */ + 0x47,0x01,0xE0,0x00,0xE0,0x00,0x00,0x10, /* 000013C0 "G......." */ + 0x47,0x01,0xA0,0x08,0xA0,0x08,0x00,0x04, /* 000013C8 "G......." */ + 0x47,0x01,0xC0,0x0C,0xC0,0x0C,0x00,0x10, /* 000013D0 "G......." */ + 0x47,0x01,0xD0,0x04,0xD0,0x04,0x00,0x02, /* 000013D8 "G......." */ + 0x79,0x00,0x14,0x0B,0x5F,0x43,0x52,0x53, /* 000013E0 "y..._CRS" */ + 0x00,0xA4,0x43,0x52,0x53,0x5F,0x5B,0x82, /* 000013E8 "..CRS_[." */ + 0x2B,0x50,0x49,0x43,0x5F,0x08,0x5F,0x48, /* 000013F0 "+PIC_._H" */ + 0x49,0x44,0x0B,0x41,0xD0,0x08,0x5F,0x43, /* 000013F8 "ID.A.._C" */ + 0x52,0x53,0x11,0x18,0x0A,0x15,0x47,0x01, /* 00001400 "RS....G." */ + 0x20,0x00,0x20,0x00,0x01,0x02,0x47,0x01, /* 00001408 " . ...G." */ + 0xA0,0x00,0xA0,0x00,0x01,0x02,0x22,0x04, /* 00001410 "......"." */ + 0x00,0x79,0x00,0x5B,0x82,0x47,0x05,0x44, /* 00001418 ".y.[.G.D" */ + 0x4D,0x41,0x30,0x08,0x5F,0x48,0x49,0x44, /* 00001420 "MA0._HID" */ + 0x0C,0x41,0xD0,0x02,0x00,0x08,0x5F,0x43, /* 00001428 ".A...._C" */ + 0x52,0x53,0x11,0x41,0x04,0x0A,0x3D,0x2A, /* 00001430 "RS.A..=*" */ + 0x10,0x04,0x47,0x01,0x00,0x00,0x00,0x00, /* 00001438 "..G....." */ + 0x00,0x10,0x47,0x01,0x81,0x00,0x81,0x00, /* 00001440 "..G....." */ + 0x00,0x03,0x47,0x01,0x87,0x00,0x87,0x00, /* 00001448 "..G....." */ + 0x00,0x01,0x47,0x01,0x89,0x00,0x89,0x00, /* 00001450 "..G....." */ + 0x00,0x03,0x47,0x01,0x8F,0x00,0x8F,0x00, /* 00001458 "..G....." */ + 0x00,0x01,0x47,0x01,0xC0,0x00,0xC0,0x00, /* 00001460 "..G....." */ + 0x00,0x20,0x47,0x01,0x80,0x04,0x80,0x04, /* 00001468 ". G....." */ + 0x00,0x10,0x79,0x00,0x5B,0x82,0x25,0x54, /* 00001470 "..y.[.%T" */ + 0x4D,0x52,0x5F,0x08,0x5F,0x48,0x49,0x44, /* 00001478 "MR_._HID" */ + 0x0C,0x41,0xD0,0x01,0x00,0x08,0x5F,0x43, /* 00001480 ".A...._C" */ + 0x52,0x53,0x11,0x10,0x0A,0x0D,0x47,0x01, /* 00001488 "RS....G." */ + 0x40,0x00,0x40,0x00,0x00,0x04,0x22,0x01, /* 00001490 "@.@..."." */ + 0x00,0x79,0x00,0x5B,0x82,0x25,0x52,0x54, /* 00001498 ".y.[.%RT" */ + 0x43,0x5F,0x08,0x5F,0x48,0x49,0x44,0x0C, /* 000014A0 "C_._HID." */ + 0x41,0xD0,0x0B,0x00,0x08,0x5F,0x43,0x52, /* 000014A8 "A...._CR" */ + 0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0x70, /* 000014B0 "S....G.p" */ + 0x00,0x70,0x00,0x00,0x02,0x22,0x00,0x01, /* 000014B8 ".p...".." */ + 0x79,0x00,0x5B,0x82,0x22,0x53,0x50,0x4B, /* 000014C0 "y.[."SPK" */ + 0x52,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 000014C8 "R._HID.A" */ + 0xD0,0x08,0x00,0x08,0x5F,0x43,0x52,0x53, /* 000014D0 "...._CRS" */ + 0x11,0x0D,0x0A,0x0A,0x47,0x01,0x61,0x00, /* 000014D8 "....G.a." */ + 0x61,0x00,0x00,0x01,0x79,0x00,0x5B,0x82, /* 000014E0 "a...y.[." */ + 0x31,0x50,0x53,0x32,0x4D,0x08,0x5F,0x48, /* 000014E8 "1PS2M._H" */ + 0x49,0x44,0x0C,0x41,0xD0,0x0F,0x13,0x08, /* 000014F0 "ID.A...." */ + 0x5F,0x43,0x49,0x44,0x0C,0x41,0xD0,0x0F, /* 000014F8 "_CID.A.." */ + 0x13,0x14,0x09,0x5F,0x53,0x54,0x41,0x00, /* 00001500 "..._STA." */ + 0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52,0x53, /* 00001508 "...._CRS" */ + 0x11,0x08,0x0A,0x05,0x22,0x00,0x10,0x79, /* 00001510 "...."..y" */ + 0x00,0x5B,0x82,0x42,0x04,0x50,0x53,0x32, /* 00001518 ".[.B.PS2" */ + 0x4B,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 00001520 "K._HID.A" */ + 0xD0,0x03,0x03,0x08,0x5F,0x43,0x49,0x44, /* 00001528 "...._CID" */ + 0x0C,0x41,0xD0,0x03,0x0B,0x14,0x09,0x5F, /* 00001530 ".A....._" */ + 0x53,0x54,0x41,0x00,0xA4,0x0A,0x0F,0x08, /* 00001538 "STA....." */ + 0x5F,0x43,0x52,0x53,0x11,0x18,0x0A,0x15, /* 00001540 "_CRS...." */ + 0x47,0x01,0x60,0x00,0x60,0x00,0x00,0x01, /* 00001548 "G.`.`..." */ + 0x47,0x01,0x64,0x00,0x64,0x00,0x00,0x01, /* 00001550 "G.d.d..." */ + 0x22,0x02,0x00,0x79,0x00,0x5B,0x82,0x3A, /* 00001558 ""..y.[.:" */ + 0x46,0x44,0x43,0x30,0x08,0x5F,0x48,0x49, /* 00001560 "FDC0._HI" */ + 0x44,0x0C,0x41,0xD0,0x07,0x00,0x14,0x09, /* 00001568 "D.A....." */ + 0x5F,0x53,0x54,0x41,0x00,0xA4,0x0A,0x0F, /* 00001570 "_STA...." */ + 0x08,0x5F,0x43,0x52,0x53,0x11,0x1B,0x0A, /* 00001578 "._CRS..." */ + 0x18,0x47,0x01,0xF0,0x03,0xF0,0x03,0x01, /* 00001580 ".G......" */ + 0x06,0x47,0x01,0xF7,0x03,0xF7,0x03,0x01, /* 00001588 ".G......" */ + 0x01,0x22,0x40,0x00,0x2A,0x04,0x00,0x79, /* 00001590 "."@.*..y" */ + 0x00,0x5B,0x82,0x46,0x04,0x55,0x41,0x52, /* 00001598 ".[.F.UAR" */ + 0x31,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 000015A0 "1._HID.A" */ + 0xD0,0x05,0x01,0x08,0x5F,0x55,0x49,0x44, /* 000015A8 "...._UID" */ + 0x01,0x14,0x19,0x5F,0x53,0x54,0x41,0x00, /* 000015B0 "..._STA." */ + 0xA0,0x0D,0x93,0x5E,0x5E,0x5E,0x5E,0x55, /* 000015B8 "...^^^^U" */ + 0x41,0x52,0x31,0x00,0xA4,0x00,0xA1,0x04, /* 000015C0 "AR1....." */ + 0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52,0x53, /* 000015C8 "...._CRS" */ + 0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8,0x03, /* 000015D0 "....G..." */ + 0xF8,0x03,0x08,0x08,0x22,0x10,0x00,0x79, /* 000015D8 "...."..y" */ + 0x00,0x5B,0x82,0x47,0x04,0x55,0x41,0x52, /* 000015E0 ".[.G.UAR" */ + 0x32,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 000015E8 "2._HID.A" */ + 0xD0,0x05,0x01,0x08,0x5F,0x55,0x49,0x44, /* 000015F0 "...._UID" */ + 0x0A,0x02,0x14,0x19,0x5F,0x53,0x54,0x41, /* 000015F8 "...._STA" */ + 0x00,0xA0,0x0D,0x93,0x5E,0x5E,0x5E,0x5E, /* 00001600 "....^^^^" */ + 0x55,0x41,0x52,0x32,0x00,0xA4,0x00,0xA1, /* 00001608 "UAR2...." */ + 0x04,0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52, /* 00001610 "....._CR" */ + 0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8, /* 00001618 "S....G.." */ + 0x02,0xF8,0x02,0x08,0x08,0x22,0x08,0x00, /* 00001620 ".....".." */ + 0x79,0x00,0x5B,0x82,0x36,0x4C,0x54,0x50, /* 00001628 "y.[.6LTP" */ + 0x31,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 00001630 "1._HID.A" */ + 0xD0,0x04,0x00,0x08,0x5F,0x55,0x49,0x44, /* 00001638 "...._UID" */ + 0x0A,0x02,0x14,0x09,0x5F,0x53,0x54,0x41, /* 00001640 "...._STA" */ + 0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52, /* 00001648 "....._CR" */ + 0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0x78, /* 00001650 "S....G.x" */ + 0x03,0x78,0x03,0x08,0x08,0x22,0x80,0x00, /* 00001658 ".x...".." */ + 0x79,0x00,0x5B,0x82,0x4D,0x07,0x53,0x31, /* 00001660 "y.[.M.S1" */ + 0x46,0x30,0x08,0x5F,0x41,0x44,0x52,0x0C, /* 00001668 "F0._ADR." */ + 0x00,0x00,0x06,0x00,0x08,0x5F,0x53,0x55, /* 00001670 "....._SU" */ + 0x4E,0x01,0x14,0x13,0x5F,0x50,0x53,0x30, /* 00001678 "N..._PS0" */ + 0x00,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 00001680 ".p..\._G" */ + 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x13, /* 00001688 "PEDPT2.." */ + 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x83, /* 00001690 "_PS3.p.." */ + 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00001698 "\._GPEDP" */ + 0x54,0x32,0x14,0x1F,0x5F,0x45,0x4A,0x30, /* 000016A0 "T2.._EJ0" */ + 0x01,0x70,0x0A,0x88,0x5C,0x2E,0x5F,0x47, /* 000016A8 ".p..\._G" */ + 0x50,0x45,0x44,0x50,0x54,0x32,0x70,0x01, /* 000016B0 "PEDPT2p." */ + 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x50,0x48, /* 000016B8 "\._GPEPH" */ + 0x50,0x31,0x14,0x1E,0x5F,0x53,0x54,0x41, /* 000016C0 "P1.._STA" */ + 0x00,0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47, /* 000016C8 ".p..\._G" */ + 0x50,0x45,0x44,0x50,0x54,0x32,0xA4,0x5C, /* 000016D0 "PEDPT2.\" */ + 0x2E,0x5F,0x47,0x50,0x45,0x50,0x48,0x50, /* 000016D8 "._GPEPHP" */ + 0x31,0x5B,0x82,0x4E,0x07,0x53,0x32,0x46, /* 000016E0 "1[.N.S2F" */ + 0x30,0x08,0x5F,0x41,0x44,0x52,0x0C,0x00, /* 000016E8 "0._ADR.." */ + 0x00,0x07,0x00,0x08,0x5F,0x53,0x55,0x4E, /* 000016F0 "...._SUN" */ + 0x0A,0x02,0x14,0x13,0x5F,0x50,0x53,0x30, /* 000016F8 "...._PS0" */ + 0x00,0x70,0x0A,0x90,0x5C,0x2E,0x5F,0x47, /* 00001700 ".p..\._G" */ + 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x13, /* 00001708 "PEDPT2.." */ + 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x93, /* 00001710 "_PS3.p.." */ + 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00001718 "\._GPEDP" */ + 0x54,0x32,0x14,0x1F,0x5F,0x45,0x4A,0x30, /* 00001720 "T2.._EJ0" */ + 0x01,0x70,0x0A,0x98,0x5C,0x2E,0x5F,0x47, /* 00001728 ".p..\._G" */ + 0x50,0x45,0x44,0x50,0x54,0x32,0x70,0x01, /* 00001730 "PEDPT2p." */ + 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x50,0x48, /* 00001738 "\._GPEPH" */ + 0x50,0x32,0x14,0x1E,0x5F,0x53,0x54,0x41, /* 00001740 "P2.._STA" */ + 0x00,0x70,0x0A,0x99,0x5C,0x2E,0x5F,0x47, /* 00001748 ".p..\._G" */ + 0x50,0x45,0x44,0x50,0x54,0x32,0xA4,0x5C, /* 00001750 "PEDPT2.\" */ + 0x2E,0x5F,0x47,0x50,0x45,0x50,0x48,0x50, /* 00001758 "._GPEPHP" */ + 0x32,0x10,0x4E,0x0B,0x5F,0x47,0x50,0x45, /* 00001760 "2.N._GPE" */ + 0x5B,0x80,0x50,0x48,0x50,0x5F,0x01,0x0B, /* 00001768 "[.PHP_.." */ + 0xC0,0x10,0x0A,0x03,0x5B,0x81,0x15,0x50, /* 00001770 "....[..P" */ + 0x48,0x50,0x5F,0x01,0x50,0x53,0x54,0x41, /* 00001778 "HP_.PSTA" */ + 0x08,0x50,0x48,0x50,0x31,0x08,0x50,0x48, /* 00001780 ".PHP1.PH" */ + 0x50,0x32,0x08,0x5B,0x80,0x44,0x47,0x31, /* 00001788 "P2.[.DG1" */ + 0x5F,0x01,0x0B,0x44,0xB0,0x0A,0x04,0x5B, /* 00001790 "_..D...[" */ + 0x81,0x10,0x44,0x47,0x31,0x5F,0x01,0x44, /* 00001798 "..DG1_.D" */ + 0x50,0x54,0x31,0x08,0x44,0x50,0x54,0x32, /* 000017A0 "PT1.DPT2" */ + 0x08,0x14,0x46,0x07,0x5F,0x4C,0x30,0x33, /* 000017A8 "..F._L03" */ + 0x00,0x08,0x53,0x4C,0x54,0x5F,0x00,0x08, /* 000017B0 "..SLT_.." */ + 0x45,0x56,0x54,0x5F,0x00,0x70,0x50,0x53, /* 000017B8 "EVT_.pPS" */ + 0x54,0x41,0x61,0x7A,0x61,0x0A,0x04,0x53, /* 000017C0 "TAaza..S" */ + 0x4C,0x54,0x5F,0x7B,0x61,0x0A,0x0F,0x45, /* 000017C8 "LT_{a..E" */ + 0x56,0x54,0x5F,0x70,0x53,0x4C,0x54,0x5F, /* 000017D0 "VT_pSLT_" */ + 0x44,0x50,0x54,0x31,0x70,0x45,0x56,0x54, /* 000017D8 "DPT1pEVT" */ + 0x5F,0x44,0x50,0x54,0x32,0xA0,0x1B,0x93, /* 000017E0 "_DPT2..." */ + 0x53,0x4C,0x54,0x5F,0x01,0x86,0x5C,0x2F, /* 000017E8 "SLT_..\/" */ + 0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 000017F0 "._SB_PCI" */ + 0x30,0x53,0x31,0x46,0x30,0x45,0x56,0x54, /* 000017F8 "0S1F0EVT" */ + 0x5F,0xA1,0x1E,0xA0,0x1C,0x93,0x53,0x4C, /* 00001800 "_.....SL" */ + 0x54,0x5F,0x0A,0x02,0x86,0x5C,0x2F,0x03, /* 00001808 "T_...\/." */ + 0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30, /* 00001810 "_SB_PCI0" */ + 0x53,0x32,0x46,0x30,0x45,0x56,0x54,0x5F, /* 00001818 "S2F0EVT_" */ + }; int DsdtLen=sizeof(AmlCode); diff -r 2a4eaa76d974 -r dee5bc89873e tools/libxc/xc_cpufeature.h --- a/tools/libxc/xc_cpufeature.h Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/libxc/xc_cpufeature.h Tue Mar 10 11:00:34 2009 +0900 @@ -83,6 +83,7 @@ #define X86_FEATURE_SSE4_1 (4*32+19) /* Streaming SIMD Extensions 4.1 */ #define X86_FEATURE_SSE4_2 (4*32+20) /* Streaming SIMD Extensions 4.2 */ #define X86_FEATURE_POPCNT (4*32+23) /* POPCNT instruction */ +#define X86_FEATURE_XSAVE (4*32+26) /* XSAVE/XRSTOR/XSETBV/XGETBV */ #define X86_FEATURE_HYPERVISOR (4*32+31) /* Running under some hypervisor */ /* VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001, word 5 */ diff -r 2a4eaa76d974 -r dee5bc89873e tools/libxc/xc_cpuid_x86.c --- a/tools/libxc/xc_cpuid_x86.c Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/libxc/xc_cpuid_x86.c Tue Mar 10 11:00:34 2009 +0900 @@ -311,6 +311,7 @@ static void xc_cpuid_pv_policy( clear_bit(X86_FEATURE_XTPR, regs[2]); clear_bit(X86_FEATURE_PDCM, regs[2]); clear_bit(X86_FEATURE_DCA, regs[2]); + clear_bit(X86_FEATURE_XSAVE, regs[2]); set_bit(X86_FEATURE_HYPERVISOR, regs[2]); break; case 0x80000001: diff -r 2a4eaa76d974 -r dee5bc89873e tools/pygrub/src/pygrub --- a/tools/pygrub/src/pygrub Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/pygrub/src/pygrub Tue Mar 10 11:00:34 2009 +0900 @@ -605,7 +605,7 @@ if __name__ == "__main__": isconfig = False # what was passed in - incfg = { "kernel": None, "ramdisk": None, "args": None } + incfg = { "kernel": None, "ramdisk": None, "args": "" } # what grub or sniffing chose chosencfg = { "kernel": None, "ramdisk": None, "args": None } # what to boot @@ -641,7 +641,7 @@ if __name__ == "__main__": # debug if isconfig: - chosencfg = run_grub(file, entry) + chosencfg = run_grub(file, entry, fs, incfg["args"]) print " kernel: %s" % chosencfg["kernel"] if img.initrd: print " initrd: %s" % chosencfg["ramdisk"] diff -r 2a4eaa76d974 -r dee5bc89873e tools/python/xen/xend/XendConfig.py --- a/tools/python/xen/xend/XendConfig.py Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/python/xen/xend/XendConfig.py Tue Mar 10 11:00:34 2009 +0900 @@ -169,11 +169,12 @@ XENAPI_PLATFORM_CFG_TYPES = { 'hap': int, 'xen_extended_power_mgmt': int, 'pci_msitranslate': int, + 'pci_power_mgmt': int, } # Xen API console 'other_config' keys. XENAPI_CONSOLE_OTHER_CFG = ['vncunused', 'vncdisplay', 'vnclisten', - 'vncpasswd', 'type', 'display', 'xauthority', + 'vncpasswd', 'sdl', 'vnc', 'display', 'xauthority', 'keymap', 'opengl'] # List of XendConfig configuration keys that have no direct equivalent @@ -864,7 +865,7 @@ class XendConfig(dict): # add vfb device if it isn't there already if not self.has_rfb(): dev_config = ['vfb'] - dev_config.append(['type', 'vnc']) + dev_config.append(['vnc', '1']) # copy VNC related params from platform config to vfb dev conf for key in ['vncpasswd', 'vncunused', 'vncdisplay', 'vnclisten']: @@ -1469,7 +1470,8 @@ class XendConfig(dict): # collapse other config into devinfo for things # such as vncpasswd, vncunused, etc. dev_info.update(console_other_config) - dev_info['type'] = console_other_config.get('type', 'vnc') + dev_info['vnc'] = console_other_config.get('vnc', '0') + dev_info['sdl'] = console_other_config.get('sdl', '0') target['devices'][dev_uuid] = ('vfb', dev_info) target['console_refs'].append(dev_uuid) diff -r 2a4eaa76d974 -r dee5bc89873e tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/python/xen/xend/XendDomainInfo.py Tue Mar 10 11:00:34 2009 +0900 @@ -855,27 +855,73 @@ class XendDomainInfo: """Configure an existing vscsi device. quoted pci funciton """ + def _is_vscsi_defined(dev_info, p_devs = None, v_devs = None): + if not dev_info: + return False + for dev in sxp.children(dev_info, 'dev'): + if p_devs is not None: + if sxp.child_value(dev, 'p-dev') in p_devs: + return True + if v_devs is not None: + if sxp.child_value(dev, 'v-dev') in v_devs: + return True + return False + + def _vscsi_be(be): + be_xdi = xen.xend.XendDomain.instance().domain_lookup_nr(be) + if be_xdi is not None: + be_domid = be_xdi.getDomid() + if be_domid is not None: + return str(be_domid) + return str(be) + dev_class = sxp.name(dev_sxp) if dev_class != 'vscsi': return False dev_config = self.info.vscsi_convert_sxp_to_dict(dev_sxp) - dev = dev_config['devs'][0] - req_devid = int(dev['devid']) - existing_dev_info = self._getDeviceInfo_vscsi(req_devid, dev['v-dev']) - state = dev['state'] + devs = dev_config['devs'] + v_devs = [d['v-dev'] for d in devs] + state = devs[0]['state'] + req_devid = int(devs[0]['devid']) + cur_dev_sxp = self._getDeviceInfo_vscsi(req_devid) if state == xenbusState['Initialising']: # new create # If request devid does not exist, create and exit. - if existing_dev_info is None: + p_devs = [d['p-dev'] for d in devs] + for dev_type, dev_info in self.info.all_devices_sxpr(): + if dev_type != 'vscsi': + continue + if _is_vscsi_defined(dev_info, p_devs = p_devs): + raise XendError('The physical device "%s" is already defined' % \ + p_devs[0]) + if cur_dev_sxp is None: self.device_create(dev_sxp) return True - elif existing_dev_info == "exists": - raise XendError("The virtual device %s is already defined" % dev['v-dev']) + + if _is_vscsi_defined(cur_dev_sxp, v_devs = v_devs): + raise XendError('The virtual device "%s" is already defined' % \ + v_devs[0]) + + if int(dev_config['feature-host']) != \ + int(sxp.child_value(cur_dev_sxp, 'feature-host')): + raise XendError('The physical device "%s" cannot define ' + 'because mode is different' % devs[0]['p-dev']) + + new_be = dev_config.get('backend', None) + if new_be is not None: + cur_be = sxp.child_value(cur_dev_sxp, 'backend', None) + if cur_be is None: + cur_be = xen.xend.XendDomain.DOM0_ID + new_be_dom = _vscsi_be(new_be) + cur_be_dom = _vscsi_be(cur_be) + if new_be_dom != cur_be_dom: + raise XendError('The physical device "%s" cannot define ' + 'because backend is different' % devs[0]['p-dev']) elif state == xenbusState['Closing']: - if existing_dev_info is None: + if not _is_vscsi_defined(cur_dev_sxp, v_devs = v_devs): raise XendError("Cannot detach vscsi device does not exist") if self.domid is not None: @@ -896,7 +942,6 @@ class XendDomainInfo: del self.info['devices'][dev_uuid] else: - cur_dev_sxp = self._getDeviceInfo_vscsi(req_devid, None) new_dev_sxp = ['vscsi'] cur_mode = sxp.children(cur_dev_sxp, 'feature-host')[0] new_dev_sxp.append(cur_mode) @@ -910,8 +955,7 @@ class XendDomainInfo: if state == xenbusState['Closing']: if int(cur_mode[1]) == 1: continue - cur_dev_vdev = sxp.child_value(cur_dev, 'v-dev') - if cur_dev_vdev == dev['v-dev']: + if sxp.child_value(cur_dev, 'v-dev') in v_devs: continue new_dev_sxp.append(cur_dev) @@ -1172,23 +1216,14 @@ class XendDomainInfo: return dev_info return None - def _getDeviceInfo_vscsi(self, devid, vdev): + def _getDeviceInfo_vscsi(self, devid): devid = int(devid) for dev_type, dev_info in self.info.all_devices_sxpr(): if dev_type != 'vscsi': continue - existing_dev_uuid = sxp.child_value(dev_info, 'uuid') - existing_conf = self.info['devices'][existing_dev_uuid][1] - existing_dev = existing_conf['devs'][0] - existing_devid = int(existing_dev['devid']) - existing_vdev = existing_dev['v-dev'] - - if vdev == existing_vdev: - return "exists" - - if devid == existing_devid: + devs = sxp.children(dev_info, 'dev') + if devid == int(sxp.child_value(devs[0], 'devid')): return dev_info - return None def setMemoryTarget(self, target): @@ -3639,7 +3674,7 @@ class XendDomainInfo: if self._stateGet() != XEN_API_VM_POWER_STATE_RUNNING: - cur_vscsi_sxp = self._getDeviceInfo_vscsi(devid, None) + cur_vscsi_sxp = self._getDeviceInfo_vscsi(devid) if cur_vscsi_sxp is None: dev_uuid = self.info.device_add('vscsi', cfg_sxp = target_vscsi_sxp) @@ -3737,7 +3772,7 @@ class XendDomainInfo: dscsi = XendAPIStore.get(dev_uuid, 'DSCSI') devid = dscsi.get_virtual_host() vHCTL = dscsi.get_virtual_HCTL() - cur_vscsi_sxp = self._getDeviceInfo_vscsi(devid, None) + cur_vscsi_sxp = self._getDeviceInfo_vscsi(devid) dev_uuid = sxp.child_value(cur_vscsi_sxp, 'uuid') target_dev = None diff -r 2a4eaa76d974 -r dee5bc89873e tools/python/xen/xend/image.py --- a/tools/python/xen/xend/image.py Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/python/xen/xend/image.py Tue Mar 10 11:00:34 2009 +0900 @@ -279,15 +279,16 @@ class ImageHandler: if dev_type == 'vfb': if 'keymap' in dev_info: keymap = dev_info.get('keymap',{}) - vfb_type = dev_info.get('type', {}) - if vfb_type == 'sdl': + if int(dev_info.get('vnc', 0)) != 0 : + has_vnc = True + if int(dev_info.get('sdl', 0)) != 0 : + has_sdl = True + if has_sdl: self.display = dev_info.get('display', {}) self.xauthority = dev_info.get('xauthority', {}) opengl = int(dev_info.get('opengl', opengl)) - has_sdl = True - else: + if has_vnc: vnc_config = dev_info.get('other_config', {}) - has_vnc = True break if keymap: @@ -335,11 +336,12 @@ class ImageHandler: if int(vnc_config.get('vncunused', 1)) != 0: ret.append('-vncunused') - elif has_sdl: - # SDL is default in QEMU. + if has_sdl: + ret.append('-sdl') if int(vmConfig['platform'].get('opengl', opengl)) != 1 : ret.append('-disable-opengl') - else: + + if not has_sdl and not has_vnc : ret.append('-nographic') if int(vmConfig['platform'].get('monitor', 0)) != 0: @@ -714,6 +716,8 @@ class HVMImageHandler(ImageHandler): rtc_timeoffset = vmConfig['platform'].get('rtc_timeoffset') + if not self.display : + self.display = '' self.vm.storeVm(("image/dmargs", " ".join(self.dmargs)), ("image/device-model", self.device_model), ("image/display", self.display)) diff -r 2a4eaa76d974 -r dee5bc89873e tools/python/xen/xend/server/pciif.py --- a/tools/python/xen/xend/server/pciif.py Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/python/xen/xend/server/pciif.py Tue Mar 10 11:00:34 2009 +0900 @@ -97,6 +97,8 @@ class PciController(DevController): back['uuid'] = config.get('uuid','') if 'pci_msitranslate' in self.vm.info['platform']: back['msitranslate']=str(self.vm.info['platform']['pci_msitranslate']) + if 'pci_power_mgmt' in self.vm.info['platform']: + back['power_mgmt']=str(self.vm.info['platform']['pci_power_mgmt']) return (0, back, {}) diff -r 2a4eaa76d974 -r dee5bc89873e tools/python/xen/xm/create.py --- a/tools/python/xen/xm/create.py Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/python/xen/xm/create.py Tue Mar 10 11:00:34 2009 +0900 @@ -322,14 +322,16 @@ gopts.var('disk', val='phy:DEV,VDEV,MODE backend driver domain to use for the disk. The option may be repeated to add more than one disk.""") -gopts.var('pci', val='BUS:DEV.FUNC[,msitranslate=0|1]', +gopts.var('pci', val='BUS:DEV.FUNC[,msitranslate=0|1][,power_mgmt=0|1]', fn=append_value, default=[], use="""Add a PCI device to a domain, using given params (in hex). For example 'pci=c0:02.1'. If msitranslate is set, MSI-INTx translation is enabled if possible. Guest that doesn't support MSI will get IO-APIC type IRQs translated from physical MSI, HVM only. Default is 1. - The option may be repeated to add more than one pci device.""") + The option may be repeated to add more than one pci device. + If power_mgmt is set, the guest OS will be able to program the power + states D0-D3hot of the device, HVM only. Default=0.""") gopts.var('vscsi', val='PDEV,VDEV[,DOM]', fn=append_value, default=[], @@ -348,16 +350,16 @@ gopts.var('irq', val='IRQ', For example 'irq=7'. This option may be repeated to add more than one IRQ.""") -gopts.var('vfb', val="type={vnc,sdl},vncunused=1,vncdisplay=N,vnclisten=ADDR,display=DISPLAY,xauthority=XAUTHORITY,vncpasswd=PASSWORD,opengl=1,keymap=FILE", +gopts.var('vfb', val="vnc=1,sdl=1,vncunused=1,vncdisplay=N,vnclisten=ADDR,display=DISPLAY,xauthority=XAUTHORITY,vncpasswd=PASSWORD,opengl=1,keymap=FILE", fn=append_value, default=[], use="""Make the domain a framebuffer backend. - The backend type should be either sdl or vnc. - For type=vnc, connect an external vncviewer. The server will listen + Both sdl=1 and vnc=1 can be enabled at the same time. + For vnc=1, connect an external vncviewer. The server will listen on ADDR (default 127.0.0.1) on port N+5900. N defaults to the domain id. If vncunused=1, the server will try to find an arbitrary unused port above 5900. vncpasswd overrides the XenD configured default password. - For type=sdl, a viewer will be started automatically using the + For sdl=1, a viewer will be started automatically using the given DISPLAY and XAUTHORITY, which default to the current user's ones. OpenGL will be used by default unless opengl is set to 0. keymap overrides the XendD configured default layout file.""") @@ -604,6 +606,10 @@ gopts.var('pci_msitranslate', val='TRANS fn=set_int, default=1, use="""Global PCI MSI-INTx translation flag (0=disable; 1=enable.""") + +gopts.var('pci_power_mgmt', val='POWERMGMT', + fn=set_int, default=0, + use="""Global PCI Power Management flag (0=disable;1=enable).""") def err(msg): """Print an error to stderr and exit. @@ -691,7 +697,7 @@ def configure_pci(config_devs, vals): d = comma_sep_kv_to_dict(opts) def f(k): - if k not in ['msitranslate']: + if k not in ['msitranslate', 'power_mgmt']: err('Invalid pci option: ' + k) config_pci_opts.append([k, d[k]]) @@ -798,11 +804,13 @@ def configure_vfbs(config_devs, vals): for f in vals.vfb: d = comma_sep_kv_to_dict(f) config = ['vfb'] - if not d.has_key("type"): - d['type'] = 'sdl' + #handle the legacy case + if d.has_key("type"): + d[d['type']] = '1' + del d['type'] for (k,v) in d.iteritems(): if not k in [ 'vnclisten', 'vncunused', 'vncdisplay', 'display', - 'videoram', 'xauthority', 'type', 'vncpasswd', + 'videoram', 'xauthority', 'sdl', 'vnc', 'vncpasswd', 'opengl', 'keymap' ]: err("configuration option %s unknown to vfbs" % k) config.append([k,v]) @@ -913,7 +921,7 @@ def configure_hvm(config_image, vals): 'acpi', 'apic', 'usb', 'usbdevice', 'keymap', 'pci', 'hpet', 'guest_os_type', 'hap', 'opengl', 'cpuid', 'cpuid_check', 'viridian', 'xen_extended_power_mgmt', 'pci_msitranslate', - 'vpt_align' ] + 'vpt_align', 'pci_power_mgmt' ] for a in args: if a in vals.__dict__ and vals.__dict__[a] is not None: diff -r 2a4eaa76d974 -r dee5bc89873e tools/python/xen/xm/xenapi_create.py --- a/tools/python/xen/xm/xenapi_create.py Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/python/xen/xm/xenapi_create.py Tue Mar 10 11:00:34 2009 +0900 @@ -1047,6 +1047,7 @@ class sxp2xml: 'guest_os_type', 'hap', 'pci_msitranslate', + 'pci_power_mgmt', ] platform_configs = [] diff -r 2a4eaa76d974 -r dee5bc89873e tools/xm-test/lib/XmTestLib/NetConfig.py --- a/tools/xm-test/lib/XmTestLib/NetConfig.py Fri Mar 06 12:22:22 2009 +0900 +++ b/tools/xm-test/lib/XmTestLib/NetConfig.py Tue Mar 10 11:00:34 2009 +0900 @@ -57,11 +57,13 @@ def getXendNetConfig(): while val[0] != 'network-script': val = pin.get_val() - if val[1] == "network-bridge": + # split network command into script name and its parameters + sub_val = val[1].split() + if sub_val[0] == "network-bridge": netenv = "bridge" - elif val[1] == "network-route": + elif sub_val[0] == "network-route": netenv = "route" - elif val[1] == "network-nat": + elif sub_val[0] == "network-nat": netenv = "nat" else: raise NetworkError("Failed to get network env from xend config") diff -r 2a4eaa76d974 -r dee5bc89873e xen/Makefile --- a/xen/Makefile Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/Makefile Tue Mar 10 11:00:34 2009 +0900 @@ -44,6 +44,7 @@ _clean: delete-unfresh-files $(MAKE) -f $(BASEDIR)/Rules.mk -C common clean $(MAKE) -f $(BASEDIR)/Rules.mk -C drivers clean $(MAKE) -f $(BASEDIR)/Rules.mk -C xsm clean + $(MAKE) -f $(BASEDIR)/Rules.mk -C crypto clean $(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) clean rm -f include/asm *.o $(TARGET)* *~ core rm -f include/asm-*/asm-offsets.h diff -r 2a4eaa76d974 -r dee5bc89873e xen/arch/ia64/xen/xensetup.c --- a/xen/arch/ia64/xen/xensetup.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/arch/ia64/xen/xensetup.c Tue Mar 10 11:00:34 2009 +0900 @@ -337,6 +337,8 @@ static int __initdata dom0_vhpt_size_log static int __initdata dom0_vhpt_size_log2; integer_param("dom0_vhpt_size_log2", dom0_vhpt_size_log2); #endif +unsigned long xen_fixed_mfn_start __read_mostly; +unsigned long xen_fixed_mfn_end __read_mostly; void __init start_kernel(void) { @@ -556,6 +558,10 @@ skip_move: (xenheap_phys_end-__pa(xen_heap_start)) >> 20, (xenheap_phys_end-__pa(xen_heap_start)) >> 10); + /* for is_xen_fixed_mfn() */ + xen_fixed_mfn_start = virt_to_mfn(&_start); + xen_fixed_mfn_end = virt_to_mfn(xen_heap_start); + end_boot_allocator(); softirq_init(); diff -r 2a4eaa76d974 -r dee5bc89873e xen/arch/x86/bzimage.c --- a/xen/arch/x86/bzimage.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/arch/x86/bzimage.c Tue Mar 10 11:00:34 2009 +0900 @@ -58,8 +58,7 @@ static void flush_window(void); static __init void error(char *x) { - printk("%s\n", x); - BUG(); + panic("%s\n", x); } static __init int fill_inbuf(void) diff -r 2a4eaa76d974 -r dee5bc89873e xen/arch/x86/hvm/vpt.c --- a/xen/arch/x86/hvm/vpt.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/arch/x86/hvm/vpt.c Tue Mar 10 11:00:34 2009 +0900 @@ -209,7 +209,8 @@ static void pt_timer_fn(void *data) set_timer(&pt->timer, pt->scheduled); } - vcpu_kick(pt->vcpu); + if ( !pt_irq_masked(pt) ) + vcpu_kick(pt->vcpu); pt_unlock(pt); } diff -r 2a4eaa76d974 -r dee5bc89873e xen/arch/x86/mm/hap/hap.c --- a/xen/arch/x86/mm/hap/hap.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/arch/x86/mm/hap/hap.c Tue Mar 10 11:00:34 2009 +0900 @@ -152,7 +152,7 @@ static struct page_info *hap_alloc_p2m_p d->arch.paging.hap.total_pages--; d->arch.paging.hap.p2m_pages++; page_set_owner(pg, d); - pg->count_info = 1; + pg->count_info |= 1; } hap_unlock(d); @@ -167,7 +167,7 @@ void hap_free_p2m_page(struct domain *d, if ( (pg->count_info & PGC_count_mask) != 1 ) HAP_ERROR("Odd p2m page count c=%#lx t=%"PRtype_info"\n", pg->count_info, pg->u.inuse.type_info); - pg->count_info = 0; + pg->count_info &= ~PGC_count_mask; /* Free should not decrement domain's total allocation, since * these pages were allocated without an owner. */ page_set_owner(pg, NULL); @@ -218,7 +218,6 @@ hap_set_allocation(struct domain *d, uns ASSERT(pg); d->arch.paging.hap.free_pages--; d->arch.paging.hap.total_pages--; - pg->count_info = 0; free_domheap_page(pg); } diff -r 2a4eaa76d974 -r dee5bc89873e xen/arch/x86/mm/p2m.c --- a/xen/arch/x86/mm/p2m.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/arch/x86/mm/p2m.c Tue Mar 10 11:00:34 2009 +0900 @@ -177,7 +177,7 @@ p2m_next_level(struct domain *d, mfn_t * return 0; page_list_add_tail(pg, &d->arch.p2m->pages); pg->u.inuse.type_info = type | 1 | PGT_validated; - pg->count_info = 1; + pg->count_info |= 1; new_entry = l1e_from_pfn(mfn_x(page_to_mfn(pg)), __PAGE_HYPERVISOR|_PAGE_USER); @@ -216,7 +216,7 @@ p2m_next_level(struct domain *d, mfn_t * return 0; page_list_add_tail(pg, &d->arch.p2m->pages); pg->u.inuse.type_info = PGT_l1_page_table | 1 | PGT_validated; - pg->count_info = 1; + pg->count_info |= 1; /* New splintered mappings inherit the flags of the old superpage, * with a little reorganisation for the _PAGE_PSE_PAT bit. */ diff -r 2a4eaa76d974 -r dee5bc89873e xen/arch/x86/mm/shadow/common.c --- a/xen/arch/x86/mm/shadow/common.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/arch/x86/mm/shadow/common.c Tue Mar 10 11:00:34 2009 +0900 @@ -1677,7 +1677,7 @@ sh_alloc_p2m_pages(struct domain *d) * believed to be a concern. */ page_set_owner(&pg[i], d); - pg[i].count_info = 1; + pg[i].count_info |= 1; page_list_add_tail(&pg[i], &d->arch.paging.shadow.p2m_freelist); } return 1; @@ -1721,7 +1721,7 @@ shadow_free_p2m_page(struct domain *d, s SHADOW_ERROR("Odd p2m page count c=%#lx t=%"PRtype_info"\n", pg->count_info, pg->u.inuse.type_info); } - pg->count_info = 0; + pg->count_info &= ~PGC_count_mask; /* Free should not decrement domain's total allocation, since * these pages were allocated without an owner. */ page_set_owner(pg, NULL); @@ -1895,7 +1895,7 @@ static void sh_hash_audit_bucket(struct while ( sp ) { /* Not a shadow? */ - BUG_ON( sp->count_info != 0 ); + BUG_ON( (sp->count_info & PGC_count_mask )!= 0 ) ; /* Bogus type? */ BUG_ON( sp->u.sh.type == 0 ); BUG_ON( sp->u.sh.type > SH_type_max_shadow ); diff -r 2a4eaa76d974 -r dee5bc89873e xen/arch/x86/mm/shadow/multi.c --- a/xen/arch/x86/mm/shadow/multi.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/arch/x86/mm/shadow/multi.c Tue Mar 10 11:00:34 2009 +0900 @@ -4281,7 +4281,7 @@ int sh_rm_write_access_from_sl1p(struct sp = mfn_to_page(smfn); - if ( sp->count_info != 0 + if ( ((sp->count_info & PGC_count_mask) != 0) || (sp->u.sh.type != SH_type_l1_shadow && sp->u.sh.type != SH_type_fl1_shadow) ) goto fail; diff -r 2a4eaa76d974 -r dee5bc89873e xen/arch/x86/mm/shadow/private.h --- a/xen/arch/x86/mm/shadow/private.h Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/arch/x86/mm/shadow/private.h Tue Mar 10 11:00:34 2009 +0900 @@ -647,7 +647,7 @@ static inline void sh_put_ref(struct vcp struct page_info *sp = mfn_to_page(smfn); ASSERT(mfn_valid(smfn)); - ASSERT(sp->count_info == 0); + ASSERT(!(sp->count_info & PGC_count_mask)); /* If this is the entry in the up-pointer, remove it */ if ( entry_pa != 0 diff -r 2a4eaa76d974 -r dee5bc89873e xen/arch/x86/setup.c --- a/xen/arch/x86/setup.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/arch/x86/setup.c Tue Mar 10 11:00:34 2009 +0900 @@ -1111,15 +1111,43 @@ void arch_get_xen_caps(xen_capabilities_ int xen_in_range(paddr_t start, paddr_t end) { -#if defined(CONFIG_X86_32) - paddr_t xs = 0; - paddr_t xe = xenheap_phys_end; -#else - paddr_t xs = __pa(&_stext); - paddr_t xe = __pa(&_etext); -#endif - - return (start < xe) && (end > xs); + int i; + static struct { + paddr_t s, e; + } xen_regions[5]; + + /* initialize first time */ + if ( !xen_regions[0].s ) + { + extern char __init_begin[], __per_cpu_start[], __per_cpu_end[], + __bss_start[]; + extern unsigned long allocator_bitmap_end; + + /* S3 resume code (and other real mode trampoline code) */ + xen_regions[0].s = bootsym_phys(trampoline_start); + xen_regions[0].e = bootsym_phys(trampoline_end); + /* hypervisor code + data */ + xen_regions[1].s =__pa(&_stext); + xen_regions[1].e = __pa(&__init_begin); + /* per-cpu data */ + xen_regions[2].s = __pa(&__per_cpu_start); + xen_regions[2].e = __pa(&__per_cpu_end); + /* bss + boot allocator bitmap */ + xen_regions[3].s = __pa(&__bss_start); + xen_regions[3].e = allocator_bitmap_end; + /* frametable */ + xen_regions[4].s = (unsigned long)frame_table; + xen_regions[4].e = (unsigned long)frame_table + + PFN_UP(max_page * sizeof(*frame_table)); + } + + for ( i = 0; i < ARRAY_SIZE(xen_regions); i++ ) + { + if ( (start < xen_regions[i].e) && (end > xen_regions[i].s) ) + return 1; + } + + return 0; } /* diff -r 2a4eaa76d974 -r dee5bc89873e xen/arch/x86/tboot.c --- a/xen/arch/x86/tboot.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/arch/x86/tboot.c Tue Mar 10 11:00:34 2009 +0900 @@ -450,7 +450,7 @@ int tboot_s3_resume(void) tboot_gen_domain_integrity(g_tboot_shared->s3_key, &mac); if ( mac != domain_mac ) - return 0; /* -3 */ + return -3; return 0; } diff -r 2a4eaa76d974 -r dee5bc89873e xen/arch/x86/traps.c --- a/xen/arch/x86/traps.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/arch/x86/traps.c Tue Mar 10 11:00:34 2009 +0900 @@ -757,6 +757,7 @@ static void pv_cpuid(struct cpu_user_reg __clear_bit(X86_FEATURE_XTPR % 32, &c); __clear_bit(X86_FEATURE_PDCM % 32, &c); __clear_bit(X86_FEATURE_DCA % 32, &c); + __clear_bit(X86_FEATURE_XSAVE % 32, &c); if ( !cpu_has_apic ) __clear_bit(X86_FEATURE_X2APIC % 32, &c); __set_bit(X86_FEATURE_HYPERVISOR % 32, &c); diff -r 2a4eaa76d974 -r dee5bc89873e xen/common/domctl.c --- a/xen/common/domctl.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/common/domctl.c Tue Mar 10 11:00:34 2009 +0900 @@ -433,7 +433,7 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc cpu = (i == 0) ? default_vcpu0_location() : - (d->vcpu[i-1]->processor + 1) % num_online_cpus(); + cycle_cpu(d->vcpu[i-1]->processor, cpu_online_map); if ( alloc_vcpu(d, i, cpu) == NULL ) goto maxvcpu_out; diff -r 2a4eaa76d974 -r dee5bc89873e xen/common/page_alloc.c --- a/xen/common/page_alloc.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/common/page_alloc.c Tue Mar 10 11:00:34 2009 +0900 @@ -35,6 +35,7 @@ #include <xen/perfc.h> #include <xen/numa.h> #include <xen/nodemask.h> +#include <public/sysctl.h> #include <asm/page.h> #include <asm/numa.h> #include <asm/flushtlb.h> @@ -74,6 +75,11 @@ PAGE_LIST_HEAD(page_scrub_list); PAGE_LIST_HEAD(page_scrub_list); static unsigned long scrub_pages; +/* Offlined page list, protected by heap_lock */ +PAGE_LIST_HEAD(page_offlined_list); + +/* Broken page list, protected by heap_lock */ +PAGE_LIST_HEAD(page_broken_list); /********************* * ALLOCATION BITMAP * One bit per page of memory. Bit set => page is allocated. @@ -421,12 +427,92 @@ static struct page_info *alloc_heap_page return pg; } +/* + * Remove any offlined page in the buddy poined by head + */ +static int reserve_offlined_page(struct page_info *head) +{ + unsigned int node = phys_to_nid(page_to_maddr(head)); + int zone = page_to_zone(head), i, head_order = PFN_ORDER(head), count = 0; + struct page_info *cur_head; + int cur_order; + + ASSERT(spin_is_locked(&heap_lock)); + + cur_head = head; + + page_list_del(head, &heap(node, zone, head_order)); + + while ( cur_head < (head + (1 << head_order)) ) + { + struct page_info *pg; + int next_order; + + if (test_bit(_PGC_offlined, &cur_head->count_info)) + { + cur_head++; + continue; + } + + next_order = cur_order = 0; + + while (cur_order < head_order) + { + next_order = cur_order + 1; + + if ( (cur_head + (1 << next_order)) >= (head + ( 1 << head_order))) + goto merge; + + for (i = (1 << cur_order), pg = cur_head + (1 << cur_order); + i < (1 << next_order); + i++, pg ++) + if (test_bit(_PGC_offlined, &pg->count_info)) + break; + if (i == ( 1 << next_order)) + { + cur_order = next_order; + continue; + } + else + { + /* + * We don't need considering merge outside the head_order + */ +merge: + page_list_add_tail(cur_head, &heap(node, zone, cur_order)); + PFN_ORDER(cur_head) = cur_order; + cur_head += (1 << cur_order); + break; + } + } + } + + for (cur_head = head; cur_head < head + ( 1UL << head_order); cur_head++) + { + if (!test_bit(_PGC_offlined, &cur_head->count_info)) + continue; + + avail[node][zone] --; + + map_alloc(page_to_mfn(cur_head), 1); + + if (test_bit(_PGC_broken, &cur_head->count_info)) + page_list_add_tail(cur_head, &page_broken_list); + else + page_list_add_tail(cur_head, &page_offlined_list); + + count ++; + } + + return count; +} + /* Free 2^@order set of pages. */ static void free_heap_pages( struct page_info *pg, unsigned int order) { unsigned long mask; - unsigned int i, node = phys_to_nid(page_to_maddr(pg)); + unsigned int i, node = phys_to_nid(page_to_maddr(pg)), tainted = 0; unsigned int zone = page_to_zone(pg); ASSERT(order <= MAX_ORDER); @@ -446,7 +532,14 @@ static void free_heap_pages( * in its pseudophysical address space). * In all the above cases there can be no guest mappings of this page. */ - pg[i].count_info = 0; + ASSERT(!(pg[i].count_info & PGC_offlined)); + pg[i].count_info &= PGC_offlining | PGC_broken; + if (pg[i].count_info & PGC_offlining) + { + pg[i].count_info &= ~PGC_offlining; + pg[i].count_info |= PGC_offlined; + tainted = 1; + } /* If a page has no owner it will need no safety TLB flush. */ pg[i].u.free.need_tlbflush = (page_get_owner(&pg[i]) != NULL); @@ -481,7 +574,7 @@ static void free_heap_pages( break; page_list_del(pg + mask, &heap(node, zone, order)); } - + order++; /* After merging, pg should remain in the same node. */ @@ -491,7 +584,249 @@ static void free_heap_pages( PFN_ORDER(pg) = order; page_list_add_tail(pg, &heap(node, zone, order)); + if (tainted) + reserve_offlined_page(pg); + spin_unlock(&heap_lock); +} + + +/* + * Following possible status for a page: + * free and Online; free and offlined; free and offlined and broken; + * assigned and online; assigned and offlining; assigned and offling and broken + * + * Following rules applied for page offline: + * Once a page is broken, it can't be assigned anymore + * A page will be offlined only if it is free + * return original count_info + * + */ +static unsigned long mark_page_offline(struct page_info *pg, int broken) +{ + unsigned long nx, x, y = pg->count_info; + + ASSERT(page_is_ram_type(page_to_mfn(pg), RAM_TYPE_CONVENTIONAL)); + /* + * Caller gurantee the page will not be reassigned during this process + */ + ASSERT(spin_is_locked(&heap_lock)); + + do { + nx = x = y; + + if ( ((x & PGC_offlined_broken) == PGC_offlined_broken) ) + return y; + /* PGC_offlined means it is free pages */ + if (x & PGC_offlined) + { + if (broken && !(nx & PGC_broken)) + nx |= PGC_broken; + else + return y; + } + /* It is not offlined, not reserved page */ + else if ( allocated_in_map(page_to_mfn(pg)) ) + nx |= PGC_offlining; + else + nx |= PGC_offlined; + + if (broken) + nx |= PGC_broken; + } while ( (y = cmpxchg(&pg->count_info, x, nx)) != x ); + + return y; +} + +static int reserve_heap_page(struct page_info *pg) +{ + struct page_info *head = NULL; + unsigned int i, node = phys_to_nid(page_to_maddr(pg)); + unsigned int zone = page_to_zone(pg); + + /* get the header */ + for ( i = 0; i <= MAX_ORDER; i++ ) + { + struct page_info *tmp; + + if ( page_list_empty(&heap(node, zone, i)) ) + continue; + + page_list_for_each_safe(head, tmp, &heap(node, zone, i)) + { + if ( (head <= pg) && + (head + (1UL << i) > pg) ) + return reserve_offlined_page(head); + } + } + + return -EINVAL; + +} + +/* + * offline one page + */ +int offline_page(unsigned long mfn, int broken, uint32_t *status) +{ + unsigned long old_info = 0; + struct domain *owner; + int ret = 0; + struct page_info *pg; + + if (mfn > max_page) + { + dprintk(XENLOG_WARNING, + "try to offline page out of range %lx\n", mfn); + return -EINVAL; + } + + *status = 0; + pg = mfn_to_page(mfn); + + +#if defined(__x86_64__) + /* Xen's txt mfn in x86_64 is reserved in e820 */ + if ( is_xen_fixed_mfn(mfn) ) +#elif defined(__i386__) + if ( is_xen_heap_mfn(mfn) ) +#endif + { + *status = PG_OFFLINE_XENPAGE | PG_OFFLINE_FAILED | + (DOMID_XEN << PG_OFFLINE_OWNER_SHIFT); + return -EPERM; + } + + /* + * N.B. xen's txt in x86_64 is marked reserved and handled already + * Also kexec range is reserved + */ + if (!page_is_ram_type(mfn, RAM_TYPE_CONVENTIONAL)) + { + *status = PG_OFFLINE_FAILED | PG_OFFLINE_NOT_CONV_RAM; + return -EINVAL; + } + + spin_lock(&heap_lock); + + old_info = mark_page_offline(pg, broken); + + if ( !allocated_in_map(mfn) ) + { + /* Free pages are reserve directly */ + reserve_heap_page(pg); + *status = PG_OFFLINE_OFFLINED; + } + else if (test_bit(_PGC_offlined, &pg->count_info)) + { + *status = PG_OFFLINE_OFFLINED; + } + else if ((owner = page_get_owner_and_reference(pg))) + { + *status = PG_OFFLINE_OWNED | PG_OFFLINE_PENDING | + (owner->domain_id << PG_OFFLINE_OWNER_SHIFT); + /* Release the reference since it will not be allocated anymore */ + put_page(pg); + } + else if ( old_info & PGC_xen_heap) + { + *status = PG_OFFLINE_XENPAGE | PG_OFFLINE_PENDING | + (DOMID_XEN << PG_OFFLINE_OWNER_SHIFT); + } + else + { + /* + * assign_pages does not hold heap_lock, so small window that the owner + * may be set later, but please notice owner will only change from + * NULL to be set, not verse, since page is offlining now. + * No windows If called from #MC handler, since all CPU are in softirq + * If called from user space like CE handling, tools can wait some time + * before call again. + */ + *status = PG_OFFLINE_ANONYMOUS | PG_OFFLINE_FAILED | + (DOMID_INVALID << PG_OFFLINE_OWNER_SHIFT ); + } + + if (broken) + *status |= PG_OFFLINE_BROKEN; + + spin_unlock(&heap_lock); + + return ret; +} + +/* + * Online the memory. + * The caller should make sure end_pfn <= max_page, + * if not, expand_pages() should be called prior to online_page(). + */ +unsigned int online_page(unsigned long mfn, uint32_t *status) +{ + struct page_info *pg; + int ret = 0, free = 0; + + if ( mfn > max_page ) + { + dprintk(XENLOG_WARNING, "call expand_pages() first\n"); + return -EINVAL; + } + + pg = mfn_to_page(mfn); + + *status = 0; + + spin_lock(&heap_lock); + + if ( unlikely(is_page_broken(pg)) ) + { + ret = -EINVAL; + *status = PG_ONLINE_FAILED |PG_ONLINE_BROKEN; + } + else if (pg->count_info & PGC_offlined) + { + clear_bit(_PGC_offlined, &pg->count_info); + page_list_del(pg, &page_offlined_list); + *status = PG_ONLINE_ONLINED; + free = 1; + } + else if (pg->count_info & PGC_offlining) + { + clear_bit(_PGC_offlining, &pg->count_info); + *status = PG_ONLINE_ONLINED; + } + spin_unlock(&heap_lock); + + if (free) + free_heap_pages(pg, 0); + + return ret; +} + +int query_page_offline(unsigned long mfn, uint32_t *status) +{ + struct page_info *pg; + + if ( (mfn > max_page) || !page_is_ram_type(mfn, RAM_TYPE_CONVENTIONAL) ) + { + dprintk(XENLOG_WARNING, "call expand_pages() first\n"); + return -EINVAL; + } + + *status = 0; + spin_lock(&heap_lock); + + pg = mfn_to_page(mfn); + + if (pg->count_info & PGC_offlining) + *status |= PG_OFFLINE_STATUS_OFFLINE_PENDING; + if (pg->count_info & PGC_broken) + *status |= PG_OFFLINE_STATUS_BROKEN; + if (pg->count_info & PGC_offlined) + *status |= PG_OFFLINE_STATUS_OFFLINED; + + spin_unlock(&heap_lock); + + return 0; } /* diff -r 2a4eaa76d974 -r dee5bc89873e xen/common/sched_credit.c --- a/xen/common/sched_credit.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/common/sched_credit.c Tue Mar 10 11:00:34 2009 +0900 @@ -25,12 +25,14 @@ /* * CSCHED_STATS * - * Manage very basic counters and stats. + * Manage very basic per-vCPU counters and stats. * * Useful for debugging live systems. The stats are displayed * with runq dumps ('r' on the Xen console). */ +#ifdef PERF_COUNTERS #define CSCHED_STATS +#endif /* @@ -77,85 +79,9 @@ /* * Stats */ +#define CSCHED_STAT_CRANK(_X) (perfc_incr(_X)) + #ifdef CSCHED_STATS - -#define CSCHED_STAT(_X) (csched_priv.stats._X) -#define CSCHED_STAT_DEFINE(_X) uint32_t _X; -#define CSCHED_STAT_PRINTK(_X) \ - do \ - { \ - printk("\t%-30s = %u\n", #_X, CSCHED_STAT(_X)); \ - } while ( 0 ); - -/* - * Try and keep often cranked stats on top so they'll fit on one - * cache line. - */ -#define CSCHED_STATS_EXPAND_SCHED(_MACRO) \ - _MACRO(schedule) \ - _MACRO(acct_run) \ - _MACRO(acct_no_work) \ - _MACRO(acct_balance) \ - _MACRO(acct_reorder) \ - _MACRO(acct_min_credit) \ - _MACRO(acct_vcpu_active) \ - _MACRO(acct_vcpu_idle) \ - _MACRO(vcpu_sleep) \ - _MACRO(vcpu_wake_running) \ - _MACRO(vcpu_wake_onrunq) \ - _MACRO(vcpu_wake_runnable) \ - _MACRO(vcpu_wake_not_runnable) \ - _MACRO(vcpu_park) \ - _MACRO(vcpu_unpark) \ - _MACRO(tickle_local_idler) \ - _MACRO(tickle_local_over) \ - _MACRO(tickle_local_under) \ - _MACRO(tickle_local_other) \ - _MACRO(tickle_idlers_none) \ - _MACRO(tickle_idlers_some) \ - _MACRO(load_balance_idle) \ - _MACRO(load_balance_over) \ - _MACRO(load_balance_other) \ - _MACRO(steal_trylock_failed) \ - _MACRO(steal_peer_idle) \ - _MACRO(migrate_queued) \ - _MACRO(migrate_running) \ - _MACRO(dom_init) \ - _MACRO(dom_destroy) \ - _MACRO(vcpu_init) \ - _MACRO(vcpu_destroy) - -#ifndef NDEBUG -#define CSCHED_STATS_EXPAND_CHECKS(_MACRO) \ - _MACRO(vcpu_check) -#else -#define CSCHED_STATS_EXPAND_CHECKS(_MACRO) -#endif - -#define CSCHED_STATS_EXPAND(_MACRO) \ - CSCHED_STATS_EXPAND_CHECKS(_MACRO) \ - CSCHED_STATS_EXPAND_SCHED(_MACRO) - -#define CSCHED_STATS_RESET() \ - do \ - { \ - memset(&csched_priv.stats, 0, sizeof(csched_priv.stats)); \ - } while ( 0 ) - -#define CSCHED_STATS_DEFINE() \ - struct \ - { \ - CSCHED_STATS_EXPAND(CSCHED_STAT_DEFINE) \ - } stats; - -#define CSCHED_STATS_PRINTK() \ - do \ - { \ - printk("stats:\n"); \ - CSCHED_STATS_EXPAND(CSCHED_STAT_PRINTK) \ - } while ( 0 ) - -#define CSCHED_STAT_CRANK(_X) (CSCHED_STAT(_X)++) #define CSCHED_VCPU_STATS_RESET(_V) \ do \ @@ -169,10 +95,6 @@ #else /* CSCHED_STATS */ -#define CSCHED_STATS_RESET() do {} while ( 0 ) -#define CSCHED_STATS_DEFINE() -#define CSCHED_STATS_PRINTK() do {} while ( 0 ) -#define CSCHED_STAT_CRANK(_X) do {} while ( 0 ) #define CSCHED_VCPU_STATS_RESET(_V) do {} while ( 0 ) #define CSCHED_VCPU_STAT_CRANK(_V, _X) do {} while ( 0 ) #define CSCHED_VCPU_STAT_SET(_V, _X, _Y) do {} while ( 0 ) @@ -238,7 +160,6 @@ struct csched_private { uint32_t credit; int credit_balance; uint32_t runq_sort; - CSCHED_STATS_DEFINE() }; @@ -248,15 +169,6 @@ static struct csched_private csched_priv static struct csched_private csched_priv; static void csched_tick(void *_cpu); - -static inline int -__cycle_cpu(int cpu, const cpumask_t *mask) -{ - int nxt = next_cpu(cpu, *mask); - if (nxt == NR_CPUS) - nxt = first_cpu(*mask); - return nxt; -} static inline int __vcpu_on_runq(struct csched_vcpu *svc) @@ -404,14 +316,37 @@ __csched_vcpu_check(struct vcpu *vc) #define CSCHED_VCPU_CHECK(_vc) #endif +/* + * Delay, in microseconds, between migrations of a VCPU between PCPUs. + * This prevents rapid fluttering of a VCPU between CPUs, and reduces the + * implicit overheads such as cache-warming. 1ms (1000) has been measured + * as a good value. + */ +static unsigned int vcpu_migration_delay; +integer_param("vcpu_migration_delay", vcpu_migration_delay); + +static inline int +__csched_vcpu_is_cache_hot(struct vcpu *v) +{ + int hot = ((NOW() - v->runstate.state_entry_time) < + ((uint64_t)vcpu_migration_delay * 1000u)); + + if ( hot ) + CSCHED_STAT_CRANK(vcpu_hot); + + return hot; +} + static inline int __csched_vcpu_is_migrateable(struct vcpu *vc, int dest_cpu) { /* - * Don't pick up work that's in the peer's scheduling tail. Also only pick - * up work that's allowed to run on our CPU. - */ - return !vc->is_running && cpu_isset(dest_cpu, vc->cpu_affinity); + * Don't pick up work that's in the peer's scheduling tail or hot on + * peer PCPU. Only pick up work that's allowed to run on our CPU. + */ + return !vc->is_running && + !__csched_vcpu_is_cache_hot(vc) && + cpu_isset(dest_cpu, vc->cpu_affinity); } static int @@ -428,7 +363,7 @@ csched_cpu_pick(struct vcpu *vc) cpus_and(cpus, cpu_online_map, vc->cpu_affinity); cpu = cpu_isset(vc->processor, cpus) ? vc->processor - : __cycle_cpu(vc->processor, &cpus); + : cycle_cpu(vc->processor, cpus); ASSERT( !cpus_empty(cpus) && cpu_isset(cpu, cpus) ); /* @@ -454,7 +389,7 @@ csched_cpu_pick(struct vcpu *vc) cpumask_t nxt_idlers; int nxt; - nxt = __cycle_cpu(cpu, &cpus); + nxt = cycle_cpu(cpu, cpus); if ( cpu_isset(cpu, cpu_core_map[nxt]) ) { @@ -1128,7 +1063,7 @@ csched_load_balance(int cpu, struct csch while ( !cpus_empty(workers) ) { - peer_cpu = __cycle_cpu(peer_cpu, &workers); + peer_cpu = cycle_cpu(peer_cpu, workers); cpu_clear(peer_cpu, workers); /* @@ -1306,7 +1241,8 @@ csched_dump(void) "\tmsecs per tick = %dms\n" "\tcredits per tick = %d\n" "\tticks per tslice = %d\n" - "\tticks per acct = %d\n", + "\tticks per acct = %d\n" + "\tmigration delay = %uus\n", csched_priv.ncpus, csched_priv.master, csched_priv.credit, @@ -1317,12 +1253,11 @@ csched_dump(void) CSCHED_MSECS_PER_TICK, CSCHED_CREDITS_PER_TICK, CSCHED_TICKS_PER_TSLICE, - CSCHED_TICKS_PER_ACCT); + CSCHED_TICKS_PER_ACCT, + vcpu_migration_delay); cpumask_scnprintf(idlers_buf, sizeof(idlers_buf), csched_priv.idlers); printk("idlers: %s\n", idlers_buf); - - CSCHED_STATS_PRINTK(); printk("active vcpus:\n"); loop = 0; @@ -1354,7 +1289,6 @@ csched_init(void) csched_priv.credit = 0U; csched_priv.credit_balance = 0; csched_priv.runq_sort = 0U; - CSCHED_STATS_RESET(); } /* Tickers cannot be kicked until SMP subsystem is alive. */ diff -r 2a4eaa76d974 -r dee5bc89873e xen/common/schedule.c --- a/xen/common/schedule.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/common/schedule.c Tue Mar 10 11:00:34 2009 +0900 @@ -81,6 +81,20 @@ static inline void trace_runstate_change __trace_var(event, 1/*tsc*/, sizeof(d), (unsigned char *)&d); } +static inline void trace_continue_running(struct vcpu *v) +{ + struct { uint32_t vcpu:16, domain:16; } d; + + if ( likely(!tb_init_done) ) + return; + + d.vcpu = v->vcpu_id; + d.domain = v->domain->domain_id; + + __trace_var(TRC_SCHED_CONTINUE_RUNNING, 1/*tsc*/, sizeof(d), + (unsigned char *)&d); +} + static inline void vcpu_runstate_change( struct vcpu *v, int new_state, s_time_t new_entry_time) { @@ -803,6 +817,7 @@ static void schedule(void) if ( unlikely(prev == next) ) { spin_unlock_irq(&sd->schedule_lock); + trace_continue_running(next); return continue_running(prev); } diff -r 2a4eaa76d974 -r dee5bc89873e xen/common/sysctl.c --- a/xen/common/sysctl.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/common/sysctl.c Tue Mar 10 11:00:34 2009 +0900 @@ -233,6 +233,61 @@ long do_sysctl(XEN_GUEST_HANDLE(xen_sysc } break; + case XEN_SYSCTL_page_offline_op: + { + uint32_t *status, *ptr; + unsigned long pfn; + + ptr = status = xmalloc_bytes( sizeof(uint32_t) * + (op->u.page_offline.end - + op->u.page_offline.start + 1)); + if (!status) + { + dprintk(XENLOG_WARNING, "Out of memory for page offline op\n"); + ret = -ENOMEM; + break; + } + + memset(status, PG_OFFLINE_INVALID, sizeof(uint32_t) * + (op->u.page_offline.end - op->u.page_offline.start + 1)); + + for ( pfn = op->u.page_offline.start; + pfn <= op->u.page_offline.end; + pfn ++ ) + { + switch (op->u.page_offline.cmd) + { + /* Shall revert her if failed, or leave caller do it? */ + case sysctl_page_offline: + ret = offline_page(pfn, 0, ptr++); + break; + case sysctl_page_online: + ret = online_page(pfn, ptr++); + break; + case sysctl_query_page_offline: + ret = query_page_offline(pfn, ptr++); + break; + default: + gdprintk(XENLOG_WARNING, "invalid page offline op %x\n", + op->u.page_offline.cmd); + ret = -EINVAL; + break; + } + + if (ret) + break; + } + + if (copy_to_guest(op->u.page_offline.status, status, + op->u.page_offline.end - op->u.page_offline.start + 1)) + { + ret = -EFAULT; + break; + } + xfree(status); + } + break; + default: ret = arch_do_sysctl(op, u_sysctl); break; diff -r 2a4eaa76d974 -r dee5bc89873e xen/drivers/char/console.c --- a/xen/drivers/char/console.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/drivers/char/console.c Tue Mar 10 11:00:34 2009 +0900 @@ -315,6 +315,12 @@ static void serial_rx(char c, struct cpu __serial_rx(c, regs); } +static void notify_dom0_con_ring(unsigned long unused) +{ + send_guest_global_virq(dom0, VIRQ_CON_RING); +} +static DECLARE_TASKLET(notify_dom0_con_ring_tasklet, notify_dom0_con_ring, 0); + static long guest_console_write(XEN_GUEST_HANDLE(char) buffer, int count) { char kbuf[128], *kptr; @@ -348,7 +354,7 @@ static long guest_console_write(XEN_GUES { for ( kptr = kbuf; *kptr != '\0'; kptr++ ) putchar_console_ring(*kptr); - send_guest_global_virq(dom0, VIRQ_CON_RING); + tasklet_schedule(¬ify_dom0_con_ring_tasklet); } spin_unlock_irq(&console_lock); @@ -414,6 +420,8 @@ long do_console_io(int cmd, int count, X * ***************************************************** */ +static bool_t console_locks_busted; + static void __putstr(const char *str) { int c; @@ -423,10 +431,12 @@ static void __putstr(const char *str) sercon_puts(str); vga_puts(str); - while ( (c = *str++) != '\0' ) - putchar_console_ring(c); - - send_guest_global_virq(dom0, VIRQ_CON_RING); + if ( !console_locks_busted ) + { + while ( (c = *str++) != '\0' ) + putchar_console_ring(c); + tasklet_schedule(¬ify_dom0_con_ring_tasklet); + } } static int printk_prefix_check(char *p, char **pp) @@ -659,6 +669,7 @@ void console_force_unlock(void) { spin_lock_init(&console_lock); serial_force_unlock(sercon_handle); + console_locks_busted = 1; console_start_sync(); } diff -r 2a4eaa76d974 -r dee5bc89873e xen/drivers/passthrough/vtd/x86/vtd.c --- a/xen/drivers/passthrough/vtd/x86/vtd.c Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/drivers/passthrough/vtd/x86/vtd.c Tue Mar 10 11:00:34 2009 +0900 @@ -153,11 +153,12 @@ void hvm_dpci_isairq_eoi(struct domain * void iommu_set_dom0_mapping(struct domain *d) { - u64 i, j, tmp; - unsigned long max_pfn = max(max_page, 0x100000000ul >> PAGE_SHIFT); + u64 i, j, tmp, max_pfn; extern int xen_in_range(paddr_t start, paddr_t end); BUG_ON(d->domain_id != 0); + + max_pfn = max_t(u64, max_page, 0x100000000ull >> PAGE_SHIFT); for ( i = 0; i < max_pfn; i++ ) { diff -r 2a4eaa76d974 -r dee5bc89873e xen/include/asm-ia64/mm.h --- a/xen/include/asm-ia64/mm.h Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/include/asm-ia64/mm.h Tue Mar 10 11:00:34 2009 +0900 @@ -149,13 +149,34 @@ page_list_splice_init(struct page_list_h # define PGC_xen_heap PG_mask(1, 2) /* bit PG_shift(3) reserved. See asm-x86/mm.h */ /* PG_mask(7, 6) reserved. See asm-x86/mm.h*/ + + /* Page is broken? */ +#define _PGC_broken PG_shift(7) +#define PGC_broken PG_mask(1, 7) + /* Page is offline pending ? */ +#define _PGC_offlining PG_shift(8) +#define PGC_offlining PG_mask(1, 8) + /* Page is offlined */ +#define _PGC_offlined PG_shift(9) +#define PGC_offlined PG_mask(1, 9) +#define PGC_offlined_broken (PGC_offlined | PGC_broken) + +#define is_page_offlining(page) ((page)->count_info & PGC_offlining) +#define is_page_offlined(page) ((page)->count_info & PGC_offlined) +#define is_page_broken(page) ((page)->count_info & PGC_broken) +#define is_page_online(page) (!is_page_offlined(page)) + /* Count of references to this frame. */ -#define PGC_count_width PG_shift(6) +#define PGC_count_width PG_shift(9) #define PGC_count_mask ((1UL<<PGC_count_width)-1) +extern unsigned long xen_fixed_mfn_start; +extern unsigned long xen_fixed_mfn_end; #define is_xen_heap_page(page) ((page)->count_info & PGC_xen_heap) #define is_xen_heap_mfn(mfn) (mfn_valid(mfn) && \ is_xen_heap_page(mfn_to_page(mfn))) +#define is_xen_fixed_mfn(mfn) \ + (xen_fixed_mfn_start <= (mfn) && (mfn) <= xen_fixed_mfn_end) #ifdef CONFIG_IA64_PICKLE_DOMAIN #define page_get_owner(_p) \ diff -r 2a4eaa76d974 -r dee5bc89873e xen/include/asm-x86/cpufeature.h --- a/xen/include/asm-x86/cpufeature.h Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/include/asm-x86/cpufeature.h Tue Mar 10 11:00:34 2009 +0900 @@ -95,6 +95,7 @@ #define X86_FEATURE_SSE4_2 (4*32+20) /* Streaming SIMD Extensions 4.2 */ #define X86_FEATURE_X2APIC (4*32+21) /* Extended xAPIC */ #define X86_FEATURE_POPCNT (4*32+23) /* POPCNT instruction */ +#define X86_FEATURE_XSAVE (4*32+26) /* XSAVE/XRSTOR/XSETBV/XGETBV */ #define X86_FEATURE_HYPERVISOR (4*32+31) /* Running under some hypervisor */ /* VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001, word 5 */ diff -r 2a4eaa76d974 -r dee5bc89873e xen/include/asm-x86/mm.h --- a/xen/include/asm-x86/mm.h Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/include/asm-x86/mm.h Tue Mar 10 11:00:34 2009 +0900 @@ -198,8 +198,25 @@ struct page_info /* 3-bit PAT/PCD/PWT cache-attribute hint. */ #define PGC_cacheattr_base PG_shift(6) #define PGC_cacheattr_mask PG_mask(7, 6) + + /* Page is broken? */ + #define _PGC_broken PG_shift(7) + #define PGC_broken PG_mask(1, 7) + /* Page is offline pending ? */ + #define _PGC_offlining PG_shift(8) + #define PGC_offlining PG_mask(1, 8) + /* Page is offlined */ + #define _PGC_offlined PG_shift(9) + #define PGC_offlined PG_mask(1, 9) + #define PGC_offlined_broken (PGC_offlined | PGC_broken) + + #define is_page_offlining(page) ((page)->count_info & PGC_offlining) + #define is_page_offlined(page) ((page)->count_info & PGC_offlined) + #define is_page_broken(page) ((page)->count_info & PGC_broken) + #define is_page_online(page) (!is_page_offlined(page)) + /* Count of references to this frame. */ -#define PGC_count_width PG_shift(6) +#define PGC_count_width PG_shift(9) #define PGC_count_mask ((1UL<<PGC_count_width)-1) #if defined(__i386__) @@ -209,9 +226,13 @@ struct page_info (_mfn < paddr_to_pfn(xenheap_phys_end)); \ }) #else +extern unsigned long allocator_bitmap_end; #define is_xen_heap_page(page) ((page)->count_info & PGC_xen_heap) #define is_xen_heap_mfn(mfn) \ (__mfn_valid(mfn) && is_xen_heap_page(__mfn_to_page(mfn))) +#define is_xen_fixed_mfn(mfn) \ + ( (mfn << PAGE_SHIFT) >= __pa(&_start) && \ + (mfn << PAGE_SHIFT) <= allocator_bitmap_end ) #endif #if defined(__i386__) diff -r 2a4eaa76d974 -r dee5bc89873e xen/include/public/sysctl.h --- a/xen/include/public/sysctl.h Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/include/public/sysctl.h Tue Mar 10 11:00:34 2009 +0900 @@ -359,6 +359,54 @@ struct xen_sysctl_pm_op { }; }; +#define XEN_SYSCTL_page_offline_op 14 +struct xen_sysctl_page_offline_op { + /* IN: range of page to be offlined */ +#define sysctl_page_offline 1 +#define sysctl_page_online 2 +#define sysctl_query_page_offline 3 + uint32_t cmd; + uint32_t start; + uint32_t end; + /* OUT: result of page offline request */ + /* + * bit 0~15: result flags + * bit 16~31: owner + */ + XEN_GUEST_HANDLE(uint32) status; +}; + +#define PG_OFFLINE_STATUS_MASK (0xFFUL) + +/* The result is invalid, i.e. HV does not handle it */ +#define PG_OFFLINE_INVALID (0x1UL << 0) + +#define PG_OFFLINE_OFFLINED (0x1UL << 1) +#define PG_OFFLINE_PENDING (0x1UL << 2) +#define PG_OFFLINE_FAILED (0x1UL << 3) + +#define PG_ONLINE_FAILED PG_OFFLINE_FAILED +#define PG_ONLINE_ONLINED PG_OFFLINE_OFFLINED + +#define PG_OFFLINE_STATUS_OFFLINED (0x1UL << 1) +#define PG_OFFLINE_STATUS_ONLINE (0x1UL << 2) +#define PG_OFFLINE_STATUS_OFFLINE_PENDING (0x1UL << 3) +#define PG_OFFLINE_STATUS_BROKEN (0x1UL << 4) + +#define PG_OFFLINE_MISC_MASK (0xFFUL << 4) + +/* only valid when PG_OFFLINE_FAILED */ +#define PG_OFFLINE_XENPAGE (0x1UL << 8) +#define PG_OFFLINE_DOM0PAGE (0x1UL << 9) +#define PG_OFFLINE_ANONYMOUS (0x1UL << 10) +#define PG_OFFLINE_NOT_CONV_RAM (0x1UL << 11) +#define PG_OFFLINE_OWNED (0x1UL << 12) + +#define PG_OFFLINE_BROKEN (0x1UL << 13) +#define PG_ONLINE_BROKEN PG_OFFLINE_BROKEN + +#define PG_OFFLINE_OWNER_SHIFT 16 + struct xen_sysctl { uint32_t cmd; uint32_t interface_version; /* XEN_SYSCTL_INTERFACE_VERSION */ @@ -375,6 +423,7 @@ struct xen_sysctl { struct xen_sysctl_get_pmstat get_pmstat; struct xen_sysctl_cpu_hotplug cpu_hotplug; struct xen_sysctl_pm_op pm_op; + struct xen_sysctl_page_offline_op page_offline; uint8_t pad[128]; } u; }; diff -r 2a4eaa76d974 -r dee5bc89873e xen/include/public/trace.h --- a/xen/include/public/trace.h Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/include/public/trace.h Tue Mar 10 11:00:34 2009 +0900 @@ -60,7 +60,8 @@ #define TRC_TRACE_WRAP_BUFFER (TRC_GEN + 2) #define TRC_TRACE_CPU_CHANGE (TRC_GEN + 3) -#define TRC_SCHED_RUNSTATE_CHANGE (TRC_SCHED_MIN + 1) +#define TRC_SCHED_RUNSTATE_CHANGE (TRC_SCHED_MIN + 1) +#define TRC_SCHED_CONTINUE_RUNNING (TRC_SCHED_MIN + 2) #define TRC_SCHED_DOM_ADD (TRC_SCHED_VERBOSE + 1) #define TRC_SCHED_DOM_REM (TRC_SCHED_VERBOSE + 2) #define TRC_SCHED_SLEEP (TRC_SCHED_VERBOSE + 3) diff -r 2a4eaa76d974 -r dee5bc89873e xen/include/public/xen.h --- a/xen/include/public/xen.h Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/include/public/xen.h Tue Mar 10 11:00:34 2009 +0900 @@ -354,6 +354,9 @@ typedef uint16_t domid_t; */ #define DOMID_XEN (0x7FF2U) +/* DOMID_INVALID is used to identity invalid domid */ +#define DOMID_INVALID (0x7FFFU) + /* * Send an array of these to HYPERVISOR_mmu_update(). * NB. The fields are natural pointer/address size for this architecture. diff -r 2a4eaa76d974 -r dee5bc89873e xen/include/xen/cpumask.h --- a/xen/include/xen/cpumask.h Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/include/xen/cpumask.h Tue Mar 10 11:00:34 2009 +0900 @@ -38,6 +38,8 @@ * * int first_cpu(mask) Number lowest set bit, or NR_CPUS * int next_cpu(cpu, mask) Next cpu past 'cpu', or NR_CPUS + * int last_cpu(mask) Number highest set bit, or NR_CPUS + * int cycle_cpu(cpu, mask) Next cpu cycling from 'cpu', or NR_CPUS * * cpumask_t cpumask_of_cpu(cpu) Return cpumask with bit 'cpu' set * CPU_MASK_ALL Initializer - all bits set @@ -225,10 +227,21 @@ static inline int __next_cpu(int n, cons #define last_cpu(src) __last_cpu(&(src), NR_CPUS) static inline int __last_cpu(const cpumask_t *srcp, int nbits) { - int cpu, pcpu = NR_CPUS; - for (cpu = first_cpu(*srcp); cpu < NR_CPUS; cpu = next_cpu(cpu, *srcp)) + int cpu, pcpu = nbits; + for (cpu = __first_cpu(srcp, nbits); + cpu < nbits; + cpu = __next_cpu(cpu, srcp, nbits)) pcpu = cpu; return pcpu; +} + +#define cycle_cpu(n, src) __cycle_cpu((n), &(src), NR_CPUS) +static inline int __cycle_cpu(int n, const cpumask_t *srcp, int nbits) +{ + int nxt = __next_cpu(n, srcp, nbits); + if (nxt == nbits) + nxt = __first_cpu(srcp, nbits); + return nxt; } #define cpumask_of_cpu(cpu) \ diff -r 2a4eaa76d974 -r dee5bc89873e xen/include/xen/mm.h --- a/xen/include/xen/mm.h Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/include/xen/mm.h Tue Mar 10 11:00:34 2009 +0900 @@ -60,6 +60,9 @@ unsigned long avail_domheap_pages(void); unsigned long avail_domheap_pages(void); #define alloc_domheap_page(d,f) (alloc_domheap_pages(d,0,f)) #define free_domheap_page(p) (free_domheap_pages(p,0)) +unsigned int online_page(unsigned long mfn, uint32_t *status); +int offline_page(unsigned long mfn, int broken, uint32_t *status); +int query_page_offline(unsigned long mfn, uint32_t *status); void scrub_heap_pages(void); diff -r 2a4eaa76d974 -r dee5bc89873e xen/include/xen/perfc_defn.h --- a/xen/include/xen/perfc_defn.h Fri Mar 06 12:22:22 2009 +0900 +++ b/xen/include/xen/perfc_defn.h Tue Mar 10 11:00:34 2009 +0900 @@ -16,6 +16,41 @@ PERFCOUNTER(sched_run, "sch PERFCOUNTER(sched_run, "sched: runs through scheduler") PERFCOUNTER(sched_ctx, "sched: context switches") +PERFCOUNTER(vcpu_check, "csched: vcpu_check") +PERFCOUNTER(schedule, "csched: schedule") +PERFCOUNTER(acct_run, "csched: acct_run") +PERFCOUNTER(acct_no_work, "csched: acct_no_work") +PERFCOUNTER(acct_balance, "csched: acct_balance") +PERFCOUNTER(acct_reorder, "csched: acct_reorder") +PERFCOUNTER(acct_min_credit, "csched: acct_min_credit") +PERFCOUNTER(acct_vcpu_active, "csched: acct_vcpu_active") +PERFCOUNTER(acct_vcpu_idle, "csched: acct_vcpu_idle") +PERFCOUNTER(vcpu_sleep, "csched: vcpu_sleep") +PERFCOUNTER(vcpu_wake_running, "csched: vcpu_wake_running") +PERFCOUNTER(vcpu_wake_onrunq, "csched: vcpu_wake_onrunq") +PERFCOUNTER(vcpu_wake_runnable, "csched: vcpu_wake_runnable") +PERFCOUNTER(vcpu_wake_not_runnable, "csched: vcpu_wake_not_runnable") +PERFCOUNTER(vcpu_park, "csched: vcpu_park") +PERFCOUNTER(vcpu_unpark, "csched: vcpu_unpark") +PERFCOUNTER(tickle_local_idler, "csched: tickle_local_idler") +PERFCOUNTER(tickle_local_over, "csched: tickle_local_over") +PERFCOUNTER(tickle_local_under, "csched: tickle_local_under") +PERFCOUNTER(tickle_local_other, "csched: tickle_local_other") +PERFCOUNTER(tickle_idlers_none, "csched: tickle_idlers_none") +PERFCOUNTER(tickle_idlers_some, "csched: tickle_idlers_some") +PERFCOUNTER(load_balance_idle, "csched: load_balance_idle") +PERFCOUNTER(load_balance_over, "csched: load_balance_over") +PERFCOUNTER(load_balance_other, "csched: load_balance_other") +PERFCOUNTER(steal_trylock_failed, "csched: steal_trylock_failed") +PERFCOUNTER(steal_peer_idle, "csched: steal_peer_idle") +PERFCOUNTER(migrate_queued, "csched: migrate_queued") +PERFCOUNTER(migrate_running, "csched: migrate_running") +PERFCOUNTER(dom_init, "csched: dom_init") +PERFCOUNTER(dom_destroy, "csched: dom_destroy") +PERFCOUNTER(vcpu_init, "csched: vcpu_init") +PERFCOUNTER(vcpu_destroy, "csched: vcpu_destroy") +PERFCOUNTER(vcpu_hot, "csched: vcpu_hot") + PERFCOUNTER(need_flush_tlb_flush, "PG_need_flush tlb flushes") /*#endif*/ /* __XEN_PERFC_DEFN_H__ */ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |