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;
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);
vp_dev->vdev.id = mdev->id;
spin_lock_init(&vp_dev->admin_vq.lock);
- mutex_init(&vp_dev->admin_vq.cmd_lock);
return 0;
}
{
struct virtio_pci_modern_device *mdev = &vp_dev->mdev;
- mutex_destroy(&vp_dev->admin_vq.cmd_lock);
vp_modern_remove(mdev);
}