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>
This commit is contained in:
parent
53d785ccd9
commit
361162459f
1 changed files with 6 additions and 1 deletions
|
@ -852,7 +852,7 @@ struct hvc_struct *hvc_alloc(uint32_t vtermno, int data,
|
|||
* find index to use:
|
||||
* see if this vterm id matches one registered for console.
|
||||
*/
|
||||
for (i=0; i < MAX_NR_HVC_CONSOLES; i++)
|
||||
for (i = 0; i < MAX_NR_HVC_CONSOLES; i++)
|
||||
if (vtermnos[i] == hp->vtermno &&
|
||||
cons_ops[i] == hp->ops)
|
||||
break;
|
||||
|
@ -862,9 +862,13 @@ struct hvc_struct *hvc_alloc(uint32_t vtermno, int data,
|
|||
i = ++last_hvc;
|
||||
|
||||
hp->index = i;
|
||||
hvc_console.index = i;
|
||||
vtermnos[i] = vtermno;
|
||||
cons_ops[i] = ops;
|
||||
|
||||
list_add_tail(&(hp->next), &hvc_structs);
|
||||
spin_unlock(&hvc_structs_lock);
|
||||
register_console(&hvc_console);
|
||||
|
||||
return hp;
|
||||
}
|
||||
|
@ -875,6 +879,7 @@ int hvc_remove(struct hvc_struct *hp)
|
|||
unsigned long flags;
|
||||
struct tty_struct *tty;
|
||||
|
||||
unregister_console(&hvc_console);
|
||||
spin_lock_irqsave(&hp->lock, flags);
|
||||
tty = tty_kref_get(hp->tty);
|
||||
|
||||
|
|
Loading…
Reference in a new issue