Re: [PATCH] vhost: move is_le setup to the backend
From: David Miller <davem@davemloft.net>
Date: 2015-11-02 20:09:26
Also in:
kvm, lkml
From: David Miller <davem@davemloft.net>
Date: 2015-11-02 20:09:26
Also in:
kvm, lkml
From: Greg Kurz <redacted> Date: Fri, 30 Oct 2015 12:42:35 +0100
The vq->is_le field is used to fix endianness when accessing the vring via the cpu_to_vhost16() and vhost16_to_cpu() helpers in the following cases: 1) host is big endian and device is modern virtio 2) host has cross-endian support and device is legacy virtio with a different endianness than the host Both cases rely on the VHOST_SET_FEATURES ioctl, but 2) also needs the VHOST_SET_VRING_ENDIAN ioctl to be called by userspace. Since vq->is_le is only needed when the backend is active, it was decided to set it at backend start. This is currently done in vhost_init_used()->vhost_init_is_le() but it obfuscates the core vhost code. This patch moves the is_le setup to a dedicated function that is called from the backend code. Note vhost_net is the only backend that can pass vq->private_data == NULL to vhost_init_used(), hence the "if (sock)" branch. No behaviour change. Signed-off-by: Greg Kurz <redacted>
Michael, I'm assuming that you will be the one taking this.