[libvirt] [BUG] Xen x86_64 needs PAE?
Philipp Hahn
hahn at univention.de
Tue Aug 24 15:04:04 UTC 2010
Hello,
Am Dienstag 24 August 2010 14:12:24 schrieb Daniel P. Berrange:
> If you can provide the 'xm' config file, the libvirt XML and the output
> of 'xm list --list $GUESTNAME' when the guest is succesfully running we
> can add a test case to validate this PAE setup & fix the xen driver.
I attached 8 files:
1. xen-fv-w2k8.broken.xml is my initial file, which was used with 'virsh
define' + 'virsh start'.
2. xen-fv-w2k8.broken.xm was created using "virsh domxml-to-native xen-xm"
3. xen-fv-w2k8.broken.dump was created using "xm list --long Windows2008r2_64"
4. xen-fv-w2k8.fixed.xml with just '<pae/>' added, 'virsh define' + 'virsh
start'.
5.-6. xen-fv-w2k8.fixed.{xm,dump} analog to above.
7. xen-fv-w2k8.clean.xm is without the pae=[01] line, so 'xm create' uses it's
default.
8. xen-fv-w2k8.clean.dump of 'xm list --long' after 'xm create'
501 root at xen1=xen64:~ 0# xm info
host : xen1
release : 2.6.32-ucs11-xen-amd64
version : #1 SMP Sat Jul 31 07:49:13 UTC 2010
machine : x86_64
hw_caps :
078bf3ff:ebd3fbff:00000000:00000010:00002001:0000001d:0000001d:00000000
virt_caps : hvm
xen_major : 3
xen_minor : 4
xen_extra : .3
xen_caps : 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
> In 64-bit Xen, the pae flag indicates whether the CPU exposed supports
> long mode. So if you don't set the PAE flag on 64-bit Xen, you get a
> 32-bit PAE guest. If you do set the PAE flag, you get a 64-bit guest.
> Yes, you read that right, not setting PAE, gets you a PAE enabled guest
> just with 32 instead of 64 bits :-)
>
> In terms of the domain XML design, the choice between 32 and 64 bits is
> intended to be done based on the arch field:
>
> <os>
> <type arch='x86_64'...
> ...
> </os>
That is what I expected as well: neither for Windows 2k8 nor for Linux would I
get a 64 bit guest. Only after adding the <pae/> feature it worked.
Perhaps related: Setting "arch=x86_64" for Xen domains never made a difference
for me: On the next "virsh dumpxml" that attribute was gone again making it
impossible to distinguish between 32 and 64 bit Xen domains.
> The pae flag in domain XML should be reflecting whether pae is enabled
> in the guest.
If I understand pae right, x86_64 used a page-table-layout very similar to
x86_32+pae, which makes doing the Virtual Memory mapping between host and
guests easy. For x86_32 without pae you'd need to do some heavy reshuffling,
because the page tables would be totally different.
I noticed the pae problem during my testing: guests started via "xm
create/start" ran fast, while guestss started via "virsh start" were very
slow. As soon as one non-pae-guest was running, the whole system got
unresponsive. It seemed to be related to the memory size, since running a
guest with 128M or 512M made a huge difference.
> The capabilities XML should be reporting whether the guest ABI includes
> the PAE flag or not. So I think the 32bit capabilities shouldn't have
> included <nonpae/> there, and perhaps 64-bit should have had <pae/>.
> Ultimately though I think our mistake is in passing the <pae> flag from
> the domain XML, straight through to the hypervisor. I'm rather wary of
> changing this, because of the risk of regressions, but if you can supply
> the 3 files I asked for above, we can investigate whether its feasible
The missing <pae/> is translated to pae=0, which overwrites Xens default.
Because of that my code currently tests for xen on x86_64 and than always
adds <pae/> to make it work. My expectation would be that the capabilities
XML should thus report <pae/>, if an application is supposed to add the
<pae/> feature to get an 64 bit xen-fv domain.
Sincerely
Philipp
--
Philipp Hahn Open Source Software Engineer hahn at 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
****
Besuchen Sie unsere Praxis-Vorträge zu UCS at School auf der FIT-ÖV
am 23.09.2010 im Haus der Wissenschaft in Bremen
****
-------------- next part --------------
(domain
(domid 7)
(on_crash destroy)
(uuid 23b87d01-7ba3-91f3-bf7b-d87b57a2893e)
(bootloader_args )
(vcpus 1)
(name Windows2008r2_64)
(on_poweroff destroy)
(on_reboot restart)
(cpus (()))
(bootloader )
(maxmem 512)
(memory 512)
(shadow_memory 5)
(features )
(on_xend_start ignore)
(on_xend_stop ignore)
(start_time 1282658955.15)
(cpu_time 47.385983162)
(online_vcpus 1)
(image
(hvm
(kernel )
(hpet 0)
(loader /usr/lib/xen/boot/hvmloader)
(serial none)
(xen_platform_pci 1)
(boot d)
(rtc_timeoffset 0)
(vpt_align 1)
(viridian 0)
(acpi 1)
(timer_mode 1)
(apic 1)
(device_model /usr/lib/xen/bin/qemu-dm)
(usb 1)
(notes (SUSPEND_CANCEL 1))
)
)
(status 2)
(state ------)
(store_mfn 1044476)
(device
(vbd
(uuid 97bd2675-aea3-4188-581a-dd582f3ab07a)
(bootable 1)
(dev hdc:cdrom)
(uname
file:/mnt/omar/vmwares/iso-images/windows/server/windows2008-server-R2_x64.iso
)
(mode r)
(backend 0)
(bootable 1)
(VDI )
)
)
(device (vkbd (backend 0)))
(device
(vfb
(vncunused 1)
(vnc 1)
(uuid 7a30ad9b-5602-25f3-830f-b0907ada3a9a)
(vnclisten 0.0.0.0)
(keymap de)
(location 0.0.0.0:5901)
)
)
(device
(console
(protocol vt100)
(location 3)
(uuid ac762039-ee53-c3db-04ee-8adce3eef48d)
)
)
)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: xen-fv-w2k8.broken.xml
Type: text/xml
Size: 732 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20100824/65315635/attachment-0002.xml>
-------------- next part --------------
name = "Windows2008r2_64"
uuid = "7d9dd677-8e0f-d6d9-361a-743731926b01"
maxmem = 512
memory = 512
vcpus = 1
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "d"
pae = 1
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "destroy"
device_model = "/usr/lib/xen/bin/qemu-dm"
vfb = [ "type=vnc,vncunused=1,vnclisten=0.0.0.0,keymap=de" ]
disk = [ "file:/mnt/omar/vmwares/iso-images/windows/server/windows2008-server-R2_x64.iso,hdc:cdrom,r" ]
parallel = "none"
serial = "none"
-------------- next part --------------
name = "Windows2008r2_64"
uuid = "29b2279b-e48d-dcfa-7f56-05f98ba67e03"
maxmem = 512
memory = 512
vcpus = 1
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "d"
pae = 0
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "destroy"
device_model = "/usr/lib/xen/bin/qemu-dm"
vfb = [ "type=vnc,vncunused=1,vnclisten=0.0.0.0,keymap=de" ]
disk = [ "file:/mnt/omar/vmwares/iso-images/windows/server/windows2008-server-R2_x64.iso,hdc:cdrom,r" ]
parallel = "none"
serial = "none"
-------------- next part --------------
(domain
(domid 8)
(on_crash destroy)
(uuid f7947af3-cb0d-cbf5-d9d2-89c456c5b651)
(bootloader_args )
(vcpus 1)
(name Windows2008r2_64)
(on_poweroff destroy)
(on_reboot restart)
(cpus (()))
(bootloader )
(maxmem 512)
(memory 512)
(shadow_memory 5)
(features )
(on_xend_start ignore)
(on_xend_stop ignore)
(start_time 1282659343.81)
(cpu_time 5.802432395)
(online_vcpus 1)
(image
(hvm
(kernel )
(hpet 0)
(loader /usr/lib/xen/boot/hvmloader)
(serial none)
(xen_platform_pci 1)
(boot d)
(rtc_timeoffset 0)
(pae 1)
(vpt_align 1)
(viridian 0)
(acpi 1)
(timer_mode 1)
(apic 1)
(device_model /usr/lib/xen/bin/qemu-dm)
(usb 1)
(notes (SUSPEND_CANCEL 1))
)
)
(status 2)
(state ------)
(store_mfn 1044476)
(device
(vbd
(uuid e6799aba-4fe3-2201-d9ea-cf9cb4caeb80)
(bootable 1)
(dev hdc:cdrom)
(uname
file:/mnt/omar/vmwares/iso-images/windows/server/windows2008-server-R2_x64.iso
)
(mode r)
(backend 0)
(bootable 1)
(VDI )
)
)
(device (vkbd (backend 0)))
(device
(vfb
(vncunused 1)
(vnc 1)
(uuid e47c5959-65a2-4648-35d0-af9a8daaa4ac)
(vnclisten 0.0.0.0)
(keymap de)
(location 0.0.0.0:5901)
)
)
(device
(console
(protocol vt100)
(location 3)
(uuid fc5ca1be-ea37-1f63-1fe8-87532a8e6444)
)
)
)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: xen-fv-w2k8.fixed.xml
Type: text/xml
Size: 727 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20100824/65315635/attachment-0003.xml>
-------------- next part --------------
(domain
(domid 9)
(on_crash destroy)
(uuid 29b2279b-e48d-dcfa-7f56-05f98ba67e03)
(bootloader_args )
(vcpus 1)
(name Windows2008r2_64)
(on_poweroff destroy)
(on_reboot restart)
(cpus (()))
(bootloader )
(maxmem 512)
(memory 512)
(shadow_memory 5)
(features )
(on_xend_start ignore)
(on_xend_stop ignore)
(start_time 1282660093.77)
(cpu_time 3.96672868)
(online_vcpus 1)
(image
(hvm
(kernel )
(videoram 4)
(hpet 0)
(stdvga 0)
(loader /usr/lib/xen/boot/hvmloader)
(serial none)
(vncunused 1)
(xen_platform_pci 1)
(boot d)
(rtc_timeoffset 0)
(pci ())
(pae 1)
(vpt_align 1)
(hap 1)
(viridian 0)
(acpi 1)
(localtime 0)
(timer_mode 1)
(nographic 0)
(guest_os_type default)
(pci_msitranslate 1)
(apic 1)
(monitor 0)
(device_model /usr/lib/xen/bin/qemu-dm)
(pci_power_mgmt 0)
(usb 0)
(xauthority /root/.Xauthority)
(isa 0)
(display localhost:11.0)
(notes (SUSPEND_CANCEL 1))
)
)
(status 2)
(state ------)
(store_mfn 1044476)
(device
(vbd
(uuid eae8524b-dc52-9a0d-51b9-402ffa44d39b)
(bootable 1)
(dev hdc:cdrom)
(uname
file:/mnt/omar/vmwares/iso-images/windows/server/windows2008-server-R2_x64.iso
)
(mode r)
(backend 0)
(bootable 1)
(VDI )
)
)
(device (vkbd (backend 0)))
(device
(vfb
(vncunused 1)
(vnc 1)
(xauthority /root/.Xauthority)
(vnclisten 0.0.0.0)
(keymap de)
(location 0.0.0.0:5901)
(display localhost:11.0)
(uuid 36927cc7-2555-71d4-055b-fab7087132fd)
)
)
(device
(console
(protocol vt100)
(location 3)
(uuid af0257cc-f976-96ac-fea1-f87e0a018ca3)
)
)
)
-------------- next part --------------
name = "Windows2008r2_64"
uuid = "29b2279b-e48d-dcfa-7f56-05f98ba67e03"
maxmem = 512
memory = 512
vcpus = 1
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "d"
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "destroy"
device_model = "/usr/lib/xen/bin/qemu-dm"
vfb = [ "type=vnc,vncunused=1,vnclisten=0.0.0.0,keymap=de" ]
disk = [ "file:/mnt/omar/vmwares/iso-images/windows/server/windows2008-server-R2_x64.iso,hdc:cdrom,r" ]
parallel = "none"
serial = "none"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20100824/65315635/attachment-0001.sig>
More information about the libvir-list
mailing list