ia64/xen-unstable

changeset 19305:dee5bc89873e

merge with xen-unstable.hg
author Isaku Yamahata <yamahata@valinux.co.jp>
date Tue Mar 10 11:00:34 2009 +0900 (2009-03-10)
parents 2a4eaa76d974 d035b66b5b4d
children 5e4dd7079c48
files
line diff
     1.1 --- a/docs/src/user.tex	Fri Mar 06 12:22:22 2009 +0900
     1.2 +++ b/docs/src/user.tex	Tue Mar 10 11:00:34 2009 +0900
     1.3 @@ -4194,6 +4194,9 @@ writing to the VGA console after domain 
     1.4  \item [ dma\_bits=xxx ] Specify width of DMA addresses in bits. This
     1.5    is used in NUMA systems to prevent this special DMA memory from
     1.6    being exhausted in one node when remote nodes have available memory.
     1.7 +\item [ vcpu\_migration\_delay=$<$minimum\_time$>$] Set minimum time of 
     1.8 +  vcpu migration in microseconds (default 0). This parameter avoids agressive
     1.9 +  vcpu migration. For example, the linux kernel uses 0.5ms by default.
    1.10  \end{description}
    1.11  
    1.12  In addition, the following options may be specified on the Xen command
     2.1 --- a/extras/mini-os/arch/x86/mm.c	Fri Mar 06 12:22:22 2009 +0900
     2.2 +++ b/extras/mini-os/arch/x86/mm.c	Tue Mar 10 11:00:34 2009 +0900
     2.3 @@ -778,8 +778,7 @@ void arch_init_p2m(unsigned long max_pfn
     2.4  
     2.5  void arch_init_mm(unsigned long* start_pfn_p, unsigned long* max_pfn_p)
     2.6  {
     2.7 -
     2.8 -    unsigned long start_pfn, max_pfn, virt_pfns;
     2.9 +    unsigned long start_pfn, max_pfn;
    2.10  
    2.11      printk("      _text: %p(VA)\n", &_text);
    2.12      printk("     _etext: %p(VA)\n", &_etext);
    2.13 @@ -794,9 +793,13 @@ void arch_init_mm(unsigned long* start_p
    2.14      max_pfn = start_info.nr_pages;
    2.15  
    2.16      /* We need room for demand mapping and heap, clip available memory */
    2.17 -    virt_pfns = DEMAND_MAP_PAGES + HEAP_PAGES;
    2.18 -    if ( max_pfn + virt_pfns + 1 < max_pfn )
    2.19 -        max_pfn = -(virt_pfns + 1);
    2.20 +#if defined(__i386__)
    2.21 +    {
    2.22 +        unsigned long virt_pfns = 1 + DEMAND_MAP_PAGES + 1 + HEAP_PAGES;
    2.23 +        if (max_pfn + virt_pfns >= 0x100000)
    2.24 +            max_pfn = 0x100000 - virt_pfns - 1;
    2.25 +    }
    2.26 +#endif
    2.27  
    2.28      printk("  start_pfn: %lx\n", start_pfn);
    2.29      printk("    max_pfn: %lx\n", max_pfn);
     3.1 --- a/tools/blktap/drivers/block-qcow2.c	Fri Mar 06 12:22:22 2009 +0900
     3.2 +++ b/tools/blktap/drivers/block-qcow2.c	Tue Mar 10 11:00:34 2009 +0900
     3.3 @@ -1984,6 +1984,7 @@ int qcow2_create(const char *filename, u
     3.4                        const char *backing_file, int flags)
     3.5  {
     3.6      int fd, header_size, backing_filename_len, l1_size, i, shift, l2_bits;
     3.7 +    int ret = 0;
     3.8      QCowHeader header;
     3.9      uint64_t tmp, offset;
    3.10      QCowCreateState s1, *s = &s1;
    3.11 @@ -2042,25 +2043,37 @@ int qcow2_create(const char *filename, u
    3.12      create_refcount_update(s, s->refcount_block_offset, s->cluster_size);
    3.13  
    3.14      /* write all the data */
    3.15 -    write(fd, &header, sizeof(header));
    3.16 +    ret = write(fd, &header, sizeof(header));
    3.17 +    if (ret < 0)
    3.18 +        goto out;
    3.19      if (backing_file) {
    3.20 -        write(fd, backing_file, backing_filename_len);
    3.21 +        ret = write(fd, backing_file, backing_filename_len);
    3.22 +        if (ret < 0)
    3.23 +            goto out;
    3.24      }
    3.25      lseek(fd, s->l1_table_offset, SEEK_SET);
    3.26      tmp = 0;
    3.27      for(i = 0;i < l1_size; i++) {
    3.28 -        write(fd, &tmp, sizeof(tmp));
    3.29 +        ret = write(fd, &tmp, sizeof(tmp));
    3.30 +        if (ret < 0)
    3.31 +            goto out;
    3.32      }
    3.33      lseek(fd, s->refcount_table_offset, SEEK_SET);
    3.34 -    write(fd, s->refcount_table, s->cluster_size);
    3.35 +    ret = write(fd, s->refcount_table, s->cluster_size);
    3.36 +    if (ret < 0)
    3.37 +        goto out;
    3.38  
    3.39      lseek(fd, s->refcount_block_offset, SEEK_SET);
    3.40 -    write(fd, s->refcount_block, s->cluster_size);
    3.41 +    ret = write(fd, s->refcount_block, s->cluster_size);
    3.42 +    if (ret < 0)
    3.43 +        goto out;
    3.44 +    ret = 0;
    3.45  
    3.46 +  out:
    3.47      qemu_free(s->refcount_table);
    3.48      qemu_free(s->refcount_block);
    3.49      close(fd);
    3.50 -    return 0;
    3.51 +    return ret;
    3.52  }
    3.53  
    3.54  
     4.1 --- a/tools/examples/xmexample.hvm	Fri Mar 06 12:22:22 2009 +0900
     4.2 +++ b/tools/examples/xmexample.hvm	Tue Mar 10 11:00:34 2009 +0900
     4.3 @@ -308,6 +308,8 @@ serial='pty'
     4.4  #                   available options are:
     4.5  #                   - msitranslate=0|1
     4.6  #                      per-device overriden of pci_msitranslate, see below
     4.7 +#                   - power_mgmt=0|1
     4.8 +#                      per-device overriden of pci_power_mgmt, see below
     4.9  #
    4.10  #pci=[ '07:00.0', '07:00.1' ]
    4.11  
    4.12 @@ -322,6 +324,13 @@ serial='pty'
    4.13  # 
    4.14  #pci_msitranslate=1
    4.15  
    4.16 +#   PCI Power Management:
    4.17 +#
    4.18 +#   If it's set, the guest OS will be able to program D0-D3hot states of the
    4.19 +# PCI device for the purpose of low power consumption.
    4.20 +# 
    4.21 +#pci_power_mgmt=0
    4.22 +
    4.23  #-----------------------------------------------------------------------------
    4.24  #   Configure PVSCSI devices:
    4.25  #
     5.1 --- a/tools/examples/xmexample.hvm-dm	Fri Mar 06 12:22:22 2009 +0900
     5.2 +++ b/tools/examples/xmexample.hvm-dm	Tue Mar 10 11:00:34 2009 +0900
     5.3 @@ -11,4 +11,4 @@ vif = [ '', 'type=ioemu, bridge=xenbr0' 
     5.4  disk = [ 'file:/var/images/min-el3-i386.img,hda,w', ',hdc:cdrom,r' ]
     5.5  
     5.6  # Actual output via PVFB
     5.7 -vfb = [ 'type=sdl' ]
     5.8 +vfb = [ 'sdl=1' ]
     6.1 --- a/tools/examples/xmexample.pv-grub	Fri Mar 06 12:22:22 2009 +0900
     6.2 +++ b/tools/examples/xmexample.pv-grub	Tue Mar 10 11:00:34 2009 +0900
     6.3 @@ -77,29 +77,29 @@ disk = [ 'phy:hda1,hda1,w' ]
     6.4  #
     6.5  # To create one using the SDL backend and sensible defaults:
     6.6  #
     6.7 -# vfb = [ 'type=sdl' ]
     6.8 +# vfb = [ 'sdl=1' ]
     6.9  #
    6.10  # This uses environment variables XAUTHORITY and DISPLAY.  You
    6.11  # can override that:
    6.12  #
    6.13 -# vfb = [ 'type=sdl,xauthority=/home/bozo/.Xauthority,display=:1' ]
    6.14 +# vfb = [ 'sdl=1,xauthority=/home/bozo/.Xauthority,display=:1' ]
    6.15  #
    6.16  # To create one using the VNC backend and sensible defaults:
    6.17  #
    6.18 -# vfb = [ 'type=vnc' ]
    6.19 +# vfb = [ 'vnc=1' ]
    6.20  #
    6.21  # The backend listens on 127.0.0.1 port 5900+N by default, where N is
    6.22  # the domain ID.  You can override both address and N:
    6.23  #
    6.24 -# vfb = [ 'type=vnc,vnclisten=127.0.0.1,vncdisplay=1' ]
    6.25 +# vfb = [ 'vnc=1,vnclisten=127.0.0.1,vncdisplay=1' ]
    6.26  #
    6.27  # Or you can bind the first unused port above 5900:
    6.28  #
    6.29 -# vfb = [ 'type=vnc,vnclisten=0.0.0.0,vncunused=1' ]
    6.30 +# vfb = [ 'vnc=1,vnclisten=0.0.0.0,vncunused=1' ]
    6.31  #
    6.32  # You can override the password:
    6.33  #
    6.34 -# vfb = [ 'type=vnc,vncpasswd=MYPASSWD' ]
    6.35 +# vfb = [ 'vnc=1,vncpasswd=MYPASSWD' ]
    6.36  #
    6.37  # Empty password disables authentication.  Defaults to the vncpasswd
    6.38  # configured in xend-config.sxp.
     7.1 --- a/tools/examples/xmexample.vti	Fri Mar 06 12:22:22 2009 +0900
     7.2 +++ b/tools/examples/xmexample.vti	Tue Mar 10 11:00:34 2009 +0900
     7.3 @@ -9,8 +9,6 @@
     7.4  import os, re
     7.5  arch_libdir = 'lib'
     7.6  arch = os.uname()[4]
     7.7 -if os.uname()[0] == 'Linux' and re.search('64', arch):
     7.8 -    arch_libdir = 'lib64'
     7.9  
    7.10  #----------------------------------------------------------------------------
    7.11  # Kernel image file.
     8.1 --- a/tools/examples/xmexample1	Fri Mar 06 12:22:22 2009 +0900
     8.2 +++ b/tools/examples/xmexample1	Tue Mar 10 11:00:34 2009 +0900
     8.3 @@ -73,29 +73,29 @@ disk = [ 'phy:hda1,hda1,w' ]
     8.4  #
     8.5  # To create one using the SDL backend and sensible defaults:
     8.6  #
     8.7 -# vfb = [ 'type=sdl' ]
     8.8 +# vfb = [ 'sdl=1' ]
     8.9  #
    8.10  # This uses environment variables XAUTHORITY and DISPLAY.  You
    8.11  # can override that:
    8.12  #
    8.13 -# vfb = [ 'type=sdl,xauthority=/home/bozo/.Xauthority,display=:1' ]
    8.14 +# vfb = [ 'sdl=1,xauthority=/home/bozo/.Xauthority,display=:1' ]
    8.15  #
    8.16  # To create one using the VNC backend and sensible defaults:
    8.17  #
    8.18 -# vfb = [ 'type=vnc' ]
    8.19 +# vfb = [ 'vnc=1' ]
    8.20  #
    8.21  # The backend listens on 127.0.0.1 port 5900+N by default, where N is
    8.22  # the domain ID.  You can override both address and N:
    8.23  #
    8.24 -# vfb = [ 'type=vnc,vnclisten=127.0.0.1,vncdisplay=1' ]
    8.25 +# vfb = [ 'vnc=1,vnclisten=127.0.0.1,vncdisplay=1' ]
    8.26  #
    8.27  # Or you can bind the first unused port above 5900:
    8.28  #
    8.29 -# vfb = [ 'type=vnc,vnclisten=0.0.0.0,vncunused=1' ]
    8.30 +# vfb = [ 'vnc=1,vnclisten=0.0.0.0,vncunused=1' ]
    8.31  #
    8.32  # You can override the password:
    8.33  #
    8.34 -# vfb = [ 'type=vnc,vncpasswd=MYPASSWD' ]
    8.35 +# vfb = [ 'vnc=1,vncpasswd=MYPASSWD' ]
    8.36  #
    8.37  # Empty password disables authentication.  Defaults to the vncpasswd
    8.38  # configured in xend-config.sxp.
     9.1 --- a/tools/examples/xmexample2	Fri Mar 06 12:22:22 2009 +0900
     9.2 +++ b/tools/examples/xmexample2	Tue Mar 10 11:00:34 2009 +0900
     9.3 @@ -109,29 +109,29 @@ disk = [ 'phy:sda%d,sda1,w' % (7+vmid),
     9.4  #
     9.5  # To create one using the SDL backend and sensible defaults:
     9.6  #
     9.7 -# vfb = [ 'type=sdl' ]
     9.8 +# vfb = [ 'sdl=1' ]
     9.9  #
    9.10  # This uses environment variables XAUTHORITY and DISPLAY.  You
    9.11  # can override that:
    9.12  #
    9.13 -# vfb = [ 'type=sdl,xauthority=/home/bozo/.Xauthority,display=:1' ]
    9.14 +# vfb = [ 'sdl=1,xauthority=/home/bozo/.Xauthority,display=:1' ]
    9.15  #
    9.16  # To create one using the VNC backend and sensible defaults:
    9.17  #
    9.18 -# vfb = [ 'type=vnc' ]
    9.19 +# vfb = [ 'vnc=1' ]
    9.20  #
    9.21  # The backend listens on 127.0.0.1 port 5900+N by default, where N is
    9.22  # the domain ID.  You can override both address and N:
    9.23  #
    9.24 -# vfb = [ 'type=vnc,vnclisten=127.0.0.1,vncdisplay=%d' % vmid ]
    9.25 +# vfb = [ 'vnc=1,vnclisten=127.0.0.1,vncdisplay=%d' % vmid ]
    9.26  #
    9.27  # Or you can bind the first unused port above 5900:
    9.28  #
    9.29 -# vfb = [ 'type=vnc,vnclisten=0.0.0.0,vncunused=1' ]
    9.30 +# vfb = [ 'vnc=1,vnclisten=0.0.0.0,vncunused=1' ]
    9.31  #
    9.32  # You can override the password:
    9.33  #
    9.34 -# vfb = [ 'type=vnc,vncpasswd=MYPASSWD' ]
    9.35 +# vfb = [ 'vnc=1,vncpasswd=MYPASSWD' ]
    9.36  #
    9.37  # Empty password disables authentication.  Defaults to the vncpasswd
    9.38  # configured in xend-config.sxp.
    10.1 --- a/tools/examples/xmexample3	Fri Mar 06 12:22:22 2009 +0900
    10.2 +++ b/tools/examples/xmexample3	Tue Mar 10 11:00:34 2009 +0900
    10.3 @@ -94,29 +94,29 @@ disk = [ 'phy:hda%d,hda1,w' % (vmid)]
    10.4  #
    10.5  # To create one using the SDL backend and sensible defaults:
    10.6  #
    10.7 -# vfb = [ 'type=sdl' ]
    10.8 +# vfb = [ 'sdl=1' ]
    10.9  #
   10.10  # This uses environment variables XAUTHORITY and DISPLAY.  You
   10.11  # can override that:
   10.12  #
   10.13 -# vfb = [ 'type=sdl,xauthority=/home/bozo/.Xauthority,display=:1' ]
   10.14 +# vfb = [ 'sdl=1,xauthority=/home/bozo/.Xauthority,display=:1' ]
   10.15  #
   10.16  # To create one using the VNC backend and sensible defaults:
   10.17  #
   10.18 -# vfb = [ 'type=vnc' ]
   10.19 +# vfb = [ 'vnc=1' ]
   10.20  #
   10.21  # The backend listens on 127.0.0.1 port 5900+N by default, where N is
   10.22  # the domain ID.  You can override both address and N:
   10.23  #
   10.24 -# vfb = [ 'type=vnc,vnclisten=127.0.0.1,vncdisplay=%d' % vmid ]
   10.25 +# vfb = [ 'vnc=1,vnclisten=127.0.0.1,vncdisplay=%d' % vmid ]
   10.26  #
   10.27  # Or you can bind the first unused port above 5900:
   10.28  #
   10.29 -# vfb = [ 'type=vnc,vnclisten=0.0.0.0,vncunused=1' ]
   10.30 +# vfb = [ 'vnc=1,vnclisten=0.0.0.0,vncunused=1' ]
   10.31  #
   10.32  # You can override the password:
   10.33  #
   10.34 -# vfb = [ 'type=vnc,vncpasswd=MYPASSWD' ]
   10.35 +# vfb = [ 'vnc=1,vncpasswd=MYPASSWD' ]
   10.36  #
   10.37  # Empty password disables authentication.  Defaults to the vncpasswd
   10.38  # configured in xend-config.sxp.
    11.1 --- a/tools/firmware/hvmloader/acpi/dsdt.asl	Fri Mar 06 12:22:22 2009 +0900
    11.2 +++ b/tools/firmware/hvmloader/acpi/dsdt.asl	Tue Mar 10 11:00:34 2009 +0900
    11.3 @@ -470,6 +470,102 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, 
    11.4                  Package(){0x000fffff, 1, \_SB.PCI0.LNKA, 0},
    11.5                  Package(){0x000fffff, 2, \_SB.PCI0.LNKB, 0},
    11.6                  Package(){0x000fffff, 3, \_SB.PCI0.LNKC, 0},
    11.7 +
    11.8 +                /* Device 16, INTA - INTD */
    11.9 +                Package(){0x0010ffff, 0, \_SB.PCI0.LNKA, 0},
   11.10 +                Package(){0x0010ffff, 1, \_SB.PCI0.LNKB, 0},
   11.11 +                Package(){0x0010ffff, 2, \_SB.PCI0.LNKC, 0},
   11.12 +                Package(){0x0010ffff, 3, \_SB.PCI0.LNKD, 0},
   11.13 +
   11.14 +                /* Device 17, INTA - INTD */
   11.15 +                Package(){0x0011ffff, 0, \_SB.PCI0.LNKB, 0},
   11.16 +                Package(){0x0011ffff, 1, \_SB.PCI0.LNKC, 0},
   11.17 +                Package(){0x0011ffff, 2, \_SB.PCI0.LNKD, 0},
   11.18 +                Package(){0x0011ffff, 3, \_SB.PCI0.LNKA, 0},
   11.19 +
   11.20 +                /* Device 18, INTA - INTD */
   11.21 +                Package(){0x0012ffff, 0, \_SB.PCI0.LNKC, 0},
   11.22 +                Package(){0x0012ffff, 1, \_SB.PCI0.LNKD, 0},
   11.23 +                Package(){0x0012ffff, 2, \_SB.PCI0.LNKA, 0},
   11.24 +                Package(){0x0012ffff, 3, \_SB.PCI0.LNKB, 0},
   11.25 +
   11.26 +                /* Device 19, INTA - INTD */
   11.27 +                Package(){0x0013ffff, 0, \_SB.PCI0.LNKD, 0},
   11.28 +                Package(){0x0013ffff, 1, \_SB.PCI0.LNKA, 0},
   11.29 +                Package(){0x0013ffff, 2, \_SB.PCI0.LNKB, 0},
   11.30 +                Package(){0x0013ffff, 3, \_SB.PCI0.LNKC, 0},
   11.31 +
   11.32 +                /* Device 20, INTA - INTD */
   11.33 +                Package(){0x0014ffff, 0, \_SB.PCI0.LNKA, 0},
   11.34 +                Package(){0x0014ffff, 1, \_SB.PCI0.LNKB, 0},
   11.35 +                Package(){0x0014ffff, 2, \_SB.PCI0.LNKC, 0},
   11.36 +                Package(){0x0014ffff, 3, \_SB.PCI0.LNKD, 0},
   11.37 +
   11.38 +                /* Device 21, INTA - INTD */
   11.39 +                Package(){0x0015ffff, 0, \_SB.PCI0.LNKB, 0},
   11.40 +                Package(){0x0015ffff, 1, \_SB.PCI0.LNKC, 0},
   11.41 +                Package(){0x0015ffff, 2, \_SB.PCI0.LNKD, 0},
   11.42 +                Package(){0x0015ffff, 3, \_SB.PCI0.LNKA, 0},
   11.43 +
   11.44 +                /* Device 22, INTA - INTD */
   11.45 +                Package(){0x0016ffff, 0, \_SB.PCI0.LNKC, 0},
   11.46 +                Package(){0x0016ffff, 1, \_SB.PCI0.LNKD, 0},
   11.47 +                Package(){0x0016ffff, 2, \_SB.PCI0.LNKA, 0},
   11.48 +                Package(){0x0016ffff, 3, \_SB.PCI0.LNKB, 0},
   11.49 +
   11.50 +                /* Device 23, INTA - INTD */
   11.51 +                Package(){0x0017ffff, 0, \_SB.PCI0.LNKD, 0},
   11.52 +                Package(){0x0017ffff, 1, \_SB.PCI0.LNKA, 0},
   11.53 +                Package(){0x0017ffff, 2, \_SB.PCI0.LNKB, 0},
   11.54 +                Package(){0x0017ffff, 3, \_SB.PCI0.LNKC, 0},
   11.55 +
   11.56 +                /* Device 24, INTA - INTD */
   11.57 +                Package(){0x0018ffff, 0, \_SB.PCI0.LNKA, 0},
   11.58 +                Package(){0x0018ffff, 1, \_SB.PCI0.LNKB, 0},
   11.59 +                Package(){0x0018ffff, 2, \_SB.PCI0.LNKC, 0},
   11.60 +                Package(){0x0018ffff, 3, \_SB.PCI0.LNKD, 0},
   11.61 +
   11.62 +                /* Device 25, INTA - INTD */
   11.63 +                Package(){0x0019ffff, 0, \_SB.PCI0.LNKB, 0},
   11.64 +                Package(){0x0019ffff, 1, \_SB.PCI0.LNKC, 0},
   11.65 +                Package(){0x0019ffff, 2, \_SB.PCI0.LNKD, 0},
   11.66 +                Package(){0x0019ffff, 3, \_SB.PCI0.LNKA, 0},
   11.67 +
   11.68 +                /* Device 26, INTA - INTD */
   11.69 +                Package(){0x001affff, 0, \_SB.PCI0.LNKC, 0},
   11.70 +                Package(){0x001affff, 1, \_SB.PCI0.LNKD, 0},
   11.71 +                Package(){0x001affff, 2, \_SB.PCI0.LNKA, 0},
   11.72 +                Package(){0x001affff, 3, \_SB.PCI0.LNKB, 0},
   11.73 +
   11.74 +                /* Device 27, INTA - INTD */
   11.75 +                Package(){0x001bffff, 0, \_SB.PCI0.LNKD, 0},
   11.76 +                Package(){0x001bffff, 1, \_SB.PCI0.LNKA, 0},
   11.77 +                Package(){0x001bffff, 2, \_SB.PCI0.LNKB, 0},
   11.78 +                Package(){0x001bffff, 3, \_SB.PCI0.LNKC, 0},
   11.79 +
   11.80 +                /* Device 28, INTA - INTD */
   11.81 +                Package(){0x001cffff, 0, \_SB.PCI0.LNKA, 0},
   11.82 +                Package(){0x001cffff, 1, \_SB.PCI0.LNKB, 0},
   11.83 +                Package(){0x001cffff, 2, \_SB.PCI0.LNKC, 0},
   11.84 +                Package(){0x001cffff, 3, \_SB.PCI0.LNKD, 0},
   11.85 +
   11.86 +                /* Device 29, INTA - INTD */
   11.87 +                Package(){0x001dffff, 0, \_SB.PCI0.LNKB, 0},
   11.88 +                Package(){0x001dffff, 1, \_SB.PCI0.LNKC, 0},
   11.89 +                Package(){0x001dffff, 2, \_SB.PCI0.LNKD, 0},
   11.90 +                Package(){0x001dffff, 3, \_SB.PCI0.LNKA, 0},
   11.91 +
   11.92 +                /* Device 30, INTA - INTD */
   11.93 +                Package(){0x001effff, 0, \_SB.PCI0.LNKC, 0},
   11.94 +                Package(){0x001effff, 1, \_SB.PCI0.LNKD, 0},
   11.95 +                Package(){0x001effff, 2, \_SB.PCI0.LNKA, 0},
   11.96 +                Package(){0x001effff, 3, \_SB.PCI0.LNKB, 0},
   11.97 +
   11.98 +                /* Device 31, INTA - INTD */
   11.99 +                Package(){0x001fffff, 0, \_SB.PCI0.LNKD, 0},
  11.100 +                Package(){0x001fffff, 1, \_SB.PCI0.LNKA, 0},
  11.101 +                Package(){0x001fffff, 2, \_SB.PCI0.LNKB, 0},
  11.102 +                Package(){0x001fffff, 3, \_SB.PCI0.LNKC, 0},
  11.103              })
  11.104  
  11.105              Name(PRTA, Package() {
  11.106 @@ -562,6 +658,102 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, 
  11.107                  Package(){0x000fffff, 1, 0, 46},
  11.108                  Package(){0x000fffff, 2, 0, 47},
  11.109                  Package(){0x000fffff, 3, 0, 16},
  11.110 +
  11.111 +                /* Device 16, INTA - INTD */
  11.112 +                Package(){0x0010ffff, 0, 0, 18},
  11.113 +                Package(){0x0010ffff, 1, 0, 19},
  11.114 +                Package(){0x0010ffff, 2, 0, 20},
  11.115 +                Package(){0x0010ffff, 3, 0, 21},
  11.116 +
  11.117 +                /* Device 17, INTA - INTD */
  11.118 +                Package(){0x0011ffff, 0, 0, 22},
  11.119 +                Package(){0x0011ffff, 1, 0, 23},
  11.120 +                Package(){0x0011ffff, 2, 0, 24},
  11.121 +                Package(){0x0011ffff, 3, 0, 25},
  11.122 +
  11.123 +                /* Device 18, INTA - INTD */
  11.124 +                Package(){0x0012ffff, 0, 0, 26},
  11.125 +                Package(){0x0012ffff, 1, 0, 27},
  11.126 +                Package(){0x0012ffff, 2, 0, 28},
  11.127 +                Package(){0x0012ffff, 3, 0, 29},
  11.128 +
  11.129 +                /* Device 19, INTA - INTD */
  11.130 +                Package(){0x0013ffff, 0, 0, 30},
  11.131 +                Package(){0x0013ffff, 1, 0, 31},
  11.132 +                Package(){0x0013ffff, 2, 0, 32},
  11.133 +                Package(){0x0013ffff, 3, 0, 33},
  11.134 +
  11.135 +                /* Device 20, INTA - INTD */
  11.136 +                Package(){0x0014ffff, 0, 0, 34},
  11.137 +                Package(){0x0014ffff, 1, 0, 35},
  11.138 +                Package(){0x0014ffff, 2, 0, 36},
  11.139 +                Package(){0x0014ffff, 3, 0, 37},
  11.140 +
  11.141 +                /* Device 21, INTA - INTD */
  11.142 +                Package(){0x0015ffff, 0, 0, 38},
  11.143 +                Package(){0x0015ffff, 1, 0, 39},
  11.144 +                Package(){0x0015ffff, 2, 0, 40},
  11.145 +                Package(){0x0015ffff, 3, 0, 41},
  11.146 +
  11.147 +                /* Device 22, INTA - INTD */
  11.148 +                Package(){0x0016ffff, 0, 0, 42},
  11.149 +                Package(){0x0016ffff, 1, 0, 43},
  11.150 +                Package(){0x0016ffff, 2, 0, 44},
  11.151 +                Package(){0x0016ffff, 3, 0, 45},
  11.152 +
  11.153 +                /* Device 23, INTA - INTD */
  11.154 +                Package(){0x0017ffff, 0, 0, 46},
  11.155 +                Package(){0x0017ffff, 1, 0, 47},
  11.156 +                Package(){0x0017ffff, 2, 0, 16},
  11.157 +                Package(){0x0017ffff, 3, 0, 17},
  11.158 +
  11.159 +                /* Device 24, INTA - INTD */
  11.160 +                Package(){0x0018ffff, 0, 0, 19},
  11.161 +                Package(){0x0018ffff, 1, 0, 20},
  11.162 +                Package(){0x0018ffff, 2, 0, 21},
  11.163 +                Package(){0x0018ffff, 3, 0, 22},
  11.164 +
  11.165 +                /* Device 25, INTA - INTD */
  11.166 +                Package(){0x0019ffff, 0, 0, 23},
  11.167 +                Package(){0x0019ffff, 1, 0, 24},
  11.168 +                Package(){0x0019ffff, 2, 0, 25},
  11.169 +                Package(){0x0019ffff, 3, 0, 26},
  11.170 +
  11.171 +                /* Device 26, INTA - INTD */
  11.172 +                Package(){0x001affff, 0, 0, 27},
  11.173 +                Package(){0x001affff, 1, 0, 28},
  11.174 +                Package(){0x001affff, 2, 0, 29},
  11.175 +                Package(){0x001affff, 3, 0, 30},
  11.176 +
  11.177 +                /* Device 27, INTA - INTD */
  11.178 +                Package(){0x001bffff, 0, 0, 31},
  11.179 +                Package(){0x001bffff, 1, 0, 32},
  11.180 +                Package(){0x001bffff, 2, 0, 33},
  11.181 +                Package(){0x001bffff, 3, 0, 34},
  11.182 +
  11.183 +                /* Device 28, INTA - INTD */
  11.184 +                Package(){0x001cffff, 0, 0, 35},
  11.185 +                Package(){0x001cffff, 1, 0, 36},
  11.186 +                Package(){0x001cffff, 2, 0, 37},
  11.187 +                Package(){0x001cffff, 3, 0, 38},
  11.188 +
  11.189 +                /* Device 29, INTA - INTD */
  11.190 +                Package(){0x001dffff, 0, 0, 39},
  11.191 +                Package(){0x001dffff, 1, 0, 40},
  11.192 +                Package(){0x001dffff, 2, 0, 41},
  11.193 +                Package(){0x001dffff, 3, 0, 42},
  11.194 +
  11.195 +                /* Device 30, INTA - INTD */
  11.196 +                Package(){0x001effff, 0, 0, 43},
  11.197 +                Package(){0x001effff, 1, 0, 44},
  11.198 +                Package(){0x001effff, 2, 0, 45},
  11.199 +                Package(){0x001effff, 3, 0, 46},
  11.200 +
  11.201 +                /* Device 31, INTA - INTD */
  11.202 +                Package(){0x001fffff, 0, 0, 47},
  11.203 +                Package(){0x001fffff, 1, 0, 16},
  11.204 +                Package(){0x001fffff, 2, 0, 17},
  11.205 +                Package(){0x001fffff, 3, 0, 18},
  11.206              })
  11.207              
  11.208              Device (ISA)
    12.1 --- a/tools/firmware/hvmloader/acpi/dsdt.c	Fri Mar 06 12:22:22 2009 +0900
    12.2 +++ b/tools/firmware/hvmloader/acpi/dsdt.c	Tue Mar 10 11:00:34 2009 +0900
    12.3 @@ -1,22 +1,22 @@
    12.4  /*
    12.5   * 
    12.6   * Intel ACPI Component Architecture
    12.7 - * ASL Optimizing Compiler version 20081204 [Jan 23 2009]
    12.8 - * Copyright (C) 2000 - 2008 Intel Corporation
    12.9 + * ASL Optimizing Compiler version 20090220 [Mar  9 2009]
   12.10 + * Copyright (C) 2000 - 2009 Intel Corporation
   12.11   * Supports ACPI Specification Revision 3.0a
   12.12   * 
   12.13 - * Compilation of "dsdt.asl" - Fri Jan 23 14:30:29 2009
   12.14 + * Compilation of "dsdt.asl" - Mon Mar  9 09:11:00 2009
   12.15   * 
   12.16   * C source code output
   12.17   *
   12.18   */
   12.19  unsigned char AmlCode[] =
   12.20  {
   12.21 -    0x44,0x53,0x44,0x54,0x5E,0x11,0x00,0x00,  /* 00000000    "DSDT^..." */
   12.22 -    0x02,0xEB,0x58,0x65,0x6E,0x00,0x00,0x00,  /* 00000008    "..Xen..." */
   12.23 +    0x44,0x53,0x44,0x54,0x20,0x18,0x00,0x00,  /* 00000000    "DSDT ..." */
   12.24 +    0x02,0x5B,0x58,0x65,0x6E,0x00,0x00,0x00,  /* 00000008    ".[Xen..." */
   12.25      0x48,0x56,0x4D,0x00,0x00,0x00,0x00,0x00,  /* 00000010    "HVM....." */
   12.26      0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
   12.27 -    0x04,0x12,0x08,0x20,0x08,0x50,0x4D,0x42,  /* 00000020    "... .PMB" */
   12.28 +    0x20,0x02,0x09,0x20,0x08,0x50,0x4D,0x42,  /* 00000020    " .. .PMB" */
   12.29      0x53,0x0B,0x00,0x0C,0x08,0x50,0x4D,0x4C,  /* 00000028    "S....PML" */
   12.30      0x4E,0x0A,0x08,0x08,0x49,0x4F,0x42,0x31,  /* 00000030    "N...IOB1" */
   12.31      0x00,0x08,0x49,0x4F,0x4C,0x31,0x00,0x08,  /* 00000038    "..IOL1.." */
   12.32 @@ -56,517 +56,734 @@ unsigned char AmlCode[] =
   12.33      0x07,0x0A,0x07,0x00,0x00,0x08,0x50,0x49,  /* 00000148    "......PI" */
   12.34      0x43,0x44,0x00,0x14,0x0C,0x5F,0x50,0x49,  /* 00000150    "CD..._PI" */
   12.35      0x43,0x01,0x70,0x68,0x50,0x49,0x43,0x44,  /* 00000158    "C.phPICD" */
   12.36 -    0x10,0x4E,0xF3,0x5F,0x53,0x42,0x5F,0x5B,  /* 00000160    ".N._SB_[" */
   12.37 -    0x80,0x42,0x49,0x4F,0x53,0x00,0x0C,0x00,  /* 00000168    ".BIOS..." */
   12.38 -    0xA0,0x0E,0x00,0x0A,0x10,0x5B,0x81,0x21,  /* 00000170    ".....[.!" */
   12.39 -    0x42,0x49,0x4F,0x53,0x01,0x55,0x41,0x52,  /* 00000178    "BIOS.UAR" */
   12.40 -    0x31,0x01,0x55,0x41,0x52,0x32,0x01,0x48,  /* 00000180    "1.UAR2.H" */
   12.41 -    0x50,0x45,0x54,0x01,0x00,0x1D,0x50,0x4D,  /* 00000188    "PET...PM" */
   12.42 -    0x49,0x4E,0x20,0x50,0x4C,0x45,0x4E,0x20,  /* 00000190    "IN PLEN " */
   12.43 -    0x5B,0x82,0x49,0x04,0x4D,0x45,0x4D,0x30,  /* 00000198    "[.I.MEM0" */
   12.44 -    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 000001A0    "._HID.A." */
   12.45 -    0x0C,0x02,0x08,0x5F,0x43,0x52,0x53,0x11,  /* 000001A8    "..._CRS." */
   12.46 -    0x33,0x0A,0x30,0x8A,0x2B,0x00,0x00,0x0D,  /* 000001B0    "3.0.+..." */
   12.47 -    0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001B8    "........" */
   12.48 +    0x10,0x80,0x60,0x01,0x5F,0x53,0x42,0x5F,  /* 00000160    "..`._SB_" */
   12.49 +    0x5B,0x80,0x42,0x49,0x4F,0x53,0x00,0x0C,  /* 00000168    "[.BIOS.." */
   12.50 +    0x00,0xA0,0x0E,0x00,0x0A,0x10,0x5B,0x81,  /* 00000170    "......[." */
   12.51 +    0x21,0x42,0x49,0x4F,0x53,0x01,0x55,0x41,  /* 00000178    "!BIOS.UA" */
   12.52 +    0x52,0x31,0x01,0x55,0x41,0x52,0x32,0x01,  /* 00000180    "R1.UAR2." */
   12.53 +    0x48,0x50,0x45,0x54,0x01,0x00,0x1D,0x50,  /* 00000188    "HPET...P" */
   12.54 +    0x4D,0x49,0x4E,0x20,0x50,0x4C,0x45,0x4E,  /* 00000190    "MIN PLEN" */
   12.55 +    0x20,0x5B,0x82,0x49,0x04,0x4D,0x45,0x4D,  /* 00000198    " [.I.MEM" */
   12.56 +    0x30,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,  /* 000001A0    "0._HID.A" */
   12.57 +    0xD0,0x0C,0x02,0x08,0x5F,0x43,0x52,0x53,  /* 000001A8    "...._CRS" */
   12.58 +    0x11,0x33,0x0A,0x30,0x8A,0x2B,0x00,0x00,  /* 000001B0    ".3.0.+.." */
   12.59 +    0x0D,0x03,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001B8    "........" */
   12.60      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001C0    "........" */
   12.61 -    0x00,0xFF,0xFF,0x09,0x00,0x00,0x00,0x00,  /* 000001C8    "........" */
   12.62 +    0x00,0x00,0xFF,0xFF,0x09,0x00,0x00,0x00,  /* 000001C8    "........" */
   12.63      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001D0    "........" */
   12.64 -    0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x00,  /* 000001D8    "........" */
   12.65 -    0x00,0x79,0x00,0x5B,0x82,0x4A,0xEB,0x50,  /* 000001E0    ".y.[.J.P" */
   12.66 -    0x43,0x49,0x30,0x08,0x5F,0x48,0x49,0x44,  /* 000001E8    "CI0._HID" */
   12.67 -    0x0C,0x41,0xD0,0x0A,0x03,0x08,0x5F,0x55,  /* 000001F0    ".A...._U" */
   12.68 -    0x49,0x44,0x00,0x08,0x5F,0x41,0x44,0x52,  /* 000001F8    "ID.._ADR" */
   12.69 -    0x00,0x08,0x5F,0x42,0x42,0x4E,0x00,0x5B,  /* 00000200    ".._BBN.[" */
   12.70 -    0x82,0x2A,0x48,0x50,0x30,0x5F,0x08,0x5F,  /* 00000208    ".*HP0_._" */
   12.71 -    0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,0x02,  /* 00000210    "HID.A..." */
   12.72 -    0x08,0x5F,0x43,0x52,0x53,0x11,0x15,0x0A,  /* 00000218    "._CRS..." */
   12.73 -    0x12,0x47,0x01,0xC0,0x10,0xC0,0x10,0x00,  /* 00000220    ".G......" */
   12.74 -    0x03,0x47,0x01,0x44,0xB0,0x44,0xB0,0x00,  /* 00000228    ".G.D.D.." */
   12.75 -    0x04,0x79,0x00,0x14,0x4E,0x0C,0x5F,0x43,  /* 00000230    ".y..N._C" */
   12.76 -    0x52,0x53,0x00,0x08,0x50,0x52,0x54,0x30,  /* 00000238    "RS..PRT0" */
   12.77 -    0x11,0x42,0x07,0x0A,0x6E,0x88,0x0D,0x00,  /* 00000240    ".B..n..." */
   12.78 -    0x02,0x0E,0x00,0x00,0x00,0x00,0x00,0xFF,  /* 00000248    "........" */
   12.79 -    0x00,0x00,0x00,0x00,0x01,0x47,0x01,0xF8,  /* 00000250    ".....G.." */
   12.80 -    0x0C,0xF8,0x0C,0x01,0x08,0x88,0x0D,0x00,  /* 00000258    "........" */
   12.81 -    0x01,0x0C,0x03,0x00,0x00,0x00,0x00,0xF7,  /* 00000260    "........" */
   12.82 -    0x0C,0x00,0x00,0xF8,0x0C,0x88,0x0D,0x00,  /* 00000268    "........" */
   12.83 -    0x01,0x0C,0x03,0x00,0x00,0x00,0x0D,0xFF,  /* 00000270    "........" */
   12.84 -    0xFF,0x00,0x00,0x00,0xF3,0x87,0x17,0x00,  /* 00000278    "........" */
   12.85 -    0x00,0x0C,0x03,0x00,0x00,0x00,0x00,0x00,  /* 00000280    "........" */
   12.86 -    0x00,0x0A,0x00,0xFF,0xFF,0x0B,0x00,0x00,  /* 00000288    "........" */
   12.87 -    0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x87,  /* 00000290    "........" */
   12.88 -    0x17,0x00,0x00,0x0C,0x03,0x00,0x00,0x00,  /* 00000298    "........" */
   12.89 -    0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,  /* 000002A0    "........" */
   12.90 -    0xF4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000002A8    "........" */
   12.91 -    0x05,0x79,0x00,0x8A,0x50,0x52,0x54,0x30,  /* 000002B0    ".y..PRT0" */
   12.92 -    0x0A,0x5C,0x4D,0x4D,0x49,0x4E,0x8A,0x50,  /* 000002B8    ".\MMIN.P" */
   12.93 -    0x52,0x54,0x30,0x0A,0x60,0x4D,0x4D,0x41,  /* 000002C0    "RT0.`MMA" */
   12.94 -    0x58,0x8A,0x50,0x52,0x54,0x30,0x0A,0x68,  /* 000002C8    "X.PRT0.h" */
   12.95 -    0x4D,0x4C,0x45,0x4E,0x70,0x50,0x4D,0x49,  /* 000002D0    "MLENpPMI" */
   12.96 -    0x4E,0x4D,0x4D,0x49,0x4E,0x70,0x50,0x4C,  /* 000002D8    "NMMINpPL" */
   12.97 -    0x45,0x4E,0x4D,0x4C,0x45,0x4E,0x72,0x4D,  /* 000002E0    "ENMLENrM" */
   12.98 -    0x4D,0x49,0x4E,0x4D,0x4C,0x45,0x4E,0x4D,  /* 000002E8    "MINMLENM" */
   12.99 -    0x4D,0x41,0x58,0x74,0x4D,0x4D,0x41,0x58,  /* 000002F0    "MAXtMMAX" */
  12.100 -    0x01,0x4D,0x4D,0x41,0x58,0xA4,0x50,0x52,  /* 000002F8    ".MMAX.PR" */
  12.101 -    0x54,0x30,0x08,0x42,0x55,0x46,0x41,0x11,  /* 00000300    "T0.BUFA." */
  12.102 -    0x09,0x0A,0x06,0x23,0x20,0x0C,0x18,0x79,  /* 00000308    "...# ..y" */
  12.103 -    0x00,0x08,0x42,0x55,0x46,0x42,0x11,0x09,  /* 00000310    "..BUFB.." */
  12.104 -    0x0A,0x06,0x23,0x00,0x00,0x18,0x79,0x00,  /* 00000318    "..#...y." */
  12.105 -    0x8B,0x42,0x55,0x46,0x42,0x01,0x49,0x52,  /* 00000320    ".BUFB.IR" */
  12.106 -    0x51,0x56,0x5B,0x82,0x48,0x08,0x4C,0x4E,  /* 00000328    "QV[.H.LN" */
  12.107 -    0x4B,0x41,0x08,0x5F,0x48,0x49,0x44,0x0C,  /* 00000330    "KA._HID." */
  12.108 -    0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,0x49,  /* 00000338    "A...._UI" */
  12.109 -    0x44,0x01,0x14,0x1C,0x5F,0x53,0x54,0x41,  /* 00000340    "D..._STA" */
  12.110 -    0x00,0x7B,0x50,0x49,0x52,0x41,0x0A,0x80,  /* 00000348    ".{PIRA.." */
  12.111 -    0x60,0xA0,0x08,0x93,0x60,0x0A,0x80,0xA4,  /* 00000350    "`...`..." */
  12.112 -    0x0A,0x09,0xA1,0x04,0xA4,0x0A,0x0B,0x14,  /* 00000358    "........" */
  12.113 -    0x0B,0x5F,0x50,0x52,0x53,0x00,0xA4,0x42,  /* 00000360    "._PRS..B" */
  12.114 -    0x55,0x46,0x41,0x14,0x11,0x5F,0x44,0x49,  /* 00000368    "UFA.._DI" */
  12.115 -    0x53,0x00,0x7D,0x50,0x49,0x52,0x41,0x0A,  /* 00000370    "S.}PIRA." */
  12.116 -    0x80,0x50,0x49,0x52,0x41,0x14,0x1A,0x5F,  /* 00000378    ".PIRA.._" */
  12.117 -    0x43,0x52,0x53,0x00,0x7B,0x50,0x49,0x52,  /* 00000380    "CRS.{PIR" */
  12.118 -    0x41,0x0A,0x0F,0x60,0x79,0x01,0x60,0x49,  /* 00000388    "A..`y.`I" */
  12.119 -    0x52,0x51,0x56,0xA4,0x42,0x55,0x46,0x42,  /* 00000390    "RQV.BUFB" */
  12.120 -    0x14,0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B,  /* 00000398    ".._SRS.." */
  12.121 -    0x68,0x01,0x49,0x52,0x51,0x31,0x82,0x49,  /* 000003A0    "h.IRQ1.I" */
  12.122 -    0x52,0x51,0x31,0x60,0x76,0x60,0x70,0x60,  /* 000003A8    "RQ1`v`p`" */
  12.123 -    0x50,0x49,0x52,0x41,0x5B,0x82,0x49,0x08,  /* 000003B0    "PIRA[.I." */
  12.124 -    0x4C,0x4E,0x4B,0x42,0x08,0x5F,0x48,0x49,  /* 000003B8    "LNKB._HI" */
  12.125 -    0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,  /* 000003C0    "D.A...._" */
  12.126 -    0x55,0x49,0x44,0x0A,0x02,0x14,0x1C,0x5F,  /* 000003C8    "UID...._" */
  12.127 -    0x53,0x54,0x41,0x00,0x7B,0x50,0x49,0x52,  /* 000003D0    "STA.{PIR" */
  12.128 -    0x42,0x0A,0x80,0x60,0xA0,0x08,0x93,0x60,  /* 000003D8    "B..`...`" */
  12.129 -    0x0A,0x80,0xA4,0x0A,0x09,0xA1,0x04,0xA4,  /* 000003E0    "........" */
  12.130 -    0x0A,0x0B,0x14,0x0B,0x5F,0x50,0x52,0x53,  /* 000003E8    "...._PRS" */
  12.131 -    0x00,0xA4,0x42,0x55,0x46,0x41,0x14,0x11,  /* 000003F0    "..BUFA.." */
  12.132 -    0x5F,0x44,0x49,0x53,0x00,0x7D,0x50,0x49,  /* 000003F8    "_DIS.}PI" */
  12.133 -    0x52,0x42,0x0A,0x80,0x50,0x49,0x52,0x42,  /* 00000400    "RB..PIRB" */
  12.134 -    0x14,0x1A,0x5F,0x43,0x52,0x53,0x00,0x7B,  /* 00000408    ".._CRS.{" */
  12.135 -    0x50,0x49,0x52,0x42,0x0A,0x0F,0x60,0x79,  /* 00000410    "PIRB..`y" */
  12.136 -    0x01,0x60,0x49,0x52,0x51,0x56,0xA4,0x42,  /* 00000418    ".`IRQV.B" */
  12.137 -    0x55,0x46,0x42,0x14,0x1B,0x5F,0x53,0x52,  /* 00000420    "UFB.._SR" */
  12.138 -    0x53,0x01,0x8B,0x68,0x01,0x49,0x52,0x51,  /* 00000428    "S..h.IRQ" */
  12.139 -    0x31,0x82,0x49,0x52,0x51,0x31,0x60,0x76,  /* 00000430    "1.IRQ1`v" */
  12.140 -    0x60,0x70,0x60,0x50,0x49,0x52,0x42,0x5B,  /* 00000438    "`p`PIRB[" */
  12.141 -    0x82,0x49,0x08,0x4C,0x4E,0x4B,0x43,0x08,  /* 00000440    ".I.LNKC." */
  12.142 -    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,  /* 00000448    "_HID.A.." */
  12.143 -    0x0F,0x08,0x5F,0x55,0x49,0x44,0x0A,0x03,  /* 00000450    ".._UID.." */
  12.144 -    0x14,0x1C,0x5F,0x53,0x54,0x41,0x00,0x7B,  /* 00000458    ".._STA.{" */
  12.145 -    0x50,0x49,0x52,0x43,0x0A,0x80,0x60,0xA0,  /* 00000460    "PIRC..`." */
  12.146 -    0x08,0x93,0x60,0x0A,0x80,0xA4,0x0A,0x09,  /* 00000468    "..`....." */
  12.147 -    0xA1,0x04,0xA4,0x0A,0x0B,0x14,0x0B,0x5F,  /* 00000470    "......._" */
  12.148 -    0x50,0x52,0x53,0x00,0xA4,0x42,0x55,0x46,  /* 00000478    "PRS..BUF" */
  12.149 -    0x41,0x14,0x11,0x5F,0x44,0x49,0x53,0x00,  /* 00000480    "A.._DIS." */
  12.150 -    0x7D,0x50,0x49,0x52,0x43,0x0A,0x80,0x50,  /* 00000488    "}PIRC..P" */
  12.151 -    0x49,0x52,0x43,0x14,0x1A,0x5F,0x43,0x52,  /* 00000490    "IRC.._CR" */
  12.152 -    0x53,0x00,0x7B,0x50,0x49,0x52,0x43,0x0A,  /* 00000498    "S.{PIRC." */
  12.153 -    0x0F,0x60,0x79,0x01,0x60,0x49,0x52,0x51,  /* 000004A0    ".`y.`IRQ" */
  12.154 -    0x56,0xA4,0x42,0x55,0x46,0x42,0x14,0x1B,  /* 000004A8    "V.BUFB.." */
  12.155 -    0x5F,0x53,0x52,0x53,0x01,0x8B,0x68,0x01,  /* 000004B0    "_SRS..h." */
  12.156 -    0x49,0x52,0x51,0x31,0x82,0x49,0x52,0x51,  /* 000004B8    "IRQ1.IRQ" */
  12.157 -    0x31,0x60,0x76,0x60,0x70,0x60,0x50,0x49,  /* 000004C0    "1`v`p`PI" */
  12.158 -    0x52,0x43,0x5B,0x82,0x49,0x08,0x4C,0x4E,  /* 000004C8    "RC[.I.LN" */
  12.159 -    0x4B,0x44,0x08,0x5F,0x48,0x49,0x44,0x0C,  /* 000004D0    "KD._HID." */
  12.160 -    0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,0x49,  /* 000004D8    "A...._UI" */
  12.161 -    0x44,0x0A,0x04,0x14,0x1C,0x5F,0x53,0x54,  /* 000004E0    "D...._ST" */
  12.162 -    0x41,0x00,0x7B,0x50,0x49,0x52,0x44,0x0A,  /* 000004E8    "A.{PIRD." */
  12.163 -    0x80,0x60,0xA0,0x08,0x93,0x60,0x0A,0x80,  /* 000004F0    ".`...`.." */
  12.164 -    0xA4,0x0A,0x09,0xA1,0x04,0xA4,0x0A,0x0B,  /* 000004F8    "........" */
  12.165 -    0x14,0x0B,0x5F,0x50,0x52,0x53,0x00,0xA4,  /* 00000500    ".._PRS.." */
  12.166 -    0x42,0x55,0x46,0x41,0x14,0x11,0x5F,0x44,  /* 00000508    "BUFA.._D" */
  12.167 -    0x49,0x53,0x00,0x7D,0x50,0x49,0x52,0x44,  /* 00000510    "IS.}PIRD" */
  12.168 -    0x0A,0x80,0x50,0x49,0x52,0x44,0x14,0x1A,  /* 00000518    "..PIRD.." */
  12.169 -    0x5F,0x43,0x52,0x53,0x00,0x7B,0x50,0x49,  /* 00000520    "_CRS.{PI" */
  12.170 -    0x52,0x44,0x0A,0x0F,0x60,0x79,0x01,0x60,  /* 00000528    "RD..`y.`" */
  12.171 -    0x49,0x52,0x51,0x56,0xA4,0x42,0x55,0x46,  /* 00000530    "IRQV.BUF" */
  12.172 -    0x42,0x14,0x1B,0x5F,0x53,0x52,0x53,0x01,  /* 00000538    "B.._SRS." */
  12.173 -    0x8B,0x68,0x01,0x49,0x52,0x51,0x31,0x82,  /* 00000540    ".h.IRQ1." */
  12.174 -    0x49,0x52,0x51,0x31,0x60,0x76,0x60,0x70,  /* 00000548    "IRQ1`v`p" */
  12.175 -    0x60,0x50,0x49,0x52,0x44,0x5B,0x82,0x44,  /* 00000550    "`PIRD[.D" */
  12.176 -    0x05,0x48,0x50,0x45,0x54,0x08,0x5F,0x48,  /* 00000558    ".HPET._H" */
  12.177 -    0x49,0x44,0x0C,0x41,0xD0,0x01,0x03,0x08,  /* 00000560    "ID.A...." */
  12.178 -    0x5F,0x55,0x49,0x44,0x00,0x14,0x18,0x5F,  /* 00000568    "_UID..._" */
  12.179 -    0x53,0x54,0x41,0x00,0xA0,0x0C,0x93,0x5E,  /* 00000570    "STA....^" */
  12.180 -    0x5E,0x5E,0x48,0x50,0x45,0x54,0x00,0xA4,  /* 00000578    "^^HPET.." */
  12.181 -    0x00,0xA1,0x04,0xA4,0x0A,0x0F,0x08,0x5F,  /* 00000580    "......._" */
  12.182 -    0x43,0x52,0x53,0x11,0x1F,0x0A,0x1C,0x87,  /* 00000588    "CRS....." */
  12.183 -    0x17,0x00,0x00,0x0D,0x01,0x00,0x00,0x00,  /* 00000590    "........" */
  12.184 -    0x00,0x00,0x00,0xD0,0xFE,0xFF,0x03,0xD0,  /* 00000598    "........" */
  12.185 -    0xFE,0x00,0x00,0x00,0x00,0x00,0x04,0x00,  /* 000005A0    "........" */
  12.186 -    0x00,0x79,0x00,0x14,0x16,0x5F,0x50,0x52,  /* 000005A8    ".y..._PR" */
  12.187 -    0x54,0x00,0xA0,0x0A,0x50,0x49,0x43,0x44,  /* 000005B0    "T...PICD" */
  12.188 -    0xA4,0x50,0x52,0x54,0x41,0xA4,0x50,0x52,  /* 000005B8    ".PRTA.PR" */
  12.189 -    0x54,0x50,0x08,0x50,0x52,0x54,0x50,0x12,  /* 000005C0    "TP.PRTP." */
  12.190 -    0x49,0x36,0x3C,0x12,0x0D,0x04,0x0C,0xFF,  /* 000005C8    "I6<....." */
  12.191 -    0xFF,0x01,0x00,0x00,0x4C,0x4E,0x4B,0x42,  /* 000005D0    "....LNKB" */
  12.192 -    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x01,  /* 000005D8    "........" */
  12.193 -    0x00,0x01,0x4C,0x4E,0x4B,0x43,0x00,0x12,  /* 000005E0    "..LNKC.." */
  12.194 -    0x0E,0x04,0x0C,0xFF,0xFF,0x01,0x00,0x0A,  /* 000005E8    "........" */
  12.195 -    0x02,0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0E,  /* 000005F0    ".LNKD..." */
  12.196 -    0x04,0x0C,0xFF,0xFF,0x01,0x00,0x0A,0x03,  /* 000005F8    "........" */
  12.197 -    0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0D,0x04,  /* 00000600    "LNKA...." */
  12.198 -    0x0C,0xFF,0xFF,0x02,0x00,0x00,0x4C,0x4E,  /* 00000608    "......LN" */
  12.199 -    0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000610    "KC......" */
  12.200 -    0xFF,0x02,0x00,0x01,0x4C,0x4E,0x4B,0x44,  /* 00000618    "....LNKD" */
  12.201 -    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x02,  /* 00000620    "........" */
  12.202 -    0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x41,0x00,  /* 00000628    "...LNKA." */
  12.203 -    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x02,0x00,  /* 00000630    "........" */
  12.204 -    0x0A,0x03,0x4C,0x4E,0x4B,0x42,0x00,0x12,  /* 00000638    "..LNKB.." */
  12.205 -    0x0D,0x04,0x0C,0xFF,0xFF,0x03,0x00,0x00,  /* 00000640    "........" */
  12.206 -    0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04,  /* 00000648    "LNKD...." */
  12.207 -    0x0C,0xFF,0xFF,0x03,0x00,0x01,0x4C,0x4E,  /* 00000650    "......LN" */
  12.208 -    0x4B,0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 00000658    "KA......" */
  12.209 -    0xFF,0x03,0x00,0x0A,0x02,0x4C,0x4E,0x4B,  /* 00000660    ".....LNK" */
  12.210 -    0x42,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 00000668    "B......." */
  12.211 -    0x03,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x43,  /* 00000670    "....LNKC" */
  12.212 -    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x04,  /* 00000678    "........" */
  12.213 -    0x00,0x00,0x4C,0x4E,0x4B,0x41,0x00,0x12,  /* 00000680    "..LNKA.." */
  12.214 -    0x0D,0x04,0x0C,0xFF,0xFF,0x04,0x00,0x01,  /* 00000688    "........" */
  12.215 -    0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,  /* 00000690    "LNKB...." */
  12.216 -    0x0C,0xFF,0xFF,0x04,0x00,0x0A,0x02,0x4C,  /* 00000698    ".......L" */
  12.217 -    0x4E,0x4B,0x43,0x00,0x12,0x0E,0x04,0x0C,  /* 000006A0    "NKC....." */
  12.218 -    0xFF,0xFF,0x04,0x00,0x0A,0x03,0x4C,0x4E,  /* 000006A8    "......LN" */
  12.219 -    0x4B,0x44,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 000006B0    "KD......" */
  12.220 -    0xFF,0x05,0x00,0x00,0x4C,0x4E,0x4B,0x42,  /* 000006B8    "....LNKB" */
  12.221 -    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x05,  /* 000006C0    "........" */
  12.222 -    0x00,0x01,0x4C,0x4E,0x4B,0x43,0x00,0x12,  /* 000006C8    "..LNKC.." */
  12.223 -    0x0E,0x04,0x0C,0xFF,0xFF,0x05,0x00,0x0A,  /* 000006D0    "........" */
  12.224 -    0x02,0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0E,  /* 000006D8    ".LNKD..." */
  12.225 -    0x04,0x0C,0xFF,0xFF,0x05,0x00,0x0A,0x03,  /* 000006E0    "........" */
  12.226 -    0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0D,0x04,  /* 000006E8    "LNKA...." */
  12.227 -    0x0C,0xFF,0xFF,0x06,0x00,0x00,0x4C,0x4E,  /* 000006F0    "......LN" */
  12.228 -    0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 000006F8    "KC......" */
  12.229 -    0xFF,0x06,0x00,0x01,0x4C,0x4E,0x4B,0x44,  /* 00000700    "....LNKD" */
  12.230 -    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x06,  /* 00000708    "........" */
  12.231 -    0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x41,0x00,  /* 00000710    "...LNKA." */
  12.232 -    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x06,0x00,  /* 00000718    "........" */
  12.233 -    0x0A,0x03,0x4C,0x4E,0x4B,0x42,0x00,0x12,  /* 00000720    "..LNKB.." */
  12.234 -    0x0D,0x04,0x0C,0xFF,0xFF,0x07,0x00,0x00,  /* 00000728    "........" */
  12.235 -    0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04,  /* 00000730    "LNKD...." */
  12.236 -    0x0C,0xFF,0xFF,0x07,0x00,0x01,0x4C,0x4E,  /* 00000738    "......LN" */
  12.237 -    0x4B,0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 00000740    "KA......" */
  12.238 -    0xFF,0x07,0x00,0x0A,0x02,0x4C,0x4E,0x4B,  /* 00000748    ".....LNK" */
  12.239 -    0x42,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 00000750    "B......." */
  12.240 -    0x07,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x43,  /* 00000758    "....LNKC" */
  12.241 -    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x08,  /* 00000760    "........" */
  12.242 -    0x00,0x00,0x4C,0x4E,0x4B,0x41,0x00,0x12,  /* 00000768    "..LNKA.." */
  12.243 -    0x0D,0x04,0x0C,0xFF,0xFF,0x08,0x00,0x01,  /* 00000770    "........" */
  12.244 -    0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,  /* 00000778    "LNKB...." */
  12.245 -    0x0C,0xFF,0xFF,0x08,0x00,0x0A,0x02,0x4C,  /* 00000780    ".......L" */
  12.246 -    0x4E,0x4B,0x43,0x00,0x12,0x0E,0x04,0x0C,  /* 00000788    "NKC....." */
  12.247 -    0xFF,0xFF,0x08,0x00,0x0A,0x03,0x4C,0x4E,  /* 00000790    "......LN" */
  12.248 -    0x4B,0x44,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000798    "KD......" */
  12.249 -    0xFF,0x09,0x00,0x00,0x4C,0x4E,0x4B,0x42,  /* 000007A0    "....LNKB" */
  12.250 -    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x09,  /* 000007A8    "........" */
  12.251 -    0x00,0x01,0x4C,0x4E,0x4B,0x43,0x00,0x12,  /* 000007B0    "..LNKC.." */
  12.252 -    0x0E,0x04,0x0C,0xFF,0xFF,0x09,0x00,0x0A,  /* 000007B8    "........" */
  12.253 -    0x02,0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0E,  /* 000007C0    ".LNKD..." */
  12.254 -    0x04,0x0C,0xFF,0xFF,0x09,0x00,0x0A,0x03,  /* 000007C8    "........" */
  12.255 -    0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0D,0x04,  /* 000007D0    "LNKA...." */
  12.256 -    0x0C,0xFF,0xFF,0x0A,0x00,0x00,0x4C,0x4E,  /* 000007D8    "......LN" */
  12.257 -    0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 000007E0    "KC......" */
  12.258 -    0xFF,0x0A,0x00,0x01,0x4C,0x4E,0x4B,0x44,  /* 000007E8    "....LNKD" */
  12.259 -    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x0A,  /* 000007F0    "........" */
  12.260 -    0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x41,0x00,  /* 000007F8    "...LNKA." */
  12.261 -    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x0A,0x00,  /* 00000800    "........" */
  12.262 -    0x0A,0x03,0x4C,0x4E,0x4B,0x42,0x00,0x12,  /* 00000808    "..LNKB.." */
  12.263 -    0x0D,0x04,0x0C,0xFF,0xFF,0x0B,0x00,0x00,  /* 00000810    "........" */
  12.264 -    0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04,  /* 00000818    "LNKD...." */
  12.265 -    0x0C,0xFF,0xFF,0x0B,0x00,0x01,0x4C,0x4E,  /* 00000820    "......LN" */
  12.266 -    0x4B,0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 00000828    "KA......" */
  12.267 -    0xFF,0x0B,0x00,0x0A,0x02,0x4C,0x4E,0x4B,  /* 00000830    ".....LNK" */
  12.268 -    0x42,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 00000838    "B......." */
  12.269 -    0x0B,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x43,  /* 00000840    "....LNKC" */
  12.270 -    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x0C,  /* 00000848    "........" */
  12.271 -    0x00,0x00,0x4C,0x4E,0x4B,0x41,0x00,0x12,  /* 00000850    "..LNKA.." */
  12.272 -    0x0D,0x04,0x0C,0xFF,0xFF,0x0C,0x00,0x01,  /* 00000858    "........" */
  12.273 -    0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,  /* 00000860    "LNKB...." */
  12.274 -    0x0C,0xFF,0xFF,0x0C,0x00,0x0A,0x02,0x4C,  /* 00000868    ".......L" */
  12.275 -    0x4E,0x4B,0x43,0x00,0x12,0x0E,0x04,0x0C,  /* 00000870    "NKC....." */
  12.276 -    0xFF,0xFF,0x0C,0x00,0x0A,0x03,0x4C,0x4E,  /* 00000878    "......LN" */
  12.277 -    0x4B,0x44,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000880    "KD......" */
  12.278 -    0xFF,0x0D,0x00,0x00,0x4C,0x4E,0x4B,0x42,  /* 00000888    "....LNKB" */
  12.279 -    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x0D,  /* 00000890    "........" */
  12.280 -    0x00,0x01,0x4C,0x4E,0x4B,0x43,0x00,0x12,  /* 00000898    "..LNKC.." */
  12.281 -    0x0E,0x04,0x0C,0xFF,0xFF,0x0D,0x00,0x0A,  /* 000008A0    "........" */
  12.282 -    0x02,0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0E,  /* 000008A8    ".LNKD..." */
  12.283 -    0x04,0x0C,0xFF,0xFF,0x0D,0x00,0x0A,0x03,  /* 000008B0    "........" */
  12.284 -    0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0D,0x04,  /* 000008B8    "LNKA...." */
  12.285 -    0x0C,0xFF,0xFF,0x0E,0x00,0x00,0x4C,0x4E,  /* 000008C0    "......LN" */
  12.286 -    0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 000008C8    "KC......" */
  12.287 -    0xFF,0x0E,0x00,0x01,0x4C,0x4E,0x4B,0x44,  /* 000008D0    "....LNKD" */
  12.288 -    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x0E,  /* 000008D8    "........" */
  12.289 -    0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x41,0x00,  /* 000008E0    "...LNKA." */
  12.290 -    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x0E,0x00,  /* 000008E8    "........" */
  12.291 -    0x0A,0x03,0x4C,0x4E,0x4B,0x42,0x00,0x12,  /* 000008F0    "..LNKB.." */
  12.292 -    0x0D,0x04,0x0C,0xFF,0xFF,0x0F,0x00,0x00,  /* 000008F8    "........" */
  12.293 -    0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04,  /* 00000900    "LNKD...." */
  12.294 -    0x0C,0xFF,0xFF,0x0F,0x00,0x01,0x4C,0x4E,  /* 00000908    "......LN" */
  12.295 -    0x4B,0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 00000910    "KA......" */
  12.296 -    0xFF,0x0F,0x00,0x0A,0x02,0x4C,0x4E,0x4B,  /* 00000918    ".....LNK" */
  12.297 -    0x42,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 00000920    "B......." */
  12.298 -    0x0F,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x43,  /* 00000928    "....LNKC" */
  12.299 -    0x00,0x08,0x50,0x52,0x54,0x41,0x12,0x41,  /* 00000930    "..PRTA.A" */
  12.300 -    0x2F,0x3C,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00000938    "/<......" */
  12.301 -    0x01,0x00,0x00,0x00,0x0A,0x14,0x12,0x0B,  /* 00000940    "........" */
  12.302 -    0x04,0x0C,0xFF,0xFF,0x01,0x00,0x01,0x00,  /* 00000948    "........" */
  12.303 -    0x0A,0x15,0x12,0x0C,0x04,0x0C,0xFF,0xFF,  /* 00000950    "........" */
  12.304 -    0x01,0x00,0x0A,0x02,0x00,0x0A,0x16,0x12,  /* 00000958    "........" */
  12.305 -    0x0C,0x04,0x0C,0xFF,0xFF,0x01,0x00,0x0A,  /* 00000960    "........" */
  12.306 -    0x03,0x00,0x0A,0x17,0x12,0x0B,0x04,0x0C,  /* 00000968    "........" */
  12.307 -    0xFF,0xFF,0x02,0x00,0x00,0x00,0x0A,0x18,  /* 00000970    "........" */
  12.308 -    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x02,0x00,  /* 00000978    "........" */
  12.309 -    0x01,0x00,0x0A,0x19,0x12,0x0C,0x04,0x0C,  /* 00000980    "........" */
  12.310 -    0xFF,0xFF,0x02,0x00,0x0A,0x02,0x00,0x0A,  /* 00000988    "........" */
  12.311 -    0x1A,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x02,  /* 00000990    "........" */
  12.312 -    0x00,0x0A,0x03,0x00,0x0A,0x1B,0x12,0x0B,  /* 00000998    "........" */
  12.313 -    0x04,0x0C,0xFF,0xFF,0x03,0x00,0x00,0x00,  /* 000009A0    "........" */
  12.314 -    0x0A,0x1C,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 000009A8    "........" */
  12.315 -    0x03,0x00,0x01,0x00,0x0A,0x1D,0x12,0x0C,  /* 000009B0    "........" */
  12.316 -    0x04,0x0C,0xFF,0xFF,0x03,0x00,0x0A,0x02,  /* 000009B8    "........" */
  12.317 -    0x00,0x0A,0x1E,0x12,0x0C,0x04,0x0C,0xFF,  /* 000009C0    "........" */
  12.318 -    0xFF,0x03,0x00,0x0A,0x03,0x00,0x0A,0x1F,  /* 000009C8    "........" */
  12.319 -    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x04,0x00,  /* 000009D0    "........" */
  12.320 -    0x00,0x00,0x0A,0x20,0x12,0x0B,0x04,0x0C,  /* 000009D8    "... ...." */
  12.321 -    0xFF,0xFF,0x04,0x00,0x01,0x00,0x0A,0x21,  /* 000009E0    ".......!" */
  12.322 -    0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x04,0x00,  /* 000009E8    "........" */
  12.323 -    0x0A,0x02,0x00,0x0A,0x22,0x12,0x0C,0x04,  /* 000009F0    "...."..." */
  12.324 -    0x0C,0xFF,0xFF,0x04,0x00,0x0A,0x03,0x00,  /* 000009F8    "........" */
  12.325 -    0x0A,0x23,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00000A00    ".#......" */
  12.326 -    0x05,0x00,0x00,0x00,0x0A,0x24,0x12,0x0B,  /* 00000A08    ".....$.." */
  12.327 -    0x04,0x0C,0xFF,0xFF,0x05,0x00,0x01,0x00,  /* 00000A10    "........" */
  12.328 -    0x0A,0x25,0x12,0x0C,0x04,0x0C,0xFF,0xFF,  /* 00000A18    ".%......" */
  12.329 -    0x05,0x00,0x0A,0x02,0x00,0x0A,0x26,0x12,  /* 00000A20    "......&." */
  12.330 -    0x0C,0x04,0x0C,0xFF,0xFF,0x05,0x00,0x0A,  /* 00000A28    "........" */
  12.331 -    0x03,0x00,0x0A,0x27,0x12,0x0B,0x04,0x0C,  /* 00000A30    "...'...." */
  12.332 -    0xFF,0xFF,0x06,0x00,0x00,0x00,0x0A,0x28,  /* 00000A38    ".......(" */
  12.333 -    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x06,0x00,  /* 00000A40    "........" */
  12.334 -    0x01,0x00,0x0A,0x29,0x12,0x0C,0x04,0x0C,  /* 00000A48    "...)...." */
  12.335 -    0xFF,0xFF,0x06,0x00,0x0A,0x02,0x00,0x0A,  /* 00000A50    "........" */
  12.336 -    0x2A,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x06,  /* 00000A58    "*......." */
  12.337 -    0x00,0x0A,0x03,0x00,0x0A,0x2B,0x12,0x0B,  /* 00000A60    ".....+.." */
  12.338 -    0x04,0x0C,0xFF,0xFF,0x07,0x00,0x00,0x00,  /* 00000A68    "........" */
  12.339 -    0x0A,0x2C,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00000A70    ".,......" */
  12.340 -    0x07,0x00,0x01,0x00,0x0A,0x2D,0x12,0x0C,  /* 00000A78    ".....-.." */
  12.341 -    0x04,0x0C,0xFF,0xFF,0x07,0x00,0x0A,0x02,  /* 00000A80    "........" */
  12.342 -    0x00,0x0A,0x2E,0x12,0x0C,0x04,0x0C,0xFF,  /* 00000A88    "........" */
  12.343 -    0xFF,0x07,0x00,0x0A,0x03,0x00,0x0A,0x2F,  /* 00000A90    "......./" */
  12.344 -    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x08,0x00,  /* 00000A98    "........" */
  12.345 -    0x00,0x00,0x0A,0x11,0x12,0x0B,0x04,0x0C,  /* 00000AA0    "........" */
  12.346 -    0xFF,0xFF,0x08,0x00,0x01,0x00,0x0A,0x12,  /* 00000AA8    "........" */
  12.347 -    0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x08,0x00,  /* 00000AB0    "........" */
  12.348 -    0x0A,0x02,0x00,0x0A,0x13,0x12,0x0C,0x04,  /* 00000AB8    "........" */
  12.349 -    0x0C,0xFF,0xFF,0x08,0x00,0x0A,0x03,0x00,  /* 00000AC0    "........" */
  12.350 -    0x0A,0x14,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00000AC8    "........" */
  12.351 -    0x09,0x00,0x00,0x00,0x0A,0x15,0x12,0x0B,  /* 00000AD0    "........" */
  12.352 -    0x04,0x0C,0xFF,0xFF,0x09,0x00,0x01,0x00,  /* 00000AD8    "........" */
  12.353 -    0x0A,0x16,0x12,0x0C,0x04,0x0C,0xFF,0xFF,  /* 00000AE0    "........" */
  12.354 -    0x09,0x00,0x0A,0x02,0x00,0x0A,0x17,0x12,  /* 00000AE8    "........" */
  12.355 -    0x0C,0x04,0x0C,0xFF,0xFF,0x09,0x00,0x0A,  /* 00000AF0    "........" */
  12.356 -    0x03,0x00,0x0A,0x18,0x12,0x0B,0x04,0x0C,  /* 00000AF8    "........" */
  12.357 -    0xFF,0xFF,0x0A,0x00,0x00,0x00,0x0A,0x19,  /* 00000B00    "........" */
  12.358 -    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x0A,0x00,  /* 00000B08    "........" */
  12.359 -    0x01,0x00,0x0A,0x1A,0x12,0x0C,0x04,0x0C,  /* 00000B10    "........" */
  12.360 -    0xFF,0xFF,0x0A,0x00,0x0A,0x02,0x00,0x0A,  /* 00000B18    "........" */
  12.361 -    0x1B,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x0A,  /* 00000B20    "........" */
  12.362 -    0x00,0x0A,0x03,0x00,0x0A,0x1C,0x12,0x0B,  /* 00000B28    "........" */
  12.363 -    0x04,0x0C,0xFF,0xFF,0x0B,0x00,0x00,0x00,  /* 00000B30    "........" */
  12.364 -    0x0A,0x1D,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00000B38    "........" */
  12.365 -    0x0B,0x00,0x01,0x00,0x0A,0x1E,0x12,0x0C,  /* 00000B40    "........" */
  12.366 -    0x04,0x0C,0xFF,0xFF,0x0B,0x00,0x0A,0x02,  /* 00000B48    "........" */
  12.367 -    0x00,0x0A,0x1F,0x12,0x0C,0x04,0x0C,0xFF,  /* 00000B50    "........" */
  12.368 -    0xFF,0x0B,0x00,0x0A,0x03,0x00,0x0A,0x20,  /* 00000B58    "....... " */
  12.369 -    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x0C,0x00,  /* 00000B60    "........" */
  12.370 -    0x00,0x00,0x0A,0x21,0x12,0x0B,0x04,0x0C,  /* 00000B68    "...!...." */
  12.371 -    0xFF,0xFF,0x0C,0x00,0x01,0x00,0x0A,0x22,  /* 00000B70    "......."" */
  12.372 -    0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x0C,0x00,  /* 00000B78    "........" */
  12.373 -    0x0A,0x02,0x00,0x0A,0x23,0x12,0x0C,0x04,  /* 00000B80    "....#..." */
  12.374 -    0x0C,0xFF,0xFF,0x0C,0x00,0x0A,0x03,0x00,  /* 00000B88    "........" */
  12.375 -    0x0A,0x24,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00000B90    ".$......" */
  12.376 -    0x0D,0x00,0x00,0x00,0x0A,0x25,0x12,0x0B,  /* 00000B98    ".....%.." */
  12.377 -    0x04,0x0C,0xFF,0xFF,0x0D,0x00,0x01,0x00,  /* 00000BA0    "........" */
  12.378 -    0x0A,0x26,0x12,0x0C,0x04,0x0C,0xFF,0xFF,  /* 00000BA8    ".&......" */
  12.379 -    0x0D,0x00,0x0A,0x02,0x00,0x0A,0x27,0x12,  /* 00000BB0    "......'." */
  12.380 -    0x0C,0x04,0x0C,0xFF,0xFF,0x0D,0x00,0x0A,  /* 00000BB8    "........" */
  12.381 -    0x03,0x00,0x0A,0x28,0x12,0x0B,0x04,0x0C,  /* 00000BC0    "...(...." */
  12.382 -    0xFF,0xFF,0x0E,0x00,0x00,0x00,0x0A,0x29,  /* 00000BC8    ".......)" */
  12.383 -    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x0E,0x00,  /* 00000BD0    "........" */
  12.384 -    0x01,0x00,0x0A,0x2A,0x12,0x0C,0x04,0x0C,  /* 00000BD8    "...*...." */
  12.385 -    0xFF,0xFF,0x0E,0x00,0x0A,0x02,0x00,0x0A,  /* 00000BE0    "........" */
  12.386 -    0x2B,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x0E,  /* 00000BE8    "+......." */
  12.387 -    0x00,0x0A,0x03,0x00,0x0A,0x2C,0x12,0x0B,  /* 00000BF0    ".....,.." */
  12.388 -    0x04,0x0C,0xFF,0xFF,0x0F,0x00,0x00,0x00,  /* 00000BF8    "........" */
  12.389 -    0x0A,0x2D,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00000C00    ".-......" */
  12.390 -    0x0F,0x00,0x01,0x00,0x0A,0x2E,0x12,0x0C,  /* 00000C08    "........" */
  12.391 -    0x04,0x0C,0xFF,0xFF,0x0F,0x00,0x0A,0x02,  /* 00000C10    "........" */
  12.392 -    0x00,0x0A,0x2F,0x12,0x0C,0x04,0x0C,0xFF,  /* 00000C18    "../....." */
  12.393 -    0xFF,0x0F,0x00,0x0A,0x03,0x00,0x0A,0x10,  /* 00000C20    "........" */
  12.394 -    0x5B,0x82,0x46,0x37,0x49,0x53,0x41,0x5F,  /* 00000C28    "[.F7ISA_" */
  12.395 -    0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00,  /* 00000C30    "._ADR..." */
  12.396 -    0x01,0x00,0x5B,0x80,0x50,0x49,0x52,0x51,  /* 00000C38    "..[.PIRQ" */
  12.397 -    0x02,0x0A,0x60,0x0A,0x04,0x10,0x2E,0x5C,  /* 00000C40    "..`....\" */
  12.398 -    0x00,0x5B,0x81,0x29,0x5C,0x2F,0x04,0x5F,  /* 00000C48    ".[.)\/._" */
  12.399 -    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x49,  /* 00000C50    "SB_PCI0I" */
  12.400 -    0x53,0x41,0x5F,0x50,0x49,0x52,0x51,0x01,  /* 00000C58    "SA_PIRQ." */
  12.401 -    0x50,0x49,0x52,0x41,0x08,0x50,0x49,0x52,  /* 00000C60    "PIRA.PIR" */
  12.402 -    0x42,0x08,0x50,0x49,0x52,0x43,0x08,0x50,  /* 00000C68    "B.PIRC.P" */
  12.403 -    0x49,0x52,0x44,0x08,0x5B,0x82,0x46,0x0B,  /* 00000C70    "IRD.[.F." */
  12.404 -    0x53,0x59,0x53,0x52,0x08,0x5F,0x48,0x49,  /* 00000C78    "SYSR._HI" */
  12.405 -    0x44,0x0C,0x41,0xD0,0x0C,0x02,0x08,0x5F,  /* 00000C80    "D.A...._" */
  12.406 -    0x55,0x49,0x44,0x01,0x08,0x43,0x52,0x53,  /* 00000C88    "UID..CRS" */
  12.407 -    0x5F,0x11,0x4E,0x08,0x0A,0x8A,0x47,0x01,  /* 00000C90    "_.N...G." */
  12.408 -    0x10,0x00,0x10,0x00,0x00,0x10,0x47,0x01,  /* 00000C98    "......G." */
  12.409 -    0x22,0x00,0x22,0x00,0x00,0x0C,0x47,0x01,  /* 00000CA0    ""."...G." */
  12.410 -    0x30,0x00,0x30,0x00,0x00,0x10,0x47,0x01,  /* 00000CA8    "0.0...G." */
  12.411 -    0x44,0x00,0x44,0x00,0x00,0x1C,0x47,0x01,  /* 00000CB0    "D.D...G." */
  12.412 -    0x62,0x00,0x62,0x00,0x00,0x02,0x47,0x01,  /* 00000CB8    "b.b...G." */
  12.413 -    0x65,0x00,0x65,0x00,0x00,0x0B,0x47,0x01,  /* 00000CC0    "e.e...G." */
  12.414 -    0x72,0x00,0x72,0x00,0x00,0x0E,0x47,0x01,  /* 00000CC8    "r.r...G." */
  12.415 -    0x80,0x00,0x80,0x00,0x00,0x01,0x47,0x01,  /* 00000CD0    "......G." */
  12.416 -    0x84,0x00,0x84,0x00,0x00,0x03,0x47,0x01,  /* 00000CD8    "......G." */
  12.417 -    0x88,0x00,0x88,0x00,0x00,0x01,0x47,0x01,  /* 00000CE0    "......G." */
  12.418 -    0x8C,0x00,0x8C,0x00,0x00,0x03,0x47,0x01,  /* 00000CE8    "......G." */
  12.419 -    0x90,0x00,0x90,0x00,0x00,0x10,0x47,0x01,  /* 00000CF0    "......G." */
  12.420 -    0xA2,0x00,0xA2,0x00,0x00,0x1C,0x47,0x01,  /* 00000CF8    "......G." */
  12.421 -    0xE0,0x00,0xE0,0x00,0x00,0x10,0x47,0x01,  /* 00000D00    "......G." */
  12.422 -    0xA0,0x08,0xA0,0x08,0x00,0x04,0x47,0x01,  /* 00000D08    "......G." */
  12.423 -    0xC0,0x0C,0xC0,0x0C,0x00,0x10,0x47,0x01,  /* 00000D10    "......G." */
  12.424 -    0xD0,0x04,0xD0,0x04,0x00,0x02,0x79,0x00,  /* 00000D18    "......y." */
  12.425 -    0x14,0x0B,0x5F,0x43,0x52,0x53,0x00,0xA4,  /* 00000D20    ".._CRS.." */
  12.426 -    0x43,0x52,0x53,0x5F,0x5B,0x82,0x2B,0x50,  /* 00000D28    "CRS_[.+P" */
  12.427 -    0x49,0x43,0x5F,0x08,0x5F,0x48,0x49,0x44,  /* 00000D30    "IC_._HID" */
  12.428 -    0x0B,0x41,0xD0,0x08,0x5F,0x43,0x52,0x53,  /* 00000D38    ".A.._CRS" */
  12.429 -    0x11,0x18,0x0A,0x15,0x47,0x01,0x20,0x00,  /* 00000D40    "....G. ." */
  12.430 -    0x20,0x00,0x01,0x02,0x47,0x01,0xA0,0x00,  /* 00000D48    " ...G..." */
  12.431 -    0xA0,0x00,0x01,0x02,0x22,0x04,0x00,0x79,  /* 00000D50    "...."..y" */
  12.432 -    0x00,0x5B,0x82,0x47,0x05,0x44,0x4D,0x41,  /* 00000D58    ".[.G.DMA" */
  12.433 -    0x30,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,  /* 00000D60    "0._HID.A" */
  12.434 -    0xD0,0x02,0x00,0x08,0x5F,0x43,0x52,0x53,  /* 00000D68    "...._CRS" */
  12.435 -    0x11,0x41,0x04,0x0A,0x3D,0x2A,0x10,0x04,  /* 00000D70    ".A..=*.." */
  12.436 -    0x47,0x01,0x00,0x00,0x00,0x00,0x00,0x10,  /* 00000D78    "G......." */
  12.437 -    0x47,0x01,0x81,0x00,0x81,0x00,0x00,0x03,  /* 00000D80    "G......." */
  12.438 -    0x47,0x01,0x87,0x00,0x87,0x00,0x00,0x01,  /* 00000D88    "G......." */
  12.439 -    0x47,0x01,0x89,0x00,0x89,0x00,0x00,0x03,  /* 00000D90    "G......." */
  12.440 -    0x47,0x01,0x8F,0x00,0x8F,0x00,0x00,0x01,  /* 00000D98    "G......." */
  12.441 -    0x47,0x01,0xC0,0x00,0xC0,0x00,0x00,0x20,  /* 00000DA0    "G...... " */
  12.442 -    0x47,0x01,0x80,0x04,0x80,0x04,0x00,0x10,  /* 00000DA8    "G......." */
  12.443 -    0x79,0x00,0x5B,0x82,0x25,0x54,0x4D,0x52,  /* 00000DB0    "y.[.%TMR" */
  12.444 -    0x5F,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,  /* 00000DB8    "_._HID.A" */
  12.445 -    0xD0,0x01,0x00,0x08,0x5F,0x43,0x52,0x53,  /* 00000DC0    "...._CRS" */
  12.446 -    0x11,0x10,0x0A,0x0D,0x47,0x01,0x40,0x00,  /* 00000DC8    "....G.@." */
  12.447 -    0x40,0x00,0x00,0x04,0x22,0x01,0x00,0x79,  /* 00000DD0    "@..."..y" */
  12.448 -    0x00,0x5B,0x82,0x25,0x52,0x54,0x43,0x5F,  /* 00000DD8    ".[.%RTC_" */
  12.449 -    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 00000DE0    "._HID.A." */
  12.450 -    0x0B,0x00,0x08,0x5F,0x43,0x52,0x53,0x11,  /* 00000DE8    "..._CRS." */
  12.451 -    0x10,0x0A,0x0D,0x47,0x01,0x70,0x00,0x70,  /* 00000DF0    "...G.p.p" */
  12.452 -    0x00,0x00,0x02,0x22,0x00,0x01,0x79,0x00,  /* 00000DF8    "..."..y." */
  12.453 -    0x5B,0x82,0x22,0x53,0x50,0x4B,0x52,0x08,  /* 00000E00    "[."SPKR." */
  12.454 -    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x08,  /* 00000E08    "_HID.A.." */
  12.455 -    0x00,0x08,0x5F,0x43,0x52,0x53,0x11,0x0D,  /* 00000E10    ".._CRS.." */
  12.456 -    0x0A,0x0A,0x47,0x01,0x61,0x00,0x61,0x00,  /* 00000E18    "..G.a.a." */
  12.457 -    0x00,0x01,0x79,0x00,0x5B,0x82,0x31,0x50,  /* 00000E20    "..y.[.1P" */
  12.458 -    0x53,0x32,0x4D,0x08,0x5F,0x48,0x49,0x44,  /* 00000E28    "S2M._HID" */
  12.459 -    0x0C,0x41,0xD0,0x0F,0x13,0x08,0x5F,0x43,  /* 00000E30    ".A...._C" */
  12.460 -    0x49,0x44,0x0C,0x41,0xD0,0x0F,0x13,0x14,  /* 00000E38    "ID.A...." */
  12.461 -    0x09,0x5F,0x53,0x54,0x41,0x00,0xA4,0x0A,  /* 00000E40    "._STA..." */
  12.462 -    0x0F,0x08,0x5F,0x43,0x52,0x53,0x11,0x08,  /* 00000E48    ".._CRS.." */
  12.463 -    0x0A,0x05,0x22,0x00,0x10,0x79,0x00,0x5B,  /* 00000E50    ".."..y.[" */
  12.464 -    0x82,0x42,0x04,0x50,0x53,0x32,0x4B,0x08,  /* 00000E58    ".B.PS2K." */
  12.465 -    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x03,  /* 00000E60    "_HID.A.." */
  12.466 -    0x03,0x08,0x5F,0x43,0x49,0x44,0x0C,0x41,  /* 00000E68    ".._CID.A" */
  12.467 -    0xD0,0x03,0x0B,0x14,0x09,0x5F,0x53,0x54,  /* 00000E70    "....._ST" */
  12.468 -    0x41,0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43,  /* 00000E78    "A....._C" */
  12.469 -    0x52,0x53,0x11,0x18,0x0A,0x15,0x47,0x01,  /* 00000E80    "RS....G." */
  12.470 -    0x60,0x00,0x60,0x00,0x00,0x01,0x47,0x01,  /* 00000E88    "`.`...G." */
  12.471 -    0x64,0x00,0x64,0x00,0x00,0x01,0x22,0x02,  /* 00000E90    "d.d..."." */
  12.472 -    0x00,0x79,0x00,0x5B,0x82,0x3A,0x46,0x44,  /* 00000E98    ".y.[.:FD" */
  12.473 -    0x43,0x30,0x08,0x5F,0x48,0x49,0x44,0x0C,  /* 00000EA0    "C0._HID." */
  12.474 -    0x41,0xD0,0x07,0x00,0x14,0x09,0x5F,0x53,  /* 00000EA8    "A....._S" */
  12.475 -    0x54,0x41,0x00,0xA4,0x0A,0x0F,0x08,0x5F,  /* 00000EB0    "TA....._" */
  12.476 -    0x43,0x52,0x53,0x11,0x1B,0x0A,0x18,0x47,  /* 00000EB8    "CRS....G" */
  12.477 -    0x01,0xF0,0x03,0xF0,0x03,0x01,0x06,0x47,  /* 00000EC0    ".......G" */
  12.478 -    0x01,0xF7,0x03,0xF7,0x03,0x01,0x01,0x22,  /* 00000EC8    "......."" */
  12.479 -    0x40,0x00,0x2A,0x04,0x00,0x79,0x00,0x5B,  /* 00000ED0    "@.*..y.[" */
  12.480 -    0x82,0x46,0x04,0x55,0x41,0x52,0x31,0x08,  /* 00000ED8    ".F.UAR1." */
  12.481 -    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x05,  /* 00000EE0    "_HID.A.." */
  12.482 -    0x01,0x08,0x5F,0x55,0x49,0x44,0x01,0x14,  /* 00000EE8    ".._UID.." */
  12.483 -    0x19,0x5F,0x53,0x54,0x41,0x00,0xA0,0x0D,  /* 00000EF0    "._STA..." */
  12.484 -    0x93,0x5E,0x5E,0x5E,0x5E,0x55,0x41,0x52,  /* 00000EF8    ".^^^^UAR" */
  12.485 -    0x31,0x00,0xA4,0x00,0xA1,0x04,0xA4,0x0A,  /* 00000F00    "1......." */
  12.486 -    0x0F,0x08,0x5F,0x43,0x52,0x53,0x11,0x10,  /* 00000F08    ".._CRS.." */
  12.487 -    0x0A,0x0D,0x47,0x01,0xF8,0x03,0xF8,0x03,  /* 00000F10    "..G....." */
  12.488 -    0x08,0x08,0x22,0x10,0x00,0x79,0x00,0x5B,  /* 00000F18    ".."..y.[" */
  12.489 -    0x82,0x47,0x04,0x55,0x41,0x52,0x32,0x08,  /* 00000F20    ".G.UAR2." */
  12.490 -    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x05,  /* 00000F28    "_HID.A.." */
  12.491 -    0x01,0x08,0x5F,0x55,0x49,0x44,0x0A,0x02,  /* 00000F30    ".._UID.." */
  12.492 -    0x14,0x19,0x5F,0x53,0x54,0x41,0x00,0xA0,  /* 00000F38    ".._STA.." */
  12.493 -    0x0D,0x93,0x5E,0x5E,0x5E,0x5E,0x55,0x41,  /* 00000F40    "..^^^^UA" */
  12.494 -    0x52,0x32,0x00,0xA4,0x00,0xA1,0x04,0xA4,  /* 00000F48    "R2......" */
  12.495 -    0x0A,0x0F,0x08,0x5F,0x43,0x52,0x53,0x11,  /* 00000F50    "..._CRS." */
  12.496 -    0x10,0x0A,0x0D,0x47,0x01,0xF8,0x02,0xF8,  /* 00000F58    "...G...." */
  12.497 -    0x02,0x08,0x08,0x22,0x08,0x00,0x79,0x00,  /* 00000F60    "..."..y." */
  12.498 -    0x5B,0x82,0x36,0x4C,0x54,0x50,0x31,0x08,  /* 00000F68    "[.6LTP1." */
  12.499 -    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x04,  /* 00000F70    "_HID.A.." */
  12.500 -    0x00,0x08,0x5F,0x55,0x49,0x44,0x0A,0x02,  /* 00000F78    ".._UID.." */
  12.501 -    0x14,0x09,0x5F,0x53,0x54,0x41,0x00,0xA4,  /* 00000F80    ".._STA.." */
  12.502 -    0x0A,0x0F,0x08,0x5F,0x43,0x52,0x53,0x11,  /* 00000F88    "..._CRS." */
  12.503 -    0x10,0x0A,0x0D,0x47,0x01,0x78,0x03,0x78,  /* 00000F90    "...G.x.x" */
  12.504 -    0x03,0x08,0x08,0x22,0x80,0x00,0x79,0x00,  /* 00000F98    "..."..y." */
  12.505 -    0x5B,0x82,0x4D,0x07,0x53,0x31,0x46,0x30,  /* 00000FA0    "[.M.S1F0" */
  12.506 -    0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00,  /* 00000FA8    "._ADR..." */
  12.507 -    0x06,0x00,0x08,0x5F,0x53,0x55,0x4E,0x01,  /* 00000FB0    "..._SUN." */
  12.508 -    0x14,0x13,0x5F,0x50,0x53,0x30,0x00,0x70,  /* 00000FB8    ".._PS0.p" */
  12.509 -    0x0A,0x80,0x5C,0x2E,0x5F,0x47,0x50,0x45,  /* 00000FC0    "..\._GPE" */
  12.510 -    0x44,0x50,0x54,0x32,0x14,0x13,0x5F,0x50,  /* 00000FC8    "DPT2.._P" */
  12.511 -    0x53,0x33,0x00,0x70,0x0A,0x83,0x5C,0x2E,  /* 00000FD0    "S3.p..\." */
  12.512 -    0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32,  /* 00000FD8    "_GPEDPT2" */
  12.513 -    0x14,0x1F,0x5F,0x45,0x4A,0x30,0x01,0x70,  /* 00000FE0    ".._EJ0.p" */
  12.514 -    0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45,  /* 00000FE8    "..\._GPE" */
  12.515 -    0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E,  /* 00000FF0    "DPT2p.\." */
  12.516 -    0x5F,0x47,0x50,0x45,0x50,0x48,0x50,0x31,  /* 00000FF8    "_GPEPHP1" */
  12.517 -    0x14,0x1E,0x5F,0x53,0x54,0x41,0x00,0x70,  /* 00001000    ".._STA.p" */
  12.518 -    0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50,0x45,  /* 00001008    "..\._GPE" */
  12.519 -    0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E,0x5F,  /* 00001010    "DPT2.\._" */
  12.520 -    0x47,0x50,0x45,0x50,0x48,0x50,0x31,0x5B,  /* 00001018    "GPEPHP1[" */
  12.521 -    0x82,0x4E,0x07,0x53,0x32,0x46,0x30,0x08,  /* 00001020    ".N.S2F0." */
  12.522 -    0x5F,0x41,0x44,0x52,0x0C,0x00,0x00,0x07,  /* 00001028    "_ADR...." */
  12.523 -    0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A,0x02,  /* 00001030    ".._SUN.." */
  12.524 -    0x14,0x13,0x5F,0x50,0x53,0x30,0x00,0x70,  /* 00001038    ".._PS0.p" */
  12.525 -    0x0A,0x90,0x5C,0x2E,0x5F,0x47,0x50,0x45,  /* 00001040    "..\._GPE" */
  12.526 -    0x44,0x50,0x54,0x32,0x14,0x13,0x5F,0x50,  /* 00001048    "DPT2.._P" */
  12.527 -    0x53,0x33,0x00,0x70,0x0A,0x93,0x5C,0x2E,  /* 00001050    "S3.p..\." */
  12.528 -    0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32,  /* 00001058    "_GPEDPT2" */
  12.529 -    0x14,0x1F,0x5F,0x45,0x4A,0x30,0x01,0x70,  /* 00001060    ".._EJ0.p" */
  12.530 -    0x0A,0x98,0x5C,0x2E,0x5F,0x47,0x50,0x45,  /* 00001068    "..\._GPE" */
  12.531 -    0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E,  /* 00001070    "DPT2p.\." */
  12.532 -    0x5F,0x47,0x50,0x45,0x50,0x48,0x50,0x32,  /* 00001078    "_GPEPHP2" */
  12.533 -    0x14,0x1E,0x5F,0x53,0x54,0x41,0x00,0x70,  /* 00001080    ".._STA.p" */
  12.534 -    0x0A,0x99,0x5C,0x2E,0x5F,0x47,0x50,0x45,  /* 00001088    "..\._GPE" */
  12.535 -    0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E,0x5F,  /* 00001090    "DPT2.\._" */
  12.536 -    0x47,0x50,0x45,0x50,0x48,0x50,0x32,0x10,  /* 00001098    "GPEPHP2." */
  12.537 -    0x4E,0x0B,0x5F,0x47,0x50,0x45,0x5B,0x80,  /* 000010A0    "N._GPE[." */
  12.538 -    0x50,0x48,0x50,0x5F,0x01,0x0B,0xC0,0x10,  /* 000010A8    "PHP_...." */
  12.539 -    0x0A,0x03,0x5B,0x81,0x15,0x50,0x48,0x50,  /* 000010B0    "..[..PHP" */
  12.540 -    0x5F,0x01,0x50,0x53,0x54,0x41,0x08,0x50,  /* 000010B8    "_.PSTA.P" */
  12.541 -    0x48,0x50,0x31,0x08,0x50,0x48,0x50,0x32,  /* 000010C0    "HP1.PHP2" */
  12.542 -    0x08,0x5B,0x80,0x44,0x47,0x31,0x5F,0x01,  /* 000010C8    ".[.DG1_." */
  12.543 -    0x0B,0x44,0xB0,0x0A,0x04,0x5B,0x81,0x10,  /* 000010D0    ".D...[.." */
  12.544 -    0x44,0x47,0x31,0x5F,0x01,0x44,0x50,0x54,  /* 000010D8    "DG1_.DPT" */
  12.545 -    0x31,0x08,0x44,0x50,0x54,0x32,0x08,0x14,  /* 000010E0    "1.DPT2.." */
  12.546 -    0x46,0x07,0x5F,0x4C,0x30,0x33,0x00,0x08,  /* 000010E8    "F._L03.." */
  12.547 -    0x53,0x4C,0x54,0x5F,0x00,0x08,0x45,0x56,  /* 000010F0    "SLT_..EV" */
  12.548 -    0x54,0x5F,0x00,0x70,0x50,0x53,0x54,0x41,  /* 000010F8    "T_.pPSTA" */
  12.549 -    0x61,0x7A,0x61,0x0A,0x04,0x53,0x4C,0x54,  /* 00001100    "aza..SLT" */
  12.550 -    0x5F,0x7B,0x61,0x0A,0x0F,0x45,0x56,0x54,  /* 00001108    "_{a..EVT" */
  12.551 -    0x5F,0x70,0x53,0x4C,0x54,0x5F,0x44,0x50,  /* 00001110    "_pSLT_DP" */
  12.552 -    0x54,0x31,0x70,0x45,0x56,0x54,0x5F,0x44,  /* 00001118    "T1pEVT_D" */
  12.553 -    0x50,0x54,0x32,0xA0,0x1B,0x93,0x53,0x4C,  /* 00001120    "PT2...SL" */
  12.554 -    0x54,0x5F,0x01,0x86,0x5C,0x2F,0x03,0x5F,  /* 00001128    "T_..\/._" */
  12.555 -    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x53,  /* 00001130    "SB_PCI0S" */
  12.556 -    0x31,0x46,0x30,0x45,0x56,0x54,0x5F,0xA1,  /* 00001138    "1F0EVT_." */
  12.557 -    0x1E,0xA0,0x1C,0x93,0x53,0x4C,0x54,0x5F,  /* 00001140    "....SLT_" */
  12.558 -    0x0A,0x02,0x86,0x5C,0x2F,0x03,0x5F,0x53,  /* 00001148    "...\/._S" */
  12.559 -    0x42,0x5F,0x50,0x43,0x49,0x30,0x53,0x32,  /* 00001150    "B_PCI0S2" */
  12.560 -    0x46,0x30,0x45,0x56,0x54,0x5F,
  12.561 +    0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,  /* 000001D8    "........" */
  12.562 +    0x00,0x00,0x79,0x00,0x5B,0x82,0x8B,0x57,  /* 000001E0    "..y.[..W" */
  12.563 +    0x01,0x50,0x43,0x49,0x30,0x08,0x5F,0x48,  /* 000001E8    ".PCI0._H" */
  12.564 +    0x49,0x44,0x0C,0x41,0xD0,0x0A,0x03,0x08,  /* 000001F0    "ID.A...." */
  12.565 +    0x5F,0x55,0x49,0x44,0x00,0x08,0x5F,0x41,  /* 000001F8    "_UID.._A" */
  12.566 +    0x44,0x52,0x00,0x08,0x5F,0x42,0x42,0x4E,  /* 00000200    "DR.._BBN" */
  12.567 +    0x00,0x5B,0x82,0x2A,0x48,0x50,0x30,0x5F,  /* 00000208    ".[.*HP0_" */
  12.568 +    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 00000210    "._HID.A." */
  12.569 +    0x0C,0x02,0x08,0x5F,0x43,0x52,0x53,0x11,  /* 00000218    "..._CRS." */
  12.570 +    0x15,0x0A,0x12,0x47,0x01,0xC0,0x10,0xC0,  /* 00000220    "...G...." */
  12.571 +    0x10,0x00,0x03,0x47,0x01,0x44,0xB0,0x44,  /* 00000228    "...G.D.D" */
  12.572 +    0xB0,0x00,0x04,0x79,0x00,0x14,0x4E,0x0C,  /* 00000230    "...y..N." */
  12.573 +    0x5F,0x43,0x52,0x53,0x00,0x08,0x50,0x52,  /* 00000238    "_CRS..PR" */
  12.574 +    0x54,0x30,0x11,0x42,0x07,0x0A,0x6E,0x88,  /* 00000240    "T0.B..n." */
  12.575 +    0x0D,0x00,0x02,0x0E,0x00,0x00,0x00,0x00,  /* 00000248    "........" */
  12.576 +    0x00,0xFF,0x00,0x00,0x00,0x00,0x01,0x47,  /* 00000250    ".......G" */
  12.577 +    0x01,0xF8,0x0C,0xF8,0x0C,0x01,0x08,0x88,  /* 00000258    "........" */
  12.578 +    0x0D,0x00,0x01,0x0C,0x03,0x00,0x00,0x00,  /* 00000260    "........" */
  12.579 +    0x00,0xF7,0x0C,0x00,0x00,0xF8,0x0C,0x88,  /* 00000268    "........" */
  12.580 +    0x0D,0x00,0x01,0x0C,0x03,0x00,0x00,0x00,  /* 00000270    "........" */
  12.581 +    0x0D,0xFF,0xFF,0x00,0x00,0x00,0xF3,0x87,  /* 00000278    "........" */
  12.582 +    0x17,0x00,0x00,0x0C,0x03,0x00,0x00,0x00,  /* 00000280    "........" */
  12.583 +    0x00,0x00,0x00,0x0A,0x00,0xFF,0xFF,0x0B,  /* 00000288    "........" */
  12.584 +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,  /* 00000290    "........" */
  12.585 +    0x00,0x87,0x17,0x00,0x00,0x0C,0x03,0x00,  /* 00000298    "........" */
  12.586 +    0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,  /* 000002A0    "........" */
  12.587 +    0xFF,0xFF,0xF4,0x00,0x00,0x00,0x00,0x00,  /* 000002A8    "........" */
  12.588 +    0x00,0x00,0x05,0x79,0x00,0x8A,0x50,0x52,  /* 000002B0    "...y..PR" */
  12.589 +    0x54,0x30,0x0A,0x5C,0x4D,0x4D,0x49,0x4E,  /* 000002B8    "T0.\MMIN" */
  12.590 +    0x8A,0x50,0x52,0x54,0x30,0x0A,0x60,0x4D,  /* 000002C0    ".PRT0.`M" */
  12.591 +    0x4D,0x41,0x58,0x8A,0x50,0x52,0x54,0x30,  /* 000002C8    "MAX.PRT0" */
  12.592 +    0x0A,0x68,0x4D,0x4C,0x45,0x4E,0x70,0x50,  /* 000002D0    ".hMLENpP" */
  12.593 +    0x4D,0x49,0x4E,0x4D,0x4D,0x49,0x4E,0x70,  /* 000002D8    "MINMMINp" */
  12.594 +    0x50,0x4C,0x45,0x4E,0x4D,0x4C,0x45,0x4E,  /* 000002E0    "PLENMLEN" */
  12.595 +    0x72,0x4D,0x4D,0x49,0x4E,0x4D,0x4C,0x45,  /* 000002E8    "rMMINMLE" */
  12.596 +    0x4E,0x4D,0x4D,0x41,0x58,0x74,0x4D,0x4D,  /* 000002F0    "NMMAXtMM" */
  12.597 +    0x41,0x58,0x01,0x4D,0x4D,0x41,0x58,0xA4,  /* 000002F8    "AX.MMAX." */
  12.598 +    0x50,0x52,0x54,0x30,0x08,0x42,0x55,0x46,  /* 00000300    "PRT0.BUF" */
  12.599 +    0x41,0x11,0x09,0x0A,0x06,0x23,0x20,0x0C,  /* 00000308    "A....# ." */
  12.600 +    0x18,0x79,0x00,0x08,0x42,0x55,0x46,0x42,  /* 00000310    ".y..BUFB" */
  12.601 +    0x11,0x09,0x0A,0x06,0x23,0x00,0x00,0x18,  /* 00000318    "....#..." */
  12.602 +    0x79,0x00,0x8B,0x42,0x55,0x46,0x42,0x01,  /* 00000320    "y..BUFB." */
  12.603 +    0x49,0x52,0x51,0x56,0x5B,0x82,0x48,0x08,  /* 00000328    "IRQV[.H." */
  12.604 +    0x4C,0x4E,0x4B,0x41,0x08,0x5F,0x48,0x49,  /* 00000330    "LNKA._HI" */
  12.605 +    0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,  /* 00000338    "D.A...._" */
  12.606 +    0x55,0x49,0x44,0x01,0x14,0x1C,0x5F,0x53,  /* 00000340    "UID..._S" */
  12.607 +    0x54,0x41,0x00,0x7B,0x50,0x49,0x52,0x41,  /* 00000348    "TA.{PIRA" */
  12.608 +    0x0A,0x80,0x60,0xA0,0x08,0x93,0x60,0x0A,  /* 00000350    "..`...`." */
  12.609 +    0x80,0xA4,0x0A,0x09,0xA1,0x04,0xA4,0x0A,  /* 00000358    "........" */
  12.610 +    0x0B,0x14,0x0B,0x5F,0x50,0x52,0x53,0x00,  /* 00000360    "..._PRS." */
  12.611 +    0xA4,0x42,0x55,0x46,0x41,0x14,0x11,0x5F,  /* 00000368    ".BUFA.._" */
  12.612 +    0x44,0x49,0x53,0x00,0x7D,0x50,0x49,0x52,  /* 00000370    "DIS.}PIR" */
  12.613 +    0x41,0x0A,0x80,0x50,0x49,0x52,0x41,0x14,  /* 00000378    "A..PIRA." */
  12.614 +    0x1A,0x5F,0x43,0x52,0x53,0x00,0x7B,0x50,  /* 00000380    "._CRS.{P" */
  12.615 +    0x49,0x52,0x41,0x0A,0x0F,0x60,0x79,0x01,  /* 00000388    "IRA..`y." */
  12.616 +    0x60,0x49,0x52,0x51,0x56,0xA4,0x42,0x55,  /* 00000390    "`IRQV.BU" */
  12.617 +    0x46,0x42,0x14,0x1B,0x5F,0x53,0x52,0x53,  /* 00000398    "FB.._SRS" */
  12.618 +    0x01,0x8B,0x68,0x01,0x49,0x52,0x51,0x31,  /* 000003A0    "..h.IRQ1" */
  12.619 +    0x82,0x49,0x52,0x51,0x31,0x60,0x76,0x60,  /* 000003A8    ".IRQ1`v`" */
  12.620 +    0x70,0x60,0x50,0x49,0x52,0x41,0x5B,0x82,  /* 000003B0    "p`PIRA[." */
  12.621 +    0x49,0x08,0x4C,0x4E,0x4B,0x42,0x08,0x5F,  /* 000003B8    "I.LNKB._" */
  12.622 +    0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0F,  /* 000003C0    "HID.A..." */
  12.623 +    0x08,0x5F,0x55,0x49,0x44,0x0A,0x02,0x14,  /* 000003C8    "._UID..." */
  12.624 +    0x1C,0x5F,0x53,0x54,0x41,0x00,0x7B,0x50,  /* 000003D0    "._STA.{P" */
  12.625 +    0x49,0x52,0x42,0x0A,0x80,0x60,0xA0,0x08,  /* 000003D8    "IRB..`.." */
  12.626 +    0x93,0x60,0x0A,0x80,0xA4,0x0A,0x09,0xA1,  /* 000003E0    ".`......" */
  12.627 +    0x04,0xA4,0x0A,0x0B,0x14,0x0B,0x5F,0x50,  /* 000003E8    "......_P" */
  12.628 +    0x52,0x53,0x00,0xA4,0x42,0x55,0x46,0x41,  /* 000003F0    "RS..BUFA" */
  12.629 +    0x14,0x11,0x5F,0x44,0x49,0x53,0x00,0x7D,  /* 000003F8    ".._DIS.}" */
  12.630 +    0x50,0x49,0x52,0x42,0x0A,0x80,0x50,0x49,  /* 00000400    "PIRB..PI" */
  12.631 +    0x52,0x42,0x14,0x1A,0x5F,0x43,0x52,0x53,  /* 00000408    "RB.._CRS" */
  12.632 +    0x00,0x7B,0x50,0x49,0x52,0x42,0x0A,0x0F,  /* 00000410    ".{PIRB.." */
  12.633 +    0x60,0x79,0x01,0x60,0x49,0x52,0x51,0x56,  /* 00000418    "`y.`IRQV" */
  12.634 +    0xA4,0x42,0x55,0x46,0x42,0x14,0x1B,0x5F,  /* 00000420    ".BUFB.._" */
  12.635 +    0x53,0x52,0x53,0x01,0x8B,0x68,0x01,0x49,  /* 00000428    "SRS..h.I" */
  12.636 +    0x52,0x51,0x31,0x82,0x49,0x52,0x51,0x31,  /* 00000430    "RQ1.IRQ1" */
  12.637 +    0x60,0x76,0x60,0x70,0x60,0x50,0x49,0x52,  /* 00000438    "`v`p`PIR" */
  12.638 +    0x42,0x5B,0x82,0x49,0x08,0x4C,0x4E,0x4B,  /* 00000440    "B[.I.LNK" */
  12.639 +    0x43,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,  /* 00000448    "C._HID.A" */
  12.640 +    0xD0,0x0C,0x0F,0x08,0x5F,0x55,0x49,0x44,  /* 00000450    "...._UID" */
  12.641 +    0x0A,0x03,0x14,0x1C,0x5F,0x53,0x54,0x41,  /* 00000458    "...._STA" */
  12.642 +    0x00,0x7B,0x50,0x49,0x52,0x43,0x0A,0x80,  /* 00000460    ".{PIRC.." */
  12.643 +    0x60,0xA0,0x08,0x93,0x60,0x0A,0x80,0xA4,  /* 00000468    "`...`..." */
  12.644 +    0x0A,0x09,0xA1,0x04,0xA4,0x0A,0x0B,0x14,  /* 00000470    "........" */
  12.645 +    0x0B,0x5F,0x50,0x52,0x53,0x00,0xA4,0x42,  /* 00000478    "._PRS..B" */
  12.646 +    0x55,0x46,0x41,0x14,0x11,0x5F,0x44,0x49,  /* 00000480    "UFA.._DI" */
  12.647 +    0x53,0x00,0x7D,0x50,0x49,0x52,0x43,0x0A,  /* 00000488    "S.}PIRC." */
  12.648 +    0x80,0x50,0x49,0x52,0x43,0x14,0x1A,0x5F,  /* 00000490    ".PIRC.._" */
  12.649 +    0x43,0x52,0x53,0x00,0x7B,0x50,0x49,0x52,  /* 00000498    "CRS.{PIR" */
  12.650 +    0x43,0x0A,0x0F,0x60,0x79,0x01,0x60,0x49,  /* 000004A0    "C..`y.`I" */
  12.651 +    0x52,0x51,0x56,0xA4,0x42,0x55,0x46,0x42,  /* 000004A8    "RQV.BUFB" */
  12.652 +    0x14,0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B,  /* 000004B0    ".._SRS.." */
  12.653 +    0x68,0x01,0x49,0x52,0x51,0x31,0x82,0x49,  /* 000004B8    "h.IRQ1.I" */
  12.654 +    0x52,0x51,0x31,0x60,0x76,0x60,0x70,0x60,  /* 000004C0    "RQ1`v`p`" */
  12.655 +    0x50,0x49,0x52,0x43,0x5B,0x82,0x49,0x08,  /* 000004C8    "PIRC[.I." */
  12.656 +    0x4C,0x4E,0x4B,0x44,0x08,0x5F,0x48,0x49,  /* 000004D0    "LNKD._HI" */
  12.657 +    0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,  /* 000004D8    "D.A...._" */
  12.658 +    0x55,0x49,0x44,0x0A,0x04,0x14,0x1C,0x5F,  /* 000004E0    "UID...._" */
  12.659 +    0x53,0x54,0x41,0x00,0x7B,0x50,0x49,0x52,  /* 000004E8    "STA.{PIR" */
  12.660 +    0x44,0x0A,0x80,0x60,0xA0,0x08,0x93,0x60,  /* 000004F0    "D..`...`" */
  12.661 +    0x0A,0x80,0xA4,0x0A,0x09,0xA1,0x04,0xA4,  /* 000004F8    "........" */
  12.662 +    0x0A,0x0B,0x14,0x0B,0x5F,0x50,0x52,0x53,  /* 00000500    "...._PRS" */
  12.663 +    0x00,0xA4,0x42,0x55,0x46,0x41,0x14,0x11,  /* 00000508    "..BUFA.." */
  12.664 +    0x5F,0x44,0x49,0x53,0x00,0x7D,0x50,0x49,  /* 00000510    "_DIS.}PI" */
  12.665 +    0x52,0x44,0x0A,0x80,0x50,0x49,0x52,0x44,  /* 00000518    "RD..PIRD" */
  12.666 +    0x14,0x1A,0x5F,0x43,0x52,0x53,0x00,0x7B,  /* 00000520    ".._CRS.{" */
  12.667 +    0x50,0x49,0x52,0x44,0x0A,0x0F,0x60,0x79,  /* 00000528    "PIRD..`y" */
  12.668 +    0x01,0x60,0x49,0x52,0x51,0x56,0xA4,0x42,  /* 00000530    ".`IRQV.B" */
  12.669 +    0x55,0x46,0x42,0x14,0x1B,0x5F,0x53,0x52,  /* 00000538    "UFB.._SR" */
  12.670 +    0x53,0x01,0x8B,0x68,0x01,0x49,0x52,0x51,  /* 00000540    "S..h.IRQ" */
  12.671 +    0x31,0x82,0x49,0x52,0x51,0x31,0x60,0x76,  /* 00000548    "1.IRQ1`v" */
  12.672 +    0x60,0x70,0x60,0x50,0x49,0x52,0x44,0x5B,  /* 00000550    "`p`PIRD[" */
  12.673 +    0x82,0x44,0x05,0x48,0x50,0x45,0x54,0x08,  /* 00000558    ".D.HPET." */
  12.674 +    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x01,  /* 00000560    "_HID.A.." */
  12.675 +    0x03,0x08,0x5F,0x55,0x49,0x44,0x00,0x14,  /* 00000568    ".._UID.." */
  12.676 +    0x18,0x5F,0x53,0x54,0x41,0x00,0xA0,0x0C,  /* 00000570    "._STA..." */
  12.677 +    0x93,0x5E,0x5E,0x5E,0x48,0x50,0x45,0x54,  /* 00000578    ".^^^HPET" */
  12.678 +    0x00,0xA4,0x00,0xA1,0x04,0xA4,0x0A,0x0F,  /* 00000580    "........" */
  12.679 +    0x08,0x5F,0x43,0x52,0x53,0x11,0x1F,0x0A,  /* 00000588    "._CRS..." */
  12.680 +    0x1C,0x87,0x17,0x00,0x00,0x0D,0x01,0x00,  /* 00000590    "........" */
  12.681 +    0x00,0x00,0x00,0x00,0x00,0xD0,0xFE,0xFF,  /* 00000598    "........" */
  12.682 +    0x03,0xD0,0xFE,0x00,0x00,0x00,0x00,0x00,  /* 000005A0    "........" */
  12.683 +    0x04,0x00,0x00,0x79,0x00,0x14,0x16,0x5F,  /* 000005A8    "...y..._" */
  12.684 +    0x50,0x52,0x54,0x00,0xA0,0x0A,0x50,0x49,  /* 000005B0    "PRT...PI" */
  12.685 +    0x43,0x44,0xA4,0x50,0x52,0x54,0x41,0xA4,  /* 000005B8    "CD.PRTA." */
  12.686 +    0x50,0x52,0x54,0x50,0x08,0x50,0x52,0x54,  /* 000005C0    "PRTP.PRT" */
  12.687 +    0x50,0x12,0x49,0x70,0x7C,0x12,0x0D,0x04,  /* 000005C8    "P.Ip|..." */
  12.688 +    0x0C,0xFF,0xFF,0x01,0x00,0x00,0x4C,0x4E,  /* 000005D0    "......LN" */
  12.689 +    0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 000005D8    "KB......" */
  12.690 +    0xFF,0x01,0x00,0x01,0x4C,0x4E,0x4B,0x43,  /* 000005E0    "....LNKC" */
  12.691 +    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x01,  /* 000005E8    "........" */
  12.692 +    0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00,  /* 000005F0    "...LNKD." */
  12.693 +    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x01,0x00,  /* 000005F8    "........" */
  12.694 +    0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12,  /* 00000600    "..LNKA.." */
  12.695 +    0x0D,0x04,0x0C,0xFF,0xFF,0x02,0x00,0x00,  /* 00000608    "........" */
  12.696 +    0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04,  /* 00000610    "LNKC...." */
  12.697 +    0x0C,0xFF,0xFF,0x02,0x00,0x01,0x4C,0x4E,  /* 00000618    "......LN" */
  12.698 +    0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 00000620    "KD......" */
  12.699 +    0xFF,0x02,0x00,0x0A,0x02,0x4C,0x4E,0x4B,  /* 00000628    ".....LNK" */
  12.700 +    0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 00000630    "A......." */
  12.701 +    0x02,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42,  /* 00000638    "....LNKB" */
  12.702 +    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x03,  /* 00000640    "........" */
  12.703 +    0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12,  /* 00000648    "..LNKD.." */
  12.704 +    0x0D,0x04,0x0C,0xFF,0xFF,0x03,0x00,0x01,  /* 00000650    "........" */
  12.705 +    0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04,  /* 00000658    "LNKA...." */
  12.706 +    0x0C,0xFF,0xFF,0x03,0x00,0x0A,0x02,0x4C,  /* 00000660    ".......L" */
  12.707 +    0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C,  /* 00000668    "NKB....." */
  12.708 +    0xFF,0xFF,0x03,0x00,0x0A,0x03,0x4C,0x4E,  /* 00000670    "......LN" */
  12.709 +    0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000678    "KC......" */
  12.710 +    0xFF,0x04,0x00,0x00,0x4C,0x4E,0x4B,0x41,  /* 00000680    "....LNKA" */
  12.711 +    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x04,  /* 00000688    "........" */
  12.712 +    0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12,  /* 00000690    "..LNKB.." */
  12.713 +    0x0E,0x04,0x0C,0xFF,0xFF,0x04,0x00,0x0A,  /* 00000698    "........" */
  12.714 +    0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E,  /* 000006A0    ".LNKC..." */
  12.715 +    0x04,0x0C,0xFF,0xFF,0x04,0x00,0x0A,0x03,  /* 000006A8    "........" */
  12.716 +    0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04,  /* 000006B0    "LNKD...." */
  12.717 +    0x0C,0xFF,0xFF,0x05,0x00,0x00,0x4C,0x4E,  /* 000006B8    "......LN" */
  12.718 +    0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 000006C0    "KB......" */
  12.719 +    0xFF,0x05,0x00,0x01,0x4C,0x4E,0x4B,0x43,  /* 000006C8    "....LNKC" */
  12.720 +    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x05,  /* 000006D0    "........" */
  12.721 +    0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00,  /* 000006D8    "...LNKD." */
  12.722 +    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x05,0x00,  /* 000006E0    "........" */
  12.723 +    0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12,  /* 000006E8    "..LNKA.." */
  12.724 +    0x0D,0x04,0x0C,0xFF,0xFF,0x06,0x00,0x00,  /* 000006F0    "........" */
  12.725 +    0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04,  /* 000006F8    "LNKC...." */
  12.726 +    0x0C,0xFF,0xFF,0x06,0x00,0x01,0x4C,0x4E,  /* 00000700    "......LN" */
  12.727 +    0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 00000708    "KD......" */
  12.728 +    0xFF,0x06,0x00,0x0A,0x02,0x4C,0x4E,0x4B,  /* 00000710    ".....LNK" */
  12.729 +    0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 00000718    "A......." */
  12.730 +    0x06,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42,  /* 00000720    "....LNKB" */
  12.731 +    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x07,  /* 00000728    "........" */
  12.732 +    0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12,  /* 00000730    "..LNKD.." */
  12.733 +    0x0D,0x04,0x0C,0xFF,0xFF,0x07,0x00,0x01,  /* 00000738    "........" */
  12.734 +    0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04,  /* 00000740    "LNKA...." */
  12.735 +    0x0C,0xFF,0xFF,0x07,0x00,0x0A,0x02,0x4C,  /* 00000748    ".......L" */
  12.736 +    0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C,  /* 00000750    "NKB....." */
  12.737 +    0xFF,0xFF,0x07,0x00,0x0A,0x03,0x4C,0x4E,  /* 00000758    "......LN" */
  12.738 +    0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000760    "KC......" */
  12.739 +    0xFF,0x08,0x00,0x00,0x4C,0x4E,0x4B,0x41,  /* 00000768    "....LNKA" */
  12.740 +    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x08,  /* 00000770    "........" */
  12.741 +    0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12,  /* 00000778    "..LNKB.." */
  12.742 +    0x0E,0x04,0x0C,0xFF,0xFF,0x08,0x00,0x0A,  /* 00000780    "........" */
  12.743 +    0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E,  /* 00000788    ".LNKC..." */
  12.744 +    0x04,0x0C,0xFF,0xFF,0x08,0x00,0x0A,0x03,  /* 00000790    "........" */
  12.745 +    0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04,  /* 00000798    "LNKD...." */
  12.746 +    0x0C,0xFF,0xFF,0x09,0x00,0x00,0x4C,0x4E,  /* 000007A0    "......LN" */
  12.747 +    0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 000007A8    "KB......" */
  12.748 +    0xFF,0x09,0x00,0x01,0x4C,0x4E,0x4B,0x43,  /* 000007B0    "....LNKC" */
  12.749 +    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x09,  /* 000007B8    "........" */
  12.750 +    0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00,  /* 000007C0    "...LNKD." */
  12.751 +    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x09,0x00,  /* 000007C8    "........" */
  12.752 +    0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12,  /* 000007D0    "..LNKA.." */
  12.753 +    0x0D,0x04,0x0C,0xFF,0xFF,0x0A,0x00,0x00,  /* 000007D8    "........" */
  12.754 +    0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04,  /* 000007E0    "LNKC...." */
  12.755 +    0x0C,0xFF,0xFF,0x0A,0x00,0x01,0x4C,0x4E,  /* 000007E8    "......LN" */
  12.756 +    0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 000007F0    "KD......" */
  12.757 +    0xFF,0x0A,0x00,0x0A,0x02,0x4C,0x4E,0x4B,  /* 000007F8    ".....LNK" */
  12.758 +    0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 00000800    "A......." */
  12.759 +    0x0A,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42,  /* 00000808    "....LNKB" */
  12.760 +    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x0B,  /* 00000810    "........" */
  12.761 +    0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12,  /* 00000818    "..LNKD.." */
  12.762 +    0x0D,0x04,0x0C,0xFF,0xFF,0x0B,0x00,0x01,  /* 00000820    "........" */
  12.763 +    0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04,  /* 00000828    "LNKA...." */
  12.764 +    0x0C,0xFF,0xFF,0x0B,0x00,0x0A,0x02,0x4C,  /* 00000830    ".......L" */
  12.765 +    0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C,  /* 00000838    "NKB....." */
  12.766 +    0xFF,0xFF,0x0B,0x00,0x0A,0x03,0x4C,0x4E,  /* 00000840    "......LN" */
  12.767 +    0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000848    "KC......" */
  12.768 +    0xFF,0x0C,0x00,0x00,0x4C,0x4E,0x4B,0x41,  /* 00000850    "....LNKA" */
  12.769 +    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x0C,  /* 00000858    "........" */
  12.770 +    0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12,  /* 00000860    "..LNKB.." */
  12.771 +    0x0E,0x04,0x0C,0xFF,0xFF,0x0C,0x00,0x0A,  /* 00000868    "........" */
  12.772 +    0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E,  /* 00000870    ".LNKC..." */
  12.773 +    0x04,0x0C,0xFF,0xFF,0x0C,0x00,0x0A,0x03,  /* 00000878    "........" */
  12.774 +    0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04,  /* 00000880    "LNKD...." */
  12.775 +    0x0C,0xFF,0xFF,0x0D,0x00,0x00,0x4C,0x4E,  /* 00000888    "......LN" */
  12.776 +    0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000890    "KB......" */
  12.777 +    0xFF,0x0D,0x00,0x01,0x4C,0x4E,0x4B,0x43,  /* 00000898    "....LNKC" */
  12.778 +    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x0D,  /* 000008A0    "........" */
  12.779 +    0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00,  /* 000008A8    "...LNKD." */
  12.780 +    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x0D,0x00,  /* 000008B0    "........" */
  12.781 +    0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12,  /* 000008B8    "..LNKA.." */
  12.782 +    0x0D,0x04,0x0C,0xFF,0xFF,0x0E,0x00,0x00,  /* 000008C0    "........" */
  12.783 +    0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04,  /* 000008C8    "LNKC...." */
  12.784 +    0x0C,0xFF,0xFF,0x0E,0x00,0x01,0x4C,0x4E,  /* 000008D0    "......LN" */
  12.785 +    0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 000008D8    "KD......" */
  12.786 +    0xFF,0x0E,0x00,0x0A,0x02,0x4C,0x4E,0x4B,  /* 000008E0    ".....LNK" */
  12.787 +    0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 000008E8    "A......." */
  12.788 +    0x0E,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42,  /* 000008F0    "....LNKB" */
  12.789 +    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x0F,  /* 000008F8    "........" */
  12.790 +    0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12,  /* 00000900    "..LNKD.." */
  12.791 +    0x0D,0x04,0x0C,0xFF,0xFF,0x0F,0x00,0x01,  /* 00000908    "........" */
  12.792 +    0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04,  /* 00000910    "LNKA...." */
  12.793 +    0x0C,0xFF,0xFF,0x0F,0x00,0x0A,0x02,0x4C,  /* 00000918    ".......L" */
  12.794 +    0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C,  /* 00000920    "NKB....." */
  12.795 +    0xFF,0xFF,0x0F,0x00,0x0A,0x03,0x4C,0x4E,  /* 00000928    "......LN" */
  12.796 +    0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000930    "KC......" */
  12.797 +    0xFF,0x10,0x00,0x00,0x4C,0x4E,0x4B,0x41,  /* 00000938    "....LNKA" */
  12.798 +    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x10,  /* 00000940    "........" */
  12.799 +    0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12,  /* 00000948    "..LNKB.." */
  12.800 +    0x0E,0x04,0x0C,0xFF,0xFF,0x10,0x00,0x0A,  /* 00000950    "........" */
  12.801 +    0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E,  /* 00000958    ".LNKC..." */
  12.802 +    0x04,0x0C,0xFF,0xFF,0x10,0x00,0x0A,0x03,  /* 00000960    "........" */
  12.803 +    0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04,  /* 00000968    "LNKD...." */
  12.804 +    0x0C,0xFF,0xFF,0x11,0x00,0x00,0x4C,0x4E,  /* 00000970    "......LN" */
  12.805 +    0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000978    "KB......" */
  12.806 +    0xFF,0x11,0x00,0x01,0x4C,0x4E,0x4B,0x43,  /* 00000980    "....LNKC" */
  12.807 +    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x11,  /* 00000988    "........" */
  12.808 +    0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00,  /* 00000990    "...LNKD." */
  12.809 +    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x11,0x00,  /* 00000998    "........" */
  12.810 +    0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12,  /* 000009A0    "..LNKA.." */
  12.811 +    0x0D,0x04,0x0C,0xFF,0xFF,0x12,0x00,0x00,  /* 000009A8    "........" */
  12.812 +    0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04,  /* 000009B0    "LNKC...." */
  12.813 +    0x0C,0xFF,0xFF,0x12,0x00,0x01,0x4C,0x4E,  /* 000009B8    "......LN" */
  12.814 +    0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 000009C0    "KD......" */
  12.815 +    0xFF,0x12,0x00,0x0A,0x02,0x4C,0x4E,0x4B,  /* 000009C8    ".....LNK" */
  12.816 +    0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 000009D0    "A......." */
  12.817 +    0x12,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42,  /* 000009D8    "....LNKB" */
  12.818 +    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x13,  /* 000009E0    "........" */
  12.819 +    0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12,  /* 000009E8    "..LNKD.." */
  12.820 +    0x0D,0x04,0x0C,0xFF,0xFF,0x13,0x00,0x01,  /* 000009F0    "........" */
  12.821 +    0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04,  /* 000009F8    "LNKA...." */
  12.822 +    0x0C,0xFF,0xFF,0x13,0x00,0x0A,0x02,0x4C,  /* 00000A00    ".......L" */
  12.823 +    0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C,  /* 00000A08    "NKB....." */
  12.824 +    0xFF,0xFF,0x13,0x00,0x0A,0x03,0x4C,0x4E,  /* 00000A10    "......LN" */
  12.825 +    0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000A18    "KC......" */
  12.826 +    0xFF,0x14,0x00,0x00,0x4C,0x4E,0x4B,0x41,  /* 00000A20    "....LNKA" */
  12.827 +    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x14,  /* 00000A28    "........" */
  12.828 +    0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12,  /* 00000A30    "..LNKB.." */
  12.829 +    0x0E,0x04,0x0C,0xFF,0xFF,0x14,0x00,0x0A,  /* 00000A38    "........" */
  12.830 +    0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E,  /* 00000A40    ".LNKC..." */
  12.831 +    0x04,0x0C,0xFF,0xFF,0x14,0x00,0x0A,0x03,  /* 00000A48    "........" */
  12.832 +    0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04,  /* 00000A50    "LNKD...." */
  12.833 +    0x0C,0xFF,0xFF,0x15,0x00,0x00,0x4C,0x4E,  /* 00000A58    "......LN" */
  12.834 +    0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000A60    "KB......" */
  12.835 +    0xFF,0x15,0x00,0x01,0x4C,0x4E,0x4B,0x43,  /* 00000A68    "....LNKC" */
  12.836 +    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x15,  /* 00000A70    "........" */
  12.837 +    0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00,  /* 00000A78    "...LNKD." */
  12.838 +    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x15,0x00,  /* 00000A80    "........" */
  12.839 +    0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12,  /* 00000A88    "..LNKA.." */
  12.840 +    0x0D,0x04,0x0C,0xFF,0xFF,0x16,0x00,0x00,  /* 00000A90    "........" */
  12.841 +    0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04,  /* 00000A98    "LNKC...." */
  12.842 +    0x0C,0xFF,0xFF,0x16,0x00,0x01,0x4C,0x4E,  /* 00000AA0    "......LN" */
  12.843 +    0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 00000AA8    "KD......" */
  12.844 +    0xFF,0x16,0x00,0x0A,0x02,0x4C,0x4E,0x4B,  /* 00000AB0    ".....LNK" */
  12.845 +    0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 00000AB8    "A......." */
  12.846 +    0x16,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42,  /* 00000AC0    "....LNKB" */
  12.847 +    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x17,  /* 00000AC8    "........" */
  12.848 +    0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12,  /* 00000AD0    "..LNKD.." */
  12.849 +    0x0D,0x04,0x0C,0xFF,0xFF,0x17,0x00,0x01,  /* 00000AD8    "........" */
  12.850 +    0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04,  /* 00000AE0    "LNKA...." */
  12.851 +    0x0C,0xFF,0xFF,0x17,0x00,0x0A,0x02,0x4C,  /* 00000AE8    ".......L" */
  12.852 +    0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C,  /* 00000AF0    "NKB....." */
  12.853 +    0xFF,0xFF,0x17,0x00,0x0A,0x03,0x4C,0x4E,  /* 00000AF8    "......LN" */
  12.854 +    0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000B00    "KC......" */
  12.855 +    0xFF,0x18,0x00,0x00,0x4C,0x4E,0x4B,0x41,  /* 00000B08    "....LNKA" */
  12.856 +    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x18,  /* 00000B10    "........" */
  12.857 +    0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12,  /* 00000B18    "..LNKB.." */
  12.858 +    0x0E,0x04,0x0C,0xFF,0xFF,0x18,0x00,0x0A,  /* 00000B20    "........" */
  12.859 +    0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E,  /* 00000B28    ".LNKC..." */
  12.860 +    0x04,0x0C,0xFF,0xFF,0x18,0x00,0x0A,0x03,  /* 00000B30    "........" */
  12.861 +    0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04,  /* 00000B38    "LNKD...." */
  12.862 +    0x0C,0xFF,0xFF,0x19,0x00,0x00,0x4C,0x4E,  /* 00000B40    "......LN" */
  12.863 +    0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000B48    "KB......" */
  12.864 +    0xFF,0x19,0x00,0x01,0x4C,0x4E,0x4B,0x43,  /* 00000B50    "....LNKC" */
  12.865 +    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x19,  /* 00000B58    "........" */
  12.866 +    0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00,  /* 00000B60    "...LNKD." */
  12.867 +    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x19,0x00,  /* 00000B68    "........" */
  12.868 +    0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12,  /* 00000B70    "..LNKA.." */
  12.869 +    0x0D,0x04,0x0C,0xFF,0xFF,0x1A,0x00,0x00,  /* 00000B78    "........" */
  12.870 +    0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04,  /* 00000B80    "LNKC...." */
  12.871 +    0x0C,0xFF,0xFF,0x1A,0x00,0x01,0x4C,0x4E,  /* 00000B88    "......LN" */
  12.872 +    0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 00000B90    "KD......" */
  12.873 +    0xFF,0x1A,0x00,0x0A,0x02,0x4C,0x4E,0x4B,  /* 00000B98    ".....LNK" */
  12.874 +    0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 00000BA0    "A......." */
  12.875 +    0x1A,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42,  /* 00000BA8    "....LNKB" */
  12.876 +    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x1B,  /* 00000BB0    "........" */
  12.877 +    0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12,  /* 00000BB8    "..LNKD.." */
  12.878 +    0x0D,0x04,0x0C,0xFF,0xFF,0x1B,0x00,0x01,  /* 00000BC0    "........" */
  12.879 +    0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04,  /* 00000BC8    "LNKA...." */
  12.880 +    0x0C,0xFF,0xFF,0x1B,0x00,0x0A,0x02,0x4C,  /* 00000BD0    ".......L" */
  12.881 +    0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C,  /* 00000BD8    "NKB....." */
  12.882 +    0xFF,0xFF,0x1B,0x00,0x0A,0x03,0x4C,0x4E,  /* 00000BE0    "......LN" */
  12.883 +    0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000BE8    "KC......" */
  12.884 +    0xFF,0x1C,0x00,0x00,0x4C,0x4E,0x4B,0x41,  /* 00000BF0    "....LNKA" */
  12.885 +    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x1C,  /* 00000BF8    "........" */
  12.886 +    0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12,  /* 00000C00    "..LNKB.." */
  12.887 +    0x0E,0x04,0x0C,0xFF,0xFF,0x1C,0x00,0x0A,  /* 00000C08    "........" */
  12.888 +    0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E,  /* 00000C10    ".LNKC..." */
  12.889 +    0x04,0x0C,0xFF,0xFF,0x1C,0x00,0x0A,0x03,  /* 00000C18    "........" */
  12.890 +    0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04,  /* 00000C20    "LNKD...." */
  12.891 +    0x0C,0xFF,0xFF,0x1D,0x00,0x00,0x4C,0x4E,  /* 00000C28    "......LN" */
  12.892 +    0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000C30    "KB......" */
  12.893 +    0xFF,0x1D,0x00,0x01,0x4C,0x4E,0x4B,0x43,  /* 00000C38    "....LNKC" */
  12.894 +    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x1D,  /* 00000C40    "........" */
  12.895 +    0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00,  /* 00000C48    "...LNKD." */
  12.896 +    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x1D,0x00,  /* 00000C50    "........" */
  12.897 +    0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12,  /* 00000C58    "..LNKA.." */
  12.898 +    0x0D,0x04,0x0C,0xFF,0xFF,0x1E,0x00,0x00,  /* 00000C60    "........" */
  12.899 +    0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04,  /* 00000C68    "LNKC...." */
  12.900 +    0x0C,0xFF,0xFF,0x1E,0x00,0x01,0x4C,0x4E,  /* 00000C70    "......LN" */
  12.901 +    0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 00000C78    "KD......" */
  12.902 +    0xFF,0x1E,0x00,0x0A,0x02,0x4C,0x4E,0x4B,  /* 00000C80    ".....LNK" */
  12.903 +    0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 00000C88    "A......." */
  12.904 +    0x1E,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42,  /* 00000C90    "....LNKB" */
  12.905 +    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x1F,  /* 00000C98    "........" */
  12.906 +    0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12,  /* 00000CA0    "..LNKD.." */
  12.907 +    0x0D,0x04,0x0C,0xFF,0xFF,0x1F,0x00,0x01,  /* 00000CA8    "........" */
  12.908 +    0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04,  /* 00000CB0    "LNKA...." */
  12.909 +    0x0C,0xFF,0xFF,0x1F,0x00,0x0A,0x02,0x4C,  /* 00000CB8    ".......L" */
  12.910 +    0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C,  /* 00000CC0    "NKB....." */
  12.911 +    0xFF,0xFF,0x1F,0x00,0x0A,0x03,0x4C,0x4E,  /* 00000CC8    "......LN" */
  12.912 +    0x4B,0x43,0x00,0x08,0x50,0x52,0x54,0x41,  /* 00000CD0    "KC..PRTA" */
  12.913 +    0x12,0x41,0x61,0x7C,0x12,0x0B,0x04,0x0C,  /* 00000CD8    ".Aa|...." */
  12.914 +    0xFF,0xFF,0x01,0x00,0x00,0x00,0x0A,0x14,  /* 00000CE0    "........" */
  12.915 +    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x01,0x00,  /* 00000CE8    "........" */
  12.916 +    0x01,0x00,0x0A,0x15,0x12,0x0C,0x04,0x0C,  /* 00000CF0    "........" */
  12.917 +    0xFF,0xFF,0x01,0x00,0x0A,0x02,0x00,0x0A,  /* 00000CF8    "........" */
  12.918 +    0x16,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x01,  /* 00000D00    "........" */
  12.919 +    0x00,0x0A,0x03,0x00,0x0A,0x17,0x12,0x0B,  /* 00000D08    "........" */
  12.920 +    0x04,0x0C,0xFF,0xFF,0x02,0x00,0x00,0x00,  /* 00000D10    "........" */
  12.921 +    0x0A,0x18,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00000D18    "........" */
  12.922 +    0x02,0x00,0x01,0x00,0x0A,0x19,0x12,0x0C,  /* 00000D20    "........" */
  12.923 +    0x04,0x0C,0xFF,0xFF,0x02,0x00,0x0A,0x02,  /* 00000D28    "........" */
  12.924 +    0x00,0x0A,0x1A,0x12,0x0C,0x04,0x0C,0xFF,  /* 00000D30    "........" */
  12.925 +    0xFF,0x02,0x00,0x0A,0x03,0x00,0x0A,0x1B,  /* 00000D38    "........" */
  12.926 +    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x03,0x00,  /* 00000D40    "........" */
  12.927 +    0x00,0x00,0x0A,0x1C,0x12,0x0B,0x04,0x0C,  /* 00000D48    "........" */
  12.928 +    0xFF,0xFF,0x03,0x00,0x01,0x00,0x0A,0x1D,  /* 00000D50    "........" */
  12.929 +    0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x03,0x00,  /* 00000D58    "........" */
  12.930 +    0x0A,0x02,0x00,0x0A,0x1E,0x12,0x0C,0x04,  /* 00000D60    "........" */
  12.931 +    0x0C,0xFF,0xFF,0x03,0x00,0x0A,0x03,0x00,  /* 00000D68    "........" */
  12.932 +    0x0A,0x1F,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00000D70    "........" */
  12.933 +    0x04,0x00,0x00,0x00,0x0A,0x20,0x12,0x0B,  /* 00000D78    "..... .." */
  12.934 +    0x04,0x0C,0xFF,0xFF,0x04,0x00,0x01,0x00,  /* 00000D80    "........" */
  12.935 +    0x0A,0x21,0x12,0x0C,0x04,0x0C,0xFF,0xFF,  /* 00000D88    ".!......" */
  12.936 +    0x04,0x00,0x0A,0x02,0x00,0x0A,0x22,0x12,  /* 00000D90    "......"." */
  12.937 +    0x0C,0x04,0x0C,0xFF,0xFF,0x04,0x00,0x0A,  /* 00000D98    "........" */
  12.938 +    0x03,0x00,0x0A,0x23,0x12,0x0B,0x04,0x0C,  /* 00000DA0    "...#...." */
  12.939 +    0xFF,0xFF,0x05,0x00,0x00,0x00,0x0A,0x24,  /* 00000DA8    ".......$" */
  12.940 +    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x05,0x00,  /* 00000DB0    "........" */
  12.941 +    0x01,0x00,0x0A,0x25,0x12,0x0C,0x04,0x0C,  /* 00000DB8    "...%...." */
  12.942 +    0xFF,0xFF,0x05,0x00,0x0A,0x02,0x00,0x0A,  /* 00000DC0    "........" */
  12.943 +    0x26,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x05,  /* 00000DC8    "&......." */
  12.944 +    0x00,0x0A,0x03,0x00,0x0A,0x27,0x12,0x0B,  /* 00000DD0    ".....'.." */
  12.945 +    0x04,0x0C,0xFF,0xFF,0x06,0x00,0x00,0x00,  /* 00000DD8    "........" */
  12.946 +    0x0A,0x28,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00000DE0    ".(......" */
  12.947 +    0x06,0x00,0x01,0x00,0x0A,0x29,0x12,0x0C,  /* 00000DE8    ".....).." */
  12.948 +    0x04,0x0C,0xFF,0xFF,0x06,0x00,0x0A,0x02,  /* 00000DF0    "........" */
  12.949 +    0x00,0x0A,0x2A,0x12,0x0C,0x04,0x0C,0xFF,  /* 00000DF8    "..*....." */
  12.950 +    0xFF,0x06,0x00,0x0A,0x03,0x00,0x0A,0x2B,  /* 00000E00    ".......+" */
  12.951 +    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x07,0x00,  /* 00000E08    "........" */
  12.952 +    0x00,0x00,0x0A,0x2C,0x12,0x0B,0x04,0x0C,  /* 00000E10    "...,...." */
  12.953 +    0xFF,0xFF,0x07,0x00,0x01,0x00,0x0A,0x2D,  /* 00000E18    ".......-" */
  12.954 +    0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x07,0x00,  /* 00000E20    "........" */
  12.955 +    0x0A,0x02,0x00,0x0A,0x2E,0x12,0x0C,0x04,  /* 00000E28    "........" */
  12.956 +    0x0C,0xFF,0xFF,0x07,0x00,0x0A,0x03,0x00,  /* 00000E30    "........" */
  12.957 +    0x0A,0x2F,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00000E38    "./......" */
  12.958 +    0x08,0x00,0x00,0x00,0x0A,0x11,0x12,0x0B,  /* 00000E40    "........" */
  12.959 +    0x04,0x0C,0xFF,0xFF,0x08,0x00,0x01,0x00,  /* 00000E48    "........" */
  12.960 +    0x0A,0x12,0x12,0x0C,0x04,0x0C,0xFF,0xFF,  /* 00000E50    "........" */
  12.961 +    0x08,0x00,0x0A,0x02,0x00,0x0A,0x13,0x12,  /* 00000E58    "........" */
  12.962 +    0x0C,0x04,0x0C,0xFF,0xFF,0x08,0x00,0x0A,  /* 00000E60    "........" */
  12.963 +    0x03,0x00,0x0A,0x14,0x12,0x0B,0x04,0x0C,  /* 00000E68    "........" */
  12.964 +    0xFF,0xFF,0x09,0x00,0x00,0x00,0x0A,0x15,  /* 00000E70    "........" */
  12.965 +    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x09,0x00,  /* 00000E78    "........" */
  12.966 +    0x01,0x00,0x0A,0x16,0x12,0x0C,0x04,0x0C,  /* 00000E80    "........" */
  12.967 +    0xFF,0xFF,0x09,0x00,0x0A,0x02,0x00,0x0A,  /* 00000E88    "........" */
  12.968 +    0x17,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x09,  /* 00000E90    "........" */
  12.969 +    0x00,0x0A,0x03,0x00,0x0A,0x18,0x12,0x0B,  /* 00000E98    "........" */
  12.970 +    0x04,0x0C,0xFF,0xFF,0x0A,0x00,0x00,0x00,  /* 00000EA0    "........" */
  12.971 +    0x0A,0x19,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00000EA8    "........" */
  12.972 +    0x0A,0x00,0x01,0x00,0x0A,0x1A,0x12,0x0C,  /* 00000EB0    "........" */
  12.973 +    0x04,0x0C,0xFF,0xFF,0x0A,0x00,0x0A,0x02,  /* 00000EB8    "........" */
  12.974 +    0x00,0x0A,0x1B,0x12,0x0C,0x04,0x0C,0xFF,  /* 00000EC0    "........" */
  12.975 +    0xFF,0x0A,0x00,0x0A,0x03,0x00,0x0A,0x1C,  /* 00000EC8    "........" */
  12.976 +    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x0B,0x00,  /* 00000ED0    "........" */
  12.977 +    0x00,0x00,0x0A,0x1D,0x12,0x0B,0x04,0x0C,  /* 00000ED8    "........" */
  12.978 +    0xFF,0xFF,0x0B,0x00,0x01,0x00,0x0A,0x1E,  /* 00000EE0    "........" */
  12.979 +    0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x0B,0x00,  /* 00000EE8    "........" */
  12.980 +    0x0A,0x02,0x00,0x0A,0x1F,0x12,0x0C,0x04,  /* 00000EF0    "........" */
  12.981 +    0x0C,0xFF,0xFF,0x0B,0x00,0x0A,0x03,0x00,  /* 00000EF8    "........" */
  12.982 +    0x0A,0x20,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00000F00    ". ......" */
  12.983 +    0x0C,0x00,0x00,0x00,0x0A,0x21,0x12,0x0B,  /* 00000F08    ".....!.." */
  12.984 +    0x04,0x0C,0xFF,0xFF,0x0C,0x00,0x01,0x00,  /* 00000F10    "........" */
  12.985 +    0x0A,0x22,0x12,0x0C,0x04,0x0C,0xFF,0xFF,  /* 00000F18    "."......" */
  12.986 +    0x0C,0x00,0x0A,0x02,0x00,0x0A,0x23,0x12,  /* 00000F20    "......#." */
  12.987 +    0x0C,0x04,0x0C,0xFF,0xFF,0x0C,0x00,0x0A,  /* 00000F28    "........" */
  12.988 +    0x03,0x00,0x0A,0x24,0x12,0x0B,0x04,0x0C,  /* 00000F30    "...$...." */
  12.989 +    0xFF,0xFF,0x0D,0x00,0x00,0x00,0x0A,0x25,  /* 00000F38    ".......%" */
  12.990 +    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x0D,0x00,  /* 00000F40    "........" */
  12.991 +    0x01,0x00,0x0A,0x26,0x12,0x0C,0x04,0x0C,  /* 00000F48    "...&...." */
  12.992 +    0xFF,0xFF,0x0D,0x00,0x0A,0x02,0x00,0x0A,  /* 00000F50    "........" */
  12.993 +    0x27,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x0D,  /* 00000F58    "'......." */
  12.994 +    0x00,0x0A,0x03,0x00,0x0A,0x28,0x12,0x0B,  /* 00000F60    ".....(.." */
  12.995 +    0x04,0x0C,0xFF,0xFF,0x0E,0x00,0x00,0x00,  /* 00000F68    "........" */
  12.996 +    0x0A,0x29,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00000F70    ".)......" */
  12.997 +    0x0E,0x00,0x01,0x00,0x0A,0x2A,0x12,0x0C,  /* 00000F78    ".....*.." */
  12.998 +    0x04,0x0C,0xFF,0xFF,0x0E,0x00,0x0A,0x02,  /* 00000F80    "........" */
  12.999 +    0x00,0x0A,0x2B,0x12,0x0C,0x04,0x0C,0xFF,  /* 00000F88    "..+....." */
 12.1000 +    0xFF,0x0E,0x00,0x0A,0x03,0x00,0x0A,0x2C,  /* 00000F90    ".......," */
 12.1001 +    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x0F,0x00,  /* 00000F98    "........" */
 12.1002 +    0x00,0x00,0x0A,0x2D,0x12,0x0B,0x04,0x0C,  /* 00000FA0    "...-...." */
 12.1003 +    0xFF,0xFF,0x0F,0x00,0x01,0x00,0x0A,0x2E,  /* 00000FA8    "........" */
 12.1004 +    0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x0F,0x00,  /* 00000FB0    "........" */
 12.1005 +    0x0A,0x02,0x00,0x0A,0x2F,0x12,0x0C,0x04,  /* 00000FB8    "..../..." */
 12.1006 +    0x0C,0xFF,0xFF,0x0F,0x00,0x0A,0x03,0x00,  /* 00000FC0    "........" */
 12.1007 +    0x0A,0x10,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00000FC8    "........" */
 12.1008 +    0x10,0x00,0x00,0x00,0x0A,0x12,0x12,0x0B,  /* 00000FD0    "........" */
 12.1009 +    0x04,0x0C,0xFF,0xFF,0x10,0x00,0x01,0x00,  /* 00000FD8    "........" */
 12.1010 +    0x0A,0x13,0x12,0x0C,0x04,0x0C,0xFF,0xFF,  /* 00000FE0    "........" */
 12.1011 +    0x10,0x00,0x0A,0x02,0x00,0x0A,0x14,0x12,  /* 00000FE8    "........" */
 12.1012 +    0x0C,0x04,0x0C,0xFF,0xFF,0x10,0x00,0x0A,  /* 00000FF0    "........" */
 12.1013 +    0x03,0x00,0x0A,0x15,0x12,0x0B,0x04,0x0C,  /* 00000FF8    "........" */
 12.1014 +    0xFF,0xFF,0x11,0x00,0x00,0x00,0x0A,0x16,  /* 00001000    "........" */
 12.1015 +    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x11,0x00,  /* 00001008    "........" */
 12.1016 +    0x01,0x00,0x0A,0x17,0x12,0x0C,0x04,0x0C,  /* 00001010    "........" */
 12.1017 +    0xFF,0xFF,0x11,0x00,0x0A,0x02,0x00,0x0A,  /* 00001018    "........" */
 12.1018 +    0x18,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x11,  /* 00001020    "........" */
 12.1019 +    0x00,0x0A,0x03,0x00,0x0A,0x19,0x12,0x0B,  /* 00001028    "........" */
 12.1020 +    0x04,0x0C,0xFF,0xFF,0x12,0x00,0x00,0x00,  /* 00001030    "........" */
 12.1021 +    0x0A,0x1A,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00001038    "........" */
 12.1022 +    0x12,0x00,0x01,0x00,0x0A,0x1B,0x12,0x0C,  /* 00001040    "........" */
 12.1023 +    0x04,0x0C,0xFF,0xFF,0x12,0x00,0x0A,0x02,  /* 00001048    "........" */
 12.1024 +    0x00,0x0A,0x1C,0x12,0x0C,0x04,0x0C,0xFF,  /* 00001050    "........" */
 12.1025 +    0xFF,0x12,0x00,0x0A,0x03,0x00,0x0A,0x1D,  /* 00001058    "........" */
 12.1026 +    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x13,0x00,  /* 00001060    "........" */
 12.1027 +    0x00,0x00,0x0A,0x1E,0x12,0x0B,0x04,0x0C,  /* 00001068    "........" */
 12.1028 +    0xFF,0xFF,0x13,0x00,0x01,0x00,0x0A,0x1F,  /* 00001070    "........" */
 12.1029 +    0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x13,0x00,  /* 00001078    "........" */
 12.1030 +    0x0A,0x02,0x00,0x0A,0x20,0x12,0x0C,0x04,  /* 00001080    ".... ..." */
 12.1031 +    0x0C,0xFF,0xFF,0x13,0x00,0x0A,0x03,0x00,  /* 00001088    "........" */
 12.1032 +    0x0A,0x21,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00001090    ".!......" */
 12.1033 +    0x14,0x00,0x00,0x00,0x0A,0x22,0x12,0x0B,  /* 00001098    ".....".." */
 12.1034 +    0x04,0x0C,0xFF,0xFF,0x14,0x00,0x01,0x00,  /* 000010A0    "........" */
 12.1035 +    0x0A,0x23,0x12,0x0C,0x04,0x0C,0xFF,0xFF,  /* 000010A8    ".#......" */
 12.1036 +    0x14,0x00,0x0A,0x02,0x00,0x0A,0x24,0x12,  /* 000010B0    "......$." */
 12.1037 +    0x0C,0x04,0x0C,0xFF,0xFF,0x14,0x00,0x0A,  /* 000010B8    "........" */
 12.1038 +    0x03,0x00,0x0A,0x25,0x12,0x0B,0x04,0x0C,  /* 000010C0    "...%...." */
 12.1039 +    0xFF,0xFF,0x15,0x00,0x00,0x00,0x0A,0x26,  /* 000010C8    ".......&" */
 12.1040 +    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x15,0x00,  /* 000010D0    "........" */
 12.1041 +    0x01,0x00,0x0A,0x27,0x12,0x0C,0x04,0x0C,  /* 000010D8    "...'...." */
 12.1042 +    0xFF,0xFF,0x15,0x00,0x0A,0x02,0x00,0x0A,  /* 000010E0    "........" */
 12.1043 +    0x28,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x15,  /* 000010E8    "(......." */
 12.1044 +    0x00,0x0A,0x03,0x00,0x0A,0x29,0x12,0x0B,  /* 000010F0    ".....).." */
 12.1045 +    0x04,0x0C,0xFF,0xFF,0x16,0x00,0x00,0x00,  /* 000010F8    "........" */
 12.1046 +    0x0A,0x2A,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00001100    ".*......" */
 12.1047 +    0x16,0x00,0x01,0x00,0x0A,0x2B,0x12,0x0C,  /* 00001108    ".....+.." */
 12.1048 +    0x04,0x0C,0xFF,0xFF,0x16,0x00,0x0A,0x02,  /* 00001110    "........" */
 12.1049 +    0x00,0x0A,0x2C,0x12,0x0C,0x04,0x0C,0xFF,  /* 00001118    "..,....." */
 12.1050 +    0xFF,0x16,0x00,0x0A,0x03,0x00,0x0A,0x2D,  /* 00001120    ".......-" */
 12.1051 +    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x17,0x00,  /* 00001128    "........" */
 12.1052 +    0x00,0x00,0x0A,0x2E,0x12,0x0B,0x04,0x0C,  /* 00001130    "........" */
 12.1053 +    0xFF,0xFF,0x17,0x00,0x01,0x00,0x0A,0x2F,  /* 00001138    "......./" */
 12.1054 +    0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x17,0x00,  /* 00001140    "........" */
 12.1055 +    0x0A,0x02,0x00,0x0A,0x10,0x12,0x0C,0x04,  /* 00001148    "........" */
 12.1056 +    0x0C,0xFF,0xFF,0x17,0x00,0x0A,0x03,0x00,  /* 00001150    "........" */
 12.1057 +    0x0A,0x11,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00001158    "........" */
 12.1058 +    0x18,0x00,0x00,0x00,0x0A,0x13,0x12,0x0B,  /* 00001160    "........" */
 12.1059 +    0x04,0x0C,0xFF,0xFF,0x18,0x00,0x01,0x00,  /* 00001168    "........" */
 12.1060 +    0x0A,0x14,0x12,0x0C,0x04,0x0C,0xFF,0xFF,  /* 00001170    "........" */
 12.1061 +    0x18,0x00,0x0A,0x02,0x00,0x0A,0x15,0x12,  /* 00001178    "........" */
 12.1062 +    0x0C,0x04,0x0C,0xFF,0xFF,0x18,0x00,0x0A,  /* 00001180    "........" */
 12.1063 +    0x03,0x00,0x0A,0x16,0x12,0x0B,0x04,0x0C,  /* 00001188    "........" */
 12.1064 +    0xFF,0xFF,0x19,0x00,0x00,0x00,0x0A,0x17,  /* 00001190    "........" */
 12.1065 +    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x19,0x00,  /* 00001198    "........" */
 12.1066 +    0x01,0x00,0x0A,0x18,0x12,0x0C,0x04,0x0C,  /* 000011A0    "........" */
 12.1067 +    0xFF,0xFF,0x19,0x00,0x0A,0x02,0x00,0x0A,  /* 000011A8    "........" */
 12.1068 +    0x19,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x19,  /* 000011B0    "........" */
 12.1069 +    0x00,0x0A,0x03,0x00,0x0A,0x1A,0x12,0x0B,  /* 000011B8    "........" */
 12.1070 +    0x04,0x0C,0xFF,0xFF,0x1A,0x00,0x00,0x00,  /* 000011C0    "........" */
 12.1071 +    0x0A,0x1B,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 000011C8    "........" */
 12.1072 +    0x1A,0x00,0x01,0x00,0x0A,0x1C,0x12,0x0C,  /* 000011D0    "........" */
 12.1073 +    0x04,0x0C,0xFF,0xFF,0x1A,0x00,0x0A,0x02,  /* 000011D8    "........" */
 12.1074 +    0x00,0x0A,0x1D,0x12,0x0C,0x04,0x0C,0xFF,  /* 000011E0    "........" */
 12.1075 +    0xFF,0x1A,0x00,0x0A,0x03,0x00,0x0A,0x1E,  /* 000011E8    "........" */
 12.1076 +    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x1B,0x00,  /* 000011F0    "........" */
 12.1077 +    0x00,0x00,0x0A,0x1F,0x12,0x0B,0x04,0x0C,  /* 000011F8    "........" */
 12.1078 +    0xFF,0xFF,0x1B,0x00,0x01,0x00,0x0A,0x20,  /* 00001200    "....... " */
 12.1079 +    0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x1B,0x00,  /* 00001208    "........" */
 12.1080 +    0x0A,0x02,0x00,0x0A,0x21,0x12,0x0C,0x04,  /* 00001210    "....!..." */
 12.1081 +    0x0C,0xFF,0xFF,0x1B,0x00,0x0A,0x03,0x00,  /* 00001218    "........" */
 12.1082 +    0x0A,0x22,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00001220    "."......" */
 12.1083 +    0x1C,0x00,0x00,0x00,0x0A,0x23,0x12,0x0B,  /* 00001228    ".....#.." */
 12.1084 +    0x04,0x0C,0xFF,0xFF,0x1C,0x00,0x01,0x00,  /* 00001230    "........" */
 12.1085 +    0x0A,0x24,0x12,0x0C,0x04,0x0C,0xFF,0xFF,  /* 00001238    ".$......" */
 12.1086 +    0x1C,0x00,0x0A,0x02,0x00,0x0A,0x25,0x12,  /* 00001240    "......%." */
 12.1087 +    0x0C,0x04,0x0C,0xFF,0xFF,0x1C,0x00,0x0A,  /* 00001248    "........" */
 12.1088 +    0x03,0x00,0x0A,0x26,0x12,0x0B,0x04,0x0C,  /* 00001250    "...&...." */
 12.1089 +    0xFF,0xFF,0x1D,0x00,0x00,0x00,0x0A,0x27,  /* 00001258    ".......'" */
 12.1090 +    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x1D,0x00,  /* 00001260    "........" */
 12.1091 +    0x01,0x00,0x0A,0x28,0x12,0x0C,0x04,0x0C,  /* 00001268    "...(...." */
 12.1092 +    0xFF,0xFF,0x1D,0x00,0x0A,0x02,0x00,0x0A,  /* 00001270    "........" */
 12.1093 +    0x29,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x1D,  /* 00001278    ")......." */
 12.1094 +    0x00,0x0A,0x03,0x00,0x0A,0x2A,0x12,0x0B,  /* 00001280    ".....*.." */
 12.1095 +    0x04,0x0C,0xFF,0xFF,0x1E,0x00,0x00,0x00,  /* 00001288    "........" */
 12.1096 +    0x0A,0x2B,0x12,0x0B,0x04,0x0C,0xFF,0xFF,  /* 00001290    ".+......" */
 12.1097 +    0x1E,0x00,0x01,0x00,0x0A,0x2C,0x12,0x0C,  /* 00001298    ".....,.." */
 12.1098 +    0x04,0x0C,0xFF,0xFF,0x1E,0x00,0x0A,0x02,  /* 000012A0    "........" */
 12.1099 +    0x00,0x0A,0x2D,0x12,0x0C,0x04,0x0C,0xFF,  /* 000012A8    "..-....." */
 12.1100 +    0xFF,0x1E,0x00,0x0A,0x03,0x00,0x0A,0x2E,  /* 000012B0    "........" */
 12.1101 +    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x1F,0x00,  /* 000012B8    "........" */
 12.1102 +    0x00,0x00,0x0A,0x2F,0x12,0x0B,0x04,0x0C,  /* 000012C0    ".../...." */
 12.1103 +    0xFF,0xFF,0x1F,0x00,0x01,0x00,0x0A,0x10,  /* 000012C8    "........" */
 12.1104 +    0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x1F,0x00,  /* 000012D0    "........" */
 12.1105 +    0x0A,0x02,0x00,0x0A,0x11,0x12,0x0C,0x04,  /* 000012D8    "........" */
 12.1106 +    0x0C,0xFF,0xFF,0x1F,0x00,0x0A,0x03,0x00,  /* 000012E0    "........" */
 12.1107 +    0x0A,0x12,0x5B,0x82,0x46,0x37,0x49,0x53,  /* 000012E8    "..[.F7IS" */
 12.1108 +    0x41,0x5F,0x08,0x5F,0x41,0x44,0x52,0x0C,  /* 000012F0    "A_._ADR." */
 12.1109 +    0x00,0x00,0x01,0x00,0x5B,0x80,0x50,0x49,  /* 000012F8    "....[.PI" */
 12.1110 +    0x52,0x51,0x02,0x0A,0x60,0x0A,0x04,0x10,  /* 00001300    "RQ..`..." */
 12.1111 +    0x2E,0x5C,0x00,0x5B,0x81,0x29,0x5C,0x2F,  /* 00001308    ".\.[.)\/" */
 12.1112 +    0x04,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 00001310    "._SB_PCI" */
 12.1113 +    0x30,0x49,0x53,0x41,0x5F,0x50,0x49,0x52,  /* 00001318    "0ISA_PIR" */
 12.1114 +    0x51,0x01,0x50,0x49,0x52,0x41,0x08,0x50,  /* 00001320    "Q.PIRA.P" */
 12.1115 +    0x49,0x52,0x42,0x08,0x50,0x49,0x52,0x43,  /* 00001328    "IRB.PIRC" */
 12.1116 +    0x08,0x50,0x49,0x52,0x44,0x08,0x5B,0x82,  /* 00001330    ".PIRD.[." */
 12.1117 +    0x46,0x0B,0x53,0x59,0x53,0x52,0x08,0x5F,  /* 00001338    "F.SYSR._" */
 12.1118 +    0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,0x02,  /* 00001340    "HID.A..." */
 12.1119 +    0x08,0x5F,0x55,0x49,0x44,0x01,0x08,0x43,  /* 00001348    "._UID..C" */
 12.1120 +    0x52,0x53,0x5F,0x11,0x4E,0x08,0x0A,0x8A,  /* 00001350    "RS_.N..." */
 12.1121 +    0x47,0x01,0x10,0x00,0x10,0x00,0x00,0x10,  /* 00001358    "G......." */
 12.1122 +    0x47,0x01,0x22,0x00,0x22,0x00,0x00,0x0C,  /* 00001360    "G."."..." */
 12.1123 +    0x47,0x01,0x30,0x00,0x30,0x00,0x00,0x10,  /* 00001368    "G.0.0..." */
 12.1124 +    0x47,0x01,0x44,0x00,0x44,0x00,0x00,0x1C,  /* 00001370    "G.D.D..." */
 12.1125 +    0x47,0x01,0x62,0x00,0x62,0x00,0x00,0x02,  /* 00001378    "G.b.b..." */
 12.1126 +    0x47,0x01,0x65,0x00,0x65,0x00,0x00,0x0B,  /* 00001380    "G.e.e..." */
 12.1127 +    0x47,0x01,0x72,0x00,0x72,0x00,0x00,0x0E,  /* 00001388    "G.r.r..." */
 12.1128 +    0x47,0x01,0x80,0x00,0x80,0x00,0x00,0x01,  /* 00001390    "G......." */
 12.1129 +    0x47,0x01,0x84,0x00,0x84,0x00,0x00,0x03,  /* 00001398    "G......." */
 12.1130 +    0x47,0x01,0x88,0x00,0x88,0x00,0x00,0x01,  /* 000013A0    "G......." */
 12.1131 +    0x47,0x01,0x8C,0x00,0x8C,0x00,0x00,0x03,  /* 000013A8    "G......." */
 12.1132 +    0x47,0x01,0x90,0x00,0x90,0x00,0x00,0x10,  /* 000013B0    "G......." */
 12.1133 +    0x47,0x01,0xA2,0x00,0xA2,0x00,0x00,0x1C,  /* 000013B8    "G......." */
 12.1134 +    0x47,0x01,0xE0,0x00,0xE0,0x00,0x00,0x10,  /* 000013C0    "G......." */
 12.1135 +    0x47,0x01,0xA0,0x08,0xA0,0x08,0x00,0x04,  /* 000013C8    "G......." */
 12.1136 +    0x47,0x01,0xC0,0x0C,0xC0,0x0C,0x00,0x10,  /* 000013D0    "G......." */
 12.1137 +    0x47,0x01,0xD0,0x04,0xD0,0x04,0x00,0x02,  /* 000013D8    "G......." */
 12.1138 +    0x79,0x00,0x14,0x0B,0x5F,0x43,0x52,0x53,  /* 000013E0    "y..._CRS" */
 12.1139 +    0x00,0xA4,0x43,0x52,0x53,0x5F,0x5B,0x82,  /* 000013E8    "..CRS_[." */
 12.1140 +    0x2B,0x50,0x49,0x43,0x5F,0x08,0x5F,0x48,  /* 000013F0    "+PIC_._H" */
 12.1141 +    0x49,0x44,0x0B,0x41,0xD0,0x08,0x5F,0x43,  /* 000013F8    "ID.A.._C" */
 12.1142 +    0x52,0x53,0x11,0x18,0x0A,0x15,0x47,0x01,  /* 00001400    "RS....G." */
 12.1143 +    0x20,0x00,0x20,0x00,0x01,0x02,0x47,0x01,  /* 00001408    " . ...G." */
 12.1144 +    0xA0,0x00,0xA0,0x00,0x01,0x02,0x22,0x04,  /* 00001410    "......"." */
 12.1145 +    0x00,0x79,0x00,0x5B,0x82,0x47,0x05,0x44,  /* 00001418    ".y.[.G.D" */
 12.1146 +    0x4D,0x41,0x30,0x08,0x5F,0x48,0x49,0x44,  /* 00001420    "MA0._HID" */
 12.1147 +    0x0C,0x41,0xD0,0x02,0x00,0x08,0x5F,0x43,  /* 00001428    ".A...._C" */
 12.1148 +    0x52,0x53,0x11,0x41,0x04,0x0A,0x3D,0x2A,  /* 00001430    "RS.A..=*" */
 12.1149 +    0x10,0x04,0x47,0x01,0x00,0x00,0x00,0x00,  /* 00001438    "..G....." */
 12.1150 +    0x00,0x10,0x47,0x01,0x81,0x00,0x81,0x00,  /* 00001440    "..G....." */
 12.1151 +    0x00,0x03,0x47,0x01,0x87,0x00,0x87,0x00,  /* 00001448    "..G....." */
 12.1152 +    0x00,0x01,0x47,0x01,0x89,0x00,0x89,0x00,  /* 00001450    "..G....." */
 12.1153 +    0x00,0x03,0x47,0x01,0x8F,0x00,0x8F,0x00,  /* 00001458    "..G....." */
 12.1154 +    0x00,0x01,0x47,0x01,0xC0,0x00,0xC0,0x00,  /* 00001460    "..G....." */
 12.1155 +    0x00,0x20,0x47,0x01,0x80,0x04,0x80,0x04,  /* 00001468    ". G....." */
 12.1156 +    0x00,0x10,0x79,0x00,0x5B,0x82,0x25,0x54,  /* 00001470    "..y.[.%T" */
 12.1157 +    0x4D,0x52,0x5F,0x08,0x5F,0x48,0x49,0x44,  /* 00001478    "MR_._HID" */
 12.1158 +    0x0C,0x41,0xD0,0x01,0x00,0x08,0x5F,0x43,  /* 00001480    ".A...._C" */
 12.1159 +    0x52,0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,  /* 00001488    "RS....G." */
 12.1160 +    0x40,0x00,0x40,0x00,0x00,0x04,0x22,0x01,  /* 00001490    "@.@..."." */
 12.1161 +    0x00,0x79,0x00,0x5B,0x82,0x25,0x52,0x54,  /* 00001498    ".y.[.%RT" */
 12.1162 +    0x43,0x5F,0x08,0x5F,0x48,0x49,0x44,0x0C,  /* 000014A0    "C_._HID." */
 12.1163 +    0x41,0xD0,0x0B,0x00,0x08,0x5F,0x43,0x52,  /* 000014A8    "A...._CR" */
 12.1164 +    0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0x70,  /* 000014B0    "S....G.p" */
 12.1165 +    0x00,0x70,0x00,0x00,0x02,0x22,0x00,0x01,  /* 000014B8    ".p...".." */
 12.1166 +    0x79,0x00,0x5B,0x82,0x22,0x53,0x50,0x4B,  /* 000014C0    "y.[."SPK" */
 12.1167 +    0x52,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,  /* 000014C8    "R._HID.A" */
 12.1168 +    0xD0,0x08,0x00,0x08,0x5F,0x43,0x52,0x53,  /* 000014D0    "...._CRS" */
 12.1169 +    0x11,0x0D,0x0A,0x0A,0x47,0x01,0x61,0x00,  /* 000014D8    "....G.a." */
 12.1170 +    0x61,0x00,0x00,0x01,0x79,0x00,0x5B,0x82,  /* 000014E0    "a...y.[." */
 12.1171 +    0x31,0x50,0x53,0x32,0x4D,0x08,0x5F,0x48,  /* 000014E8    "1PS2M._H" */
 12.1172 +    0x49,0x44,0x0C,0x41,0xD0,0x0F,0x13,0x08,  /* 000014F0    "ID.A...." */
 12.1173 +    0x5F,0x43,0x49,0x44,0x0C,0x41,0xD0,0x0F,  /* 000014F8    "_CID.A.." */
 12.1174 +    0x13,0x14,0x09,0x5F,0x53,0x54,0x41,0x00,  /* 00001500    "..._STA." */
 12.1175 +    0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52,0x53,  /* 00001508    "...._CRS" */
 12.1176 +    0x11,0x08,0x0A,0x05,0x22,0x00,0x10,0x79,  /* 00001510    "...."..y" */
 12.1177 +    0x00,0x5B,0x82,0x42,0x04,0x50,0x53,0x32,  /* 00001518    ".[.B.PS2" */
 12.1178 +    0x4B,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,  /* 00001520    "K._HID.A" */
 12.1179 +    0xD0,0x03,0x03,0x08,0x5F,0x43,0x49,0x44,  /* 00001528    "...._CID" */
 12.1180 +    0x0C,0x41,0xD0,0x03,0x0B,0x14,0x09,0x5F,  /* 00001530    ".A....._" */
 12.1181 +    0x53,0x54,0x41,0x00,0xA4,0x0A,0x0F,0x08,  /* 00001538    "STA....." */
 12.1182 +    0x5F,0x43,0x52,0x53,0x11,0x18,0x0A,0x15,  /* 00001540    "_CRS...." */
 12.1183 +    0x47,0x01,0x60,0x00,0x60,0x00,0x00,0x01,  /* 00001548    "G.`.`..." */
 12.1184 +    0x47,0x01,0x64,0x00,0x64,0x00,0x00,0x01,  /* 00001550    "G.d.d..." */
 12.1185 +    0x22,0x02,0x00,0x79,0x00,0x5B,0x82,0x3A,  /* 00001558    ""..y.[.:" */
 12.1186 +    0x46,0x44,0x43,0x30,0x08,0x5F,0x48,0x49,  /* 00001560    "FDC0._HI" */
 12.1187 +    0x44,0x0C,0x41,0xD0,0x07,0x00,0x14,0x09,  /* 00001568    "D.A....." */
 12.1188 +    0x5F,0x53,0x54,0x41,0x00,0xA4,0x0A,0x0F,  /* 00001570    "_STA...." */
 12.1189 +    0x08,0x5F,0x43,0x52,0x53,0x11,0x1B,0x0A,  /* 00001578    "._CRS..." */
 12.1190 +    0x18,0x47,0x01,0xF0,0x03,0xF0,0x03,0x01,  /* 00001580    ".G......" */
 12.1191 +    0x06,0x47,0x01,0xF7,0x03,0xF7,0x03,0x01,  /* 00001588    ".G......" */
 12.1192 +    0x01,0x22,0x40,0x00,0x2A,0x04,0x00,0x79,  /* 00001590    "."@.*..y" */
 12.1193 +    0x00,0x5B,0x82,0x46,0x04,0x55,0x41,0x52,  /* 00001598    ".[.F.UAR" */
 12.1194 +    0x31,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,  /* 000015A0    "1._HID.A" */
 12.1195 +    0xD0,0x05,0x01,0x08,0x5F,0x55,0x49,0x44,  /* 000015A8    "...._UID" */
 12.1196 +    0x01,0x14,0x19,0x5F,0x53,0x54,0x41,0x00,  /* 000015B0    "..._STA." */
 12.1197 +    0xA0,0x0D,0x93,0x5E,0x5E,0x5E,0x5E,0x55,  /* 000015B8    "...^^^^U" */
 12.1198 +    0x41,0x52,0x31,0x00,0xA4,0x00,0xA1,0x04,  /* 000015C0    "AR1....." */
 12.1199 +    0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52,0x53,  /* 000015C8    "...._CRS" */
 12.1200 +    0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8,0x03,  /* 000015D0    "....G..." */
 12.1201 +    0xF8,0x03,0x08,0x08,0x22,0x10,0x00,0x79,  /* 000015D8    "...."..y" */
 12.1202 +    0x00,0x5B,0x82,0x47,0x04,0x55,0x41,0x52,  /* 000015E0    ".[.G.UAR" */
 12.1203 +    0x32,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,  /* 000015E8    "2._HID.A" */
 12.1204 +    0xD0,0x05,0x01,0x08,0x5F,0x55,0x49,0x44,  /* 000015F0    "...._UID" */
 12.1205 +    0x0A,0x02,0x14,0x19,0x5F,0x53,0x54,0x41,  /* 000015F8    "...._STA" */
 12.1206 +    0x00,0xA0,0x0D,0x93,0x5E,0x5E,0x5E,0x5E,  /* 00001600    "....^^^^" */
 12.1207 +    0x55,0x41,0x52,0x32,0x00,0xA4,0x00,0xA1,  /* 00001608    "UAR2...." */
 12.1208 +    0x04,0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52,  /* 00001610    "....._CR" */
 12.1209 +    0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8,  /* 00001618    "S....G.." */
 12.1210 +    0x02,0xF8,0x02,0x08,0x08,0x22,0x08,0x00,  /* 00001620    ".....".." */
 12.1211 +    0x79,0x00,0x5B,0x82,0x36,0x4C,0x54,0x50,  /* 00001628    "y.[.6LTP" */
 12.1212 +    0x31,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,  /* 00001630    "1._HID.A" */
 12.1213 +    0xD0,0x04,0x00,0x08,0x5F,0x55,0x49,0x44,  /* 00001638    "...._UID" */
 12.1214 +    0x0A,0x02,0x14,0x09,0x5F,0x53,0x54,0x41,  /* 00001640    "...._STA" */
 12.1215 +    0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52,  /* 00001648    "....._CR" */
 12.1216 +    0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0x78,  /* 00001650    "S....G.x" */
 12.1217 +    0x03,0x78,0x03,0x08,0x08,0x22,0x80,0x00,  /* 00001658    ".x...".." */
 12.1218 +    0x79,0x00,0x5B,0x82,0x4D,0x07,0x53,0x31,  /* 00001660    "y.[.M.S1" */
 12.1219 +    0x46,0x30,0x08,0x5F,0x41,0x44,0x52,0x0C,  /* 00001668    "F0._ADR." */
 12.1220 +    0x00,0x00,0x06,0x00,0x08,0x5F,0x53,0x55,  /* 00001670    "....._SU" */
 12.1221 +    0x4E,0x01,0x14,0x13,0x5F,0x50,0x53,0x30,  /* 00001678    "N..._PS0" */
 12.1222 +    0x00,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47,  /* 00001680    ".p..\._G" */
 12.1223 +    0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x13,  /* 00001688    "PEDPT2.." */
 12.1224 +    0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x83,  /* 00001690    "_PS3.p.." */
 12.1225 +    0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,  /* 00001698    "\._GPEDP" */
 12.1226 +    0x54,0x32,0x14,0x1F,0x5F,0x45,0x4A,0x30,  /* 000016A0    "T2.._EJ0" */
 12.1227 +    0x01,0x70,0x0A,0x88,0x5C,0x2E,0x5F,0x47,  /* 000016A8    ".p..\._G" */
 12.1228 +    0x50,0x45,0x44,0x50,0x54,0x32,0x70,0x01,  /* 000016B0    "PEDPT2p." */
 12.1229 +    0x5C,0x2E,0x5F,0x47,0x50,0x45,0x50,0x48,  /* 000016B8    "\._GPEPH" */
 12.1230 +    0x50,0x31,0x14,0x1E,0x5F,0x53,0x54,0x41,  /* 000016C0    "P1.._STA" */
 12.1231 +    0x00,0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47,  /* 000016C8    ".p..\._G" */
 12.1232 +    0x50,0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,  /* 000016D0    "PEDPT2.\" */
 12.1233 +    0x2E,0x5F,0x47,0x50,0x45,0x50,0x48,0x50,  /* 000016D8    "._GPEPHP" */
 12.1234 +    0x31,0x5B,0x82,0x4E,0x07,0x53,0x32,0x46,  /* 000016E0    "1[.N.S2F" */
 12.1235 +    0x30,0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,  /* 000016E8    "0._ADR.." */
 12.1236 +    0x00,0x07,0x00,0x08,0x5F,0x53,0x55,0x4E,  /* 000016F0    "...._SUN" */
 12.1237 +    0x0A,0x02,0x14,0x13,0x5F,0x50,0x53,0x30,  /* 000016F8    "...._PS0" */
 12.1238 +    0x00,0x70,0x0A,0x90,0x5C,0x2E,0x5F,0x47,  /* 00001700    ".p..\._G" */
 12.1239 +    0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x13,  /* 00001708    "PEDPT2.." */
 12.1240 +    0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x93,  /* 00001710    "_PS3.p.." */
 12.1241 +    0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,  /* 00001718    "\._GPEDP" */
 12.1242 +    0x54,0x32,0x14,0x1F,0x5F,0x45,0x4A,0x30,  /* 00001720    "T2.._EJ0" */
 12.1243 +    0x01,0x70,0x0A,0x98,0x5C,0x2E,0x5F,0x47,  /* 00001728    ".p..\._G" */
 12.1244 +    0x50,0x45,0x44,0x50,0x54,0x32,0x70,0x01,  /* 00001730    "PEDPT2p." */
 12.1245 +    0x5C,0x2E,0x5F,0x47,0x50,0x45,0x50,0x48,  /* 00001738    "\._GPEPH" */
 12.1246 +    0x50,0x32,0x14,0x1E,0x5F,0x53,0x54,0x41,  /* 00001740    "P2.._STA" */
 12.1247 +    0x00,0x70,0x0A,0x99,0x5C,0x2E,0x5F,0x47,  /* 00001748    ".p..\._G" */
 12.1248 +    0x50,0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,  /* 00001750    "PEDPT2.\" */
 12.1249 +    0x2E,0x5F,0x47,0x50,0x45,0x50,0x48,0x50,  /* 00001758    "._GPEPHP" */
 12.1250 +    0x32,0x10,0x4E,0x0B,0x5F,0x47,0x50,0x45,  /* 00001760    "2.N._GPE" */
 12.1251 +    0x5B,0x80,0x50,0x48,0x50,0x5F,0x01,0x0B,  /* 00001768    "[.PHP_.." */
 12.1252 +    0xC0,0x10,0x0A,0x03,0x5B,0x81,0x15,0x50,  /* 00001770    "....[..P" */
 12.1253 +    0x48,0x50,0x5F,0x01,0x50,0x53,0x54,0x41,  /* 00001778    "HP_.PSTA" */
 12.1254 +    0x08,0x50,0x48,0x50,0x31,0x08,0x50,0x48,  /* 00001780    ".PHP1.PH" */
 12.1255 +    0x50,0x32,0x08,0x5B,0x80,0x44,0x47,0x31,  /* 00001788    "P2.[.DG1" */
 12.1256 +    0x5F,0x01,0x0B,0x44,0xB0,0x0A,0x04,0x5B,  /* 00001790    "_..D...[" */
 12.1257 +    0x81,0x10,0x44,0x47,0x31,0x5F,0x01,0x44,  /* 00001798    "..DG1_.D" */
 12.1258 +    0x50,0x54,0x31,0x08,0x44,0x50,0x54,0x32,  /* 000017A0    "PT1.DPT2" */
 12.1259 +    0x08,0x14,0x46,0x07,0x5F,0x4C,0x30,0x33,  /* 000017A8    "..F._L03" */
 12.1260 +    0x00,0x08,0x53,0x4C,0x54,0x5F,0x00,0x08,  /* 000017B0    "..SLT_.." */
 12.1261 +    0x45,0x56,0x54,0x5F,0x00,0x70,0x50,0x53,  /* 000017B8    "EVT_.pPS" */
 12.1262 +    0x54,0x41,0x61,0x7A,0x61,0x0A,0x04,0x53,  /* 000017C0    "TAaza..S" */
 12.1263 +    0x4C,0x54,0x5F,0x7B,0x61,0x0A,0x0F,0x45,  /* 000017C8    "LT_{a..E" */
 12.1264 +    0x56,0x54,0x5F,0x70,0x53,0x4C,0x54,0x5F,  /* 000017D0    "VT_pSLT_" */
 12.1265 +    0x44,0x50,0x54,0x31,0x70,0x45,0x56,0x54,  /* 000017D8    "DPT1pEVT" */
 12.1266 +    0x5F,0x44,0x50,0x54,0x32,0xA0,0x1B,0x93,  /* 000017E0    "_DPT2..." */
 12.1267 +    0x53,0x4C,0x54,0x5F,0x01,0x86,0x5C,0x2F,  /* 000017E8    "SLT_..\/" */
 12.1268 +    0x03,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,  /* 000017F0    "._SB_PCI" */
 12.1269 +    0x30,0x53,0x31,0x46,0x30,0x45,0x56,0x54,  /* 000017F8    "0S1F0EVT" */
 12.1270 +    0x5F,0xA1,0x1E,0xA0,0x1C,0x93,0x53,0x4C,  /* 00001800    "_.....SL" */
 12.1271 +    0x54,0x5F,0x0A,0x02,0x86,0x5C,0x2F,0x03,  /* 00001808    "T_...\/." */
 12.1272 +    0x5F,0x53,0x42,0x5F,0x50,0x43,0x49,0x30,  /* 00001810    "_SB_PCI0" */
 12.1273 +    0x53,0x32,0x46,0x30,0x45,0x56,0x54,0x5F,  /* 00001818    "S2F0EVT_" */
 12.1274 +
 12.1275  };
 12.1276  int DsdtLen=sizeof(AmlCode);
    13.1 --- a/tools/libxc/xc_cpufeature.h	Fri Mar 06 12:22:22 2009 +0900
    13.2 +++ b/tools/libxc/xc_cpufeature.h	Tue Mar 10 11:00:34 2009 +0900
    13.3 @@ -83,6 +83,7 @@
    13.4  #define X86_FEATURE_SSE4_1	(4*32+19) /* Streaming SIMD Extensions 4.1 */
    13.5  #define X86_FEATURE_SSE4_2	(4*32+20) /* Streaming SIMD Extensions 4.2 */
    13.6  #define X86_FEATURE_POPCNT	(4*32+23) /* POPCNT instruction */
    13.7 +#define X86_FEATURE_XSAVE	(4*32+26) /* XSAVE/XRSTOR/XSETBV/XGETBV */
    13.8  #define X86_FEATURE_HYPERVISOR	(4*32+31) /* Running under some hypervisor */
    13.9  
   13.10  /* VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001, word 5 */
    14.1 --- a/tools/libxc/xc_cpuid_x86.c	Fri Mar 06 12:22:22 2009 +0900
    14.2 +++ b/tools/libxc/xc_cpuid_x86.c	Tue Mar 10 11:00:34 2009 +0900
    14.3 @@ -311,6 +311,7 @@ static void xc_cpuid_pv_policy(
    14.4          clear_bit(X86_FEATURE_XTPR, regs[2]);
    14.5          clear_bit(X86_FEATURE_PDCM, regs[2]);
    14.6          clear_bit(X86_FEATURE_DCA, regs[2]);
    14.7 +        clear_bit(X86_FEATURE_XSAVE, regs[2]);
    14.8          set_bit(X86_FEATURE_HYPERVISOR, regs[2]);
    14.9          break;
   14.10      case 0x80000001:
    15.1 --- a/tools/pygrub/src/pygrub	Fri Mar 06 12:22:22 2009 +0900
    15.2 +++ b/tools/pygrub/src/pygrub	Tue Mar 10 11:00:34 2009 +0900
    15.3 @@ -605,7 +605,7 @@ if __name__ == "__main__":
    15.4      isconfig = False
    15.5  
    15.6      # what was passed in
    15.7 -    incfg = { "kernel": None, "ramdisk": None, "args": None }
    15.8 +    incfg = { "kernel": None, "ramdisk": None, "args": "" }
    15.9      # what grub or sniffing chose
   15.10      chosencfg = { "kernel": None, "ramdisk": None, "args": None }
   15.11      # what to boot
   15.12 @@ -641,7 +641,7 @@ if __name__ == "__main__":
   15.13  
   15.14      # debug
   15.15      if isconfig:
   15.16 -        chosencfg = run_grub(file, entry)
   15.17 +        chosencfg = run_grub(file, entry, fs, incfg["args"])
   15.18          print "  kernel: %s" % chosencfg["kernel"]
   15.19          if img.initrd:
   15.20              print "  initrd: %s" % chosencfg["ramdisk"]
    16.1 --- a/tools/python/xen/xend/XendConfig.py	Fri Mar 06 12:22:22 2009 +0900
    16.2 +++ b/tools/python/xen/xend/XendConfig.py	Tue Mar 10 11:00:34 2009 +0900
    16.3 @@ -169,11 +169,12 @@ XENAPI_PLATFORM_CFG_TYPES = {
    16.4      'hap': int,
    16.5      'xen_extended_power_mgmt': int,
    16.6      'pci_msitranslate': int,
    16.7 +    'pci_power_mgmt': int,
    16.8  }
    16.9  
   16.10  # Xen API console 'other_config' keys.
   16.11  XENAPI_CONSOLE_OTHER_CFG = ['vncunused', 'vncdisplay', 'vnclisten',
   16.12 -                            'vncpasswd', 'type', 'display', 'xauthority',
   16.13 +                            'vncpasswd', 'sdl', 'vnc', 'display', 'xauthority',
   16.14                              'keymap', 'opengl']
   16.15  
   16.16  # List of XendConfig configuration keys that have no direct equivalent
   16.17 @@ -864,7 +865,7 @@ class XendConfig(dict):
   16.18              # add vfb device if it isn't there already
   16.19              if not self.has_rfb():
   16.20                  dev_config = ['vfb']
   16.21 -                dev_config.append(['type', 'vnc'])
   16.22 +                dev_config.append(['vnc', '1'])
   16.23                  # copy VNC related params from platform config to vfb dev conf
   16.24                  for key in ['vncpasswd', 'vncunused', 'vncdisplay',
   16.25                              'vnclisten']:
   16.26 @@ -1469,7 +1470,8 @@ class XendConfig(dict):
   16.27                      # collapse other config into devinfo for things
   16.28                      # such as vncpasswd, vncunused, etc.                    
   16.29                      dev_info.update(console_other_config)
   16.30 -                    dev_info['type'] = console_other_config.get('type', 'vnc') 
   16.31 +                    dev_info['vnc'] = console_other_config.get('vnc', '0')
   16.32 +                    dev_info['sdl'] = console_other_config.get('sdl', '0')
   16.33                      target['devices'][dev_uuid] = ('vfb', dev_info)
   16.34                      target['console_refs'].append(dev_uuid)
   16.35  
    17.1 --- a/tools/python/xen/xend/XendDomainInfo.py	Fri Mar 06 12:22:22 2009 +0900
    17.2 +++ b/tools/python/xen/xend/XendDomainInfo.py	Tue Mar 10 11:00:34 2009 +0900
    17.3 @@ -855,27 +855,73 @@ class XendDomainInfo:
    17.4          """Configure an existing vscsi device.
    17.5              quoted pci funciton
    17.6          """
    17.7 +        def _is_vscsi_defined(dev_info, p_devs = None, v_devs = None):
    17.8 +            if not dev_info:
    17.9 +                return False
   17.10 +            for dev in sxp.children(dev_info, 'dev'):
   17.11 +                if p_devs is not None:
   17.12 +                    if sxp.child_value(dev, 'p-dev') in p_devs:
   17.13 +                        return True
   17.14 +                if v_devs is not None:
   17.15 +                    if sxp.child_value(dev, 'v-dev') in v_devs:
   17.16 +                        return True
   17.17 +            return False
   17.18 +
   17.19 +        def _vscsi_be(be):
   17.20 +            be_xdi = xen.xend.XendDomain.instance().domain_lookup_nr(be)
   17.21 +            if be_xdi is not None:
   17.22 +                be_domid = be_xdi.getDomid()
   17.23 +                if be_domid is not None:
   17.24 +                    return str(be_domid)
   17.25 +            return str(be)
   17.26 +
   17.27          dev_class = sxp.name(dev_sxp)
   17.28          if dev_class != 'vscsi':
   17.29              return False
   17.30  
   17.31          dev_config = self.info.vscsi_convert_sxp_to_dict(dev_sxp)
   17.32 -        dev = dev_config['devs'][0]
   17.33 -        req_devid = int(dev['devid'])
   17.34 -        existing_dev_info = self._getDeviceInfo_vscsi(req_devid, dev['v-dev'])
   17.35 -        state = dev['state']
   17.36 +        devs = dev_config['devs']
   17.37 +        v_devs = [d['v-dev'] for d in devs]
   17.38 +        state = devs[0]['state']
   17.39 +        req_devid = int(devs[0]['devid'])
   17.40 +        cur_dev_sxp = self._getDeviceInfo_vscsi(req_devid)
   17.41  
   17.42          if state == xenbusState['Initialising']:
   17.43              # new create
   17.44              # If request devid does not exist, create and exit.
   17.45 -            if existing_dev_info is None:
   17.46 +            p_devs = [d['p-dev'] for d in devs]
   17.47 +            for dev_type, dev_info in self.info.all_devices_sxpr():
   17.48 +                if dev_type != 'vscsi':
   17.49 +                    continue
   17.50 +                if _is_vscsi_defined(dev_info, p_devs = p_devs):
   17.51 +                    raise XendError('The physical device "%s" is already defined' % \
   17.52 +                                    p_devs[0])
   17.53 +            if cur_dev_sxp is None:
   17.54                  self.device_create(dev_sxp)
   17.55                  return True
   17.56 -            elif existing_dev_info == "exists":
   17.57 -                raise XendError("The virtual device %s is already defined" % dev['v-dev'])
   17.58 +
   17.59 +            if _is_vscsi_defined(cur_dev_sxp, v_devs = v_devs):
   17.60 +                raise XendError('The virtual device "%s" is already defined' % \
   17.61 +                                v_devs[0])
   17.62 +
   17.63 +            if int(dev_config['feature-host']) != \
   17.64 +               int(sxp.child_value(cur_dev_sxp, 'feature-host')):
   17.65 +                raise XendError('The physical device "%s" cannot define '
   17.66 +                                'because mode is different' % devs[0]['p-dev'])
   17.67 +
   17.68 +            new_be = dev_config.get('backend', None)
   17.69 +            if new_be is not None:
   17.70 +                cur_be = sxp.child_value(cur_dev_sxp, 'backend', None)
   17.71 +                if cur_be is None:
   17.72 +                    cur_be = xen.xend.XendDomain.DOM0_ID
   17.73 +                new_be_dom = _vscsi_be(new_be)
   17.74 +                cur_be_dom = _vscsi_be(cur_be)
   17.75 +                if new_be_dom != cur_be_dom:
   17.76 +                    raise XendError('The physical device "%s" cannot define '
   17.77 +                                    'because backend is different' % devs[0]['p-dev'])
   17.78  
   17.79          elif state == xenbusState['Closing']:
   17.80 -            if existing_dev_info is None:
   17.81 +            if not _is_vscsi_defined(cur_dev_sxp, v_devs = v_devs):
   17.82                  raise XendError("Cannot detach vscsi device does not exist")
   17.83  
   17.84          if self.domid is not None:
   17.85 @@ -896,7 +942,6 @@ class XendDomainInfo:
   17.86                  del self.info['devices'][dev_uuid]
   17.87  
   17.88          else:
   17.89 -            cur_dev_sxp = self._getDeviceInfo_vscsi(req_devid, None)
   17.90              new_dev_sxp = ['vscsi']
   17.91              cur_mode = sxp.children(cur_dev_sxp, 'feature-host')[0]
   17.92              new_dev_sxp.append(cur_mode)
   17.93 @@ -910,8 +955,7 @@ class XendDomainInfo:
   17.94                  if state == xenbusState['Closing']:
   17.95                      if int(cur_mode[1]) == 1:
   17.96                          continue
   17.97 -                    cur_dev_vdev = sxp.child_value(cur_dev, 'v-dev')
   17.98 -                    if cur_dev_vdev == dev['v-dev']:
   17.99 +                    if sxp.child_value(cur_dev, 'v-dev') in v_devs:
  17.100                          continue
  17.101                  new_dev_sxp.append(cur_dev)
  17.102  
  17.103 @@ -1172,23 +1216,14 @@ class XendDomainInfo:
  17.104              return dev_info
  17.105          return None
  17.106  
  17.107 -    def _getDeviceInfo_vscsi(self, devid, vdev):
  17.108 +    def _getDeviceInfo_vscsi(self, devid):
  17.109          devid = int(devid)
  17.110          for dev_type, dev_info in self.info.all_devices_sxpr():
  17.111              if dev_type != 'vscsi':
  17.112                  continue
  17.113 -            existing_dev_uuid = sxp.child_value(dev_info, 'uuid')
  17.114 -            existing_conf = self.info['devices'][existing_dev_uuid][1]
  17.115 -            existing_dev = existing_conf['devs'][0]
  17.116 -            existing_devid = int(existing_dev['devid'])
  17.117 -            existing_vdev = existing_dev['v-dev']
  17.118 -
  17.119 -            if vdev == existing_vdev:
  17.120 -                return "exists"
  17.121 -
  17.122 -            if devid == existing_devid:
  17.123 +            devs = sxp.children(dev_info, 'dev')
  17.124 +            if devid == int(sxp.child_value(devs[0], 'devid')):
  17.125                  return dev_info
  17.126 -
  17.127          return None
  17.128  
  17.129      def setMemoryTarget(self, target):
  17.130 @@ -3639,7 +3674,7 @@ class XendDomainInfo:
  17.131  
  17.132          if self._stateGet() != XEN_API_VM_POWER_STATE_RUNNING:
  17.133  
  17.134 -            cur_vscsi_sxp = self._getDeviceInfo_vscsi(devid, None)
  17.135 +            cur_vscsi_sxp = self._getDeviceInfo_vscsi(devid)
  17.136  
  17.137              if cur_vscsi_sxp is None:
  17.138                  dev_uuid = self.info.device_add('vscsi', cfg_sxp = target_vscsi_sxp)
  17.139 @@ -3737,7 +3772,7 @@ class XendDomainInfo:
  17.140          dscsi = XendAPIStore.get(dev_uuid, 'DSCSI')
  17.141          devid = dscsi.get_virtual_host()
  17.142          vHCTL = dscsi.get_virtual_HCTL()
  17.143 -        cur_vscsi_sxp = self._getDeviceInfo_vscsi(devid, None)
  17.144 +        cur_vscsi_sxp = self._getDeviceInfo_vscsi(devid)
  17.145          dev_uuid = sxp.child_value(cur_vscsi_sxp, 'uuid')
  17.146  
  17.147          target_dev = None
    18.1 --- a/tools/python/xen/xend/image.py	Fri Mar 06 12:22:22 2009 +0900
    18.2 +++ b/tools/python/xen/xend/image.py	Tue Mar 10 11:00:34 2009 +0900
    18.3 @@ -279,15 +279,16 @@ class ImageHandler:
    18.4              if dev_type == 'vfb':
    18.5                  if 'keymap' in dev_info:
    18.6                      keymap = dev_info.get('keymap',{})
    18.7 -                vfb_type = dev_info.get('type', {})
    18.8 -                if vfb_type == 'sdl':
    18.9 +                if int(dev_info.get('vnc', 0)) != 0 :
   18.10 +                    has_vnc = True
   18.11 +                if int(dev_info.get('sdl', 0)) != 0 :
   18.12 +                    has_sdl = True
   18.13 +                if has_sdl:
   18.14                      self.display = dev_info.get('display', {})
   18.15                      self.xauthority = dev_info.get('xauthority', {})
   18.16                      opengl = int(dev_info.get('opengl', opengl))
   18.17 -                    has_sdl = True
   18.18 -                else:
   18.19 +                if has_vnc:
   18.20                      vnc_config = dev_info.get('other_config', {})
   18.21 -                    has_vnc = True
   18.22                  break
   18.23  
   18.24          if keymap:
   18.25 @@ -335,11 +336,12 @@ class ImageHandler:
   18.26              if int(vnc_config.get('vncunused', 1)) != 0:
   18.27                  ret.append('-vncunused')
   18.28  
   18.29 -        elif has_sdl:
   18.30 -            # SDL is default in QEMU.
   18.31 +        if has_sdl:
   18.32 +            ret.append('-sdl')
   18.33              if int(vmConfig['platform'].get('opengl', opengl)) != 1 :
   18.34                  ret.append('-disable-opengl')
   18.35 -        else:
   18.36 +
   18.37 +        if not has_sdl and not has_vnc :
   18.38              ret.append('-nographic')
   18.39  
   18.40          if int(vmConfig['platform'].get('monitor', 0)) != 0:
   18.41 @@ -714,6 +716,8 @@ class HVMImageHandler(ImageHandler):
   18.42  
   18.43          rtc_timeoffset = vmConfig['platform'].get('rtc_timeoffset')
   18.44  
   18.45 +        if not self.display :
   18.46 +            self.display = ''
   18.47          self.vm.storeVm(("image/dmargs", " ".join(self.dmargs)),
   18.48                          ("image/device-model", self.device_model),
   18.49                          ("image/display", self.display))
    19.1 --- a/tools/python/xen/xend/server/pciif.py	Fri Mar 06 12:22:22 2009 +0900
    19.2 +++ b/tools/python/xen/xend/server/pciif.py	Tue Mar 10 11:00:34 2009 +0900
    19.3 @@ -97,6 +97,8 @@ class PciController(DevController):
    19.4          back['uuid'] = config.get('uuid','')
    19.5          if 'pci_msitranslate' in self.vm.info['platform']:
    19.6              back['msitranslate']=str(self.vm.info['platform']['pci_msitranslate'])
    19.7 +        if 'pci_power_mgmt' in self.vm.info['platform']:
    19.8 +            back['power_mgmt']=str(self.vm.info['platform']['pci_power_mgmt'])
    19.9  
   19.10          return (0, back, {})
   19.11  
    20.1 --- a/tools/python/xen/xm/create.py	Fri Mar 06 12:22:22 2009 +0900
    20.2 +++ b/tools/python/xen/xm/create.py	Tue Mar 10 11:00:34 2009 +0900
    20.3 @@ -322,14 +322,16 @@ gopts.var('disk', val='phy:DEV,VDEV,MODE
    20.4            backend driver domain to use for the disk.
    20.5            The option may be repeated to add more than one disk.""")
    20.6  
    20.7 -gopts.var('pci', val='BUS:DEV.FUNC[,msitranslate=0|1]',
    20.8 +gopts.var('pci', val='BUS:DEV.FUNC[,msitranslate=0|1][,power_mgmt=0|1]',
    20.9            fn=append_value, default=[],
   20.10            use="""Add a PCI device to a domain, using given params (in hex).
   20.11            For example 'pci=c0:02.1'.
   20.12            If msitranslate is set, MSI-INTx translation is enabled if possible.
   20.13            Guest that doesn't support MSI will get IO-APIC type IRQs
   20.14            translated from physical MSI, HVM only. Default is 1.
   20.15 -          The option may be repeated to add more than one pci device.""")
   20.16 +          The option may be repeated to add more than one pci device.
   20.17 +          If power_mgmt is set, the guest OS will be able to program the power
   20.18 +          states D0-D3hot of the device, HVM only. Default=0.""")
   20.19  
   20.20  gopts.var('vscsi', val='PDEV,VDEV[,DOM]',
   20.21            fn=append_value, default=[],
   20.22 @@ -348,16 +350,16 @@ gopts.var('irq', val='IRQ',
   20.23           For example 'irq=7'.
   20.24           This option may be repeated to add more than one IRQ.""")
   20.25  
   20.26 -gopts.var('vfb', val="type={vnc,sdl},vncunused=1,vncdisplay=N,vnclisten=ADDR,display=DISPLAY,xauthority=XAUTHORITY,vncpasswd=PASSWORD,opengl=1,keymap=FILE",
   20.27 +gopts.var('vfb', val="vnc=1,sdl=1,vncunused=1,vncdisplay=N,vnclisten=ADDR,display=DISPLAY,xauthority=XAUTHORITY,vncpasswd=PASSWORD,opengl=1,keymap=FILE",
   20.28            fn=append_value, default=[],
   20.29            use="""Make the domain a framebuffer backend.
   20.30 -          The backend type should be either sdl or vnc.
   20.31 -          For type=vnc, connect an external vncviewer.  The server will listen
   20.32 +          Both sdl=1 and vnc=1 can be enabled at the same time.
   20.33 +          For vnc=1, connect an external vncviewer.  The server will listen
   20.34            on ADDR (default 127.0.0.1) on port N+5900.  N defaults to the
   20.35            domain id.  If vncunused=1, the server will try to find an arbitrary
   20.36            unused port above 5900.  vncpasswd overrides the XenD configured
   20.37            default password.
   20.38 -          For type=sdl, a viewer will be started automatically using the
   20.39 +          For sdl=1, a viewer will be started automatically using the
   20.40            given DISPLAY and XAUTHORITY, which default to the current user's
   20.41            ones.  OpenGL will be used by default unless opengl is set to 0.
   20.42            keymap overrides the XendD configured default layout file.""")
   20.43 @@ -605,6 +607,10 @@ gopts.var('pci_msitranslate', val='TRANS
   20.44            use="""Global PCI MSI-INTx translation flag (0=disable;
   20.45            1=enable.""")
   20.46  
   20.47 +gopts.var('pci_power_mgmt', val='POWERMGMT',
   20.48 +          fn=set_int, default=0,
   20.49 +          use="""Global PCI Power Management flag (0=disable;1=enable).""")
   20.50 +
   20.51  def err(msg):
   20.52      """Print an error to stderr and exit.
   20.53      """
   20.54 @@ -691,7 +697,7 @@ def configure_pci(config_devs, vals):
   20.55          d = comma_sep_kv_to_dict(opts)
   20.56  
   20.57          def f(k):
   20.58 -            if k not in ['msitranslate']:
   20.59 +            if k not in ['msitranslate', 'power_mgmt']:
   20.60                  err('Invalid pci option: ' + k)
   20.61  
   20.62              config_pci_opts.append([k, d[k]])
   20.63 @@ -798,11 +804,13 @@ def configure_vfbs(config_devs, vals):
   20.64      for f in vals.vfb:
   20.65          d = comma_sep_kv_to_dict(f)
   20.66          config = ['vfb']
   20.67 -        if not d.has_key("type"):
   20.68 -            d['type'] = 'sdl'
   20.69 +        #handle the legacy case
   20.70 +        if d.has_key("type"):
   20.71 +            d[d['type']] = '1'
   20.72 +            del d['type']
   20.73          for (k,v) in d.iteritems():
   20.74              if not k in [ 'vnclisten', 'vncunused', 'vncdisplay', 'display',
   20.75 -                          'videoram', 'xauthority', 'type', 'vncpasswd',
   20.76 +                          'videoram', 'xauthority', 'sdl', 'vnc', 'vncpasswd',
   20.77                            'opengl', 'keymap' ]:
   20.78                  err("configuration option %s unknown to vfbs" % k)
   20.79              config.append([k,v])
   20.80 @@ -913,7 +921,7 @@ def configure_hvm(config_image, vals):
   20.81               'acpi', 'apic', 'usb', 'usbdevice', 'keymap', 'pci', 'hpet',
   20.82               'guest_os_type', 'hap', 'opengl', 'cpuid', 'cpuid_check',
   20.83               'viridian', 'xen_extended_power_mgmt', 'pci_msitranslate',
   20.84 -             'vpt_align' ]
   20.85 +             'vpt_align', 'pci_power_mgmt' ]
   20.86  
   20.87      for a in args:
   20.88          if a in vals.__dict__ and vals.__dict__[a] is not None:
    21.1 --- a/tools/python/xen/xm/xenapi_create.py	Fri Mar 06 12:22:22 2009 +0900
    21.2 +++ b/tools/python/xen/xm/xenapi_create.py	Tue Mar 10 11:00:34 2009 +0900
    21.3 @@ -1047,6 +1047,7 @@ class sxp2xml:
    21.4              'guest_os_type',
    21.5              'hap',
    21.6              'pci_msitranslate',
    21.7 +            'pci_power_mgmt',
    21.8          ]
    21.9  
   21.10          platform_configs = []
    22.1 --- a/tools/xm-test/lib/XmTestLib/NetConfig.py	Fri Mar 06 12:22:22 2009 +0900
    22.2 +++ b/tools/xm-test/lib/XmTestLib/NetConfig.py	Tue Mar 10 11:00:34 2009 +0900
    22.3 @@ -57,11 +57,13 @@ def getXendNetConfig():
    22.4      while val[0] != 'network-script':
    22.5          val = pin.get_val()
    22.6  
    22.7 -    if val[1] == "network-bridge":
    22.8 +    # split network command into script name and its parameters
    22.9 +    sub_val = val[1].split()
   22.10 +    if sub_val[0] == "network-bridge":
   22.11          netenv = "bridge"
   22.12 -    elif val[1] == "network-route":
   22.13 +    elif sub_val[0] == "network-route":
   22.14          netenv = "route"
   22.15 -    elif val[1] == "network-nat":
   22.16 +    elif sub_val[0] == "network-nat":
   22.17          netenv = "nat"
   22.18      else:
   22.19          raise NetworkError("Failed to get network env from xend config")
    23.1 --- a/xen/Makefile	Fri Mar 06 12:22:22 2009 +0900
    23.2 +++ b/xen/Makefile	Tue Mar 10 11:00:34 2009 +0900
    23.3 @@ -44,6 +44,7 @@ build install debug clean distclean csco
    23.4  	$(MAKE) -f $(BASEDIR)/Rules.mk -C common clean
    23.5  	$(MAKE) -f $(BASEDIR)/Rules.mk -C drivers clean
    23.6  	$(MAKE) -f $(BASEDIR)/Rules.mk -C xsm clean
    23.7 +	$(MAKE) -f $(BASEDIR)/Rules.mk -C crypto clean
    23.8  	$(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) clean
    23.9  	rm -f include/asm *.o $(TARGET)* *~ core
   23.10  	rm -f include/asm-*/asm-offsets.h
    24.1 --- a/xen/arch/ia64/xen/xensetup.c	Fri Mar 06 12:22:22 2009 +0900
    24.2 +++ b/xen/arch/ia64/xen/xensetup.c	Tue Mar 10 11:00:34 2009 +0900
    24.3 @@ -337,6 +337,8 @@ is_platform_hp_ski(void)
    24.4  static int __initdata dom0_vhpt_size_log2;
    24.5  integer_param("dom0_vhpt_size_log2", dom0_vhpt_size_log2);
    24.6  #endif
    24.7 +unsigned long xen_fixed_mfn_start __read_mostly;
    24.8 +unsigned long xen_fixed_mfn_end __read_mostly;
    24.9  
   24.10  void __init start_kernel(void)
   24.11  {
   24.12 @@ -556,6 +558,10 @@ skip_move:
   24.13             (xenheap_phys_end-__pa(xen_heap_start)) >> 20,
   24.14             (xenheap_phys_end-__pa(xen_heap_start)) >> 10);
   24.15  
   24.16 +    /* for is_xen_fixed_mfn() */
   24.17 +    xen_fixed_mfn_start = virt_to_mfn(&_start);
   24.18 +    xen_fixed_mfn_end = virt_to_mfn(xen_heap_start);
   24.19 +
   24.20      end_boot_allocator();
   24.21  
   24.22      softirq_init();
    25.1 --- a/xen/arch/x86/bzimage.c	Fri Mar 06 12:22:22 2009 +0900
    25.2 +++ b/xen/arch/x86/bzimage.c	Tue Mar 10 11:00:34 2009 +0900
    25.3 @@ -58,8 +58,7 @@ static void flush_window(void);
    25.4  
    25.5  static __init void error(char *x)
    25.6  {
    25.7 -    printk("%s\n", x);
    25.8 -    BUG();
    25.9 +    panic("%s\n", x);
   25.10  }
   25.11  
   25.12  static __init int fill_inbuf(void)
    26.1 --- a/xen/arch/x86/hvm/vpt.c	Fri Mar 06 12:22:22 2009 +0900
    26.2 +++ b/xen/arch/x86/hvm/vpt.c	Tue Mar 10 11:00:34 2009 +0900
    26.3 @@ -209,7 +209,8 @@ static void pt_timer_fn(void *data)
    26.4          set_timer(&pt->timer, pt->scheduled);
    26.5      }
    26.6  
    26.7 -    vcpu_kick(pt->vcpu);
    26.8 +    if ( !pt_irq_masked(pt) )
    26.9 +        vcpu_kick(pt->vcpu);
   26.10  
   26.11      pt_unlock(pt);
   26.12  }
    27.1 --- a/xen/arch/x86/mm/hap/hap.c	Fri Mar 06 12:22:22 2009 +0900
    27.2 +++ b/xen/arch/x86/mm/hap/hap.c	Tue Mar 10 11:00:34 2009 +0900
    27.3 @@ -152,7 +152,7 @@ static struct page_info *hap_alloc_p2m_p
    27.4          d->arch.paging.hap.total_pages--;
    27.5          d->arch.paging.hap.p2m_pages++;
    27.6          page_set_owner(pg, d);
    27.7 -        pg->count_info = 1;
    27.8 +        pg->count_info |= 1;
    27.9      }
   27.10  
   27.11      hap_unlock(d);
   27.12 @@ -167,7 +167,7 @@ void hap_free_p2m_page(struct domain *d,
   27.13      if ( (pg->count_info & PGC_count_mask) != 1 )
   27.14          HAP_ERROR("Odd p2m page count c=%#lx t=%"PRtype_info"\n",
   27.15                    pg->count_info, pg->u.inuse.type_info);
   27.16 -    pg->count_info = 0;
   27.17 +    pg->count_info &= ~PGC_count_mask;
   27.18      /* Free should not decrement domain's total allocation, since
   27.19       * these pages were allocated without an owner. */
   27.20      page_set_owner(pg, NULL);
   27.21 @@ -218,7 +218,6 @@ hap_set_allocation(struct domain *d, uns
   27.22              ASSERT(pg);
   27.23              d->arch.paging.hap.free_pages--;
   27.24              d->arch.paging.hap.total_pages--;
   27.25 -            pg->count_info = 0;
   27.26              free_domheap_page(pg);
   27.27          }
   27.28  
    28.1 --- a/xen/arch/x86/mm/p2m.c	Fri Mar 06 12:22:22 2009 +0900
    28.2 +++ b/xen/arch/x86/mm/p2m.c	Tue Mar 10 11:00:34 2009 +0900
    28.3 @@ -177,7 +177,7 @@ p2m_next_level(struct domain *d, mfn_t *
    28.4              return 0;
    28.5          page_list_add_tail(pg, &d->arch.p2m->pages);
    28.6          pg->u.inuse.type_info = type | 1 | PGT_validated;
    28.7 -        pg->count_info = 1;
    28.8 +        pg->count_info |= 1;
    28.9  
   28.10          new_entry = l1e_from_pfn(mfn_x(page_to_mfn(pg)),
   28.11                                   __PAGE_HYPERVISOR|_PAGE_USER);
   28.12 @@ -216,7 +216,7 @@ p2m_next_level(struct domain *d, mfn_t *
   28.13              return 0;
   28.14          page_list_add_tail(pg, &d->arch.p2m->pages);
   28.15          pg->u.inuse.type_info = PGT_l1_page_table | 1 | PGT_validated;
   28.16 -        pg->count_info = 1;
   28.17 +        pg->count_info |= 1;
   28.18          
   28.19          /* New splintered mappings inherit the flags of the old superpage, 
   28.20           * with a little reorganisation for the _PAGE_PSE_PAT bit. */
    29.1 --- a/xen/arch/x86/mm/shadow/common.c	Fri Mar 06 12:22:22 2009 +0900
    29.2 +++ b/xen/arch/x86/mm/shadow/common.c	Tue Mar 10 11:00:34 2009 +0900
    29.3 @@ -1677,7 +1677,7 @@ sh_alloc_p2m_pages(struct domain *d)
    29.4           * believed to be a concern.
    29.5           */
    29.6          page_set_owner(&pg[i], d);
    29.7 -        pg[i].count_info = 1;
    29.8 +        pg[i].count_info |= 1;
    29.9          page_list_add_tail(&pg[i], &d->arch.paging.shadow.p2m_freelist);
   29.10      }
   29.11      return 1;
   29.12 @@ -1721,7 +1721,7 @@ shadow_free_p2m_page(struct domain *d, s
   29.13          SHADOW_ERROR("Odd p2m page count c=%#lx t=%"PRtype_info"\n",
   29.14                       pg->count_info, pg->u.inuse.type_info);
   29.15      }
   29.16 -    pg->count_info = 0;
   29.17 +    pg->count_info &= ~PGC_count_mask;
   29.18      /* Free should not decrement domain's total allocation, since 
   29.19       * these pages were allocated without an owner. */
   29.20      page_set_owner(pg, NULL); 
   29.21 @@ -1895,7 +1895,7 @@ static void sh_hash_audit_bucket(struct 
   29.22      while ( sp )
   29.23      {
   29.24          /* Not a shadow? */
   29.25 -        BUG_ON( sp->count_info != 0 );
   29.26 +        BUG_ON( (sp->count_info & PGC_count_mask )!= 0 ) ;
   29.27          /* Bogus type? */
   29.28          BUG_ON( sp->u.sh.type == 0 );
   29.29          BUG_ON( sp->u.sh.type > SH_type_max_shadow );
    30.1 --- a/xen/arch/x86/mm/shadow/multi.c	Fri Mar 06 12:22:22 2009 +0900
    30.2 +++ b/xen/arch/x86/mm/shadow/multi.c	Tue Mar 10 11:00:34 2009 +0900
    30.3 @@ -4281,7 +4281,7 @@ int sh_rm_write_access_from_sl1p(struct 
    30.4  
    30.5      sp = mfn_to_page(smfn);
    30.6  
    30.7 -    if ( sp->count_info != 0
    30.8 +    if ( ((sp->count_info & PGC_count_mask) != 0)
    30.9           || (sp->u.sh.type != SH_type_l1_shadow
   30.10               && sp->u.sh.type != SH_type_fl1_shadow) )
   30.11          goto fail;
    31.1 --- a/xen/arch/x86/mm/shadow/private.h	Fri Mar 06 12:22:22 2009 +0900
    31.2 +++ b/xen/arch/x86/mm/shadow/private.h	Tue Mar 10 11:00:34 2009 +0900
    31.3 @@ -647,7 +647,7 @@ static inline void sh_put_ref(struct vcp
    31.4      struct page_info *sp = mfn_to_page(smfn);
    31.5  
    31.6      ASSERT(mfn_valid(smfn));
    31.7 -    ASSERT(sp->count_info == 0);
    31.8 +    ASSERT(!(sp->count_info & PGC_count_mask));
    31.9  
   31.10      /* If this is the entry in the up-pointer, remove it */
   31.11      if ( entry_pa != 0 
    32.1 --- a/xen/arch/x86/setup.c	Fri Mar 06 12:22:22 2009 +0900
    32.2 +++ b/xen/arch/x86/setup.c	Tue Mar 10 11:00:34 2009 +0900
    32.3 @@ -1111,15 +1111,43 @@ void arch_get_xen_caps(xen_capabilities_
    32.4  
    32.5  int xen_in_range(paddr_t start, paddr_t end)
    32.6  {
    32.7 -#if defined(CONFIG_X86_32)
    32.8 -    paddr_t xs = 0;
    32.9 -    paddr_t xe = xenheap_phys_end;
   32.10 -#else
   32.11 -    paddr_t xs = __pa(&_stext);
   32.12 -    paddr_t xe = __pa(&_etext);
   32.13 -#endif
   32.14 +    int i;
   32.15 +    static struct {
   32.16 +        paddr_t s, e;
   32.17 +    } xen_regions[5];
   32.18  
   32.19 -    return (start < xe) && (end > xs);
   32.20 +    /* initialize first time */
   32.21 +    if ( !xen_regions[0].s )
   32.22 +    {
   32.23 +        extern char __init_begin[], __per_cpu_start[], __per_cpu_end[],
   32.24 +                    __bss_start[];
   32.25 +        extern unsigned long allocator_bitmap_end;
   32.26 +
   32.27 +        /* S3 resume code (and other real mode trampoline code) */
   32.28 +        xen_regions[0].s = bootsym_phys(trampoline_start);
   32.29 +        xen_regions[0].e = bootsym_phys(trampoline_end);
   32.30 +        /* hypervisor code + data */
   32.31 +        xen_regions[1].s =__pa(&_stext);
   32.32 +        xen_regions[1].e = __pa(&__init_begin);
   32.33 +        /* per-cpu data */
   32.34 +        xen_regions[2].s = __pa(&__per_cpu_start);
   32.35 +        xen_regions[2].e = __pa(&__per_cpu_end);
   32.36 +        /* bss + boot allocator bitmap */
   32.37 +        xen_regions[3].s = __pa(&__bss_start);
   32.38 +        xen_regions[3].e = allocator_bitmap_end;
   32.39 +        /* frametable */
   32.40 +        xen_regions[4].s = (unsigned long)frame_table;
   32.41 +        xen_regions[4].e = (unsigned long)frame_table +
   32.42 +                           PFN_UP(max_page * sizeof(*frame_table));
   32.43 +    }
   32.44 +
   32.45 +    for ( i = 0; i < ARRAY_SIZE(xen_regions); i++ )
   32.46 +    {
   32.47 +        if ( (start < xen_regions[i].e) && (end > xen_regions[i].s) )
   32.48 +            return 1;
   32.49 +    }
   32.50 +
   32.51 +    return 0;
   32.52  }
   32.53  
   32.54  /*
    33.1 --- a/xen/arch/x86/tboot.c	Fri Mar 06 12:22:22 2009 +0900
    33.2 +++ b/xen/arch/x86/tboot.c	Tue Mar 10 11:00:34 2009 +0900
    33.3 @@ -450,7 +450,7 @@ int tboot_s3_resume(void)
    33.4  
    33.5      tboot_gen_domain_integrity(g_tboot_shared->s3_key, &mac);
    33.6      if ( mac != domain_mac )
    33.7 -        return 0; /* -3 */
    33.8 +        return -3;
    33.9  
   33.10      return 0;
   33.11  }
    34.1 --- a/xen/arch/x86/traps.c	Fri Mar 06 12:22:22 2009 +0900
    34.2 +++ b/xen/arch/x86/traps.c	Tue Mar 10 11:00:34 2009 +0900
    34.3 @@ -757,6 +757,7 @@ static void pv_cpuid(struct cpu_user_reg
    34.4          __clear_bit(X86_FEATURE_XTPR % 32, &c);
    34.5          __clear_bit(X86_FEATURE_PDCM % 32, &c);
    34.6          __clear_bit(X86_FEATURE_DCA % 32, &c);
    34.7 +        __clear_bit(X86_FEATURE_XSAVE % 32, &c);
    34.8          if ( !cpu_has_apic )
    34.9             __clear_bit(X86_FEATURE_X2APIC % 32, &c);
   34.10          __set_bit(X86_FEATURE_HYPERVISOR % 32, &c);
    35.1 --- a/xen/common/domctl.c	Fri Mar 06 12:22:22 2009 +0900
    35.2 +++ b/xen/common/domctl.c	Tue Mar 10 11:00:34 2009 +0900
    35.3 @@ -433,7 +433,7 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc
    35.4  
    35.5              cpu = (i == 0) ?
    35.6                  default_vcpu0_location() :
    35.7 -                (d->vcpu[i-1]->processor + 1) % num_online_cpus();
    35.8 +                cycle_cpu(d->vcpu[i-1]->processor, cpu_online_map);
    35.9  
   35.10              if ( alloc_vcpu(d, i, cpu) == NULL )
   35.11                  goto maxvcpu_out;
    36.1 --- a/xen/common/page_alloc.c	Fri Mar 06 12:22:22 2009 +0900
    36.2 +++ b/xen/common/page_alloc.c	Tue Mar 10 11:00:34 2009 +0900
    36.3 @@ -35,6 +35,7 @@
    36.4  #include <xen/perfc.h>
    36.5  #include <xen/numa.h>
    36.6  #include <xen/nodemask.h>
    36.7 +#include <public/sysctl.h>
    36.8  #include <asm/page.h>
    36.9  #include <asm/numa.h>
   36.10  #include <asm/flushtlb.h>
   36.11 @@ -74,6 +75,11 @@ static DEFINE_SPINLOCK(page_scrub_lock);
   36.12  PAGE_LIST_HEAD(page_scrub_list);
   36.13  static unsigned long scrub_pages;
   36.14  
   36.15 +/* Offlined page list, protected by heap_lock */
   36.16 +PAGE_LIST_HEAD(page_offlined_list);
   36.17 +
   36.18 +/* Broken page list, protected by heap_lock */
   36.19 +PAGE_LIST_HEAD(page_broken_list);
   36.20  /*********************
   36.21   * ALLOCATION BITMAP
   36.22   *  One bit per page of memory. Bit set => page is allocated.
   36.23 @@ -421,12 +427,92 @@ static struct page_info *alloc_heap_page
   36.24      return pg;
   36.25  }
   36.26  
   36.27 +/*
   36.28 + * Remove any offlined page in the buddy poined by head
   36.29 + */
   36.30 +static int reserve_offlined_page(struct page_info *head)
   36.31 +{
   36.32 +    unsigned int node = phys_to_nid(page_to_maddr(head));
   36.33 +    int zone = page_to_zone(head), i, head_order = PFN_ORDER(head), count = 0;
   36.34 +    struct page_info *cur_head;
   36.35 +    int cur_order;
   36.36 +
   36.37 +    ASSERT(spin_is_locked(&heap_lock));
   36.38 +
   36.39 +    cur_head = head;
   36.40 +
   36.41 +    page_list_del(head, &heap(node, zone, head_order));
   36.42 +
   36.43 +    while ( cur_head < (head + (1 << head_order)) )
   36.44 +    {
   36.45 +        struct page_info *pg;
   36.46 +        int next_order;
   36.47 +
   36.48 +        if (test_bit(_PGC_offlined, &cur_head->count_info))
   36.49 +        {
   36.50 +            cur_head++;
   36.51 +            continue;
   36.52 +        }
   36.53 +
   36.54 +        next_order = cur_order = 0;
   36.55 +
   36.56 +        while (cur_order < head_order)
   36.57 +        {
   36.58 +            next_order = cur_order + 1;
   36.59 +
   36.60 +            if ( (cur_head + (1 << next_order)) >= (head + ( 1 << head_order)))
   36.61 +                goto merge;
   36.62 +
   36.63 +            for (i = (1 << cur_order), pg = cur_head + (1 << cur_order);
   36.64 +              i < (1 << next_order);
   36.65 +              i++, pg ++)
   36.66 +                if (test_bit(_PGC_offlined, &pg->count_info))
   36.67 +                    break;
   36.68 +            if (i == ( 1 << next_order))
   36.69 +            {
   36.70 +                cur_order = next_order;
   36.71 +                continue;
   36.72 +            }
   36.73 +            else
   36.74 +            {
   36.75 +                /*
   36.76 +                 * We don't need considering merge outside the head_order
   36.77 +                 */
   36.78 +merge:
   36.79 +                page_list_add_tail(cur_head, &heap(node, zone, cur_order));
   36.80 +                PFN_ORDER(cur_head) = cur_order;
   36.81 +                cur_head += (1 << cur_order);
   36.82 +                break;
   36.83 +            }
   36.84 +        }
   36.85 +    }
   36.86 +
   36.87 +    for (cur_head = head; cur_head < head + ( 1UL << head_order); cur_head++)
   36.88 +    {
   36.89 +        if (!test_bit(_PGC_offlined, &cur_head->count_info))
   36.90 +            continue;
   36.91 +
   36.92 +        avail[node][zone] --;
   36.93 +
   36.94 +        map_alloc(page_to_mfn(cur_head), 1);
   36.95 +
   36.96 +        if (test_bit(_PGC_broken, &cur_head->count_info))
   36.97 +            page_list_add_tail(cur_head, &page_broken_list);
   36.98 +        else
   36.99 +            page_list_add_tail(cur_head, &page_offlined_list);
  36.100 +
  36.101 +        count ++;
  36.102 +    }
  36.103 +
  36.104 +    return count;
  36.105 +}
  36.106 +
  36.107  /* Free 2^@order set of pages. */
  36.108  static void free_heap_pages(
  36.109      struct page_info *pg, unsigned int order)
  36.110  {
  36.111      unsigned long mask;
  36.112 -    unsigned int i, node = phys_to_nid(page_to_maddr(pg));
  36.113 +    unsigned int i, node = phys_to_nid(page_to_maddr(pg)), tainted = 0;
  36.114      unsigned int zone = page_to_zone(pg);
  36.115  
  36.116      ASSERT(order <= MAX_ORDER);
  36.117 @@ -446,7 +532,14 @@ static void free_heap_pages(
  36.118           *     in its pseudophysical address space).
  36.119           * In all the above cases there can be no guest mappings of this page.
  36.120           */
  36.121 -        pg[i].count_info = 0;
  36.122 +        ASSERT(!(pg[i].count_info & PGC_offlined));
  36.123 +        pg[i].count_info &= PGC_offlining | PGC_broken;
  36.124 +        if (pg[i].count_info & PGC_offlining)
  36.125 +        {
  36.126 +            pg[i].count_info &= ~PGC_offlining;
  36.127 +            pg[i].count_info |= PGC_offlined;
  36.128 +            tainted = 1;
  36.129 +        }
  36.130  
  36.131          /* If a page has no owner it will need no safety TLB flush. */
  36.132          pg[i].u.free.need_tlbflush = (page_get_owner(&pg[i]) != NULL);
  36.133 @@ -481,7 +574,7 @@ static void free_heap_pages(
  36.134                  break;
  36.135              page_list_del(pg + mask, &heap(node, zone, order));
  36.136          }
  36.137 -        
  36.138 +
  36.139          order++;
  36.140  
  36.141          /* After merging, pg should remain in the same node. */
  36.142 @@ -491,9 +584,251 @@ static void free_heap_pages(
  36.143      PFN_ORDER(pg) = order;
  36.144      page_list_add_tail(pg, &heap(node, zone, order));
  36.145  
  36.146 +    if (tainted)
  36.147 +        reserve_offlined_page(pg);
  36.148 +
  36.149      spin_unlock(&heap_lock);
  36.150  }
  36.151  
  36.152 +
  36.153 +/*
  36.154 + * Following possible status for a page:
  36.155 + * free and Online; free and offlined; free and offlined and broken;
  36.156 + * assigned and online; assigned and offlining; assigned and offling and broken
  36.157 + *
  36.158 + * Following rules applied for page offline:
  36.159 + * Once a page is broken, it can't be assigned anymore
  36.160 + * A page will be offlined only if it is free
  36.161 + * return original count_info
  36.162 + *
  36.163 + */
  36.164 +static unsigned long mark_page_offline(struct page_info *pg, int broken)
  36.165 +{
  36.166 +    unsigned long nx, x, y = pg->count_info;
  36.167 +
  36.168 +    ASSERT(page_is_ram_type(page_to_mfn(pg), RAM_TYPE_CONVENTIONAL));
  36.169 +    /*
  36.170 +     * Caller gurantee the page will not be reassigned during this process
  36.171 +     */
  36.172 +    ASSERT(spin_is_locked(&heap_lock));
  36.173 +
  36.174 +    do {
  36.175 +        nx = x = y;
  36.176 +
  36.177 +        if ( ((x & PGC_offlined_broken) == PGC_offlined_broken) )
  36.178 +            return y;
  36.179 +        /* PGC_offlined means it is free pages */
  36.180 +        if (x & PGC_offlined)
  36.181 +        {
  36.182 +            if (broken && !(nx & PGC_broken))
  36.183 +                nx |= PGC_broken;
  36.184 +            else
  36.185 +                return y;
  36.186 +        }
  36.187 +        /* It is not offlined, not reserved page */
  36.188 +        else if ( allocated_in_map(page_to_mfn(pg)) )
  36.189 +            nx |= PGC_offlining;
  36.190 +        else
  36.191 +            nx |= PGC_offlined;
  36.192 +
  36.193 +        if (broken)
  36.194 +            nx |= PGC_broken;
  36.195 +    } while ( (y = cmpxchg(&pg->count_info, x, nx)) != x );
  36.196 +
  36.197 +    return y;
  36.198 +}
  36.199 +
  36.200 +static int reserve_heap_page(struct page_info *pg)
  36.201 +{
  36.202 +    struct page_info *head = NULL;
  36.203 +    unsigned int i, node = phys_to_nid(page_to_maddr(pg));
  36.204 +    unsigned int zone = page_to_zone(pg);
  36.205 +
  36.206 +    /* get the header */
  36.207 +    for ( i = 0; i <= MAX_ORDER; i++ )
  36.208 +    {
  36.209 +        struct page_info *tmp;
  36.210 +
  36.211 +        if ( page_list_empty(&heap(node, zone, i)) )
  36.212 +            continue;
  36.213 +
  36.214 +        page_list_for_each_safe(head, tmp, &heap(node, zone, i))
  36.215 +        {
  36.216 +            if ( (head <= pg) &&
  36.217 +                 (head + (1UL << i) > pg) )
  36.218 +                return reserve_offlined_page(head);
  36.219 +        }
  36.220 +    }
  36.221 +
  36.222 +    return -EINVAL;
  36.223 +
  36.224 +}
  36.225 +
  36.226 +/*
  36.227 + * offline one page
  36.228 + */
  36.229 +int offline_page(unsigned long mfn, int broken, uint32_t *status)
  36.230 +{
  36.231 +    unsigned long old_info = 0;
  36.232 +    struct domain *owner;
  36.233 +    int ret = 0;
  36.234 +    struct page_info *pg;
  36.235 +
  36.236 +    if (mfn > max_page)
  36.237 +    {
  36.238 +        dprintk(XENLOG_WARNING,
  36.239 +                "try to offline page out of range %lx\n", mfn);
  36.240 +        return -EINVAL;
  36.241 +    }
  36.242 +
  36.243 +    *status = 0;
  36.244 +    pg = mfn_to_page(mfn);
  36.245 +
  36.246 +
  36.247 +#if defined(__x86_64__)
  36.248 +     /* Xen's txt mfn in x86_64 is reserved in e820 */
  36.249 +    if ( is_xen_fixed_mfn(mfn) )
  36.250 +#elif defined(__i386__)
  36.251 +    if ( is_xen_heap_mfn(mfn) )
  36.252 +#endif
  36.253 +    {
  36.254 +        *status = PG_OFFLINE_XENPAGE | PG_OFFLINE_FAILED |
  36.255 +          (DOMID_XEN << PG_OFFLINE_OWNER_SHIFT);
  36.256 +        return -EPERM;
  36.257 +    }
  36.258 +
  36.259 +    /*
  36.260 +     * N.B. xen's txt in x86_64 is marked reserved and handled already
  36.261 +     *  Also kexec range is reserved
  36.262 +     */
  36.263 +     if (!page_is_ram_type(mfn, RAM_TYPE_CONVENTIONAL))
  36.264 +     {
  36.265 +        *status = PG_OFFLINE_FAILED | PG_OFFLINE_NOT_CONV_RAM;
  36.266 +        return -EINVAL;
  36.267 +     }
  36.268 +
  36.269 +    spin_lock(&heap_lock);
  36.270 +
  36.271 +    old_info = mark_page_offline(pg, broken);
  36.272 +
  36.273 +    if ( !allocated_in_map(mfn) )
  36.274 +    {
  36.275 +        /* Free pages are reserve directly */
  36.276 +        reserve_heap_page(pg);
  36.277 +        *status = PG_OFFLINE_OFFLINED;
  36.278 +    }
  36.279 +    else if (test_bit(_PGC_offlined, &pg->count_info))
  36.280 +    {
  36.281 +        *status = PG_OFFLINE_OFFLINED;
  36.282 +    }
  36.283 +    else if ((owner = page_get_owner_and_reference(pg)))
  36.284 +    {
  36.285 +            *status = PG_OFFLINE_OWNED | PG_OFFLINE_PENDING |
  36.286 +              (owner->domain_id << PG_OFFLINE_OWNER_SHIFT);
  36.287 +            /* Release the reference since it will not be allocated anymore */
  36.288 +            put_page(pg);
  36.289 +    }
  36.290 +    else if ( old_info & PGC_xen_heap)
  36.291 +    {
  36.292 +        *status = PG_OFFLINE_XENPAGE | PG_OFFLINE_PENDING |
  36.293 +          (DOMID_XEN << PG_OFFLINE_OWNER_SHIFT);
  36.294 +    }
  36.295 +    else
  36.296 +    {
  36.297 +        /*
  36.298 +         * assign_pages does not hold heap_lock, so small window that the owner
  36.299 +         * may be set later, but please notice owner will only change from
  36.300 +         * NULL to be set, not verse, since page is offlining now.
  36.301 +         * No windows If called from #MC handler, since all CPU are in softirq
  36.302 +         * If called from user space like CE handling, tools can wait some time
  36.303 +         * before call again.
  36.304 +         */
  36.305 +        *status = PG_OFFLINE_ANONYMOUS | PG_OFFLINE_FAILED |
  36.306 +                  (DOMID_INVALID << PG_OFFLINE_OWNER_SHIFT );
  36.307 +    }
  36.308 +
  36.309 +    if (broken)
  36.310 +        *status |= PG_OFFLINE_BROKEN;
  36.311 +
  36.312 +    spin_unlock(&heap_lock);
  36.313 +
  36.314 +    return ret;
  36.315 +}
  36.316 +
  36.317 +/*
  36.318 + * Online the memory.
  36.319 + *   The caller should make sure end_pfn <= max_page,
  36.320 + *   if not, expand_pages() should be called prior to online_page().
  36.321 + */
  36.322 +unsigned int online_page(unsigned long mfn, uint32_t *status)
  36.323 +{
  36.324 +    struct page_info *pg;
  36.325 +    int ret = 0, free = 0;
  36.326 +
  36.327 +    if ( mfn > max_page )
  36.328 +    {
  36.329 +        dprintk(XENLOG_WARNING, "call expand_pages() first\n");
  36.330 +        return -EINVAL;
  36.331 +    }
  36.332 +
  36.333 +    pg = mfn_to_page(mfn);
  36.334 +
  36.335 +    *status = 0;
  36.336 +
  36.337 +    spin_lock(&heap_lock);
  36.338 +
  36.339 +    if ( unlikely(is_page_broken(pg)) )
  36.340 +    {
  36.341 +        ret = -EINVAL;
  36.342 +        *status = PG_ONLINE_FAILED |PG_ONLINE_BROKEN;
  36.343 +    }
  36.344 +    else if (pg->count_info & PGC_offlined)
  36.345 +    {
  36.346 +        clear_bit(_PGC_offlined, &pg->count_info);
  36.347 +        page_list_del(pg, &page_offlined_list);
  36.348 +        *status = PG_ONLINE_ONLINED;
  36.349 +        free = 1;
  36.350 +    }
  36.351 +    else if (pg->count_info & PGC_offlining)
  36.352 +    {
  36.353 +        clear_bit(_PGC_offlining, &pg->count_info);
  36.354 +        *status = PG_ONLINE_ONLINED;
  36.355 +    }
  36.356 +    spin_unlock(&heap_lock);
  36.357 +
  36.358 +    if (free)
  36.359 +        free_heap_pages(pg, 0);
  36.360 +
  36.361 +    return ret;
  36.362 +}
  36.363 +
  36.364 +int query_page_offline(unsigned long mfn, uint32_t *status)
  36.365 +{
  36.366 +    struct page_info *pg;
  36.367 +
  36.368 +    if ( (mfn > max_page) || !page_is_ram_type(mfn, RAM_TYPE_CONVENTIONAL) )
  36.369 +    {
  36.370 +        dprintk(XENLOG_WARNING, "call expand_pages() first\n");
  36.371 +        return -EINVAL;
  36.372 +    }
  36.373 +
  36.374 +    *status = 0;
  36.375 +    spin_lock(&heap_lock);
  36.376 +
  36.377 +    pg = mfn_to_page(mfn);
  36.378 +
  36.379 +    if (pg->count_info & PGC_offlining)
  36.380 +        *status |= PG_OFFLINE_STATUS_OFFLINE_PENDING;
  36.381 +    if (pg->count_info & PGC_broken)
  36.382 +        *status |= PG_OFFLINE_STATUS_BROKEN;
  36.383 +    if (pg->count_info & PGC_offlined)
  36.384 +        *status |= PG_OFFLINE_STATUS_OFFLINED;
  36.385 +
  36.386 +    spin_unlock(&heap_lock);
  36.387 +
  36.388 +    return 0;
  36.389 +}
  36.390 +
  36.391  /*
  36.392   * Hand the specified arbitrary page range to the specified heap zone
  36.393   * checking the node_id of the previous page.  If they differ and the
    37.1 --- a/xen/common/sched_credit.c	Fri Mar 06 12:22:22 2009 +0900
    37.2 +++ b/xen/common/sched_credit.c	Tue Mar 10 11:00:34 2009 +0900
    37.3 @@ -25,12 +25,14 @@
    37.4  /*
    37.5   * CSCHED_STATS
    37.6   *
    37.7 - * Manage very basic counters and stats.
    37.8 + * Manage very basic per-vCPU counters and stats.
    37.9   *
   37.10   * Useful for debugging live systems. The stats are displayed
   37.11   * with runq dumps ('r' on the Xen console).
   37.12   */
   37.13 +#ifdef PERF_COUNTERS
   37.14  #define CSCHED_STATS
   37.15 +#endif
   37.16  
   37.17  
   37.18  /*
   37.19 @@ -77,85 +79,9 @@
   37.20  /*
   37.21   * Stats
   37.22   */
   37.23 -#ifdef CSCHED_STATS
   37.24 -
   37.25 -#define CSCHED_STAT(_X)         (csched_priv.stats._X)
   37.26 -#define CSCHED_STAT_DEFINE(_X)  uint32_t _X;
   37.27 -#define CSCHED_STAT_PRINTK(_X)                                  \
   37.28 -    do                                                          \
   37.29 -    {                                                           \
   37.30 -        printk("\t%-30s = %u\n", #_X, CSCHED_STAT(_X));  \
   37.31 -    } while ( 0 );
   37.32 +#define CSCHED_STAT_CRANK(_X)               (perfc_incr(_X))
   37.33  
   37.34 -/*
   37.35 - * Try and keep often cranked stats on top so they'll fit on one
   37.36 - * cache line.
   37.37 - */
   37.38 -#define CSCHED_STATS_EXPAND_SCHED(_MACRO)   \
   37.39 -    _MACRO(schedule)                        \
   37.40 -    _MACRO(acct_run)                        \
   37.41 -    _MACRO(acct_no_work)                    \
   37.42 -    _MACRO(acct_balance)                    \
   37.43 -    _MACRO(acct_reorder)                    \
   37.44 -    _MACRO(acct_min_credit)                 \
   37.45 -    _MACRO(acct_vcpu_active)                \
   37.46 -    _MACRO(acct_vcpu_idle)                  \
   37.47 -    _MACRO(vcpu_sleep)                      \
   37.48 -    _MACRO(vcpu_wake_running)               \
   37.49 -    _MACRO(vcpu_wake_onrunq)                \
   37.50 -    _MACRO(vcpu_wake_runnable)              \
   37.51 -    _MACRO(vcpu_wake_not_runnable)          \
   37.52 -    _MACRO(vcpu_park)                       \
   37.53 -    _MACRO(vcpu_unpark)                     \
   37.54 -    _MACRO(tickle_local_idler)              \
   37.55 -    _MACRO(tickle_local_over)               \
   37.56 -    _MACRO(tickle_local_under)              \
   37.57 -    _MACRO(tickle_local_other)              \
   37.58 -    _MACRO(tickle_idlers_none)              \
   37.59 -    _MACRO(tickle_idlers_some)              \
   37.60 -    _MACRO(load_balance_idle)               \
   37.61 -    _MACRO(load_balance_over)               \
   37.62 -    _MACRO(load_balance_other)              \
   37.63 -    _MACRO(steal_trylock_failed)            \
   37.64 -    _MACRO(steal_peer_idle)                 \
   37.65 -    _MACRO(migrate_queued)                  \
   37.66 -    _MACRO(migrate_running)                 \
   37.67 -    _MACRO(dom_init)                        \
   37.68 -    _MACRO(dom_destroy)                     \
   37.69 -    _MACRO(vcpu_init)                       \
   37.70 -    _MACRO(vcpu_destroy)
   37.71 -
   37.72 -#ifndef NDEBUG
   37.73 -#define CSCHED_STATS_EXPAND_CHECKS(_MACRO)  \
   37.74 -    _MACRO(vcpu_check)
   37.75 -#else
   37.76 -#define CSCHED_STATS_EXPAND_CHECKS(_MACRO)
   37.77 -#endif
   37.78 -
   37.79 -#define CSCHED_STATS_EXPAND(_MACRO)         \
   37.80 -    CSCHED_STATS_EXPAND_CHECKS(_MACRO)      \
   37.81 -    CSCHED_STATS_EXPAND_SCHED(_MACRO)
   37.82 -
   37.83 -#define CSCHED_STATS_RESET()                                        \
   37.84 -    do                                                              \
   37.85 -    {                                                               \
   37.86 -        memset(&csched_priv.stats, 0, sizeof(csched_priv.stats));   \
   37.87 -    } while ( 0 )
   37.88 -
   37.89 -#define CSCHED_STATS_DEFINE()                   \
   37.90 -    struct                                      \
   37.91 -    {                                           \
   37.92 -        CSCHED_STATS_EXPAND(CSCHED_STAT_DEFINE) \
   37.93 -    } stats;
   37.94 -
   37.95 -#define CSCHED_STATS_PRINTK()                   \
   37.96 -    do                                          \
   37.97 -    {                                           \
   37.98 -        printk("stats:\n");                     \
   37.99 -        CSCHED_STATS_EXPAND(CSCHED_STAT_PRINTK) \
  37.100 -    } while ( 0 )
  37.101 -
  37.102 -#define CSCHED_STAT_CRANK(_X)               (CSCHED_STAT(_X)++)
  37.103 +#ifdef CSCHED_STATS
  37.104  
  37.105  #define CSCHED_VCPU_STATS_RESET(_V)                     \
  37.106      do                                                  \
  37.107 @@ -169,10 +95,6 @@
  37.108  
  37.109  #else /* CSCHED_STATS */
  37.110  
  37.111 -#define CSCHED_STATS_RESET()                do {} while ( 0 )
  37.112 -#define CSCHED_STATS_DEFINE()
  37.113 -#define CSCHED_STATS_PRINTK()               do {} while ( 0 )
  37.114 -#define CSCHED_STAT_CRANK(_X)               do {} while ( 0 )
  37.115  #define CSCHED_VCPU_STATS_RESET(_V)         do {} while ( 0 )
  37.116  #define CSCHED_VCPU_STAT_CRANK(_V, _X)      do {} while ( 0 )
  37.117  #define CSCHED_VCPU_STAT_SET(_V, _X, _Y)    do {} while ( 0 )
  37.118 @@ -238,7 +160,6 @@ struct csched_private {
  37.119      uint32_t credit;
  37.120      int credit_balance;
  37.121      uint32_t runq_sort;
  37.122 -    CSCHED_STATS_DEFINE()
  37.123  };
  37.124  
  37.125  
  37.126 @@ -250,15 +171,6 @@ static struct csched_private csched_priv
  37.127  static void csched_tick(void *_cpu);
  37.128  
  37.129  static inline int
  37.130 -__cycle_cpu(int cpu, const cpumask_t *mask)
  37.131 -{
  37.132 -    int nxt = next_cpu(cpu, *mask);
  37.133 -    if (nxt == NR_CPUS)
  37.134 -        nxt = first_cpu(*mask);
  37.135 -    return nxt;
  37.136 -}
  37.137 -
  37.138 -static inline int
  37.139  __vcpu_on_runq(struct csched_vcpu *svc)
  37.140  {
  37.141      return !list_empty(&svc->runq_elem);
  37.142 @@ -404,14 +316,37 @@ static inline void
  37.143  #define CSCHED_VCPU_CHECK(_vc)
  37.144  #endif
  37.145  
  37.146 +/*
  37.147 + * Delay, in microseconds, between migrations of a VCPU between PCPUs.
  37.148 + * This prevents rapid fluttering of a VCPU between CPUs, and reduces the
  37.149 + * implicit overheads such as cache-warming. 1ms (1000) has been measured
  37.150 + * as a good value.
  37.151 + */
  37.152 +static unsigned int vcpu_migration_delay;
  37.153 +integer_param("vcpu_migration_delay", vcpu_migration_delay);
  37.154 +
  37.155 +static inline int
  37.156 +__csched_vcpu_is_cache_hot(struct vcpu *v)
  37.157 +{
  37.158 +    int hot = ((NOW() - v->runstate.state_entry_time) <
  37.159 +               ((uint64_t)vcpu_migration_delay * 1000u));
  37.160 +
  37.161 +    if ( hot )
  37.162 +        CSCHED_STAT_CRANK(vcpu_hot);
  37.163 +
  37.164 +    return hot;
  37.165 +}
  37.166 +
  37.167  static inline int
  37.168  __csched_vcpu_is_migrateable(struct vcpu *vc, int dest_cpu)
  37.169  {
  37.170      /*
  37.171 -     * Don't pick up work that's in the peer's scheduling tail. Also only pick
  37.172 -     * up work that's allowed to run on our CPU.
  37.173 +     * Don't pick up work that's in the peer's scheduling tail or hot on
  37.174 +     * peer PCPU. Only pick up work that's allowed to run on our CPU.
  37.175       */
  37.176 -    return !vc->is_running && cpu_isset(dest_cpu, vc->cpu_affinity);
  37.177 +    return !vc->is_running &&
  37.178 +           !__csched_vcpu_is_cache_hot(vc) &&
  37.179 +           cpu_isset(dest_cpu, vc->cpu_affinity);
  37.180  }
  37.181  
  37.182  static int
  37.183 @@ -428,7 +363,7 @@ csched_cpu_pick(struct vcpu *vc)
  37.184      cpus_and(cpus, cpu_online_map, vc->cpu_affinity);
  37.185      cpu = cpu_isset(vc->processor, cpus)
  37.186              ? vc->processor
  37.187 -            : __cycle_cpu(vc->processor, &cpus);
  37.188 +            : cycle_cpu(vc->processor, cpus);
  37.189      ASSERT( !cpus_empty(cpus) && cpu_isset(cpu, cpus) );
  37.190  
  37.191      /*
  37.192 @@ -454,7 +389,7 @@ csched_cpu_pick(struct vcpu *vc)
  37.193          cpumask_t nxt_idlers;
  37.194          int nxt;
  37.195  
  37.196 -        nxt = __cycle_cpu(cpu, &cpus);
  37.197 +        nxt = cycle_cpu(cpu, cpus);
  37.198  
  37.199          if ( cpu_isset(cpu, cpu_core_map[nxt]) )
  37.200          {
  37.201 @@ -1128,7 +1063,7 @@ csched_load_balance(int cpu, struct csch
  37.202  
  37.203      while ( !cpus_empty(workers) )
  37.204      {
  37.205 -        peer_cpu = __cycle_cpu(peer_cpu, &workers);
  37.206 +        peer_cpu = cycle_cpu(peer_cpu, workers);
  37.207          cpu_clear(peer_cpu, workers);
  37.208  
  37.209          /*
  37.210 @@ -1306,7 +1241,8 @@ csched_dump(void)
  37.211             "\tmsecs per tick     = %dms\n"
  37.212             "\tcredits per tick   = %d\n"
  37.213             "\tticks per tslice   = %d\n"
  37.214 -           "\tticks per acct     = %d\n",
  37.215 +           "\tticks per acct     = %d\n"
  37.216 +           "\tmigration delay    = %uus\n",
  37.217             csched_priv.ncpus,
  37.218             csched_priv.master,
  37.219             csched_priv.credit,
  37.220 @@ -1317,13 +1253,12 @@ csched_dump(void)
  37.221             CSCHED_MSECS_PER_TICK,
  37.222             CSCHED_CREDITS_PER_TICK,
  37.223             CSCHED_TICKS_PER_TSLICE,
  37.224 -           CSCHED_TICKS_PER_ACCT);
  37.225 +           CSCHED_TICKS_PER_ACCT,
  37.226 +           vcpu_migration_delay);
  37.227  
  37.228      cpumask_scnprintf(idlers_buf, sizeof(idlers_buf), csched_priv.idlers);
  37.229      printk("idlers: %s\n", idlers_buf);
  37.230  
  37.231 -    CSCHED_STATS_PRINTK();
  37.232 -
  37.233      printk("active vcpus:\n");
  37.234      loop = 0;
  37.235      list_for_each( iter_sdom, &csched_priv.active_sdom )
  37.236 @@ -1354,7 +1289,6 @@ csched_init(void)
  37.237      csched_priv.credit = 0U;
  37.238      csched_priv.credit_balance = 0;
  37.239      csched_priv.runq_sort = 0U;
  37.240 -    CSCHED_STATS_RESET();
  37.241  }
  37.242  
  37.243  /* Tickers cannot be kicked until SMP subsystem is alive. */
    38.1 --- a/xen/common/schedule.c	Fri Mar 06 12:22:22 2009 +0900
    38.2 +++ b/xen/common/schedule.c	Tue Mar 10 11:00:34 2009 +0900
    38.3 @@ -81,6 +81,20 @@ static inline void trace_runstate_change
    38.4      __trace_var(event, 1/*tsc*/, sizeof(d), (unsigned char *)&d);
    38.5  }
    38.6  
    38.7 +static inline void trace_continue_running(struct vcpu *v)
    38.8 +{
    38.9 +    struct { uint32_t vcpu:16, domain:16; } d;
   38.10 +
   38.11 +    if ( likely(!tb_init_done) )
   38.12 +        return;
   38.13 +
   38.14 +    d.vcpu = v->vcpu_id;
   38.15 +    d.domain = v->domain->domain_id;
   38.16 +
   38.17 +    __trace_var(TRC_SCHED_CONTINUE_RUNNING, 1/*tsc*/, sizeof(d),
   38.18 +                (unsigned char *)&d);
   38.19 +}
   38.20 +
   38.21  static inline void vcpu_runstate_change(
   38.22      struct vcpu *v, int new_state, s_time_t new_entry_time)
   38.23  {
   38.24 @@ -803,6 +817,7 @@ static void schedule(void)
   38.25      if ( unlikely(prev == next) )
   38.26      {
   38.27          spin_unlock_irq(&sd->schedule_lock);
   38.28 +        trace_continue_running(next);
   38.29          return continue_running(prev);
   38.30      }
   38.31  
    39.1 --- a/xen/common/sysctl.c	Fri Mar 06 12:22:22 2009 +0900
    39.2 +++ b/xen/common/sysctl.c	Tue Mar 10 11:00:34 2009 +0900
    39.3 @@ -233,6 +233,61 @@ long do_sysctl(XEN_GUEST_HANDLE(xen_sysc
    39.4      }
    39.5      break;
    39.6  
    39.7 +    case XEN_SYSCTL_page_offline_op:
    39.8 +    {
    39.9 +        uint32_t *status, *ptr;
   39.10 +        unsigned long pfn;
   39.11 +
   39.12 +        ptr = status = xmalloc_bytes( sizeof(uint32_t) *
   39.13 +                                (op->u.page_offline.end -
   39.14 +                                  op->u.page_offline.start + 1));
   39.15 +        if (!status)
   39.16 +        {
   39.17 +            dprintk(XENLOG_WARNING, "Out of memory for page offline op\n");
   39.18 +            ret = -ENOMEM;
   39.19 +            break;
   39.20 +        }
   39.21 +
   39.22 +        memset(status, PG_OFFLINE_INVALID, sizeof(uint32_t) *
   39.23 +                      (op->u.page_offline.end - op->u.page_offline.start + 1));
   39.24 +
   39.25 +        for ( pfn = op->u.page_offline.start;
   39.26 +              pfn <= op->u.page_offline.end;
   39.27 +              pfn ++ )
   39.28 +        {
   39.29 +            switch (op->u.page_offline.cmd)
   39.30 +            {
   39.31 +                /* Shall revert her if failed, or leave caller do it? */
   39.32 +                case sysctl_page_offline:
   39.33 +                    ret = offline_page(pfn, 0, ptr++);
   39.34 +                    break;
   39.35 +                case sysctl_page_online:
   39.36 +                    ret = online_page(pfn, ptr++);
   39.37 +                    break;
   39.38 +                case sysctl_query_page_offline:
   39.39 +                    ret = query_page_offline(pfn, ptr++);
   39.40 +                    break;
   39.41 +                default:
   39.42 +                    gdprintk(XENLOG_WARNING, "invalid page offline op %x\n",
   39.43 +                            op->u.page_offline.cmd);
   39.44 +                    ret = -EINVAL;
   39.45 +                    break;
   39.46 +            }
   39.47 +
   39.48 +            if (ret)
   39.49 +                break;
   39.50 +        }
   39.51 +
   39.52 +        if (copy_to_guest(op->u.page_offline.status, status,
   39.53 +                          op->u.page_offline.end - op->u.page_offline.start + 1))
   39.54 +        {
   39.55 +            ret = -EFAULT;
   39.56 +            break;
   39.57 +        }
   39.58 +        xfree(status);
   39.59 +    }
   39.60 +    break;
   39.61 +
   39.62      default:
   39.63          ret = arch_do_sysctl(op, u_sysctl);
   39.64          break;
    40.1 --- a/xen/drivers/char/console.c	Fri Mar 06 12:22:22 2009 +0900
    40.2 +++ b/xen/drivers/char/console.c	Tue Mar 10 11:00:34 2009 +0900
    40.3 @@ -315,6 +315,12 @@ static void serial_rx(char c, struct cpu
    40.4      __serial_rx(c, regs);
    40.5  }
    40.6  
    40.7 +static void notify_dom0_con_ring(unsigned long unused)
    40.8 +{
    40.9 +    send_guest_global_virq(dom0, VIRQ_CON_RING);
   40.10 +}
   40.11 +static DECLARE_TASKLET(notify_dom0_con_ring_tasklet, notify_dom0_con_ring, 0);
   40.12 +
   40.13  static long guest_console_write(XEN_GUEST_HANDLE(char) buffer, int count)
   40.14  {
   40.15      char kbuf[128], *kptr;
   40.16 @@ -348,7 +354,7 @@ static long guest_console_write(XEN_GUES
   40.17          {
   40.18              for ( kptr = kbuf; *kptr != '\0'; kptr++ )
   40.19                  putchar_console_ring(*kptr);
   40.20 -            send_guest_global_virq(dom0, VIRQ_CON_RING);
   40.21 +            tasklet_schedule(&notify_dom0_con_ring_tasklet);
   40.22          }
   40.23  
   40.24          spin_unlock_irq(&console_lock);
   40.25 @@ -414,6 +420,8 @@ long do_console_io(int cmd, int count, X
   40.26   * *****************************************************
   40.27   */
   40.28  
   40.29 +static bool_t console_locks_busted;
   40.30 +
   40.31  static void __putstr(const char *str)
   40.32  {
   40.33      int c;
   40.34 @@ -423,10 +431,12 @@ static void __putstr(const char *str)
   40.35      sercon_puts(str);
   40.36      vga_puts(str);
   40.37  
   40.38 -    while ( (c = *str++) != '\0' )
   40.39 -        putchar_console_ring(c);
   40.40 -
   40.41 -    send_guest_global_virq(dom0, VIRQ_CON_RING);
   40.42 +    if ( !console_locks_busted )
   40.43 +    {
   40.44 +        while ( (c = *str++) != '\0' )
   40.45 +            putchar_console_ring(c);
   40.46 +        tasklet_schedule(&notify_dom0_con_ring_tasklet);
   40.47 +    }
   40.48  }
   40.49  
   40.50  static int printk_prefix_check(char *p, char **pp)
   40.51 @@ -659,6 +669,7 @@ void console_force_unlock(void)
   40.52  {
   40.53      spin_lock_init(&console_lock);
   40.54      serial_force_unlock(sercon_handle);
   40.55 +    console_locks_busted = 1;
   40.56      console_start_sync();
   40.57  }
   40.58  
    41.1 --- a/xen/drivers/passthrough/vtd/x86/vtd.c	Fri Mar 06 12:22:22 2009 +0900
    41.2 +++ b/xen/drivers/passthrough/vtd/x86/vtd.c	Tue Mar 10 11:00:34 2009 +0900
    41.3 @@ -153,12 +153,13 @@ void hvm_dpci_isairq_eoi(struct domain *
    41.4  
    41.5  void iommu_set_dom0_mapping(struct domain *d)
    41.6  {
    41.7 -    u64 i, j, tmp;
    41.8 -    unsigned long max_pfn = max(max_page, 0x100000000ul >> PAGE_SHIFT);
    41.9 +    u64 i, j, tmp, max_pfn;
   41.10      extern int xen_in_range(paddr_t start, paddr_t end);
   41.11  
   41.12      BUG_ON(d->domain_id != 0);
   41.13  
   41.14 +    max_pfn = max_t(u64, max_page, 0x100000000ull >> PAGE_SHIFT);
   41.15 +
   41.16      for ( i = 0; i < max_pfn; i++ )
   41.17      {
   41.18          /*
    42.1 --- a/xen/include/asm-ia64/mm.h	Fri Mar 06 12:22:22 2009 +0900
    42.2 +++ b/xen/include/asm-ia64/mm.h	Tue Mar 10 11:00:34 2009 +0900
    42.3 @@ -149,13 +149,34 @@ page_list_splice_init(struct page_list_h
    42.4  # define PGC_xen_heap     PG_mask(1, 2)
    42.5   /* bit PG_shift(3) reserved. See asm-x86/mm.h */
    42.6   /* PG_mask(7, 6) reserved. See asm-x86/mm.h*/
    42.7 +
    42.8 + /* Page is broken? */
    42.9 +#define _PGC_broken       PG_shift(7)
   42.10 +#define PGC_broken        PG_mask(1, 7)
   42.11 + /* Page is offline pending ? */
   42.12 +#define _PGC_offlining    PG_shift(8)
   42.13 +#define PGC_offlining     PG_mask(1, 8)
   42.14 + /* Page is offlined */
   42.15 +#define _PGC_offlined     PG_shift(9)
   42.16 +#define PGC_offlined      PG_mask(1, 9)
   42.17 +#define PGC_offlined_broken (PGC_offlined | PGC_broken)
   42.18 +
   42.19 +#define is_page_offlining(page) ((page)->count_info & PGC_offlining)
   42.20 +#define is_page_offlined(page)  ((page)->count_info & PGC_offlined)
   42.21 +#define is_page_broken(page)    ((page)->count_info & PGC_broken)
   42.22 +#define is_page_online(page)    (!is_page_offlined(page))
   42.23 +
   42.24   /* Count of references to this frame. */
   42.25 -#define PGC_count_width   PG_shift(6)
   42.26 +#define PGC_count_width   PG_shift(9)
   42.27  #define PGC_count_mask    ((1UL<<PGC_count_width)-1)
   42.28  
   42.29 +extern unsigned long xen_fixed_mfn_start;
   42.30 +extern unsigned long xen_fixed_mfn_end;
   42.31  #define is_xen_heap_page(page)  ((page)->count_info & PGC_xen_heap)
   42.32  #define is_xen_heap_mfn(mfn)    (mfn_valid(mfn) &&                      \
   42.33                                   is_xen_heap_page(mfn_to_page(mfn)))
   42.34 +#define is_xen_fixed_mfn(mfn)                                           \
   42.35 +    (xen_fixed_mfn_start <= (mfn) && (mfn) <= xen_fixed_mfn_end)
   42.36  
   42.37  #ifdef CONFIG_IA64_PICKLE_DOMAIN
   42.38  #define page_get_owner(_p)                                              \
    43.1 --- a/xen/include/asm-x86/cpufeature.h	Fri Mar 06 12:22:22 2009 +0900
    43.2 +++ b/xen/include/asm-x86/cpufeature.h	Tue Mar 10 11:00:34 2009 +0900
    43.3 @@ -95,6 +95,7 @@
    43.4  #define X86_FEATURE_SSE4_2	(4*32+20) /* Streaming SIMD Extensions 4.2 */
    43.5  #define X86_FEATURE_X2APIC	(4*32+21) /* Extended xAPIC */
    43.6  #define X86_FEATURE_POPCNT	(4*32+23) /* POPCNT instruction */
    43.7 +#define X86_FEATURE_XSAVE	(4*32+26) /* XSAVE/XRSTOR/XSETBV/XGETBV */
    43.8  #define X86_FEATURE_HYPERVISOR	(4*32+31) /* Running under some hypervisor */
    43.9  
   43.10  /* VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001, word 5 */
    44.1 --- a/xen/include/asm-x86/mm.h	Fri Mar 06 12:22:22 2009 +0900
    44.2 +++ b/xen/include/asm-x86/mm.h	Tue Mar 10 11:00:34 2009 +0900
    44.3 @@ -198,8 +198,25 @@ struct page_info
    44.4   /* 3-bit PAT/PCD/PWT cache-attribute hint. */
    44.5  #define PGC_cacheattr_base PG_shift(6)
    44.6  #define PGC_cacheattr_mask PG_mask(7, 6)
    44.7 +
    44.8 +  /* Page is broken? */
    44.9 + #define _PGC_broken         PG_shift(7)
   44.10 + #define PGC_broken          PG_mask(1, 7)
   44.11 +  /* Page is offline pending ? */
   44.12 + #define _PGC_offlining      PG_shift(8)
   44.13 + #define PGC_offlining       PG_mask(1, 8)
   44.14 +  /* Page is offlined */
   44.15 + #define _PGC_offlined       PG_shift(9)
   44.16 + #define PGC_offlined        PG_mask(1, 9)
   44.17 + #define PGC_offlined_broken (PGC_offlined | PGC_broken)
   44.18 +
   44.19 + #define is_page_offlining(page)          ((page)->count_info & PGC_offlining)
   44.20 + #define is_page_offlined(page)          ((page)->count_info & PGC_offlined)
   44.21 + #define is_page_broken(page)           ((page)->count_info & PGC_broken)
   44.22 + #define is_page_online(page)           (!is_page_offlined(page))
   44.23 +
   44.24   /* Count of references to this frame. */
   44.25 -#define PGC_count_width   PG_shift(6)
   44.26 +#define PGC_count_width   PG_shift(9)
   44.27  #define PGC_count_mask    ((1UL<<PGC_count_width)-1)
   44.28  
   44.29  #if defined(__i386__)
   44.30 @@ -209,9 +226,13 @@ struct page_info
   44.31      (_mfn < paddr_to_pfn(xenheap_phys_end));            \
   44.32  })
   44.33  #else
   44.34 +extern unsigned long allocator_bitmap_end;
   44.35  #define is_xen_heap_page(page) ((page)->count_info & PGC_xen_heap)
   44.36  #define is_xen_heap_mfn(mfn) \
   44.37      (__mfn_valid(mfn) && is_xen_heap_page(__mfn_to_page(mfn)))
   44.38 +#define is_xen_fixed_mfn(mfn) \
   44.39 +    ( (mfn << PAGE_SHIFT) >= __pa(&_start) &&    \
   44.40 +          (mfn << PAGE_SHIFT) <= allocator_bitmap_end )
   44.41  #endif
   44.42  
   44.43  #if defined(__i386__)
    45.1 --- a/xen/include/public/sysctl.h	Fri Mar 06 12:22:22 2009 +0900
    45.2 +++ b/xen/include/public/sysctl.h	Tue Mar 10 11:00:34 2009 +0900
    45.3 @@ -359,6 +359,54 @@ struct xen_sysctl_pm_op {
    45.4      };
    45.5  };
    45.6  
    45.7 +#define XEN_SYSCTL_page_offline_op        14
    45.8 +struct xen_sysctl_page_offline_op {
    45.9 +    /* IN: range of page to be offlined */
   45.10 +#define sysctl_page_offline     1
   45.11 +#define sysctl_page_online      2
   45.12 +#define sysctl_query_page_offline  3
   45.13 +    uint32_t cmd;
   45.14 +    uint32_t start;
   45.15 +    uint32_t end;
   45.16 +    /* OUT: result of page offline request */
   45.17 +    /*
   45.18 +     * bit 0~15: result flags
   45.19 +     * bit 16~31: owner
   45.20 +     */
   45.21 +    XEN_GUEST_HANDLE(uint32) status;
   45.22 +};
   45.23 +
   45.24 +#define PG_OFFLINE_STATUS_MASK    (0xFFUL)
   45.25 +
   45.26 +/* The result is invalid, i.e. HV does not handle it */
   45.27 +#define PG_OFFLINE_INVALID   (0x1UL << 0)
   45.28 +
   45.29 +#define PG_OFFLINE_OFFLINED  (0x1UL << 1)
   45.30 +#define PG_OFFLINE_PENDING   (0x1UL << 2)
   45.31 +#define PG_OFFLINE_FAILED    (0x1UL << 3)
   45.32 +
   45.33 +#define PG_ONLINE_FAILED     PG_OFFLINE_FAILED
   45.34 +#define PG_ONLINE_ONLINED    PG_OFFLINE_OFFLINED
   45.35 +
   45.36 +#define PG_OFFLINE_STATUS_OFFLINED              (0x1UL << 1)
   45.37 +#define PG_OFFLINE_STATUS_ONLINE                (0x1UL << 2)
   45.38 +#define PG_OFFLINE_STATUS_OFFLINE_PENDING       (0x1UL << 3)
   45.39 +#define PG_OFFLINE_STATUS_BROKEN                (0x1UL << 4)
   45.40 +
   45.41 +#define PG_OFFLINE_MISC_MASK    (0xFFUL << 4)
   45.42 +
   45.43 +/* only valid when PG_OFFLINE_FAILED */
   45.44 +#define PG_OFFLINE_XENPAGE   (0x1UL << 8)
   45.45 +#define PG_OFFLINE_DOM0PAGE  (0x1UL << 9)
   45.46 +#define PG_OFFLINE_ANONYMOUS (0x1UL << 10)
   45.47 +#define PG_OFFLINE_NOT_CONV_RAM   (0x1UL << 11)
   45.48 +#define PG_OFFLINE_OWNED     (0x1UL << 12)
   45.49 +
   45.50 +#define PG_OFFLINE_BROKEN    (0x1UL << 13)
   45.51 +#define PG_ONLINE_BROKEN     PG_OFFLINE_BROKEN
   45.52 +
   45.53 +#define PG_OFFLINE_OWNER_SHIFT 16
   45.54 +
   45.55  struct xen_sysctl {
   45.56      uint32_t cmd;
   45.57      uint32_t interface_version; /* XEN_SYSCTL_INTERFACE_VERSION */
   45.58 @@ -375,6 +423,7 @@ struct xen_sysctl {
   45.59          struct xen_sysctl_get_pmstat        get_pmstat;
   45.60          struct xen_sysctl_cpu_hotplug       cpu_hotplug;
   45.61          struct xen_sysctl_pm_op             pm_op;
   45.62 +        struct xen_sysctl_page_offline_op   page_offline;
   45.63          uint8_t                             pad[128];
   45.64      } u;
   45.65  };
    46.1 --- a/xen/include/public/trace.h	Fri Mar 06 12:22:22 2009 +0900
    46.2 +++ b/xen/include/public/trace.h	Tue Mar 10 11:00:34 2009 +0900
    46.3 @@ -60,7 +60,8 @@
    46.4  #define TRC_TRACE_WRAP_BUFFER  (TRC_GEN + 2)
    46.5  #define TRC_TRACE_CPU_CHANGE    (TRC_GEN + 3)
    46.6  
    46.7 -#define TRC_SCHED_RUNSTATE_CHANGE (TRC_SCHED_MIN + 1)
    46.8 +#define TRC_SCHED_RUNSTATE_CHANGE   (TRC_SCHED_MIN + 1)
    46.9 +#define TRC_SCHED_CONTINUE_RUNNING  (TRC_SCHED_MIN + 2)
   46.10  #define TRC_SCHED_DOM_ADD        (TRC_SCHED_VERBOSE +  1)
   46.11  #define TRC_SCHED_DOM_REM        (TRC_SCHED_VERBOSE +  2)
   46.12  #define TRC_SCHED_SLEEP          (TRC_SCHED_VERBOSE +  3)
    47.1 --- a/xen/include/public/xen.h	Fri Mar 06 12:22:22 2009 +0900
    47.2 +++ b/xen/include/public/xen.h	Tue Mar 10 11:00:34 2009 +0900
    47.3 @@ -354,6 +354,9 @@ typedef uint16_t domid_t;
    47.4   */
    47.5  #define DOMID_XEN  (0x7FF2U)
    47.6  
    47.7 +/* DOMID_INVALID is used to identity invalid domid */
    47.8 +#define DOMID_INVALID (0x7FFFU)
    47.9 +
   47.10  /*
   47.11   * Send an array of these to HYPERVISOR_mmu_update().
   47.12   * NB. The fields are natural pointer/address size for this architecture.
    48.1 --- a/xen/include/xen/cpumask.h	Fri Mar 06 12:22:22 2009 +0900
    48.2 +++ b/xen/include/xen/cpumask.h	Tue Mar 10 11:00:34 2009 +0900
    48.3 @@ -38,6 +38,8 @@
    48.4   *
    48.5   * int first_cpu(mask)			Number lowest set bit, or NR_CPUS
    48.6   * int next_cpu(cpu, mask)		Next cpu past 'cpu', or NR_CPUS
    48.7 + * int last_cpu(mask)			Number highest set bit, or NR_CPUS
    48.8 + * int cycle_cpu(cpu, mask)		Next cpu cycling from 'cpu', or NR_CPUS
    48.9   *
   48.10   * cpumask_t cpumask_of_cpu(cpu)	Return cpumask with bit 'cpu' set
   48.11   * CPU_MASK_ALL				Initializer - all bits set
   48.12 @@ -225,12 +227,23 @@ static inline int __next_cpu(int n, cons
   48.13  #define last_cpu(src) __last_cpu(&(src), NR_CPUS)
   48.14  static inline int __last_cpu(const cpumask_t *srcp, int nbits)
   48.15  {
   48.16 -	int cpu, pcpu = NR_CPUS;
   48.17 -	for (cpu = first_cpu(*srcp); cpu < NR_CPUS; cpu = next_cpu(cpu, *srcp))
   48.18 +	int cpu, pcpu = nbits;
   48.19 +	for (cpu = __first_cpu(srcp, nbits);
   48.20 +	     cpu < nbits;
   48.21 +	     cpu = __next_cpu(cpu, srcp, nbits))
   48.22  		pcpu = cpu;
   48.23  	return pcpu;
   48.24  }
   48.25  
   48.26 +#define cycle_cpu(n, src) __cycle_cpu((n), &(src), NR_CPUS)
   48.27 +static inline int __cycle_cpu(int n, const cpumask_t *srcp, int nbits)
   48.28 +{
   48.29 +    int nxt = __next_cpu(n, srcp, nbits);
   48.30 +    if (nxt == nbits)
   48.31 +        nxt = __first_cpu(srcp, nbits);
   48.32 +    return nxt;
   48.33 +}
   48.34 +
   48.35  #define cpumask_of_cpu(cpu)						\
   48.36  ({									\
   48.37  	typeof(_unused_cpumask_arg_) m;					\
    49.1 --- a/xen/include/xen/mm.h	Fri Mar 06 12:22:22 2009 +0900
    49.2 +++ b/xen/include/xen/mm.h	Tue Mar 10 11:00:34 2009 +0900
    49.3 @@ -60,6 +60,9 @@ unsigned long avail_domheap_pages_region
    49.4  unsigned long avail_domheap_pages(void);
    49.5  #define alloc_domheap_page(d,f) (alloc_domheap_pages(d,0,f))
    49.6  #define free_domheap_page(p)  (free_domheap_pages(p,0))
    49.7 +unsigned int online_page(unsigned long mfn, uint32_t *status);
    49.8 +int offline_page(unsigned long mfn, int broken, uint32_t *status);
    49.9 +int query_page_offline(unsigned long mfn, uint32_t *status);
   49.10  
   49.11  void scrub_heap_pages(void);
   49.12  
    50.1 --- a/xen/include/xen/perfc_defn.h	Fri Mar 06 12:22:22 2009 +0900
    50.2 +++ b/xen/include/xen/perfc_defn.h	Tue Mar 10 11:00:34 2009 +0900
    50.3 @@ -16,6 +16,41 @@ PERFCOUNTER(sched_irq,              "sch
    50.4  PERFCOUNTER(sched_run,              "sched: runs through scheduler")
    50.5  PERFCOUNTER(sched_ctx,              "sched: context switches")
    50.6  
    50.7 +PERFCOUNTER(vcpu_check,             "csched: vcpu_check")
    50.8 +PERFCOUNTER(schedule,               "csched: schedule")
    50.9 +PERFCOUNTER(acct_run,               "csched: acct_run")
   50.10 +PERFCOUNTER(acct_no_work,           "csched: acct_no_work")
   50.11 +PERFCOUNTER(acct_balance,           "csched: acct_balance")
   50.12 +PERFCOUNTER(acct_reorder,           "csched: acct_reorder")
   50.13 +PERFCOUNTER(acct_min_credit,        "csched: acct_min_credit")
   50.14 +PERFCOUNTER(acct_vcpu_active,       "csched: acct_vcpu_active")
   50.15 +PERFCOUNTER(acct_vcpu_idle,         "csched: acct_vcpu_idle")
   50.16 +PERFCOUNTER(vcpu_sleep,             "csched: vcpu_sleep")
   50.17 +PERFCOUNTER(vcpu_wake_running,      "csched: vcpu_wake_running")
   50.18 +PERFCOUNTER(vcpu_wake_onrunq,       "csched: vcpu_wake_onrunq")
   50.19 +PERFCOUNTER(vcpu_wake_runnable,     "csched: vcpu_wake_runnable")
   50.20 +PERFCOUNTER(vcpu_wake_not_runnable, "csched: vcpu_wake_not_runnable")
   50.21 +PERFCOUNTER(vcpu_park,              "csched: vcpu_park")
   50.22 +PERFCOUNTER(vcpu_unpark,            "csched: vcpu_unpark")
   50.23 +PERFCOUNTER(tickle_local_idler,     "csched: tickle_local_idler")
   50.24 +PERFCOUNTER(tickle_local_over,      "csched: tickle_local_over")
   50.25 +PERFCOUNTER(tickle_local_under,     "csched: tickle_local_under")
   50.26 +PERFCOUNTER(tickle_local_other,     "csched: tickle_local_other")
   50.27 +PERFCOUNTER(tickle_idlers_none,     "csched: tickle_idlers_none")
   50.28 +PERFCOUNTER(tickle_idlers_some,     "csched: tickle_idlers_some")
   50.29 +PERFCOUNTER(load_balance_idle,      "csched: load_balance_idle")
   50.30 +PERFCOUNTER(load_balance_over,      "csched: load_balance_over")
   50.31 +PERFCOUNTER(load_balance_other,     "csched: load_balance_other")
   50.32 +PERFCOUNTER(steal_trylock_failed,   "csched: steal_trylock_failed")
   50.33 +PERFCOUNTER(steal_peer_idle,        "csched: steal_peer_idle")
   50.34 +PERFCOUNTER(migrate_queued,         "csched: migrate_queued")
   50.35 +PERFCOUNTER(migrate_running,        "csched: migrate_running")
   50.36 +PERFCOUNTER(dom_init,               "csched: dom_init")
   50.37 +PERFCOUNTER(dom_destroy,            "csched: dom_destroy")
   50.38 +PERFCOUNTER(vcpu_init,              "csched: vcpu_init")
   50.39 +PERFCOUNTER(vcpu_destroy,           "csched: vcpu_destroy")
   50.40 +PERFCOUNTER(vcpu_hot,               "csched: vcpu_hot")
   50.41 +
   50.42  PERFCOUNTER(need_flush_tlb_flush,   "PG_need_flush tlb flushes")
   50.43  
   50.44  /*#endif*/ /* __XEN_PERFC_DEFN_H__ */