kvm: freeze a guest with a NIC PCI passthrough
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
seabios (Ubuntu) |
Confirmed
|
High
|
Unassigned | ||
Precise |
Won't Fix
|
High
|
Unassigned |
Bug Description
After attach NIC to guest domain, this domain freeze and CPU load 100% on host system.
# virsh start w
# top
top - 19:08:14 up 28 min, 1 user, load average: 1.00, 0.97, 0.75
Tasks: 277 total, 1 running, 276 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.2%us, 1.2%sy, 0.0%ni, 97.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 99035416k total, 2537044k used, 96498372k free, 84844k buffers
Swap: 0k total, 0k used, 0k free, 484432k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21168 libvirt- 20 0 837m 544m 6916 S 103 0.6 9:57.66 kvm
# cat /etc/libvirt/
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh edit w
or other application using the libvirt API.
-->
<domain type='kvm'>
<name>w</name>
<uuid>
<memory>
<currentMemor
<vcpu>1</vcpu>
<os>
<type arch='x86_64' machine=
<boot dev='cdrom'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu match='exact'>
<model>
<vendor>
<feature policy='require' name='tm2'/>
<feature policy='require' name='est'/>
<feature policy='require' name='vmx'/>
<feature policy='require' name='ds'/>
<feature policy='require' name='ss'/>
<feature policy='require' name='vme'/>
<feature policy='require' name='rdtscp'/>
<feature policy='require' name='ht'/>
<feature policy='require' name='dca'/>
<feature policy='require' name='pbe'/>
<feature policy='require' name='tm'/>
<feature policy='require' name='monitor'/>
<feature policy='require' name='pdpe1gb'/>
<feature policy='require' name='ds_cpl'/>
<feature policy='require' name='xtpr'/>
<feature policy='require' name='acpi'/>
<feature policy='require' name='x2apic'/>
</cpu>
<clock offset='utc'/>
<on_poweroff>
<on_reboot>
<on_crash>
<devices>
<emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='writeback'/>
<source file='/
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' unit='0'/>
</disk>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<interface type='network'>
<mac address=
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5932' autoport='no' listen=
<listen type='address' address=
</graphics>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x03' slot='0x00' function='0x1'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</hostdev>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</memballoon>
</devices>
</domain>
# strace
read(21, 0x7fffd9558200, 16) = -1 EAGAIN (Resource temporarily unavailable)
read(7, "\16\0\
rt_sigaction(
write(9, "\1\0\0\0\0\0\0\0", 8) = 8
read(7, 0x7fffd9558180, 128) = -1 EAGAIN (Resource temporarily unavailable)
timer_gettime(0x1, {it_interval={0, 0}, it_value={0, 0}}) = 0
timer_settime(0x1, 0, {it_interval={0, 0}, it_value={0, 8640000}}, NULL) = 0
futex(0x7f218a2
select(24, [7 8 11 15 21 22 23], [], [], {1, 0}) = 1 (in [8], left {0, 999998})
read(21, 0x7fffd9558200, 16) = -1 EAGAIN (Resource temporarily unavailable)
read(8, "\1\0\0\0\0\0\0\0", 512) = 8
futex(0x7f218a2
select(24, [7 8 11 15 21 22 23], [], [], {1, 0}) = 1 (in [7], left {0, 991512})
read(21, 0x7fffd9558200, 16) = -1 EAGAIN (Resource temporarily unavailable)
read(7, "\16\0\
rt_sigaction(
write(9, "\1\0\0\0\0\0\0\0", 8) = 8
read(7, 0x7fffd9558180, 128) = -1 EAGAIN (Resource temporarily unavailable)
timer_gettime(0x1, {it_interval={0, 0}, it_value={0, 0}}) = 0
timer_settime(0x1, 0, {it_interval={0, 0}, it_value={0, 250000}}, NULL) = 0
timer_gettime(0x1, {it_interval={0, 0}, it_value={0, 228319}}) = 0
futex(0x7f218a2
select(24, [7 8 11 15 21 22 23], [], [], {1, 0}) = 1 (in [8], left {0, 999998})
read(21, 0x7fffd9558200, 16) = -1 EAGAIN (Resource temporarily unavailable)
read(8, "\1\0\0\0\0\0\0\0", 512) = 8
futex(0x7f218a2
select(24, [7 8 11 15 21 22 23], [], [], {1, 0}) = 1 (in [7], left {0, 999936})
read(21, 0x7fffd9558200, 16) = -1 EAGAIN (Resource temporarily unavailable)
read(7, "\16\0\
rt_sigaction(
write(9, "\1\0\0\0\0\0\0\0", 8) = 8
read(7, 0x7fffd9558180, 128) = -1 EAGAIN (Resource temporarily unavailable)
timer_gettime(0x1, {it_interval={0, 0}, it_value={0, 0}}) = 0
timer_settime(0x1, 0, {it_interval={0, 0}, it_value={0, 763493546}}, NULL) = 0
futex(0x7f218a2
select(24, [7 8 11 15 21 22 23], [], [], {1, 0}) = 1 (in [8], left {0, 999998})
read(21, 0x7fffd9558200, 16) = -1 EAGAIN (Resource temporarily unavailable)
read(8, "\1\0\0\0\0\0\0\0", 512) = 8
futex(0x7f218a2
select(24, [7 8 11 15 21 22 23], [], [], {1, 0}) = 1 (in [7], left {0, 236654})
read(21, 0x7fffd9558200, 16) = -1 EAGAIN (Resource temporarily unavailable)
read(7, "\16\0\
rt_sigaction(
write(9, "\1\0\0\0\0\0\0\0", 8) = 8
read(7, 0x7fffd9558180, 128) = -1 EAGAIN (Resource temporarily unavailable)
timer_gettime(0x1, {it_interval={0, 0}, it_value={0, 0}}) = 0
timer_settime(0x1, 0, {it_interval={0, 0}, it_value={0, 250000}}, NULL) = 0
timer_gettime(0x1, {it_interval={0, 0}, it_value={0, 225636}}) = 0
futex(0x7f218a2
select(24, [4 7 8 11 15 21 22 23], [], [], {1, 0}) = 2 (in [4 8], left {0, 999996})
read(21, 0x7fffd9558200, 16) = -1 EAGAIN (Resource temporarily unavailable)
read(4, 0x7fffd9557210, 1) = -1 EIO (Input/output error)
timer_gettime(0x1, {it_interval={0, 0}, it_value={0, 87734}}) = 0
read(8, "\1\0\0\0\0\0\0\0", 512) = 8
futex(0x7f218a2
select(24, [7 8 11 15 21 22 23], [], [], {1, 0}) = 1 (in [7], left {0, 999986})
read(21, 0x7fffd9558200, 16) = -1 EAGAIN (Resource temporarily unavailable)
read(7, "\16\0\
rt_sigaction(
write(9, "\1\0\0\0\0\0\0\0", 8) = 8
read(7, 0x7fffd9558180, 128) = -1 EAGAIN (Resource temporarily unavailable)
timer_gettime(0x1, {it_interval={0, 0}, it_value={0, 0}}) = 0
timer_settime(0x1, 0, {it_interval={0, 0}, it_value={0, 224423000}}, NULL) = 0
futex(0x7f218a2
select(24, [7 8 11 15 21 22 23], [], [], {1, 0}) = 1 (in [8], left {0, 999998})
read(21, 0x7fffd9558200, 16) = -1 EAGAIN (Resource temporarily unavailable)
read(8, "\1\0\0\0\0\0\0\0", 512) = 8
futex(0x7f218a2
select(24, [7 8 11 15 21 22 23], [], [], {1, 0} <unfinished ...>
ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: qemu-kvm 1.0+noroms-
ProcVersionSign
Uname: Linux 3.2.0-43-generic x86_64
ApportVersion: 2.0.1-0ubuntu17.2
Architecture: amd64
Date: Sun May 19 19:02:24 2013
ExecutablePath: /usr/bin/
MachineType: HP ProLiant DL380p Gen8
MarkForUpload: True
ProcEnviron: PATH=(custom, no user)
ProcKernelCmdLine: BOOT_IMAGE=
SourcePackage: qemu-kvm
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 02/25/2012
dmi.bios.vendor: HP
dmi.bios.version: P70
dmi.chassis.type: 23
dmi.chassis.vendor: HP
dmi.modalias: dmi:bvnHP:
dmi.product.name: ProLiant DL380p Gen8
dmi.sys.vendor: HP
Changed in qemu-kvm (Ubuntu): | |
status: | Incomplete → New |
Changed in qemu-kvm (Ubuntu): | |
status: | Incomplete → New |
Changed in ipxe (Ubuntu): | |
status: | Triaged → Fix Released |
Changed in seabios (Ubuntu): | |
importance: | Undecided → High |
Changed in ipxe (Ubuntu Precise): | |
importance: | Undecided → High |
Changed in seabios (Ubuntu Precise): | |
importance: | Undecided → High |
Thanks for reporting this bug.
In order to help me reproduce it, could you please tell us in detail how you are attaching the NIC, and what OS/release is running inside the guest?