ia64/xen-unstable

changeset 18622:551c3480beee

hvm: Battery Management virtual firmware and toolstack changes

Signed-off-by: Kamala Narasimhan <kamala.narasimhan@citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Tue Oct 14 11:08:15 2008 +0100 (2008-10-14)
parents 8d993552673a
children c9ba3d1880be
files tools/examples/xmexample.hvm tools/firmware/hvmloader/acpi/Makefile tools/firmware/hvmloader/acpi/build.c tools/firmware/hvmloader/acpi/ssdt_pm.asl tools/firmware/hvmloader/acpi/ssdt_pm.h tools/python/xen/xend/XendConfig.py tools/python/xen/xend/image.py tools/python/xen/xm/create.py
line diff
     1.1 --- a/tools/examples/xmexample.hvm	Tue Oct 14 10:45:29 2008 +0100
     1.2 +++ b/tools/examples/xmexample.hvm	Tue Oct 14 11:08:15 2008 +0100
     1.3 @@ -53,6 +53,14 @@ name = "ExampleHVMDomain"
     1.4  # Note that this option is ignored if vcpus > 1
     1.5  #apic=1
     1.6  
     1.7 +# Enable/disable extended power management support within HVM guest, i.e., beyond
     1.8 +# S3, S4, S5 within guest like exposing battery meter.
     1.9 +# 0 (default option, extended power management support disabled)
    1.10 +# 1 (pass-through mode; uses pass-through as needed; efficient but limited in scope)
    1.11 +# 2 (non pass-through mode; extended scope, likely to work on all applicable environment
    1.12 +#    but comparitively less efficient than pass-through mode)
    1.13 +# xen_extended_power_mgmt=0
    1.14 +
    1.15  # List of which CPUS this domain is allowed to use, default Xen picks
    1.16  #cpus = ""         # leave to Xen to pick
    1.17  #cpus = "0"        # all vcpus run on CPU0
     2.1 --- a/tools/firmware/hvmloader/acpi/Makefile	Tue Oct 14 10:45:29 2008 +0100
     2.2 +++ b/tools/firmware/hvmloader/acpi/Makefile	Tue Oct 14 11:08:15 2008 +0100
     2.3 @@ -30,10 +30,10 @@ CFLAGS += -I. -I.. $(CFLAGS_include)
     2.4  vpath iasl $(PATH)
     2.5  all: acpi.a
     2.6  
     2.7 -ssdt_tpm.h: ssdt_tpm.asl
     2.8 +ssdt_pm.h ssdt_tpm.h: %.h: %.asl
     2.9  	$(MAKE) iasl
    2.10 -	iasl -tc ssdt_tpm.asl
    2.11 -	mv ssdt_tpm.hex ssdt_tpm.h
    2.12 +	iasl -tc $<
    2.13 +	mv $*.hex $@
    2.14  	rm -f *.aml
    2.15  
    2.16  dsdt.c: dsdt.asl
     3.1 --- a/tools/firmware/hvmloader/acpi/build.c	Tue Oct 14 10:45:29 2008 +0100
     3.2 +++ b/tools/firmware/hvmloader/acpi/build.c	Tue Oct 14 11:08:15 2008 +0100
     3.3 @@ -18,6 +18,7 @@
     3.4  
     3.5  #include "acpi2_0.h"
     3.6  #include "ssdt_tpm.h"
     3.7 +#include "ssdt_pm.h"
     3.8  #include "../config.h"
     3.9  #include "../util.h"
    3.10  
    3.11 @@ -68,6 +69,11 @@ static int hpet_exists(unsigned long hpe
    3.12      return ((hpet_id >> 16) == 0x8086);
    3.13  }
    3.14  
    3.15 +static uint8_t battery_port_exists(void)
    3.16 +{
    3.17 +    return (inb(0x88) == 0x1F);
    3.18 +}
    3.19 +
    3.20  static int construct_bios_info_table(uint8_t *buf)
    3.21  {
    3.22      struct bios_info *bios_info = (struct bios_info *)buf;
    3.23 @@ -210,6 +216,13 @@ static int construct_secondary_tables(ui
    3.24          table_ptrs[nr_tables++] = (unsigned long)hpet;
    3.25      }
    3.26  
    3.27 +    if ( battery_port_exists() ) 
    3.28 +    {
    3.29 +        table_ptrs[nr_tables++] = (unsigned long)&buf[offset];
    3.30 +        memcpy(&buf[offset], AmlCode_PM, sizeof(AmlCode_PM));
    3.31 +        offset += align16(sizeof(AmlCode_PM));
    3.32 +    }
    3.33 +
    3.34      /* TPM TCPA and SSDT. */
    3.35      tis_hdr = (uint16_t *)0xFED40F00;
    3.36      if ( (tis_hdr[0] == tis_signature[0]) &&
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/tools/firmware/hvmloader/acpi/ssdt_pm.asl	Tue Oct 14 11:08:15 2008 +0100
     4.3 @@ -0,0 +1,423 @@
     4.4 +/*
     4.5 + * ssdt_pm.asl
     4.6 + *
     4.7 + * Copyright (c) 2008  Kamala Narasimhan
     4.8 + * Copyright (c) 2008  Citrix Systems, Inc.
     4.9 + *
    4.10 + * This program is free software; you can redistribute it and/or modify
    4.11 + * it under the terms of the GNU General Public License as published by
    4.12 + * the Free Software Foundation; either version 2 of the License, or
    4.13 + * (at your option) any later version.
    4.14 + *
    4.15 + * This program is distributed in the hope that it will be useful,
    4.16 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    4.17 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    4.18 + * GNU General Public License for more details.
    4.19 + *
    4.20 + * You should have received a copy of the GNU General Public License
    4.21 + * along with this program; if not, write to the Free Software
    4.22 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    4.23 + */
    4.24 +
    4.25 +/*
    4.26 + * SSDT for extended power management within HVM guest. Power management beyond
    4.27 + * S3, S4, S5 is handled by this vACPI layer.  
    4.28 + *
    4.29 + * Battery Management Implementation -
    4.30 + * Xen vACPI layer exposes battery information to guest using CMBattery
    4.31 + * interface. This virtual firmware CMBattery implementation is very similar to
    4.32 + * the actual firmware CMBattery implementation.  In fact, a good part of the
    4.33 + * below is heavily borrowed from the underlying firmware to support
    4.34 + * pass-through and non-pass-through battery management approaches using the
    4.35 + * same CMBattery interface implementation. When pass-through approach is used,
    4.36 + * the battery ports are directly mapped using xc_domain_ioport_mapping thus
    4.37 + * not relying on qemu battery port handling to intercept port reads/writes to
    4.38 + * feed relevant battery information to the guest.
    4.39 + *
    4.40 + * Following are the battery ports read/written to in order to implement
    4.41 + * battery support:
    4.42 + * Battery command port - 0xb2
    4.43 + * Batter data port     - 0x86
    4.44 + * Battery commands (written to port 0xb2) -
    4.45 + * 0x7b - Battery operation init
    4.46 + * 0x7c - Type of battery operation
    4.47 + * 0x79 - Get battery data length
    4.48 + * 0x7d - Get battery data
    4.49 + *
    4.50 + * Also the following ports are used for debugging/logging:
    4.51 + * 0xB040, 0xB044, 0xB046, 0xB048 
    4.52 + */
    4.53 +
    4.54 +DefinitionBlock ("SSDT_PM.aml", "SSDT", 2, "Xen", "HVM", 0)
    4.55 +{
    4.56 +    Scope (\_SB)
    4.57 +    {
    4.58 +        OperationRegion (DBGA, SystemIO, 0xB040, 0x01)
    4.59 +        Field (DBGA, ByteAcc, NoLock, Preserve)
    4.60 +        {
    4.61 +            DBG1,   8,
    4.62 +        }
    4.63 +
    4.64 +        OperationRegion (DBGB, SystemIO, 0xB044, 0x01)
    4.65 +        Field (DBGB, ByteAcc, NoLock, Preserve)
    4.66 +        {
    4.67 +            DBG2,   8,
    4.68 +        }
    4.69 +
    4.70 +        OperationRegion (DBGC, SystemIO, 0xB046, 0x01)
    4.71 +        Field (DBGC, ByteAcc, NoLock, Preserve)
    4.72 +        {
    4.73 +            DBG3,   8,
    4.74 +        }
    4.75 +
    4.76 +        OperationRegion (DBGD, SystemIO, 0xB048, 0x01)
    4.77 +        Field (DBGD, ByteAcc, NoLock, Preserve)
    4.78 +        {
    4.79 +            DBG4,   8,
    4.80 +        }
    4.81 +
    4.82 +        OperationRegion (PRT1, SystemIO, 0xB2, 0x02)
    4.83 +        Field (PRT1, ByteAcc, NoLock, Preserve)
    4.84 +        {
    4.85 +            PB2,   8,
    4.86 +            PB2A,   8
    4.87 +        }
    4.88 +
    4.89 +        OperationRegion (PRT2, SystemIO, 0x86, 0x01)
    4.90 +        Field (PRT2, ByteAcc, NoLock, Preserve)
    4.91 +        {
    4.92 +            P86,   8
    4.93 +        }
    4.94 +
    4.95 +        OperationRegion (PRT3, SystemIO, 0x88, 0x01)
    4.96 +        Field (PRT3, ByteAcc, NoLock, Preserve)
    4.97 +        {
    4.98 +            P88,  8
    4.99 +        }
   4.100 +
   4.101 +
   4.102 +        Mutex (SYNC, 0x01)
   4.103 +        Name (BUF0, Buffer (0x0100) {})
   4.104 +        Name (BUF1, Buffer (0x08) {})
   4.105 +        CreateWordField (BUF1, 0x00, BUFA)
   4.106 +        CreateWordField (BUF1, 0x04, BUFB)
   4.107 +        Method (ACQR, 0, NotSerialized)
   4.108 +        {
   4.109 +            Acquire (SYNC, 0xFFFF)
   4.110 +            Store (0x00, BUFA)
   4.111 +        }
   4.112 +
   4.113 +        /*
   4.114 +         * Initialize relevant buffer to indicate what type of
   4.115 +         * information is being queried and by what object (e.g.
   4.116 +         * by battery device 0 or 1).
   4.117 +         */
   4.118 +        Method (INIT, 1, NotSerialized)
   4.119 +        {
   4.120 +            Store (BUFA, Local0)
   4.121 +            Increment (Local0)
   4.122 +            If (LLessEqual (Local0, SizeOf (BUF0)))
   4.123 +            {
   4.124 +                CreateByteField (BUF0, BUFA, TMP1)
   4.125 +                Store (Arg0, TMP1)
   4.126 +                Store (Local0, BUFA)
   4.127 +            }
   4.128 +        }
   4.129 +
   4.130 +        /*
   4.131 +         * Write to battery port 0xb2 indicating the type of information
   4.132 +         * to request, initialize battery data port 0x86 and then return 
   4.133 +         * value provided through data port 0x86.
   4.134 +         */
   4.135 +        Method (WPRT, 2, NotSerialized)
   4.136 +        {
   4.137 +            Store (Arg1, \_SB.P86)
   4.138 +            Store (Arg0, \_SB.PB2)
   4.139 +            Store (Arg0, \_SB.DBG2)
   4.140 +            Store (Arg1, \_SB.DBG4)
   4.141 +            Store (\_SB.PB2, Local0)
   4.142 +            While (LNotEqual (Local0, 0x00))
   4.143 +            {
   4.144 +                Store (\_SB.PB2, Local0)
   4.145 +            }
   4.146 +
   4.147 +            Store (\_SB.P86, Local1)
   4.148 +            Store (Local1, \_SB.DBG3)
   4.149 +            Return (\_SB.P86)
   4.150 +        }
   4.151 +
   4.152 +        /*
   4.153 +         * Helper method 1 to write to battery command and data port. 
   4.154 +         * 0x7c written to port 0xb2 indicating battery info type command.
   4.155 +         * Value 1 or 2 written to port 0x86.  1 for BIF (batterry info) and 2 
   4.156 +         * for BST (battery status).
   4.157 +         */
   4.158 +        Method (HLP1, 2, NotSerialized)
   4.159 +        {
   4.160 +            If (LLess (Arg1, SizeOf (Arg0)))
   4.161 +            {
   4.162 +                CreateByteField (Arg0, Arg1, TMP1)
   4.163 +                WPRT (0x7C, TMP1)
   4.164 +            }
   4.165 +        }
   4.166 +
   4.167 +        /*
   4.168 +         * Helper method 2.  Value 0x7b written to battery command port 0xb2
   4.169 +         * indicating battery info initialization request.  First thing written
   4.170 +         * to battery port before querying for further information pertaining
   4.171 +         * to the battery.
   4.172 +         */
   4.173 +        Method (HLP2, 0, NotSerialized)
   4.174 +        {
   4.175 +            WPRT (0x7B, 0x00)
   4.176 +            Store (0x00, Local0)
   4.177 +            While (LLess (Local0, BUFA))
   4.178 +            {
   4.179 +                HLP1 (BUF0, Local0)
   4.180 +                Increment (Local0)
   4.181 +            }
   4.182 +        }
   4.183 +
   4.184 +        /*
   4.185 +         * Helper method 3. 0x7d written to battery command port 0xb2
   4.186 +         * indicating request of battery data returned through battery data
   4.187 +         * port 0x86.
   4.188 +         */
   4.189 +        Method (HLP3, 2, NotSerialized)
   4.190 +        {
   4.191 +            If (LLess (Arg1, SizeOf (Arg0)))
   4.192 +            {
   4.193 +                CreateByteField (Arg0, Arg1, TMP1)
   4.194 +                Store (WPRT (0x7D, 0x00), TMP1)
   4.195 +            }
   4.196 +        }
   4.197 +
   4.198 +        /*
   4.199 +         * Helper method 4 to indirectly get battery data and store it in a
   4.200 +         * local buffer.
   4.201 +         */
   4.202 +        Method (HLP4, 0, NotSerialized)
   4.203 +        {
   4.204 +            Store (0x00, Local0)
   4.205 +            While (LLess (Local0, BUFB))
   4.206 +            {
   4.207 +                Add (BUFA, Local0, Local1)
   4.208 +                HLP3 (BUF0, Local1)
   4.209 +                Increment (Local0)
   4.210 +            }
   4.211 +        }
   4.212 +
   4.213 +        /*
   4.214 +         * Helper method 5 to indirectly initialize battery port and get
   4.215 +         * battery data. Also get battery data length by writing 0x79 to
   4.216 +         * battery command port and receiving battery data length in port 0x86.
   4.217 +         */
   4.218 +        Method (HLP5, 0, NotSerialized)
   4.219 +        {
   4.220 +            HLP2 ()
   4.221 +            Store (WPRT (0x79, 0x00), BUFB)
   4.222 +            Add (BUFA, BUFB, Local0)
   4.223 +            If (LLess (SizeOf (BUF0), Local0))
   4.224 +            {
   4.225 +                Store (SizeOf (BUF0), Local0)
   4.226 +                Subtract (Local0, BUFA, Local0)
   4.227 +                Store (Local0, BUFB)
   4.228 +            }
   4.229 +
   4.230 +            HLP4 ()
   4.231 +        }
   4.232 +
   4.233 +        /* Helper method for local buffer housekeeping... */
   4.234 +        Method (HLP6, 0, NotSerialized)
   4.235 +        {
   4.236 +            Store (BUFA, Local0)
   4.237 +            Increment (Local0)
   4.238 +            If (LLessEqual (Local0, SizeOf (BUF0)))
   4.239 +            {
   4.240 +                CreateByteField (BUF0, BUFA, TMP1)
   4.241 +                Store (Local0, BUFA)
   4.242 +                Return (TMP1)
   4.243 +            }
   4.244 +
   4.245 +            Return (0x00)
   4.246 +        }
   4.247 +
   4.248 +        /* Helper methods to help store battery data retrieved through
   4.249 +         * battery data port 0x86. */
   4.250 +
   4.251 +        Method (HLP7, 0, NotSerialized)
   4.252 +        {
   4.253 +            Store (BUFA, Local0)
   4.254 +            Add (Local0, 0x04, Local0)
   4.255 +            If (LLessEqual (Local0, SizeOf (BUF0)))
   4.256 +            {
   4.257 +                CreateDWordField (BUF0, BUFA, SX22)
   4.258 +                Store (Local0, BUFA)
   4.259 +                Return (SX22)
   4.260 +            }
   4.261 +
   4.262 +            Return (0x00)
   4.263 +        }
   4.264 +
   4.265 +        Method (HLP8, 2, NotSerialized)
   4.266 +        {
   4.267 +            If (LLess (Arg1, SizeOf (Arg0)))
   4.268 +            {
   4.269 +                CreateByteField (Arg0, Arg1, TMP1)
   4.270 +                Store (HLP6 (), TMP1)
   4.271 +            }
   4.272 +        }
   4.273 +
   4.274 +        Method (HLP9, 2, NotSerialized)
   4.275 +        {
   4.276 +            Store (0x00, Local0)
   4.277 +            While (LLess (Local0, Arg1))
   4.278 +            {
   4.279 +                HLP8 (Arg0, Local0)
   4.280 +                Increment (Local0)
   4.281 +            }
   4.282 +        }
   4.283 +
   4.284 +        Method (HLPA, 0, NotSerialized)
   4.285 +        {
   4.286 +            Store (HLP6 (), Local0)
   4.287 +            Name (TMP, Buffer (Local0) {})
   4.288 +            HLP9 (TMP, Local0)
   4.289 +            Return (TMP)
   4.290 +        }
   4.291 +
   4.292 +        Method (REL, 0, NotSerialized)
   4.293 +        {
   4.294 +            Release (SYNC)
   4.295 +        }
   4.296 +
   4.297 +        /* Future patches will extend AC object to better account for
   4.298 +         * AC to DC transition and more. */
   4.299 +        Device (AC)
   4.300 +        {
   4.301 +            Name (_HID, "ACPI0003")
   4.302 +            Name (_PCL, Package (0x03)
   4.303 +            {
   4.304 +                \_SB,
   4.305 +                BAT0,
   4.306 +                BAT1 
   4.307 +            })
   4.308 +            Method (_PSR, 0, NotSerialized)
   4.309 +            {
   4.310 +                Return (0x0)
   4.311 +            }
   4.312 +
   4.313 +            Method (_STA, 0, NotSerialized)
   4.314 +            {
   4.315 +                Return (0x0F)
   4.316 +            }
   4.317 +        }
   4.318 +
   4.319 +        /* Main battery information helper method. */
   4.320 +        Name (BIFP, Package (0x0D) {})
   4.321 +        Method (BIF, 1, NotSerialized)
   4.322 +        {
   4.323 +            ACQR ()
   4.324 +            INIT (0x01)
   4.325 +            INIT (Arg0)
   4.326 +            HLP5 ()
   4.327 +            Store (HLP7 (), Index (BIFP, 0x00))
   4.328 +            Store (HLP7 (), Index (BIFP, 0x01))
   4.329 +            Store (HLP7 (), Index (BIFP, 0x02))
   4.330 +            Store (HLP7 (), Index (BIFP, 0x03))
   4.331 +            Store (HLP7 (), Index (BIFP, 0x04))
   4.332 +            Store (HLP7 (), Index (BIFP, 0x05))
   4.333 +            Store (HLP7 (), Index (BIFP, 0x06))
   4.334 +            Store (HLP7 (), Index (BIFP, 0x07))
   4.335 +            Store (HLP7 (), Index (BIFP, 0x08))
   4.336 +            Store (HLPA (), Index (BIFP, 0x09))
   4.337 +            Store (HLPA (), Index (BIFP, 0x0A))
   4.338 +            Store (HLPA (), Index (BIFP, 0x0B))
   4.339 +            Store (HLPA (), Index (BIFP, 0x0C))
   4.340 +            REL ()
   4.341 +            Return (BIFP)
   4.342 +        }
   4.343 +
   4.344 +        /* Battery object 0 - Always exposed as present. */
   4.345 +        Device (BAT0)
   4.346 +        {
   4.347 +            Name (_HID, EisaId ("PNP0C0A"))
   4.348 +            Name (_UID, 0x01)
   4.349 +            Name (_PCL, Package (0x01)
   4.350 +            {
   4.351 +                \_SB
   4.352 +            })
   4.353 +
   4.354 +            /* Always returns 0x1f indicating battery present. */
   4.355 +            Method (_STA, 0, NotSerialized)
   4.356 +            {
   4.357 +                Store (\_SB.P88, Local0)
   4.358 +                Return ( Local0 )
   4.359 +            }
   4.360 +
   4.361 +            /* Battery generic info: design capacity, voltage, model # etc. */
   4.362 +            Method (_BIF, 0, NotSerialized)
   4.363 +            {
   4.364 +                //Store (1, \_SB.DBG1)
   4.365 +                Store(BIF ( 0x01 ), Local0)
   4.366 +                //Store (2, \_SB.DBG1)
   4.367 +                Return( Local0 )
   4.368 +            }
   4.369 +
   4.370 +            /* Battery status including battery charging/discharging rate. */
   4.371 +            Method (_BST, 0, NotSerialized)
   4.372 +            {
   4.373 +                Store (1, \_SB.DBG1)
   4.374 +                ACQR ()
   4.375 +                INIT (0x02)
   4.376 +                INIT (0x01)
   4.377 +                HLP5 ()
   4.378 +                Name (BST0, Package (0x04) {})
   4.379 +                Store (HLP7 (), Index (BST0, 0x00))
   4.380 +                Store (HLP7 (), Index (BST0, 0x01))
   4.381 +                Store (HLP7 (), Index (BST0, 0x02))
   4.382 +                Store (HLP7 (), Index (BST0, 0x03))
   4.383 +                REL ()
   4.384 +                Store (2, \_SB.DBG1)
   4.385 +                Return (BST0)
   4.386 +            }
   4.387 +        }
   4.388 +
   4.389 +        /* Battery object 1 - Always exposed as not present. */
   4.390 +        Device (BAT1)
   4.391 +        {
   4.392 +            Name (_HID, EisaId ("PNP0C0A"))
   4.393 +            Name (_UID, 0x02)
   4.394 +            Name (_PCL, Package (0x01)
   4.395 +            {
   4.396 +                \_SB
   4.397 +            })
   4.398 +            Method (_STA, 0, NotSerialized)
   4.399 +            {
   4.400 +                Return (0x0F)
   4.401 +            }
   4.402 +
   4.403 +            Method (_BIF, 0, NotSerialized)
   4.404 +            {
   4.405 +                Store (\_SB.PB2, Local0)
   4.406 +                Return (BIF (0x02))
   4.407 +            }
   4.408 +
   4.409 +            Method (_BST, 0, NotSerialized)
   4.410 +            {
   4.411 +                ACQR ()
   4.412 +                INIT (0x02)
   4.413 +                INIT (0x02)
   4.414 +                HLP5 ()
   4.415 +                Name (BST1, Package (0x04) {})
   4.416 +                Store (HLP7 (), Index (BST1, 0x00))
   4.417 +                Store (HLP7 (), Index (BST1, 0x01))
   4.418 +                Store (HLP7 (), Index (BST1, 0x02))
   4.419 +                Store (HLP7 (), Index (BST1, 0x03))
   4.420 +                REL ()
   4.421 +                Return (BST1)
   4.422 +            }
   4.423 +        }
   4.424 +    }
   4.425 +}
   4.426 +
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/tools/firmware/hvmloader/acpi/ssdt_pm.h	Tue Oct 14 11:08:15 2008 +0100
     5.3 @@ -0,0 +1,202 @@
     5.4 +/*
     5.5 + * 
     5.6 + * Intel ACPI Component Architecture
     5.7 + * ASL Optimizing Compiler version 20061109 [May 18 2007]
     5.8 + * Copyright (C) 2000 - 2006 Intel Corporation
     5.9 + * Supports ACPI Specification Revision 3.0a
    5.10 + * 
    5.11 + * Compilation of "ssdt_pm.asl" - Sun Oct 12 23:57:51 2008
    5.12 + * 
    5.13 + * C source code output
    5.14 + *
    5.15 + */
    5.16 +unsigned char AmlCode_PM[] =
    5.17 +{
    5.18 +    0x53,0x53,0x44,0x54,0xD6,0x05,0x00,0x00,  /* 00000000    "SSDT...." */
    5.19 +    0x02,0xD9,0x58,0x65,0x6E,0x00,0x00,0x00,  /* 00000008    "..Xen..." */
    5.20 +    0x48,0x56,0x4D,0x00,0x00,0x00,0x00,0x00,  /* 00000010    "HVM....." */
    5.21 +    0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
    5.22 +    0x09,0x11,0x06,0x20,0x10,0x41,0x5B,0x5C,  /* 00000020    "... .A[\" */
    5.23 +    0x5F,0x53,0x42,0x5F,0x5B,0x80,0x44,0x42,  /* 00000028    "_SB_[.DB" */
    5.24 +    0x47,0x41,0x01,0x0B,0x40,0xB0,0x01,0x5B,  /* 00000030    "GA..@..[" */
    5.25 +    0x81,0x0B,0x44,0x42,0x47,0x41,0x01,0x44,  /* 00000038    "..DBGA.D" */
    5.26 +    0x42,0x47,0x31,0x08,0x5B,0x80,0x44,0x42,  /* 00000040    "BG1.[.DB" */
    5.27 +    0x47,0x42,0x01,0x0B,0x44,0xB0,0x01,0x5B,  /* 00000048    "GB..D..[" */
    5.28 +    0x81,0x0B,0x44,0x42,0x47,0x42,0x01,0x44,  /* 00000050    "..DBGB.D" */
    5.29 +    0x42,0x47,0x32,0x08,0x5B,0x80,0x44,0x42,  /* 00000058    "BG2.[.DB" */
    5.30 +    0x47,0x43,0x01,0x0B,0x46,0xB0,0x01,0x5B,  /* 00000060    "GC..F..[" */
    5.31 +    0x81,0x0B,0x44,0x42,0x47,0x43,0x01,0x44,  /* 00000068    "..DBGC.D" */
    5.32 +    0x42,0x47,0x33,0x08,0x5B,0x80,0x44,0x42,  /* 00000070    "BG3.[.DB" */
    5.33 +    0x47,0x44,0x01,0x0B,0x48,0xB0,0x01,0x5B,  /* 00000078    "GD..H..[" */
    5.34 +    0x81,0x0B,0x44,0x42,0x47,0x44,0x01,0x44,  /* 00000080    "..DBGD.D" */
    5.35 +    0x42,0x47,0x34,0x08,0x5B,0x80,0x50,0x52,  /* 00000088    "BG4.[.PR" */
    5.36 +    0x54,0x31,0x01,0x0A,0xB2,0x0A,0x02,0x5B,  /* 00000090    "T1.....[" */
    5.37 +    0x81,0x10,0x50,0x52,0x54,0x31,0x01,0x50,  /* 00000098    "..PRT1.P" */
    5.38 +    0x42,0x32,0x5F,0x08,0x50,0x42,0x32,0x41,  /* 000000A0    "B2_.PB2A" */
    5.39 +    0x08,0x5B,0x80,0x50,0x52,0x54,0x32,0x01,  /* 000000A8    ".[.PRT2." */
    5.40 +    0x0A,0x86,0x01,0x5B,0x81,0x0B,0x50,0x52,  /* 000000B0    "...[..PR" */
    5.41 +    0x54,0x32,0x01,0x50,0x38,0x36,0x5F,0x08,  /* 000000B8    "T2.P86_." */
    5.42 +    0x5B,0x80,0x50,0x52,0x54,0x33,0x01,0x0A,  /* 000000C0    "[.PRT3.." */
    5.43 +    0x88,0x01,0x5B,0x81,0x0B,0x50,0x52,0x54,  /* 000000C8    "..[..PRT" */
    5.44 +    0x33,0x01,0x50,0x38,0x38,0x5F,0x08,0x5B,  /* 000000D0    "3.P88_.[" */
    5.45 +    0x01,0x53,0x59,0x4E,0x43,0x01,0x08,0x42,  /* 000000D8    ".SYNC..B" */
    5.46 +    0x55,0x46,0x30,0x11,0x04,0x0B,0x00,0x01,  /* 000000E0    "UF0....." */
    5.47 +    0x08,0x42,0x55,0x46,0x31,0x11,0x03,0x0A,  /* 000000E8    ".BUF1..." */
    5.48 +    0x08,0x8B,0x42,0x55,0x46,0x31,0x00,0x42,  /* 000000F0    "..BUF1.B" */
    5.49 +    0x55,0x46,0x41,0x8B,0x42,0x55,0x46,0x31,  /* 000000F8    "UFA.BUF1" */
    5.50 +    0x0A,0x04,0x42,0x55,0x46,0x42,0x14,0x14,  /* 00000100    "..BUFB.." */
    5.51 +    0x41,0x43,0x51,0x52,0x00,0x5B,0x23,0x53,  /* 00000108    "ACQR.[#S" */
    5.52 +    0x59,0x4E,0x43,0xFF,0xFF,0x70,0x00,0x42,  /* 00000110    "YNC..p.B" */
    5.53 +    0x55,0x46,0x41,0x14,0x31,0x49,0x4E,0x49,  /* 00000118    "UFA.1INI" */
    5.54 +    0x54,0x01,0x70,0x42,0x55,0x46,0x41,0x60,  /* 00000120    "T.pBUFA`" */
    5.55 +    0x75,0x60,0xA0,0x22,0x92,0x94,0x60,0x87,  /* 00000128    "u`."..`." */
    5.56 +    0x42,0x55,0x46,0x30,0x8C,0x42,0x55,0x46,  /* 00000130    "BUF0.BUF" */
    5.57 +    0x30,0x42,0x55,0x46,0x41,0x54,0x4D,0x50,  /* 00000138    "0BUFATMP" */
    5.58 +    0x31,0x70,0x68,0x54,0x4D,0x50,0x31,0x70,  /* 00000140    "1phTMP1p" */
    5.59 +    0x60,0x42,0x55,0x46,0x41,0x14,0x48,0x07,  /* 00000148    "`BUFA.H." */
    5.60 +    0x57,0x50,0x52,0x54,0x02,0x70,0x69,0x5C,  /* 00000150    "WPRT.pi\" */
    5.61 +    0x2E,0x5F,0x53,0x42,0x5F,0x50,0x38,0x36,  /* 00000158    "._SB_P86" */
    5.62 +    0x5F,0x70,0x68,0x5C,0x2E,0x5F,0x53,0x42,  /* 00000160    "_ph\._SB" */
    5.63 +    0x5F,0x50,0x42,0x32,0x5F,0x70,0x68,0x5C,  /* 00000168    "_PB2_ph\" */
    5.64 +    0x2E,0x5F,0x53,0x42,0x5F,0x44,0x42,0x47,  /* 00000170    "._SB_DBG" */
    5.65 +    0x32,0x70,0x69,0x5C,0x2E,0x5F,0x53,0x42,  /* 00000178    "2pi\._SB" */
    5.66 +    0x5F,0x44,0x42,0x47,0x34,0x70,0x5C,0x2E,  /* 00000180    "_DBG4p\." */
    5.67 +    0x5F,0x53,0x42,0x5F,0x50,0x42,0x32,0x5F,  /* 00000188    "_SB_PB2_" */
    5.68 +    0x60,0xA2,0x11,0x92,0x93,0x60,0x00,0x70,  /* 00000190    "`....`.p" */
    5.69 +    0x5C,0x2E,0x5F,0x53,0x42,0x5F,0x50,0x42,  /* 00000198    "\._SB_PB" */
    5.70 +    0x32,0x5F,0x60,0x70,0x5C,0x2E,0x5F,0x53,  /* 000001A0    "2_`p\._S" */
    5.71 +    0x42,0x5F,0x50,0x38,0x36,0x5F,0x61,0x70,  /* 000001A8    "B_P86_ap" */
    5.72 +    0x61,0x5C,0x2E,0x5F,0x53,0x42,0x5F,0x44,  /* 000001B0    "a\._SB_D" */
    5.73 +    0x42,0x47,0x33,0xA4,0x5C,0x2E,0x5F,0x53,  /* 000001B8    "BG3.\._S" */
    5.74 +    0x42,0x5F,0x50,0x38,0x36,0x5F,0x14,0x1D,  /* 000001C0    "B_P86_.." */
    5.75 +    0x48,0x4C,0x50,0x31,0x02,0xA0,0x16,0x95,  /* 000001C8    "HLP1...." */
    5.76 +    0x69,0x87,0x68,0x8C,0x68,0x69,0x54,0x4D,  /* 000001D0    "i.h.hiTM" */
    5.77 +    0x50,0x31,0x57,0x50,0x52,0x54,0x0A,0x7C,  /* 000001D8    "P1WPRT.|" */
    5.78 +    0x54,0x4D,0x50,0x31,0x14,0x23,0x48,0x4C,  /* 000001E0    "TMP1.#HL" */
    5.79 +    0x50,0x32,0x00,0x57,0x50,0x52,0x54,0x0A,  /* 000001E8    "P2.WPRT." */
    5.80 +    0x7B,0x00,0x70,0x00,0x60,0xA2,0x12,0x95,  /* 000001F0    "{.p.`..." */
    5.81 +    0x60,0x42,0x55,0x46,0x41,0x48,0x4C,0x50,  /* 000001F8    "`BUFAHLP" */
    5.82 +    0x31,0x42,0x55,0x46,0x30,0x60,0x75,0x60,  /* 00000200    "1BUF0`u`" */
    5.83 +    0x14,0x1F,0x48,0x4C,0x50,0x33,0x02,0xA0,  /* 00000208    "..HLP3.." */
    5.84 +    0x18,0x95,0x69,0x87,0x68,0x8C,0x68,0x69,  /* 00000210    "..i.h.hi" */
    5.85 +    0x54,0x4D,0x50,0x31,0x70,0x57,0x50,0x52,  /* 00000218    "TMP1pWPR" */
    5.86 +    0x54,0x0A,0x7D,0x00,0x54,0x4D,0x50,0x31,  /* 00000220    "T.}.TMP1" */
    5.87 +    0x14,0x23,0x48,0x4C,0x50,0x34,0x00,0x70,  /* 00000228    ".#HLP4.p" */
    5.88 +    0x00,0x60,0xA2,0x19,0x95,0x60,0x42,0x55,  /* 00000230    ".`...`BU" */
    5.89 +    0x46,0x42,0x72,0x42,0x55,0x46,0x41,0x60,  /* 00000238    "FBrBUFA`" */
    5.90 +    0x61,0x48,0x4C,0x50,0x33,0x42,0x55,0x46,  /* 00000240    "aHLP3BUF" */
    5.91 +    0x30,0x61,0x75,0x60,0x14,0x42,0x04,0x48,  /* 00000248    "0au`.B.H" */
    5.92 +    0x4C,0x50,0x35,0x00,0x48,0x4C,0x50,0x32,  /* 00000250    "LP5.HLP2" */
    5.93 +    0x70,0x57,0x50,0x52,0x54,0x0A,0x79,0x00,  /* 00000258    "pWPRT.y." */
    5.94 +    0x42,0x55,0x46,0x42,0x72,0x42,0x55,0x46,  /* 00000260    "BUFBrBUF" */
    5.95 +    0x41,0x42,0x55,0x46,0x42,0x60,0xA0,0x1C,  /* 00000268    "ABUFB`.." */
    5.96 +    0x95,0x87,0x42,0x55,0x46,0x30,0x60,0x70,  /* 00000270    "..BUF0`p" */
    5.97 +    0x87,0x42,0x55,0x46,0x30,0x60,0x74,0x60,  /* 00000278    ".BUF0`t`" */
    5.98 +    0x42,0x55,0x46,0x41,0x60,0x70,0x60,0x42,  /* 00000280    "BUFA`p`B" */
    5.99 +    0x55,0x46,0x42,0x48,0x4C,0x50,0x34,0x14,  /* 00000288    "UFBHLP4." */
   5.100 +    0x32,0x48,0x4C,0x50,0x36,0x00,0x70,0x42,  /* 00000290    "2HLP6.pB" */
   5.101 +    0x55,0x46,0x41,0x60,0x75,0x60,0xA0,0x21,  /* 00000298    "UFA`u`.!" */
   5.102 +    0x92,0x94,0x60,0x87,0x42,0x55,0x46,0x30,  /* 000002A0    "..`.BUF0" */
   5.103 +    0x8C,0x42,0x55,0x46,0x30,0x42,0x55,0x46,  /* 000002A8    ".BUF0BUF" */
   5.104 +    0x41,0x54,0x4D,0x50,0x31,0x70,0x60,0x42,  /* 000002B0    "ATMP1p`B" */
   5.105 +    0x55,0x46,0x41,0xA4,0x54,0x4D,0x50,0x31,  /* 000002B8    "UFA.TMP1" */
   5.106 +    0xA4,0x00,0x14,0x35,0x48,0x4C,0x50,0x37,  /* 000002C0    "...5HLP7" */
   5.107 +    0x00,0x70,0x42,0x55,0x46,0x41,0x60,0x72,  /* 000002C8    ".pBUFA`r" */
   5.108 +    0x60,0x0A,0x04,0x60,0xA0,0x21,0x92,0x94,  /* 000002D0    "`..`.!.." */
   5.109 +    0x60,0x87,0x42,0x55,0x46,0x30,0x8A,0x42,  /* 000002D8    "`.BUF0.B" */
   5.110 +    0x55,0x46,0x30,0x42,0x55,0x46,0x41,0x53,  /* 000002E0    "UF0BUFAS" */
   5.111 +    0x58,0x32,0x32,0x70,0x60,0x42,0x55,0x46,  /* 000002E8    "X22p`BUF" */
   5.112 +    0x41,0xA4,0x53,0x58,0x32,0x32,0xA4,0x00,  /* 000002F0    "A.SX22.." */
   5.113 +    0x14,0x1C,0x48,0x4C,0x50,0x38,0x02,0xA0,  /* 000002F8    "..HLP8.." */
   5.114 +    0x15,0x95,0x69,0x87,0x68,0x8C,0x68,0x69,  /* 00000300    "..i.h.hi" */
   5.115 +    0x54,0x4D,0x50,0x31,0x70,0x48,0x4C,0x50,  /* 00000308    "TMP1pHLP" */
   5.116 +    0x36,0x54,0x4D,0x50,0x31,0x14,0x16,0x48,  /* 00000310    "6TMP1..H" */
   5.117 +    0x4C,0x50,0x39,0x02,0x70,0x00,0x60,0xA2,  /* 00000318    "LP9.p.`." */
   5.118 +    0x0C,0x95,0x60,0x69,0x48,0x4C,0x50,0x38,  /* 00000320    "..`iHLP8" */
   5.119 +    0x68,0x60,0x75,0x60,0x14,0x22,0x48,0x4C,  /* 00000328    "h`u`."HL" */
   5.120 +    0x50,0x41,0x00,0x70,0x48,0x4C,0x50,0x36,  /* 00000330    "PA.pHLP6" */
   5.121 +    0x60,0x08,0x54,0x4D,0x50,0x5F,0x11,0x02,  /* 00000338    "`.TMP_.." */
   5.122 +    0x60,0x48,0x4C,0x50,0x39,0x54,0x4D,0x50,  /* 00000340    "`HLP9TMP" */
   5.123 +    0x5F,0x60,0xA4,0x54,0x4D,0x50,0x5F,0x14,  /* 00000348    "_`.TMP_." */
   5.124 +    0x0C,0x52,0x45,0x4C,0x5F,0x00,0x5B,0x27,  /* 00000350    ".REL_.['" */
   5.125 +    0x53,0x59,0x4E,0x43,0x5B,0x82,0x3C,0x41,  /* 00000358    "SYNC[.<A" */
   5.126 +    0x43,0x5F,0x5F,0x08,0x5F,0x48,0x49,0x44,  /* 00000360    "C__._HID" */
   5.127 +    0x0D,0x41,0x43,0x50,0x49,0x30,0x30,0x30,  /* 00000368    ".ACPI000" */
   5.128 +    0x33,0x00,0x08,0x5F,0x50,0x43,0x4C,0x12,  /* 00000370    "3.._PCL." */
   5.129 +    0x0F,0x03,0x5C,0x5F,0x53,0x42,0x5F,0x42,  /* 00000378    "..\_SB_B" */
   5.130 +    0x41,0x54,0x30,0x42,0x41,0x54,0x31,0x14,  /* 00000380    "AT0BAT1." */
   5.131 +    0x08,0x5F,0x50,0x53,0x52,0x00,0xA4,0x00,  /* 00000388    "._PSR..." */
   5.132 +    0x14,0x09,0x5F,0x53,0x54,0x41,0x00,0xA4,  /* 00000390    ".._STA.." */
   5.133 +    0x0A,0x0F,0x08,0x42,0x49,0x46,0x50,0x12,  /* 00000398    "...BIFP." */
   5.134 +    0x02,0x0D,0x14,0x49,0x0C,0x42,0x49,0x46,  /* 000003A0    "...I.BIF" */
   5.135 +    0x5F,0x01,0x41,0x43,0x51,0x52,0x49,0x4E,  /* 000003A8    "_.ACQRIN" */
   5.136 +    0x49,0x54,0x01,0x49,0x4E,0x49,0x54,0x68,  /* 000003B0    "IT.INITh" */
   5.137 +    0x48,0x4C,0x50,0x35,0x70,0x48,0x4C,0x50,  /* 000003B8    "HLP5pHLP" */
   5.138 +    0x37,0x88,0x42,0x49,0x46,0x50,0x00,0x00,  /* 000003C0    "7.BIFP.." */
   5.139 +    0x70,0x48,0x4C,0x50,0x37,0x88,0x42,0x49,  /* 000003C8    "pHLP7.BI" */
   5.140 +    0x46,0x50,0x01,0x00,0x70,0x48,0x4C,0x50,  /* 000003D0    "FP..pHLP" */
   5.141 +    0x37,0x88,0x42,0x49,0x46,0x50,0x0A,0x02,  /* 000003D8    "7.BIFP.." */
   5.142 +    0x00,0x70,0x48,0x4C,0x50,0x37,0x88,0x42,  /* 000003E0    ".pHLP7.B" */
   5.143 +    0x49,0x46,0x50,0x0A,0x03,0x00,0x70,0x48,  /* 000003E8    "IFP...pH" */
   5.144 +    0x4C,0x50,0x37,0x88,0x42,0x49,0x46,0x50,  /* 000003F0    "LP7.BIFP" */
   5.145 +    0x0A,0x04,0x00,0x70,0x48,0x4C,0x50,0x37,  /* 000003F8    "...pHLP7" */
   5.146 +    0x88,0x42,0x49,0x46,0x50,0x0A,0x05,0x00,  /* 00000400    ".BIFP..." */
   5.147 +    0x70,0x48,0x4C,0x50,0x37,0x88,0x42,0x49,  /* 00000408    "pHLP7.BI" */
   5.148 +    0x46,0x50,0x0A,0x06,0x00,0x70,0x48,0x4C,  /* 00000410    "FP...pHL" */
   5.149 +    0x50,0x37,0x88,0x42,0x49,0x46,0x50,0x0A,  /* 00000418    "P7.BIFP." */
   5.150 +    0x07,0x00,0x70,0x48,0x4C,0x50,0x37,0x88,  /* 00000420    "..pHLP7." */
   5.151 +    0x42,0x49,0x46,0x50,0x0A,0x08,0x00,0x70,  /* 00000428    "BIFP...p" */
   5.152 +    0x48,0x4C,0x50,0x41,0x88,0x42,0x49,0x46,  /* 00000430    "HLPA.BIF" */
   5.153 +    0x50,0x0A,0x09,0x00,0x70,0x48,0x4C,0x50,  /* 00000438    "P...pHLP" */
   5.154 +    0x41,0x88,0x42,0x49,0x46,0x50,0x0A,0x0A,  /* 00000440    "A.BIFP.." */
   5.155 +    0x00,0x70,0x48,0x4C,0x50,0x41,0x88,0x42,  /* 00000448    ".pHLPA.B" */
   5.156 +    0x49,0x46,0x50,0x0A,0x0B,0x00,0x70,0x48,  /* 00000450    "IFP...pH" */
   5.157 +    0x4C,0x50,0x41,0x88,0x42,0x49,0x46,0x50,  /* 00000458    "LPA.BIFP" */
   5.158 +    0x0A,0x0C,0x00,0x52,0x45,0x4C,0x5F,0xA4,  /* 00000460    "...REL_." */
   5.159 +    0x42,0x49,0x46,0x50,0x5B,0x82,0x4F,0x0B,  /* 00000468    "BIFP[.O." */
   5.160 +    0x42,0x41,0x54,0x30,0x08,0x5F,0x48,0x49,  /* 00000470    "BAT0._HI" */
   5.161 +    0x44,0x0C,0x41,0xD0,0x0C,0x0A,0x08,0x5F,  /* 00000478    "D.A...._" */
   5.162 +    0x55,0x49,0x44,0x01,0x08,0x5F,0x50,0x43,  /* 00000480    "UID.._PC" */
   5.163 +    0x4C,0x12,0x07,0x01,0x5C,0x5F,0x53,0x42,  /* 00000488    "L...\_SB" */
   5.164 +    0x5F,0x14,0x14,0x5F,0x53,0x54,0x41,0x00,  /* 00000490    "_.._STA." */
   5.165 +    0x70,0x5C,0x2E,0x5F,0x53,0x42,0x5F,0x50,  /* 00000498    "p\._SB_P" */
   5.166 +    0x38,0x38,0x5F,0x60,0xA4,0x60,0x14,0x0F,  /* 000004A0    "88_`.`.." */
   5.167 +    0x5F,0x42,0x49,0x46,0x00,0x70,0x42,0x49,  /* 000004A8    "_BIF.pBI" */
   5.168 +    0x46,0x5F,0x01,0x60,0xA4,0x60,0x14,0x46,  /* 000004B0    "F_.`.`.F" */
   5.169 +    0x07,0x5F,0x42,0x53,0x54,0x00,0x70,0x01,  /* 000004B8    "._BST.p." */
   5.170 +    0x5C,0x2E,0x5F,0x53,0x42,0x5F,0x44,0x42,  /* 000004C0    "\._SB_DB" */
   5.171 +    0x47,0x31,0x41,0x43,0x51,0x52,0x49,0x4E,  /* 000004C8    "G1ACQRIN" */
   5.172 +    0x49,0x54,0x0A,0x02,0x49,0x4E,0x49,0x54,  /* 000004D0    "IT..INIT" */
   5.173 +    0x01,0x48,0x4C,0x50,0x35,0x08,0x42,0x53,  /* 000004D8    ".HLP5.BS" */
   5.174 +    0x54,0x30,0x12,0x02,0x04,0x70,0x48,0x4C,  /* 000004E0    "T0...pHL" */
   5.175 +    0x50,0x37,0x88,0x42,0x53,0x54,0x30,0x00,  /* 000004E8    "P7.BST0." */
   5.176 +    0x00,0x70,0x48,0x4C,0x50,0x37,0x88,0x42,  /* 000004F0    ".pHLP7.B" */
   5.177 +    0x53,0x54,0x30,0x01,0x00,0x70,0x48,0x4C,  /* 000004F8    "ST0..pHL" */
   5.178 +    0x50,0x37,0x88,0x42,0x53,0x54,0x30,0x0A,  /* 00000500    "P7.BST0." */
   5.179 +    0x02,0x00,0x70,0x48,0x4C,0x50,0x37,0x88,  /* 00000508    "..pHLP7." */
   5.180 +    0x42,0x53,0x54,0x30,0x0A,0x03,0x00,0x52,  /* 00000510    "BST0...R" */
   5.181 +    0x45,0x4C,0x5F,0x70,0x0A,0x02,0x5C,0x2E,  /* 00000518    "EL_p..\." */
   5.182 +    0x5F,0x53,0x42,0x5F,0x44,0x42,0x47,0x31,  /* 00000520    "_SB_DBG1" */
   5.183 +    0xA4,0x42,0x53,0x54,0x30,0x5B,0x82,0x47,  /* 00000528    ".BST0[.G" */
   5.184 +    0x0A,0x42,0x41,0x54,0x31,0x08,0x5F,0x48,  /* 00000530    ".BAT1._H" */
   5.185 +    0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0A,0x08,  /* 00000538    "ID.A...." */
   5.186 +    0x5F,0x55,0x49,0x44,0x0A,0x02,0x08,0x5F,  /* 00000540    "_UID..._" */
   5.187 +    0x50,0x43,0x4C,0x12,0x07,0x01,0x5C,0x5F,  /* 00000548    "PCL...\_" */
   5.188 +    0x53,0x42,0x5F,0x14,0x09,0x5F,0x53,0x54,  /* 00000550    "SB_.._ST" */
   5.189 +    0x41,0x00,0xA4,0x0A,0x0F,0x14,0x19,0x5F,  /* 00000558    "A......_" */
   5.190 +    0x42,0x49,0x46,0x00,0x70,0x5C,0x2E,0x5F,  /* 00000560    "BIF.p\._" */
   5.191 +    0x53,0x42,0x5F,0x50,0x42,0x32,0x5F,0x60,  /* 00000568    "SB_PB2_`" */
   5.192 +    0xA4,0x42,0x49,0x46,0x5F,0x0A,0x02,0x14,  /* 00000570    ".BIF_..." */
   5.193 +    0x4E,0x05,0x5F,0x42,0x53,0x54,0x00,0x41,  /* 00000578    "N._BST.A" */
   5.194 +    0x43,0x51,0x52,0x49,0x4E,0x49,0x54,0x0A,  /* 00000580    "CQRINIT." */
   5.195 +    0x02,0x49,0x4E,0x49,0x54,0x0A,0x02,0x48,  /* 00000588    ".INIT..H" */
   5.196 +    0x4C,0x50,0x35,0x08,0x42,0x53,0x54,0x31,  /* 00000590    "LP5.BST1" */
   5.197 +    0x12,0x02,0x04,0x70,0x48,0x4C,0x50,0x37,  /* 00000598    "...pHLP7" */
   5.198 +    0x88,0x42,0x53,0x54,0x31,0x00,0x00,0x70,  /* 000005A0    ".BST1..p" */
   5.199 +    0x48,0x4C,0x50,0x37,0x88,0x42,0x53,0x54,  /* 000005A8    "HLP7.BST" */
   5.200 +    0x31,0x01,0x00,0x70,0x48,0x4C,0x50,0x37,  /* 000005B0    "1..pHLP7" */
   5.201 +    0x88,0x42,0x53,0x54,0x31,0x0A,0x02,0x00,  /* 000005B8    ".BST1..." */
   5.202 +    0x70,0x48,0x4C,0x50,0x37,0x88,0x42,0x53,  /* 000005C0    "pHLP7.BS" */
   5.203 +    0x54,0x31,0x0A,0x03,0x00,0x52,0x45,0x4C,  /* 000005C8    "T1...REL" */
   5.204 +    0x5F,0xA4,0x42,0x53,0x54,0x31,
   5.205 +};
     6.1 --- a/tools/python/xen/xend/XendConfig.py	Tue Oct 14 10:45:29 2008 +0100
     6.2 +++ b/tools/python/xen/xend/XendConfig.py	Tue Oct 14 11:08:15 2008 +0100
     6.3 @@ -163,6 +163,7 @@ XENAPI_PLATFORM_CFG_TYPES = {
     6.4      'vhpt': int,
     6.5      'guest_os_type': str,
     6.6      'hap': int,
     6.7 +    'xen_extended_power_mgmt': int,
     6.8  }
     6.9  
    6.10  # Xen API console 'other_config' keys.
     7.1 --- a/tools/python/xen/xend/image.py	Tue Oct 14 10:45:29 2008 +0100
     7.2 +++ b/tools/python/xen/xend/image.py	Tue Oct 14 11:08:15 2008 +0100
     7.3 @@ -250,6 +250,14 @@ class ImageHandler:
     7.4      def parseDeviceModelArgs(self, vmConfig):
     7.5          ret = ["-domain-name", str(self.vm.info['name_label'])]
     7.6  
     7.7 +        xen_extended_power_mgmt = int(vmConfig['platform'].get(
     7.8 +            'xen_extended_power_mgmt', 0))
     7.9 +        if xen_extended_power_mgmt != 0:
    7.10 +             xstransact.Store("/local/domain/0/device-model/%i"
    7.11 +                              % self.vm.getDomid(),
    7.12 +                              ('xen_extended_power_mgmt',
    7.13 +                               xen_extended_power_mgmt))
    7.14 +
    7.15          # Find RFB console device, and if it exists, make QEMU enable
    7.16          # the VNC console.
    7.17          if int(vmConfig['platform'].get('nographic', 0)) != 0:
     8.1 --- a/tools/python/xen/xm/create.py	Tue Oct 14 10:45:29 2008 +0100
     8.2 +++ b/tools/python/xen/xm/create.py	Tue Oct 14 11:08:15 2008 +0100
     8.3 @@ -862,7 +862,7 @@ def configure_hvm(config_image, vals):
     8.4               'sdl', 'display', 'xauthority', 'rtc_timeoffset', 'monitor',
     8.5               'acpi', 'apic', 'usb', 'usbdevice', 'keymap', 'pci', 'hpet',
     8.6               'guest_os_type', 'hap', 'opengl', 'cpuid', 'cpuid_check',
     8.7 -             'viridian' ]
     8.8 +             'viridian', 'xen_extended_power_mgmt' ]
     8.9  
    8.10      for a in args:
    8.11          if a in vals.__dict__ and vals.__dict__[a] is not None: