[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH for 8.1 4/6] vdpa: return errno in vhost_vdpa_get_vring_group
From: |
Eugenio Pérez |
Subject: |
[RFC PATCH for 8.1 4/6] vdpa: return errno in vhost_vdpa_get_vring_group error |
Date: |
Fri, 17 Mar 2023 15:55:40 +0100 |
We need to tell in the caller, as some errors are expected in a normal
workflow. In particular, parent drivers in recent kernels with
VHOST_BACKEND_F_IOTLB_ASID may not support vring groups. In that case,
-ENOTSUP is returned.
This is the case of vp_vdpa in Linux 6.2.
Next patches in this series will use that information to know if it must
abort or not.
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
---
net/vhost-vdpa.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
index 99904a0da7..4397c0d4b3 100644
--- a/net/vhost-vdpa.c
+++ b/net/vhost-vdpa.c
@@ -361,6 +361,14 @@ static NetClientInfo net_vhost_vdpa_info = {
.check_peer_type = vhost_vdpa_check_peer_type,
};
+/**
+ * Get vring virtqueue group
+ *
+ * @device_fd vdpa device fd
+ * @vq_index Virtqueue index
+ *
+ * Return -errno in case of error, or vq group if success.
+ */
static int64_t vhost_vdpa_get_vring_group(int device_fd, unsigned vq_index)
{
struct vhost_vring_state state = {
@@ -369,6 +377,7 @@ static int64_t vhost_vdpa_get_vring_group(int device_fd,
unsigned vq_index)
int r = ioctl(device_fd, VHOST_VDPA_GET_VRING_GROUP, &state);
if (unlikely(r < 0)) {
+ r = -errno;
error_report("Cannot get VQ %u group: %s", vq_index,
g_strerror(errno));
return r;
--
2.31.1
[RFC PATCH for 8.1 3/6] vdpa: add vhost_vdpa_set_dev_features_fd, Eugenio Pérez, 2023/03/17
[RFC PATCH for 8.1 6/6] vdpa: Cache cvq group in VhostVDPAState, Eugenio Pérez, 2023/03/17
[RFC PATCH for 8.1 5/6] vdpa: move CVQ isolation check to net_init_vhost_vdpa, Eugenio Pérez, 2023/03/17