Bug 1272888

Summary: vhostforce=off control vhost failed when disable msi inside guest
Product: Red Hat Enterprise Linux 7 Reporter: weliao <weliao>
Component: qemu-kvm-rhevAssignee: jason wang <jasowang>
Status: CLOSED NOTABUG QA Contact: Virtualization Bugs <virt-bugs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.2CC: juzhang, knoel, michen, mst, qiguo, virt-maint, weliao, xfu
Target Milestone: rcKeywords: Regression
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-10-22 06:03:27 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 weliao 2015-10-19 07:22:34 UTC
Description of problem:
Launch a guest with vhost=off when disable msi inside guest,vhost process consumes host resource.

Version-Release number of selected component (if applicable):
3.10.0-324.el7.x86_64
qemu-kvm-rhev-2.3.0-30.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1.Boot a guest w/ vhost=on and vhostforce=off over virtio-net-pci.
2.Disable msi of guest: add "pci=nomsi" to the kernel cmdline.
3.Transfer file(2Gfile) from guest to host, and check vhost in host.
Guest# scp $file_name root@$host_ip:/home/file_from_guest.
Host#top -p $pid_of_vhost
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                        
11298 root      20   0       0      0      0 R  7.7  0.0   0:13.49 vhost-11289  
Actual results:
vhost process consumes host resource.

Expected results:
vhost process does not consumes host resource.

Additional info:
cmd:
/usr/libexec/qemu-kvm -name guest1 -S -machine pc-i440fx-rhel7.2.0,accel=kvm,usb=off,vmport=off \
-cpu SandyBridge -m 4G -realtime mlock=off \
-sandbox off -smp 6 \
-uuid fbf54917-5833-48f2-b3fb-5ce2ad294d93 \
-no-user-config -nodefaults \
-chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/rhel7cp1.0.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control \
-rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard \
-no-hpet -no-shutdown -global PIIX4_PM.disable_s3=1 \
-global PIIX4_PM.disable_s4=1 \
-boot menu=on \
-device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x6.0x7 \
-device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x6 \
-device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x6.0x1 \
-device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x6.0x2 \
-device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 \
-drive file=iscsi://10.66.9.230:3260/iqn.2003-01.org.linux-iscsi.dhcp-65-87.x8664:sn.36f0c8edc63d/0,snapshot=off,cache=none,if=none,id=drive-virtio-disk0,format=raw \
-iscsi initiator-name=iqn.1994-05.com.redhat:172f21663af5 \
-device virtio-scsi-pci,bus=pci.0,addr=0x7,id=scsi1 \
-device scsi-hd,drive=drive-virtio-disk0,bus=scsi1.0,id=hd1 \
-netdev tap,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown,id=hostnet0,vhost=on,vhostforce=off \
-device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:0b:06:82,bus=pci.0,addr=0x3 \
-chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 \
-chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/channel/target/rhel7cp1.0.org.qemu.guest_agent.0,server,nowait \
-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0 \
-chardev spicevmc,id=charchannel1,name=vdagent \
-device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charchannel1,id=channel1,name=com.redhat.spice.0 \
-device usb-tablet,id=input0 -spice port=5901,disable-ticketing,seamless-migration=on \
-device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vgamem_mb=16,bus=pci.0,addr=0x2 \
-device intel-hda,id=sound0,bus=pci.0,addr=0x4 \
-device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 \
-chardev spicevmc,id=charredir0,name=usbredir \
-device usb-redir,chardev=charredir0,id=redir0 \
-chardev spicevmc,id=charredir1,name=usbredir \
-device usb-redir,chardev=charredir1,id=redir1 \
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8 \
-msg timestamp=on \
-monitor stdio \
-qmp tcp:0:4445,server,nowait

Setting regression as it works with qemu-kvm-rhev-2.3.0-26.el7.x86_64
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                        
  915 root      20   0       0      0      0 S   0.0  0.0   0:00.00 vhost-905