|
@@ -120,15 +120,11 @@ static struct virtqueue *rp_find_vq(struct virtio_device *vdev,
|
|
|
return vq;
|
|
|
}
|
|
|
|
|
|
-static void rproc_virtio_del_vqs(struct virtio_device *vdev)
|
|
|
+static void __rproc_virtio_del_vqs(struct virtio_device *vdev)
|
|
|
{
|
|
|
struct virtqueue *vq, *n;
|
|
|
- struct rproc *rproc = vdev_to_rproc(vdev);
|
|
|
struct rproc_vring *rvring;
|
|
|
|
|
|
- /* power down the remote processor before deleting vqs */
|
|
|
- rproc_shutdown(rproc);
|
|
|
-
|
|
|
list_for_each_entry_safe(vq, n, &vdev->vqs, list) {
|
|
|
rvring = vq->priv;
|
|
|
rvring->vq = NULL;
|
|
@@ -137,6 +133,16 @@ static void rproc_virtio_del_vqs(struct virtio_device *vdev)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+static void rproc_virtio_del_vqs(struct virtio_device *vdev)
|
|
|
+{
|
|
|
+ struct rproc *rproc = vdev_to_rproc(vdev);
|
|
|
+
|
|
|
+ /* power down the remote processor before deleting vqs */
|
|
|
+ rproc_shutdown(rproc);
|
|
|
+
|
|
|
+ __rproc_virtio_del_vqs(vdev);
|
|
|
+}
|
|
|
+
|
|
|
static int rproc_virtio_find_vqs(struct virtio_device *vdev, unsigned nvqs,
|
|
|
struct virtqueue *vqs[],
|
|
|
vq_callback_t *callbacks[],
|
|
@@ -163,7 +169,7 @@ static int rproc_virtio_find_vqs(struct virtio_device *vdev, unsigned nvqs,
|
|
|
return 0;
|
|
|
|
|
|
error:
|
|
|
- rproc_virtio_del_vqs(vdev);
|
|
|
+ __rproc_virtio_del_vqs(vdev);
|
|
|
return ret;
|
|
|
}
|
|
|
|