diff options
author | Miche Baker-Harvey <miche@google.com> | 2011-10-05 13:48:51 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-10-18 17:17:10 -0400 |
commit | 361162459f62dc0826b82c9690a741a940f457f0 (patch) | |
tree | 5ad067d69e9f3d765c4a28dc75b1a89fdfca494c /drivers/tty/hvc | |
parent | 53d785ccd918d571c227d459477793872676fc02 (diff) |
hvc_console: display printk messages on console.
printk only works for "registered consoles." Currently, the hvc_console
code calls register_console() from hvc_instantiate(), but that's only
used in the early console case. In hvc_alloc(), register_console() was
not called.
Add a call to register_console() in hvc_alloc(), set up the index in
the hvc_console, and set up the necessary vtermnos[] and cons_op[]
entries so that printk functions work.
Signed-off-by: Miche Baker-Harvey <miche@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/tty/hvc')
-rw-r--r-- | drivers/tty/hvc/hvc_console.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/tty/hvc/hvc_console.c b/drivers/tty/hvc/hvc_console.c index b6b2d18fa38d..7430bc3c8d53 100644 --- a/drivers/tty/hvc/hvc_console.c +++ b/drivers/tty/hvc/hvc_console.c | |||
@@ -852,7 +852,7 @@ struct hvc_struct *hvc_alloc(uint32_t vtermno, int data, | |||
852 | * find index to use: | 852 | * find index to use: |
853 | * see if this vterm id matches one registered for console. | 853 | * see if this vterm id matches one registered for console. |
854 | */ | 854 | */ |
855 | for (i=0; i < MAX_NR_HVC_CONSOLES; i++) | 855 | for (i = 0; i < MAX_NR_HVC_CONSOLES; i++) |
856 | if (vtermnos[i] == hp->vtermno && | 856 | if (vtermnos[i] == hp->vtermno && |
857 | cons_ops[i] == hp->ops) | 857 | cons_ops[i] == hp->ops) |
858 | break; | 858 | break; |
@@ -862,9 +862,13 @@ struct hvc_struct *hvc_alloc(uint32_t vtermno, int data, | |||
862 | i = ++last_hvc; | 862 | i = ++last_hvc; |
863 | 863 | ||
864 | hp->index = i; | 864 | hp->index = i; |
865 | hvc_console.index = i; | ||
866 | vtermnos[i] = vtermno; | ||
867 | cons_ops[i] = ops; | ||
865 | 868 | ||
866 | list_add_tail(&(hp->next), &hvc_structs); | 869 | list_add_tail(&(hp->next), &hvc_structs); |
867 | spin_unlock(&hvc_structs_lock); | 870 | spin_unlock(&hvc_structs_lock); |
871 | register_console(&hvc_console); | ||
868 | 872 | ||
869 | return hp; | 873 | return hp; |
870 | } | 874 | } |
@@ -875,6 +879,7 @@ int hvc_remove(struct hvc_struct *hp) | |||
875 | unsigned long flags; | 879 | unsigned long flags; |
876 | struct tty_struct *tty; | 880 | struct tty_struct *tty; |
877 | 881 | ||
882 | unregister_console(&hvc_console); | ||
878 | spin_lock_irqsave(&hp->lock, flags); | 883 | spin_lock_irqsave(&hp->lock, flags); |
879 | tty = tty_kref_get(hp->tty); | 884 | tty = tty_kref_get(hp->tty); |
880 | 885 | ||