diff options
-rw-r--r-- | drivers/char/virtio_console.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c index 7671914be172..6207e3729923 100644 --- a/drivers/char/virtio_console.c +++ b/drivers/char/virtio_console.c | |||
@@ -784,6 +784,13 @@ int init_port_console(struct port *port) | |||
784 | spin_unlock_irq(&pdrvdata_lock); | 784 | spin_unlock_irq(&pdrvdata_lock); |
785 | port->guest_connected = true; | 785 | port->guest_connected = true; |
786 | 786 | ||
787 | /* | ||
788 | * Start using the new console output if this is the first | ||
789 | * console to come up. | ||
790 | */ | ||
791 | if (early_put_chars) | ||
792 | early_put_chars = NULL; | ||
793 | |||
787 | /* Notify host of port being opened */ | 794 | /* Notify host of port being opened */ |
788 | send_control_msg(port, VIRTIO_CONSOLE_PORT_OPEN, 1); | 795 | send_control_msg(port, VIRTIO_CONSOLE_PORT_OPEN, 1); |
789 | 796 | ||
@@ -1058,14 +1065,8 @@ static void handle_control_message(struct ports_device *portdev, | |||
1058 | switch (cpkt->event) { | 1065 | switch (cpkt->event) { |
1059 | case VIRTIO_CONSOLE_PORT_ADD: | 1066 | case VIRTIO_CONSOLE_PORT_ADD: |
1060 | if (port) { | 1067 | if (port) { |
1061 | /* | 1068 | dev_dbg(&portdev->vdev->dev, |
1062 | * This can happen for port 0: we have to | 1069 | "Port %u already added\n", port->id); |
1063 | * create a console port during probe() as was | ||
1064 | * the behaviour before the MULTIPORT feature. | ||
1065 | * On a newer host, when the host tells us | ||
1066 | * that a port 0 is available, we should just | ||
1067 | * say we have the port all set up. | ||
1068 | */ | ||
1069 | send_control_msg(port, VIRTIO_CONSOLE_PORT_READY, 1); | 1070 | send_control_msg(port, VIRTIO_CONSOLE_PORT_READY, 1); |
1070 | break; | 1071 | break; |
1071 | } | 1072 | } |
@@ -1409,17 +1410,14 @@ static int __devinit virtcons_probe(struct virtio_device *vdev) | |||
1409 | err = -ENOMEM; | 1410 | err = -ENOMEM; |
1410 | goto free_vqs; | 1411 | goto free_vqs; |
1411 | } | 1412 | } |
1413 | } else { | ||
1414 | /* | ||
1415 | * For backward compatibility: Create a console port | ||
1416 | * if we're running on older host. | ||
1417 | */ | ||
1418 | add_port(portdev, 0); | ||
1412 | } | 1419 | } |
1413 | 1420 | ||
1414 | /* | ||
1415 | * For backward compatibility: if we're running on an older | ||
1416 | * host, we always want to create a console port. | ||
1417 | */ | ||
1418 | add_port(portdev, 0); | ||
1419 | |||
1420 | /* Start using the new console output. */ | ||
1421 | early_put_chars = NULL; | ||
1422 | |||
1423 | __send_control_msg(portdev, VIRTIO_CONSOLE_BAD_ID, | 1421 | __send_control_msg(portdev, VIRTIO_CONSOLE_BAD_ID, |
1424 | VIRTIO_CONSOLE_DEVICE_READY, 1); | 1422 | VIRTIO_CONSOLE_DEVICE_READY, 1); |
1425 | return 0; | 1423 | return 0; |