@@ -273,19 +273,6 @@ static void vhost_net_stop_one(struct vhost_net *net,
vhost_dev_disable_notifiers(&net->dev, dev);
}
-static bool vhost_net_device_endian_ok(VirtIODevice *vdev)
-{
-#ifdef TARGET_IS_BIENDIAN
-#ifdef HOST_WORDS_BIGENDIAN
- return virtio_is_big_endian(vdev);
-#else
- return !virtio_is_big_endian(vdev);
-#endif
-#else
- return true;
-#endif
-}
-
int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
int total_queues)
{
@@ -294,12 +281,6 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(vbus);
int r, e, i;
- if (!vhost_net_device_endian_ok(dev)) {
- error_report("vhost-net does not support cross-endian");
- r = -ENOSYS;
- goto err;
- }
-
if (!k->set_guest_notifiers) {
error_report("binding does not support guest notifiers");
r = -ENOSYS;
@@ -17,10 +17,12 @@
#include "hw/hw.h"
#include "qemu/atomic.h"
#include "qemu/range.h"
+#include "qemu/error-report.h"
#include <linux/vhost.h>
#include "exec/address-spaces.h"
#include "hw/virtio/virtio-bus.h"
#include "migration/migration.h"
+#include "hw/virtio/virtio-access.h"
static void vhost_dev_sync_region(struct vhost_dev *dev,
MemoryRegionSection *section,
@@ -1030,11 +1032,25 @@ void vhost_ack_features(struct vhost_dev *hdev, const int *feature_bits,
}
}
+static bool virtio_legacy_is_cross_endian(VirtIODevice *vdev)
+{
+#ifdef HOST_WORDS_BIGENDIAN
+ return !virtio_access_is_big_endian(vdev);
+#else
+ return virtio_access_is_big_endian(vdev);
+#endif
+}
+
/* Host notifiers must be enabled at this point. */
int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev)
{
int i, r;
+ if (virtio_legacy_is_cross_endian(vdev)) {
+ error_report("vhost does not support cross-endian");
+ return -ENOSYS;
+ }
+
hdev->started = true;
r = vhost_dev_set_features(hdev, hdev->log_enabled);
The cross-endian support isn't really a vhost_net affair: it affects any vhost device. This patch moves the checking to the vhost core code. While, we're here, let's give a meaningful name to the helper. Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> --- hw/net/vhost_net.c | 19 ------------------- hw/virtio/vhost.c | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 19 deletions(-)