virtio_console: Let unconnected rproc device receive data.
authorSjur Brændeland <sjur.brandeland@stericsson.com>
Mon, 21 Jan 2013 23:21:20 +0000 (09:51 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Tue, 22 Jan 2013 06:58:40 +0000 (17:28 +1030)
Allow rproc serial ports to receive data before the port
is connected.

Rproc serial ports usually talk to very simple remote devices
with no control queue managing open/close events. So we must
let remote devices write to the virtio ring even if the device
is not yet fully initialized.

Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
drivers/char/virtio_console.c

index 684b0d5..95cae77 100644 (file)
@@ -1763,8 +1763,11 @@ static void in_intr(struct virtqueue *vq)
         * tty is spawned) and the host sends out data to console
         * ports.  For generic serial ports, the host won't
         * (shouldn't) send data till the guest is connected.
+        * However a remote device might send data before the port is
+        * connected. So don't remove data from a rproc_serial device.
         */
-       if (!port->guest_connected)
+
+       if (!port->guest_connected && !is_rproc_serial(port->portdev->vdev))
                discard_port_data(port);
 
        spin_unlock_irqrestore(&port->inbuf_lock, flags);