Acked-by: Hans de Goede <hdegoede@xxxxxxxxxx> On 01/31/2011 08:36 AM, Amit Shah wrote: > The outvq needs to be woken up on host notifications so that buffers > consumed by the host can be reclaimed, outvq freed, and application > writes may proceed again. > > The need for this is now finally noticed when I have qemu patches ready > to use nonblocking IO and flow control. > > CC: Hans de Goede<hdegoede@xxxxxxxxxx> > CC: stable@xxxxxxxxxx > Signed-off-by: Amit Shah<amit.shah@xxxxxxxxxx> > --- > drivers/tty/hvc/virtio_console.c | 15 +++++++++++++-- > 1 files changed, 13 insertions(+), 2 deletions(-) > > diff --git a/drivers/tty/hvc/virtio_console.c b/drivers/tty/hvc/virtio_console.c > index c4b0255..1068095 100644 > --- a/drivers/tty/hvc/virtio_console.c > +++ b/drivers/tty/hvc/virtio_console.c > @@ -1473,6 +1473,17 @@ static void control_work_handler(struct work_struct *work) > spin_unlock(&portdev->cvq_lock); > } > > +static void out_intr(struct virtqueue *vq) > +{ > + struct port *port; > + > + port = find_port_by_vq(vq->vdev->priv, vq); > + if (!port) > + return; > + > + wake_up_interruptible(&port->waitqueue); > +} > + > static void in_intr(struct virtqueue *vq) > { > struct port *port; > @@ -1577,7 +1588,7 @@ static int init_vqs(struct ports_device *portdev) > */ > j = 0; > io_callbacks[j] = in_intr; > - io_callbacks[j + 1] = NULL; > + io_callbacks[j + 1] = out_intr; > io_names[j] = "input"; > io_names[j + 1] = "output"; > j += 2; > @@ -1591,7 +1602,7 @@ static int init_vqs(struct ports_device *portdev) > for (i = 1; i< nr_ports; i++) { > j += 2; > io_callbacks[j] = in_intr; > - io_callbacks[j + 1] = NULL; > + io_callbacks[j + 1] = out_intr; > io_names[j] = "input"; > io_names[j + 1] = "output"; > } _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/virtualization