Comment 0 for bug 1950144

Revision history for this message
bugproxy (bugproxy) wrote :

Description: kernel: unable to read partitions on virtio-block dasd (kvm)
Symptom: unable to read partitions on virtio-block dasd (kvm)
Problem: verify is called before virtio_finalize_features() , so a
              transitional s390 virtio device still serves native endian
              (i.e. big endian) config space, while the driver knows that it
              is going to accept VERSION_1, so when reading the config space,
              it assumes it got little endian, and byteswaps.
Solution: For QEMU, we can work around the issue by writing out the
              feature bits with VIRTIO_F_VERSION_1 bit set. We (ab)use the
              finalize_features config op for this. This isn't enough to
              address all vhost devices since these do not get the features
              until FEATURES_OK, however it looks like the affected devices
              actually never handled the endianness for legacy mode correctly,
              so at least that's not a regression.