59eb1ca7a8
There are two problems in the vt220 intialization: o Currently the vt220 console looses early printk events until the the vt220 tty is registered. o console should work if tty_register fails sclp_vt220_con_init calls __sclp_vt220_init and register_console. It does not register the driver with the sclp core code via sclp_register. That results in an sclp_send_mask=0. Therefore, __sclp_vt220_emit will reject buffers with EIO. Unfortunately register_console will cause the printk buffer to be sent to the console and, therefore, every early message gets dropped. The sclp_send_mask is set later during boot, when sclp_vt220_tty_init calls sclp_register. The solution is to move the sclp_register call from sclp_vt220_tty_init to __sclp_vt220_init. This makes sure that the console is properly registered with the sclp subsystem before the first log buffer messages are passed to the vt220 console. We also adopt the cleanup on error to keep the console alive if tty_register fails. Thanks to Peter Oberparleiter and Heiko Carstens for review and ideas for improvement. Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> |
||
---|---|---|
.. | ||
con3215.c | ||
con3270.c | ||
ctrlchar.c | ||
ctrlchar.h | ||
defkeymap.c | ||
defkeymap.map | ||
fs3270.c | ||
Kconfig | ||
keyboard.c | ||
keyboard.h | ||
Makefile | ||
monreader.c | ||
monwriter.c | ||
raw3270.c | ||
raw3270.h | ||
sclp.c | ||
sclp.h | ||
sclp_cmd.c | ||
sclp_con.c | ||
sclp_config.c | ||
sclp_cpi.c | ||
sclp_cpi_sys.c | ||
sclp_cpi_sys.h | ||
sclp_quiesce.c | ||
sclp_rw.c | ||
sclp_rw.h | ||
sclp_sdias.c | ||
sclp_tty.c | ||
sclp_tty.h | ||
sclp_vt220.c | ||
tape.h | ||
tape_34xx.c | ||
tape_3590.c | ||
tape_3590.h | ||
tape_block.c | ||
tape_char.c | ||
tape_class.c | ||
tape_class.h | ||
tape_core.c | ||
tape_proc.c | ||
tape_std.c | ||
tape_std.h | ||
tty3270.c | ||
tty3270.h | ||
vmcp.c | ||
vmcp.h | ||
vmlogrdr.c | ||
vmur.c | ||
vmur.h | ||
vmwatchdog.c | ||
zcore.c |