Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 362088
b: refs/heads/master
c: 165b1b8
h: refs/heads/master
v: v3
  • Loading branch information
Amit Shah authored and Rusty Russell committed Mar 30, 2013
1 parent 6b4a404 commit 251407c
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b7d44d9487a11e835de10908f4ab30b4290c0b7f
refs/heads/master: 165b1b8bbc17c9469b053bab78b11b7cbce6d161
17 changes: 9 additions & 8 deletions trunk/drivers/char/virtio_console.c
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ struct ports_device {
spinlock_t ports_lock;

/* To protect the vq operations for the control channel */
spinlock_t cvq_lock;
spinlock_t c_ivq_lock;

/* The current config space is stored here */
struct virtio_console_config config;
Expand Down Expand Up @@ -1709,23 +1709,23 @@ static void control_work_handler(struct work_struct *work)
portdev = container_of(work, struct ports_device, control_work);
vq = portdev->c_ivq;

spin_lock(&portdev->cvq_lock);
spin_lock(&portdev->c_ivq_lock);
while ((buf = virtqueue_get_buf(vq, &len))) {
spin_unlock(&portdev->cvq_lock);
spin_unlock(&portdev->c_ivq_lock);

buf->len = len;
buf->offset = 0;

handle_control_message(portdev, buf);

spin_lock(&portdev->cvq_lock);
spin_lock(&portdev->c_ivq_lock);
if (add_inbuf(portdev->c_ivq, buf) < 0) {
dev_warn(&portdev->vdev->dev,
"Error adding buffer to queue\n");
free_buf(buf, false);
}
}
spin_unlock(&portdev->cvq_lock);
spin_unlock(&portdev->c_ivq_lock);
}

static void out_intr(struct virtqueue *vq)
Expand Down Expand Up @@ -1996,10 +1996,11 @@ static int virtcons_probe(struct virtio_device *vdev)
if (multiport) {
unsigned int nr_added_bufs;

spin_lock_init(&portdev->cvq_lock);
spin_lock_init(&portdev->c_ivq_lock);
INIT_WORK(&portdev->control_work, &control_work_handler);

nr_added_bufs = fill_queue(portdev->c_ivq, &portdev->cvq_lock);
nr_added_bufs = fill_queue(portdev->c_ivq,
&portdev->c_ivq_lock);
if (!nr_added_bufs) {
dev_err(&vdev->dev,
"Error allocating buffers for control queue\n");
Expand Down Expand Up @@ -2150,7 +2151,7 @@ static int virtcons_restore(struct virtio_device *vdev)
return ret;

if (use_multiport(portdev))
fill_queue(portdev->c_ivq, &portdev->cvq_lock);
fill_queue(portdev->c_ivq, &portdev->c_ivq_lock);

list_for_each_entry(port, &portdev->ports, list) {
port->in_vq = portdev->in_vqs[port->id];
Expand Down

0 comments on commit 251407c

Please sign in to comment.