[PATCH] vhost-backend: do not depend on CONFIG_VHOST_VSOCK

Paolo Bonzini posted 1 patch 1 year, 11 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20220511074328.164544-1-pbonzini@redhat.com
Maintainers: "Michael S. Tsirkin" <mst@redhat.com>
hw/virtio/vhost-backend.c | 4 ----
1 file changed, 4 deletions(-)
[PATCH] vhost-backend: do not depend on CONFIG_VHOST_VSOCK
Posted by Paolo Bonzini 1 year, 11 months ago
The vsock callbacks .vhost_vsock_set_guest_cid and
.vhost_vsock_set_running are the only ones to be conditional
on #ifdef CONFIG_VHOST_VSOCK.  This is different from any other
device-dependent callbacks like .vhost_scsi_set_endpoint, and it
also broke when CONFIG_VHOST_VSOCK was changed to a per-target
symbol.

It would be possible to also use the CONFIG_DEVICES include, but
really there is no reason for most virtio files to be per-target
so just remove the #ifdef to fix the issue.

Reported-by: Dov Murik <dovmurik@linux.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 hw/virtio/vhost-backend.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/hw/virtio/vhost-backend.c b/hw/virtio/vhost-backend.c
index e409a865ae..4de8b6b3b0 100644
--- a/hw/virtio/vhost-backend.c
+++ b/hw/virtio/vhost-backend.c
@@ -203,7 +203,6 @@ static int vhost_kernel_get_vq_index(struct vhost_dev *dev, int idx)
     return idx - dev->vq_index;
 }
 
-#ifdef CONFIG_VHOST_VSOCK
 static int vhost_kernel_vsock_set_guest_cid(struct vhost_dev *dev,
                                             uint64_t guest_cid)
 {
@@ -214,7 +213,6 @@ static int vhost_kernel_vsock_set_running(struct vhost_dev *dev, int start)
 {
     return vhost_kernel_call(dev, VHOST_VSOCK_SET_RUNNING, &start);
 }
-#endif /* CONFIG_VHOST_VSOCK */
 
 static void vhost_kernel_iotlb_read(void *opaque)
 {
@@ -319,10 +317,8 @@ const VhostOps kernel_ops = {
         .vhost_set_owner = vhost_kernel_set_owner,
         .vhost_reset_device = vhost_kernel_reset_device,
         .vhost_get_vq_index = vhost_kernel_get_vq_index,
-#ifdef CONFIG_VHOST_VSOCK
         .vhost_vsock_set_guest_cid = vhost_kernel_vsock_set_guest_cid,
         .vhost_vsock_set_running = vhost_kernel_vsock_set_running,
-#endif /* CONFIG_VHOST_VSOCK */
         .vhost_set_iotlb_callback = vhost_kernel_set_iotlb_callback,
         .vhost_send_device_iotlb_msg = vhost_kernel_send_device_iotlb_msg,
 };
-- 
2.36.0
Re: [PATCH] vhost-backend: do not depend on CONFIG_VHOST_VSOCK
Posted by Stefano Garzarella 1 year, 11 months ago
On Wed, May 11, 2022 at 09:43:28AM +0200, Paolo Bonzini wrote:
>The vsock callbacks .vhost_vsock_set_guest_cid and
>.vhost_vsock_set_running are the only ones to be conditional
>on #ifdef CONFIG_VHOST_VSOCK.  This is different from any other
>device-dependent callbacks like .vhost_scsi_set_endpoint, and it
>also broke when CONFIG_VHOST_VSOCK was changed to a per-target
>symbol.
>
>It would be possible to also use the CONFIG_DEVICES include, but
>really there is no reason for most virtio files to be per-target
>so just remove the #ifdef to fix the issue.
>

I'm i doubt whether or not to add the following Fixes tag, since that 
commit only highlighted the problem:

Fixes: 9972ae314f ("build: move vhost-vsock configuration to Kconfig")

>Reported-by: Dov Murik <dovmurik@linux.ibm.com>
>Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>---
> hw/virtio/vhost-backend.c | 4 ----
> 1 file changed, 4 deletions(-)

Anyway, the path LGTM:

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>

Thanks,
Stefano

>
>diff --git a/hw/virtio/vhost-backend.c b/hw/virtio/vhost-backend.c
>index e409a865ae..4de8b6b3b0 100644
>--- a/hw/virtio/vhost-backend.c
>+++ b/hw/virtio/vhost-backend.c
>@@ -203,7 +203,6 @@ static int vhost_kernel_get_vq_index(struct vhost_dev *dev, int idx)
>     return idx - dev->vq_index;
> }
>
>-#ifdef CONFIG_VHOST_VSOCK
> static int vhost_kernel_vsock_set_guest_cid(struct vhost_dev *dev,
>                                             uint64_t guest_cid)
> {
>@@ -214,7 +213,6 @@ static int vhost_kernel_vsock_set_running(struct vhost_dev *dev, int start)
> {
>     return vhost_kernel_call(dev, VHOST_VSOCK_SET_RUNNING, &start);
> }
>-#endif /* CONFIG_VHOST_VSOCK */
>
> static void vhost_kernel_iotlb_read(void *opaque)
> {
>@@ -319,10 +317,8 @@ const VhostOps kernel_ops = {
>         .vhost_set_owner = vhost_kernel_set_owner,
>         .vhost_reset_device = vhost_kernel_reset_device,
>         .vhost_get_vq_index = vhost_kernel_get_vq_index,
>-#ifdef CONFIG_VHOST_VSOCK
>         .vhost_vsock_set_guest_cid = vhost_kernel_vsock_set_guest_cid,
>         .vhost_vsock_set_running = vhost_kernel_vsock_set_running,
>-#endif /* CONFIG_VHOST_VSOCK */
>         .vhost_set_iotlb_callback = vhost_kernel_set_iotlb_callback,
>         .vhost_send_device_iotlb_msg = vhost_kernel_send_device_iotlb_msg,
> };
>-- 
>2.36.0
>
>