Bug 1177094
Summary: | endian issue due to ppc64le guest w/ data-plane | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Xu Han <xuhan> |
Component: | qemu-kvm-rhev | Assignee: | David Gibson <dgibson> |
Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> |
Severity: | unspecified | Docs Contact: | |
Priority: | unspecified | ||
Version: | 7.1 | CC: | areis, hannsj_uhl, knoel, michen, mrezanin, ngu, qzhang, sherold, stefanha, virt-maint, ypu |
Target Milestone: | rc | ||
Target Release: | --- | ||
Hardware: | ppc64le | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | qemu 2.3 | Doc Type: | Bug Fix |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2015-12-04 16:24:10 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: | |||
Bug Depends On: | |||
Bug Blocks: | 1201513 |
Description
Xu Han
2014-12-24 07:18:51 UTC
virtio-blk dataplane does not use hw/virtio/virtio.c for virtqueue accesses. Instead it uses hw/virtio/dataplane/vring.c, which does not go through the virtio_lduw_phys() family of memory access functions. I haven't checked the details but I suspect vring.c needs something like virtio.c's endianness support. Ugh, yes, it appears that the dataplane vring stuff assumes guest endian == host endian, which is broken. It's not quickly obvious to me which are the structures lying in guest visible space, so it would take me a while to figure this one out (especially since I've never tried to use dataplane before). Is there anyone more familiar with the dataplane code who has time to attempt this? (In reply to David Gibson from comment #3) > Is there anyone more familiar with the dataplane code who has time to > attempt this? Please email me login details to a ppc host with ppc64le guest I can use for testing. I've now tested Cornelia Huck's patches for this (http://lists.gnu.org/archive/html/qemu-devel/2015-01/msg02494.html). It looks like it solves the problem, I'll port it back down once it's merged upstream. Verified the bug on the following package version, the issue does not exist any more. The original issue is LE guest on BE host. As we will only test LE host on 7.2, so I test both BE and LE guest. Boot and repeat reboot operation. Host: kernel-3.10.0-292.el7.ppc64le qemu-kvm-rhev-2.3.0-12.el7.ppc64le Guest: kernel-3.10.0-229.ael7b.ppc64le kernel-3.10.0.195.el7.ppc64 kernel-3.10.0.290.el7.ppc64 Steps: 1. Boot up a rhel7 le guest # /usr/libexec/qemu-kvm -name test -machine pseries,accel=kvm,usb=off -m 4G -smp 4,sockets=1,cores=4,threads=1 -uuid f8f86c51-7018-4d0b-1212-ed1d513e2f57 -realtime mlock=off -no-user-config -nodefaults -monitor stdio -rtc base=utc -boot strict=on -object iothread,id=iothread0 -drive file=RHEL-Server-7.2-ppc64le-virtio.qcow2,if=none,id=drive-virtio-disk0,format=qcow2 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,iothread=iothread0 -netdev tap,id=hostnet0,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown -device spapr-vlan,netdev=hostnet0,id=net0,mac=00:54:5f:5d:5c:5a,reg=0x2000 -vnc :20 -msg timestamp=on -usb -device usb-tablet,id=tablet1 -vga std 2. Reboot the guest (tried 3 times) Result: Guest could reboot successfully. Based on above, I will set the status to VERIFIED. Any issue please comment here. Thanks. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2015-2546.html |