s390/console: Make preferred console handling more consistent
Use the same code structure when determining preferred consoles for Linux running as KVM guest as with Linux running in LPAR and z/VM guest: - Extend the console_mode variable to cover vt220 and hvc consoles - Determine sensible console defaults in conmode_default() - Remove KVM-special handling in set_preferred_console() Ensure that the sclp line mode console is also registered when the vt220 console was selected to not change existing behavior that someone might be relying on. As an externally visible change, KVM guest users can now select the 3270 or 3215 console devices using the conmode= kernel parameter, provided that support for the corresponding driver was compiled into the kernel. Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com> Signed-off-by: Jing Liu <liujbjl@linux.vnet.ibm.com> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
Родитель
f045402984
Коммит
8f50af49f5
|
@ -86,9 +86,13 @@ extern char vmpoff_cmd[];
|
|||
#define CONSOLE_IS_SCLP (console_mode == 1)
|
||||
#define CONSOLE_IS_3215 (console_mode == 2)
|
||||
#define CONSOLE_IS_3270 (console_mode == 3)
|
||||
#define CONSOLE_IS_VT220 (console_mode == 4)
|
||||
#define CONSOLE_IS_HVC (console_mode == 5)
|
||||
#define SET_CONSOLE_SCLP do { console_mode = 1; } while (0)
|
||||
#define SET_CONSOLE_3215 do { console_mode = 2; } while (0)
|
||||
#define SET_CONSOLE_3270 do { console_mode = 3; } while (0)
|
||||
#define SET_CONSOLE_VT220 do { console_mode = 4; } while (0)
|
||||
#define SET_CONSOLE_HVC do { console_mode = 5; } while (0)
|
||||
|
||||
#define NSS_NAME_SIZE 8
|
||||
extern char kernel_nss_name[];
|
||||
|
|
|
@ -130,17 +130,14 @@ __setup("condev=", condev_setup);
|
|||
|
||||
static void __init set_preferred_console(void)
|
||||
{
|
||||
if (MACHINE_IS_KVM) {
|
||||
if (sclp.has_vt220)
|
||||
add_preferred_console("ttyS", 1, NULL);
|
||||
else if (sclp.has_linemode)
|
||||
add_preferred_console("ttyS", 0, NULL);
|
||||
else
|
||||
add_preferred_console("hvc", 0, NULL);
|
||||
} else if (CONSOLE_IS_3215 || CONSOLE_IS_SCLP)
|
||||
if (CONSOLE_IS_3215 || CONSOLE_IS_SCLP)
|
||||
add_preferred_console("ttyS", 0, NULL);
|
||||
else if (CONSOLE_IS_3270)
|
||||
add_preferred_console("tty3270", 0, NULL);
|
||||
else if (CONSOLE_IS_VT220)
|
||||
add_preferred_console("ttyS", 1, NULL);
|
||||
else if (CONSOLE_IS_HVC)
|
||||
add_preferred_console("hvc", 0, NULL);
|
||||
}
|
||||
|
||||
static int __init conmode_setup(char *str)
|
||||
|
@ -206,6 +203,15 @@ static void __init conmode_default(void)
|
|||
SET_CONSOLE_SCLP;
|
||||
#endif
|
||||
}
|
||||
} else if (MACHINE_IS_KVM) {
|
||||
if (sclp.has_vt220 &&
|
||||
config_enabled(CONFIG_SCLP_VT220_CONSOLE))
|
||||
SET_CONSOLE_VT220;
|
||||
else if (sclp.has_linemode &&
|
||||
config_enabled(CONFIG_SCLP_CONSOLE))
|
||||
SET_CONSOLE_SCLP;
|
||||
else
|
||||
SET_CONSOLE_HVC;
|
||||
} else {
|
||||
#if defined(CONFIG_SCLP_CONSOLE) || defined(CONFIG_SCLP_VT220_CONSOLE)
|
||||
SET_CONSOLE_SCLP;
|
||||
|
|
|
@ -319,7 +319,8 @@ sclp_console_init(void)
|
|||
int i;
|
||||
int rc;
|
||||
|
||||
if (!CONSOLE_IS_SCLP)
|
||||
/* SCLP consoles are handled together */
|
||||
if (!(CONSOLE_IS_SCLP || CONSOLE_IS_VT220))
|
||||
return 0;
|
||||
rc = sclp_rw_init();
|
||||
if (rc)
|
||||
|
|
Загрузка…
Ссылка в новой задаче