Skip to content
Permalink
Browse files
virtio_config: Add a return value to reset function
This adds a return value to reset function so that we can
handle the reset failure later. No functional changes.

Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
  • Loading branch information
YongjiXie authored and intel-lab-lkp committed Jul 13, 2021
1 parent c7c67df commit ade2af66f29301fe5d897bfddfabc27f5f5cd678
Show file tree
Hide file tree
Showing 8 changed files with 24 additions and 9 deletions.
@@ -827,11 +827,13 @@ static void vu_set_status(struct virtio_device *vdev, u8 status)
vu_dev->status = status;
}

static void vu_reset(struct virtio_device *vdev)
static int vu_reset(struct virtio_device *vdev)
{
struct virtio_uml_device *vu_dev = to_virtio_uml_device(vdev);

vu_dev->status = 0;

return 0;
}

static void vu_del_vq(struct virtqueue *vq)
@@ -989,11 +989,13 @@ static void mlxbf_tmfifo_virtio_set_status(struct virtio_device *vdev,
}

/* Reset the device. Not much here for now. */
static void mlxbf_tmfifo_virtio_reset(struct virtio_device *vdev)
static int mlxbf_tmfifo_virtio_reset(struct virtio_device *vdev)
{
struct mlxbf_tmfifo_vdev *tm_vdev = mlxbf_vdev_to_tmfifo(vdev);

tm_vdev->status = 0;

return 0;
}

/* Read the value of a configuration field. */
@@ -191,7 +191,7 @@ static void rproc_virtio_set_status(struct virtio_device *vdev, u8 status)
dev_dbg(&vdev->dev, "status: %d\n", status);
}

static void rproc_virtio_reset(struct virtio_device *vdev)
static int rproc_virtio_reset(struct virtio_device *vdev)
{
struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
struct fw_rsc_vdev *rsc;
@@ -200,6 +200,8 @@ static void rproc_virtio_reset(struct virtio_device *vdev)

rsc->status = 0;
dev_dbg(&vdev->dev, "reset !\n");

return 0;
}

/* provide the vdev features as retrieved from the firmware */
@@ -732,14 +732,14 @@ static int virtio_ccw_find_vqs(struct virtio_device *vdev, unsigned nvqs,
return ret;
}

static void virtio_ccw_reset(struct virtio_device *vdev)
static int virtio_ccw_reset(struct virtio_device *vdev)
{
struct virtio_ccw_device *vcdev = to_vc_device(vdev);
struct ccw1 *ccw;

ccw = ccw_device_dma_zalloc(vcdev->cdev, sizeof(*ccw));
if (!ccw)
return;
return -ENOMEM;

/* Zero status bits. */
vcdev->dma_area->status = 0;
@@ -751,6 +751,8 @@ static void virtio_ccw_reset(struct virtio_device *vdev)
ccw->cda = 0;
ccw_io_helper(vcdev, ccw, VIRTIO_CCW_DOING_RESET);
ccw_device_dma_free(vcdev->cdev, ccw, sizeof(*ccw));

return 0;
}

static u64 virtio_ccw_get_features(struct virtio_device *vdev)
@@ -89,7 +89,7 @@ static void vp_set_status(struct virtio_device *vdev, u8 status)
iowrite8(status, vp_dev->ioaddr + VIRTIO_PCI_STATUS);
}

static void vp_reset(struct virtio_device *vdev)
static int vp_reset(struct virtio_device *vdev)
{
struct virtio_pci_device *vp_dev = to_vp_device(vdev);
/* 0 status means a reset. */
@@ -99,6 +99,8 @@ static void vp_reset(struct virtio_device *vdev)
ioread8(vp_dev->ioaddr + VIRTIO_PCI_STATUS);
/* Flush pending VQ/configuration callbacks. */
vp_synchronize_vectors(vdev);

return 0;
}

static u16 vp_config_vector(struct virtio_pci_device *vp_dev, u16 vector)
@@ -158,7 +158,7 @@ static void vp_set_status(struct virtio_device *vdev, u8 status)
vp_modern_set_status(&vp_dev->mdev, status);
}

static void vp_reset(struct virtio_device *vdev)
static int vp_reset(struct virtio_device *vdev)
{
struct virtio_pci_device *vp_dev = to_vp_device(vdev);
struct virtio_pci_modern_device *mdev = &vp_dev->mdev;
@@ -174,6 +174,8 @@ static void vp_reset(struct virtio_device *vdev)
msleep(1);
/* Flush pending VQ/configuration callbacks. */
vp_synchronize_vectors(vdev);

return 0;
}

static u16 vp_config_vector(struct virtio_pci_device *vp_dev, u16 vector)
@@ -97,11 +97,13 @@ static void virtio_vdpa_set_status(struct virtio_device *vdev, u8 status)
return ops->set_status(vdpa, status);
}

static void virtio_vdpa_reset(struct virtio_device *vdev)
static int virtio_vdpa_reset(struct virtio_device *vdev)
{
struct vdpa_device *vdpa = vd_get_vdpa(vdev);

vdpa_reset(vdpa);

return 0;
}

static bool virtio_vdpa_notify(struct virtqueue *vq)
@@ -47,6 +47,7 @@ struct virtio_shm_region {
* After this, status and feature negotiation must be done again
* Device must not be reset from its vq/config callbacks, or in
* parallel with being added/removed.
* Returns 0 on success or error status
* @find_vqs: find virtqueues and instantiate them.
* vdev: the virtio_device
* nvqs: the number of virtqueues to find
@@ -82,7 +83,7 @@ struct virtio_config_ops {
u32 (*generation)(struct virtio_device *vdev);
u8 (*get_status)(struct virtio_device *vdev);
void (*set_status)(struct virtio_device *vdev, u8 status);
void (*reset)(struct virtio_device *vdev);
int (*reset)(struct virtio_device *vdev);
int (*find_vqs)(struct virtio_device *, unsigned nvqs,
struct virtqueue *vqs[], vq_callback_t *callbacks[],
const char * const names[], const bool *ctx,

0 comments on commit ade2af6

Please sign in to comment.