[libvirt] the guest killed itself

Daniel P. Berrange berrange at redhat.com
Thu May 5 09:25:56 UTC 2011


On Wed, May 04, 2011 at 10:17:39PM +0800, guan qin wrote:
> Hi,
> I try to use VT-d, but meet with a strange problem .
> 
> I create a VM through "virsh create ***.xml",as follows:
> root at shahe26:~# virsh create vt_d_debian.xml
> Domain vt_d_debian created from vt_d_debian.xml
> user.log:
> May  4 06:53:30 shahe26 libvirtd: 06:53:30.649: warning :
> qemudParsePCIDeviceStrs:1422 : Unexpected exit status '1', qemu probably
> failed
> May  4 06:53:30 shahe26 libvirtd: 06:53:30.805: warning :
> qemudParsePCIDeviceStrs:1422 : Unexpected exit status '1', qemu probably
> failed
> May  4 06:53:38 shahe26 libvirtd: 06:53:38.393: error :
> qemuMonitorCommandWithHandler:255 : cannot send monitor command 'info
> balloon': Connection reset by peer
> May  4 06:53:38 shahe26 libvirtd: 06:53:38.393: error :
> qemuMonitorTextGetBalloonInfo:555 : operation failed: could not query memory
> balloon allocation

This indicates that QEMU shutdown immediately after being launched.

> libvirt/qemu/vt_d_debian.log
> LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
> HOME=/ QEMU_AUDIO_DRV=none /usr/bin/kvm -S -M pc-0.12 -enable-kvm -m 512
> -smp 1,sockets=1,cores=1,threads=1 -name vt_d_debian -uuid
> 5ed196df-319b-7be2-28f4-a070e0ca9d77 -nodefaults -chardev
> socket,id=monitor,path=/var/lib/libvirt/qemu/vt_d_debian.monitor,server,nowait
> -mon chardev=monitor,mode=readline -rtc base=utc -boot c -drive
> file=/root/debian_dev.img,if=none,id=drive-virtio-disk0,boot=on,format=raw
> -device
> virtio-blk-pci,bus=pci.0,addr=0x3,drive=drive-virtio-disk0,id=virtio-disk0
> -usb -device usb-mouse,id=input0 -vnc 127.0.0.1:0 -vga cirrus -device
> pci-assign,host=02:00.1,id=hostdev0,bus=pci.0,addr=0x4 -device
> virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
> Failed to assign irq for "hostdev0": Operation not permitted
> Perhaps you are assigning a device that shares an IRQ with another device?
> Failed to assign irq for "hostdev0": Operation not permitted
> Perhaps you are assigning a device that shares an IRQ with another device?
> Failed to assign irq for "hostdev0": Operation not permitted
> Perhaps you are assigning a device that shares an IRQ with another device?
> Failed to assign irq for "hostdev0": Operation not permitted
> Perhaps you are assigning a device that shares an IRQ with another device?
> Failed to assign irq for "hostdev0": Operation not permitted
> Perhaps you are assigning a device that shares an IRQ with another device?
> Failed to assign irq for "hostdev0": Operation not permitted
> Perhaps you are assigning a device that shares an IRQ with another device?
> Failed to assign irq for "hostdev0": Operation not permitted
> Perhaps you are assigning a device that shares an IRQ with another device?
> Failed to assign irq for "hostdev0": Operation not permitted
> Perhaps you are assigning a device that shares an IRQ with another device?
> Failed to assign irq for "hostdev0": Operation not permitted
> Perhaps you are assigning a device that shares an IRQ with another device?
> Failed to assign irq for "hostdev0": Operation not permitted
> Perhaps you are assigning a device that shares an IRQ with another device?
> Failed to assign irq for "hostdev0": Operation not permitted
> Perhaps you are assigning a device that shares an IRQ with another device?
> assigned_dev_pci_read_config: pread failed, ret = 0 errno = 1

This pretty much tells us the problem is with the PCI device you
tried to assign to the guest.

> dmesg information is in the  attached file dmesg.
> 
> <domain type='kvm'>
>         <name>vt_d_debian</name>
>         <description>just test using sriov!</description>
>         <os>
>                 <type>hvm</type>
>                 <boot dev='hd'/>
>         </os>
> 
>         <memory>524288</memory>
>         <currentMemory>524288</currentMemory>
>         <on_poweroff>destroy</on_poweroff>
>         <on_reboot>restart</on_reboot>
>         <on_crash>restart</on_crash>
> 
>         <features><pae/><acpi/><apic/></features>
>         <clock offset='utc'/>
>         <devices>
>                 <input type='mouse' bus='usb'/>
>                 <disk type='file' device='disk'>
>                         <source file='/root/debian_dev.img'/>
> 
>                         <!-->  use virtio or /'ide' in ide io </!-->
>                         <target dev='hda' bus='virtio'/>
>                 </disk>
> 
>                 <emulator>/usr/bin/kvm</emulator>
>                 <graphics type='vnc' port='-1'/>
> 
>                 <!-->
>                         VT-d or sr-iov assign a pci device just use the
> hostdev element!
>                         When managed is "yes" for a PCI device,
>                         it is detached from the host before being passed on
> to the guest.
>                 </!-->
>                 <hostdev mode='subsystem' type='pci' managed='yes'>
>                         <source>
>                                 <address bus='0x2' slot='0x0'
> function='0x1'/>
>                         </source>
>                 </hostdev>

You don't mention what version of libvirt / kvm you have ... ?

If you have oldish versions, you might need to edit /etc/libvirt/qemu.conf
and set 'clear_emulator_capabilities = 0', and user=0, group=0 to make QEMU
run as root with full privileges.

Newer versions can run fully unprivileged.

The other possibility is that this PCI device really *is* sharing an
IRQ with another device on your host, in which case you're more or
less out of luck & can't assign this device.


Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|



More information about the libvir-list mailing list