From: Yuxue Liu <yuxue....@jaguarmicro.com>

In the vp_vdpa_set_status function, when setting the device status to
VIRTIO_CONFIG_S_DRIVER_OK, the vp_vdpa_request_irq function may fail.
In such cases, the device status should not be set to DRIVER_OK. Add
exception printing to remind the user.

Signed-off-by: Yuxue Liu <yuxue....@jaguarmicro.com>
---
 drivers/vdpa/virtio_pci/vp_vdpa.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/vdpa/virtio_pci/vp_vdpa.c 
b/drivers/vdpa/virtio_pci/vp_vdpa.c
index 281287fae89f..c1270b263867 100644
--- a/drivers/vdpa/virtio_pci/vp_vdpa.c
+++ b/drivers/vdpa/virtio_pci/vp_vdpa.c
@@ -213,10 +213,16 @@ static void vp_vdpa_set_status(struct vdpa_device *vdpa, 
u8 status)
        struct vp_vdpa *vp_vdpa = vdpa_to_vp(vdpa);
        struct virtio_pci_modern_device *mdev = vp_vdpa_to_mdev(vp_vdpa);
        u8 s = vp_vdpa_get_status(vdpa);
+       struct pci_dev *pdev = mdev->pci_dev;
 
        if (status & VIRTIO_CONFIG_S_DRIVER_OK &&
            !(s & VIRTIO_CONFIG_S_DRIVER_OK)) {
-               vp_vdpa_request_irq(vp_vdpa);
+               if (vp_vdpa_request_irq(vp_vdpa)) {
+                       WARN_ON(1);
+                       dev_err(&pdev->dev,
+                               "vp_vdpa : fail set status is DRIVER_OK\n");
+                       return;
+               }
        }
 
        vp_modern_set_status(mdev, status);
-- 
2.43.0


Reply via email to