diff options
author | Amit Shah <amit.shah@redhat.com> | 2010-05-20 00:15:49 -0400 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2010-05-19 08:45:49 -0400 |
commit | 1d05160be743c506b1d6926e7c637496fa750cd3 (patch) | |
tree | dd4d366c0a6cbdef3f5747f104c515d558d00f55 /drivers/char/virtio_console.c | |
parent | f909f850d666e3dbac1ee7c9d5d83416bd02f84e (diff) |
virtio: console: Don't always create a port 0 if using multiport
If we're using multiport, there's no point in always creating a console
port. Create the console port only if the host doesn't support
multiport.
Signed-off-by: Amit Shah <amit.shah@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'drivers/char/virtio_console.c')
-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; |