Bug 1019202

Summary: Qemu core dump, when reboot a windows 8 guest from mq=on to mq=off
Product: Red Hat Enterprise Linux 7 Reporter: Qian Guo <qiguo>
Component: qemu-kvmAssignee: jason wang <jasowang>
Status: CLOSED WORKSFORME QA Contact: Virtualization Bugs <virt-bugs>
Severity: high Docs Contact:
Priority: medium    
Version: 7.0CC: acathrow, dfleytma, hhuang, juzhang, michen, mst, qiguo, rhod, virt-maint, yunzheng, yvugenfi
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-11-27 03:20:21 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Qian Guo 2013-10-15 09:43:51 UTC
Description of problem:
Boot a windows 8 guest with mq=on, then shutdown it, and boot it again without mq, during start up, windows hangs, qemu coredumpd.

Version-Release number of selected component (if applicable):
# uname -r
3.10.0-33.el7.x86_64
# rpm -q qemu-kvm
qemu-kvm-1.5.3-8.el7.x86_64

virtio-win-prewhql-0.1-72 installed inside guest.

How reproducible:
100%

Steps to Reproduce:
1.Boot windows 8 guest with mq=on:
# /usr/libexec/qemu-kvm -M pc -cpu SandyBridge  -enable-kvm -m 4096 -smp 4,sockets=1,cores=4,threads=1 -usb -device usb-tablet,id=input0 -name rhel7 -rtc base=localtime,clock=host,driftfix=slew  -device virtio-balloon-pci,id=balloon1 -global PIIX4_PM.disable_s3=0 -global PIIX4_PM.disable_s4=0 -monitor stdio -serial unix:/tmp/ttyS0,server,nowait  -spice disable-ticketing,port=5931,seamless-migration=on -vga qxl -global qxl-vga.vram_size=67108864 -netdev tap,id=netdev0,vhost=on,script=/etc/qemu-ifup,queues=4 -device virtio-net-pci,mq=on,vectors=9,mac=00:1b:21:7a:76:10,netdev=netdev0,id=nic0  -drive file=/home/win8-64-virtio.qcow2,if=none,format=qcow2,rerror=stop,werror=stop,id=virtio-disk0 -device virtio-blk-pci,drive=virtio-disk0

2. After guest bootup completedly, then shutdown it.
3. Boot again without mq
# /usr/libexec/qemu-kvm -M pc -cpu SandyBridge  -enable-kvm -m 4096 -smp 4,sockets=1,cores=4,threads=1 -usb -device usb-tablet,id=input0 -name rhel7 -rtc base=localtime,clock=host,driftfix=slew  -device virtio-balloon-pci,id=balloon1 -global PIIX4_PM.disable_s3=0 -global PIIX4_PM.disable_s4=0 -monitor stdio -serial unix:/tmp/ttyS0,server,nowait  -spice disable-ticketing,port=5931,seamless-migration=on -vga qxl -global qxl-vga.vram_size=67108864 -netdev tap,id=netdev0,vhost=on,script=/etc/qemu-ifup  -device virtio-net-pci,mac=00:1b:21:7a:76:10,netdev=netdev0,id=nic0  -drive file=/home/win8-64-virtio.qcow2,if=none,format=qcow2,rerror=stop,werror=stop,id=virtio-disk0 -device virtio-blk-pci,drive=virtio-disk0

Actual results:
qemu coredumpd during booting, bt f
(gdb) bt
#0  0x00007ffff32df999 in raise () from /lib64/libc.so.6
#1  0x00007ffff32e10a8 in abort () from /lib64/libc.so.6
#2  0x00005555557832e6 in kvm_io_ioeventfd_add (listener=<optimized out>, section=0x7fffea8199a0, 
    match_data=<optimized out>, data=0, e=<optimized out>) at /usr/src/debug/qemu-1.5.3/kvm-all.c:846
#3  0x0000555555788ae7 in address_space_add_del_ioeventfds (fds_old_nb=1, fds_old=0x7fffdc000920, fds_new_nb=1, 
    fds_new=0x7fffdc000960, as=0x55555644e200 <address_space_io>) at /usr/src/debug/qemu-1.5.3/memory.c:616
#4  address_space_update_ioeventfds (as=0x55555644e200 <address_space_io>) at /usr/src/debug/qemu-1.5.3/memory.c:649
#5  address_space_update_topology (as=0x55555644e200 <address_space_io>) at /usr/src/debug/qemu-1.5.3/memory.c:730
#6  memory_region_transaction_commit () at /usr/src/debug/qemu-1.5.3/memory.c:750
#7  0x000055555567e45d in pci_update_mappings (d=0x5555567257f0) at hw/pci/pci.c:1112
#8  0x000055555567e8d8 in pci_default_write_config (d=d@entry=0x5555567257f0, addr=addr@entry=4, val=0, l=l@entry=2)
    at hw/pci/pci.c:1163
#9  0x00005555556b6ada in virtio_write_config (pci_dev=0x5555567257f0, address=4, val=<optimized out>, len=2)
    at hw/virtio/virtio-pci.c:464
#10 0x0000555555785fb2 in access_with_adjusted_size (addr=addr@entry=0, value=value@entry=0x7fffea819b58, size=2, 
    access_size_min=<optimized out>, access_size_max=<optimized out>, 
    access=access@entry=0x555555786570 <memory_region_write_accessor>, opaque=opaque@entry=0x55555668a098)
    at /usr/src/debug/qemu-1.5.3/memory.c:364
#11 0x0000555555787487 in memory_region_iorange_write (iorange=<optimized out>, offset=0, width=2, data=1287)
    at /usr/src/debug/qemu-1.5.3/memory.c:439
#12 0x0000555555784d65 in kvm_handle_io (count=1, size=2, direction=1, data=<optimized out>, port=3324)
    at /usr/src/debug/qemu-1.5.3/kvm-all.c:1489
#13 kvm_cpu_exec (env=env@entry=0x55555665ffb0) at /usr/src/debug/qemu-1.5.3/kvm-all.c:1638
#14 0x0000555555730245 in qemu_kvm_cpu_thread_fn (arg=0x55555665ffb0) at /usr/src/debug/qemu-1.5.3/cpus.c:793
#15 0x00007ffff625ade3 in start_thread () from /lib64/libpthread.so.0
#16 0x00007ffff33a01ad in clone () from /lib64/libc.so.6


(gdb) bt ful
#0  0x00007ffff32df999 in raise () from /lib64/libc.so.6
No symbol table info available.
#1  0x00007ffff32e10a8 in abort () from /lib64/libc.so.6
No symbol table info available.
#2  0x00005555557832e6 in kvm_io_ioeventfd_add (listener=<optimized out>, section=0x7fffea8199a0, 
    match_data=<optimized out>, data=0, e=<optimized out>) at /usr/src/debug/qemu-1.5.3/kvm-all.c:846
        fd = <optimized out>
        r = <optimized out>
#3  0x0000555555788ae7 in address_space_add_del_ioeventfds (fds_old_nb=1, fds_old=0x7fffdc000920, fds_new_nb=1, 
    fds_new=0x7fffdc000960, as=0x55555644e200 <address_space_io>) at /usr/src/debug/qemu-1.5.3/memory.c:616
        _listener = 0x555555c32ca0 <kvm_io_listener>
        iold = 0
        inew = 0
        fd = 0x7fffdc000960
        section = {mr = 0x0, address_space = 0x55555644e200 <address_space_io>, offset_within_region = 0, size = 2, 
          offset_within_address_space = 49232, readonly = false}
#4  address_space_update_ioeventfds (as=0x55555644e200 <address_space_io>) at /usr/src/debug/qemu-1.5.3/memory.c:649
        fr = <optimized out>
        tmp = {start = {lo = 49232, hi = 0}, size = {lo = 2, hi = 0}}
        i = <optimized out>
        ioeventfd_nb = <optimized out>
        ioeventfds = <optimized out>
#5  address_space_update_topology (as=0x55555644e200 <address_space_io>) at /usr/src/debug/qemu-1.5.3/memory.c:730
        old_view = <optimized out>
        new_view = <optimized out>
#6  memory_region_transaction_commit () at /usr/src/debug/qemu-1.5.3/memory.c:750
        as = 0x55555644e200 <address_space_io>
#7  0x000055555567e45d in pci_update_mappings (d=0x5555567257f0) at hw/pci/pci.c:1112
        r = 0x5555567258f8
        i = 0
#8  0x000055555567e8d8 in pci_default_write_config (d=d@entry=0x5555567257f0, addr=addr@entry=4, val=0, l=l@entry=2)
    at hw/pci/pci.c:1163
        i = <optimized out>
        was_irq_disabled = 1024
        __PRETTY_FUNCTION__ = "pci_default_write_config"
#9  0x00005555556b6ada in virtio_write_config (pci_dev=0x5555567257f0, address=4, val=<optimized out>, len=2)
    at hw/virtio/virtio-pci.c:464
        proxy = 0x5555567257f0
#10 0x0000555555785fb2 in access_with_adjusted_size (addr=addr@entry=0, value=value@entry=0x7fffea819b58, size=2, 
    access_size_min=<optimized out>, access_size_max=<optimized out>, 
    access=access@entry=0x555555786570 <memory_region_write_accessor>, opaque=opaque@entry=0x55555668a098)
    at /usr/src/debug/qemu-1.5.3/memory.c:364
        access_mask = 65535
        access_size = 2
        i = <optimized out>
#11 0x0000555555787487 in memory_region_iorange_write (iorange=<optimized out>, offset=0, width=2, data=1287)
    at /usr/src/debug/qemu-1.5.3/memory.c:439
        mrio = <optimized out>
        mr = 0x55555668a098
        __PRETTY_FUNCTION__ = "memory_region_iorange_write"
#12 0x0000555555784d65 in kvm_handle_io (count=1, size=2, direction=1, data=<optimized out>, port=3324)
    at /usr/src/debug/qemu-1.5.3/kvm-all.c:1489
        i = 0
        ptr = 0x7ffff7ff0000 "\a\005"
#13 kvm_cpu_exec (env=env@entry=0x55555665ffb0) at /usr/src/debug/qemu-1.5.3/kvm-all.c:1638
        cpu = 0x55555665fea0
        __func__ = "kvm_cpu_exec"
        run = 0x7ffff7fef000
        ret = <optimized out>
        run_ret = <optimized out>
#14 0x0000555555730245 in qemu_kvm_cpu_thread_fn (arg=0x55555665ffb0) at /usr/src/debug/qemu-1.5.3/cpus.c:793
        cpu = 0x55555665fea0
        __func__ = "qemu_kvm_cpu_thread_fn"
        r = <optimized out>
#15 0x00007ffff625ade3 in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#16 0x00007ffff33a01ad in clone () from /lib64/libc.so.6
No symbol table info available.
(gdb) 

Expected results:
No coredumpd

Additional info: