
Hello, I tried to install "Microsoft Windows 2008 Server R2" on an Amd64 host using Xen-3.4.3. The installation aborted with the following error message:
Windows Boot Mager ... File: \windows\system32\boot\winload.exe Status: 0xc000035a Info: Attempting to load a 64-bit application, however this CPU is not compatible with 64-bit mode.
For testing I converted the libvirt-XML file to an Xen-Xm file using "virsh domxml-to-native" and started that file with "xm create", which worked. Comparing the output of "xm list -a" of the broken libvirt- and the working xm-configuration I found several differences, especially with "pae": Using "xm create" pae is set to 1, while with libvirt pae is set to 0. After adding the /domain/featues/pae node to libvirts XML domain file, Windows installed fine. Looking at "virsh capabilities" I get the following (abbreviated) output:
<capabilities> <guest> <os_type>hvm</os_type> <arch name='i686'> <wordsize>32</wordsize> ... </arch> <features> <pae/> <nonpae/> <acpi default='on' toggle='yes'/> <apic default='on' toggle='yes'/> </features> </guest> <guest> <os_type>hvm</os_type> <arch name='x86_64'> <wordsize>64</wordsize> ... </arch> <features> <acpi default='on' toggle='yes'/> <apic default='on' toggle='yes'/> </features> </guest> </capabilities>
As you can see, neither "<pae/>" nor "<nopae/>" is listed for for the 64 bit Xen-Fv domain type, which makes it hard to automatically create a correct _and_ _working_ XML file for Xen-Fv-64 bit domains Looking at "/sys/hypervisor/properties/capabilities" I find the following capabilities reported by Xen
xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64
There's also no "hvm-3.0-x86_64p" which makes me wonder, if "<pae/>" is the default for Xen-64 bit domains. If that is true, should libvirt add "<pae/"> by default to the capabilities report, or should libvirt silently pass "(pae 1)" when pushing the XML domain description to Xend? Lookign at <file:xen-3.4.3/tools/python/xen/xm/create.py>:210 I see that "pae" is enabled by default there, and thus gets enabled for each domain using "xm create":
gopts.var('pae', val='PAE', fn=set_int, default=1, use="Disable or enable PAE of HVM domain.")
Any feedback is appreciated. BYtE Philipp -- Philipp Hahn Open Source Software Engineer hahn@univention.de Univention GmbH Linux for Your Business fon: +49 421 22 232- 0 Mary-Somerville-Str.1 28359 Bremen fax: +49 421 22 232-99 http://www.univention.de