]> git.dujemihanovic.xyz Git - linux.git/commitdiff
virtio_pci_modern: remove admin queue serialization lock
authorJiri Pirko <jiri@nvidia.com>
Tue, 16 Jul 2024 11:35:52 +0000 (13:35 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Wed, 17 Jul 2024 09:43:21 +0000 (05:43 -0400)
The admin queue operations are protected by newly introduced
spin lock. To make it possible to issue parallel commands, remove the
admin queue serialization lock.

Signed-off-by: Jiri Pirko <jiri@nvidia.com>
Message-Id: <20240716113552.80599-14-jiri@resnulli.us>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
drivers/virtio/virtio_pci_common.h
drivers/virtio/virtio_pci_modern.c

index 90df381fbbcfd64ed8fef0a5e5eb22d863591e5a..1d9c49947f52d1b6e46057bbf9f0f71216f307b5 100644 (file)
@@ -45,8 +45,6 @@ struct virtio_pci_vq_info {
 struct virtio_pci_admin_vq {
        /* Virtqueue info associated with this admin queue. */
        struct virtio_pci_vq_info *info;
-       /* serializing admin commands execution. */
-       struct mutex cmd_lock;
        /* Protects virtqueue access. */
        spinlock_t lock;
        u64 supported_cmds;
index 608df3263df14fc365b7a7eda4739a2a743f8326..9193c30d640aeb91b6bcd6bccc97bedda2418239 100644 (file)
@@ -167,12 +167,9 @@ int vp_modern_admin_cmd_exec(struct virtio_device *vdev,
                in_num++;
        }
 
-       mutex_lock(&vp_dev->admin_vq.cmd_lock);
        ret = virtqueue_exec_admin_cmd(&vp_dev->admin_vq,
                                       le16_to_cpu(cmd->opcode),
                                       sgs, out_num, in_num, cmd);
-       mutex_unlock(&vp_dev->admin_vq.cmd_lock);
-
        if (ret) {
                dev_err(&vdev->dev,
                        "Failed to execute command on admin vq: %d\n.", ret);
@@ -837,7 +834,6 @@ int virtio_pci_modern_probe(struct virtio_pci_device *vp_dev)
        vp_dev->vdev.id = mdev->id;
 
        spin_lock_init(&vp_dev->admin_vq.lock);
-       mutex_init(&vp_dev->admin_vq.cmd_lock);
        return 0;
 }
 
@@ -845,6 +841,5 @@ void virtio_pci_modern_remove(struct virtio_pci_device *vp_dev)
 {
        struct virtio_pci_modern_device *mdev = &vp_dev->mdev;
 
-       mutex_destroy(&vp_dev->admin_vq.cmd_lock);
        vp_modern_remove(mdev);
 }