Bug 1387773 - Assert in vhost-user on aarch64 mustang with DPDK and OVS
Summary: Assert in vhost-user on aarch64 mustang with DPDK and OVS
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: qemu-kvm-rhev
Version: 7.3
Hardware: aarch64
OS: Linux
high
high
Target Milestone: rc
: ---
Assignee: Wei Huang (AMD)
QA Contact: Virtualization Bugs
URL:
Whiteboard:
Depends On:
Blocks: 1173755
TreeView+ depends on / blocked
 
Reported: 2016-10-21 20:17 UTC by Bill Townsend
Modified: 2017-08-31 19:54 UTC (History)
12 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2017-08-31 19:54:44 UTC
Target Upstream Version:


Attachments (Terms of Use)

Description Bill Townsend 2016-10-21 20:17:49 UTC
Using and ARM mustang chassis, built a RHELSA kernel and enabled hugepage support with page size of 4K. Built DPDK 16.0.7 and installed it. Built and installed OVS 2.6.0 with the --with-dpdk=$DPDK_BUILD option and installed it. Installed all virt components from the batcave.

Initialized hugepages to 2500. [echo 2500 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages]. 

Started OVS and added a DPDK interface.[ovs-vsctl add-port br0 dpdk0 -- set Interface dpdk0 type=dpdk]

Start my VM with the virt spec below. (virsh start rhel7.3) VM does not make it all the way up to running. The below error shows up in /var/log/libvirt/qemu/rhel7.3:

(note: it may be easier to use my chassis with all the above..)

====


2016-10-20 20:15:41.972+0000: starting up libvirt version: 2.0.0, package: 8.el7 (Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>, 2016-09-07-11:58:34, arm64-018.build.eng.bos.redhat.com), qemu version: 2.6.0 (qemu-kvm-rhev-2.6.0-28.el7), hostname: apm-mustang-ev3-18.ml3.eng.bos.redhat.com
LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin QEMU_AUDIO_DRV=none /usr/libexec/qemu-kvm -name guest=rhel7.3,debug-threads=on -S -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-6-rhel7.3/master-key.aes -machine virt-rhel7.3.0,accel=kvm,usb=off -cpu host -drive file=/usr/share/AAVMF/AAVMF_CODE.fd,if=pflash,format=raw,unit=0,readonly=on -drive file=/var/lib/libvirt/qemu/nvram/rhel7.3_VARS.fd,if=pflash,format=raw,unit=1 -m 2048 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -object memory-backend-file,id=ram-node0,prealloc=yes,mem-path=/dev/hugepages/libvirt/qemu,share=yes,size=2147483648 -numa node,nodeid=0,cpus=0,memdev=ram-node0 -uuid c2c2211c-0643-43ee-9ebb-d3058ceb1a6e -nographic -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-6-rhel7.3/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -boot strict=on -device virtio-scsi-device,id=scsi0 -device virtio-serial-device,id=virtio-serial0 -drive file=/var/lib/libvirt/images/rhel7.3.qcow2,format=qcow2,if=none,id=drive-scsi0-0-0-0 -device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0-0-0-0,id=scsi0-0-0-0,bootindex=1 -chardev socket,id=charnet0,path=/usr/local/var/run/openvswitch/dpdk0 -netdev type=vhost-user,id=hostnet0,chardev=charnet0 -device virtio-net-device,netdev=hostnet0,id=net0,mac=52:60:2f:87:e5:b9 -netdev tap,fd=26,id=hostnet1,vhost=on,vhostfd=28 -device virtio-net-device,netdev=hostnet1,id=net1,mac=52:54:00:16:4d:58 -serial pty -chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/channel/target/domain-6-rhel7.3/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 -msg timestamp=on
Domain id=6 is tainted: host-cpu
char device redirected to /dev/pts/1 (label serial0)
qemu-kvm: /builddir/build/BUILD/qemu-2.6.0/hw/virtio/vhost.c:1253: vhost_virtqueue_mask: Assertion `vdev->use_guest_notifier_mask' failed.
2016-10-20 20:16:01.916+0000: shutting down



====





<domain type='kvm'>
  <name>rhel7.3</name>
  <uuid>c2c2211c-0643-43ee-9ebb-d3058ceb1a6e</uuid>
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <memoryBacking>
    <hugepages/>
  </memoryBacking>
  <vcpu placement='static'>1</vcpu>
  <os>
    <type arch='aarch64' machine='virt-rhel7.3.0'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
    <nvram>/var/lib/libvirt/qemu/nvram/rhel7.3_VARS.fd</nvram>
    <boot dev='hd'/>
  </os>
  <features>
    <gic version='2'/>
  </features>
  <cpu mode='host-passthrough'>
    <numa>
      <cell id='0' cpus='0' memory='2097152' unit='KiB' memAccess='shared'/>
    </numa>
  </cpu>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/rhel7.3.qcow2'/>
      <target dev='sda' bus='scsi'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <controller type='scsi' index='0' model='virtio-scsi'>
      <address type='virtio-mmio'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'/>
    <controller type='virtio-serial' index='0'>
      <address type='virtio-mmio'/>
    </controller>
    <interface type='vhostuser'>
      <mac address='52:60:2f:87:e5:b9'/>
      <source type='unix' path='/usr/local/var/run/openvswitch/dpdk0' mode='client'/>
      <model type='virtio'/>
      <address type='virtio-mmio'/>
    </interface>
    <interface type='network'>
      <mac address='52:54:00:16:4d:58'/>
      <source network='default'/>
      <model type='virtio'/>
      <address type='virtio-mmio'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <channel type='unix'>
      <target type='virtio' name='org.qemu.guest_agent.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
  </devices>
</domain>

Comment 1 Wei Huang (AMD) 2016-11-04 21:19:25 UTC
I am able to reproduce this issue on Seattle machine.

Comment 2 Wei Huang (AMD) 2016-12-14 19:37:32 UTC
It looks like this is a bug in QEMU. Because guest_mask_notifier cannot be used in vhost-user mode, a boolean flag "use_guest_notifier_mask" was added to disable the use of guest_mask_notifier under virtio-pci. However this flag wasn't checked in virtio-mmio, causing assertion error under vhost-user + virtio-mmio. I have created a patch to fix it. Before submitting it, I has asked Michael Tsirkin to comment on it.

Comment 3 Jon Masters 2017-08-31 19:51:05 UTC
What's the status of this bug?

Comment 4 Bill Townsend 2017-08-31 19:54:44 UTC
This is long gone, dont see it anymore. From early days testing


Note You need to log in before you can comment on or make changes to this bug.