projects
/
GitHub
/
exynos8895
/
android_kernel_samsung_universal8895.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
a752359
)
[SCSI] virtio-scsi: unlock during kick
author
Paolo Bonzini
<pbonzini@redhat.com>
Wed, 13 Jun 2012 14:56:31 +0000
(16:56 +0200)
committer
James Bottomley
<JBottomley@Parallels.com>
Fri, 20 Jul 2012 07:58:57 +0000
(08:58 +0100)
Separate virtqueue_kick_prepare from virtqueue_notify, so that the
expensive vmexit is done without holding the lock.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/virtio_scsi.c
patch
|
blob
|
blame
|
history
diff --git
a/drivers/scsi/virtio_scsi.c
b/drivers/scsi/virtio_scsi.c
index 1b384311726897bff5ba3e1014a53a536eccc210..b0ad5aa6b552c442e4f57b23b8848570b8315472 100644
(file)
--- a/
drivers/scsi/virtio_scsi.c
+++ b/
drivers/scsi/virtio_scsi.c
@@
-264,9
+264,11
@@
static int virtscsi_kick_cmd(struct virtio_scsi *vscsi, struct virtqueue *vq,
ret = virtqueue_add_buf(vq, vscsi->sg, out_num, in_num, cmd, gfp);
if (ret >= 0)
-
virtqueue_kick
(vq);
+
ret = virtqueue_kick_prepare
(vq);
spin_unlock_irqrestore(&vscsi->vq_lock, flags);
+ if (ret > 0)
+ virtqueue_notify(vq);
return ret;
}