Commit 68c6b3d2 authored by Hendrik Brueckner's avatar Hendrik Brueckner Committed by Martin Schwidefsky

[S390] hvc_iucv: Refactor console and device initialization

The console_initcall() order might pick up the hvc_iucv device as preferred
console even if it is not yet initialized.
Move HVC console instantiation to hvc_iucv_init() and cleanup device driver
initialization.
Signed-off-by: default avatarHendrik Brueckner <brueckner@linux.vnet.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 17e19f04
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <asm/ebcdic.h> #include <asm/ebcdic.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/init.h>
#include <linux/mempool.h> #include <linux/mempool.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/tty.h> #include <linux/tty.h>
...@@ -898,6 +899,13 @@ static int __init hvc_iucv_init(void) ...@@ -898,6 +899,13 @@ static int __init hvc_iucv_init(void)
return -ENOMEM; return -ENOMEM;
} }
/* register the first terminal device as console
* (must be done before allocating hvc terminal devices) */
rc = hvc_instantiate(HVC_IUCV_MAGIC, 0, &hvc_iucv_ops);
if (rc)
pr_warning("Registering HVC terminal device as "
"Linux console failed\n");
/* allocate hvc_iucv_private structs */ /* allocate hvc_iucv_private structs */
for (i = 0; i < hvc_iucv_devices; i++) { for (i = 0; i < hvc_iucv_devices; i++) {
rc = hvc_iucv_alloc(i); rc = hvc_iucv_alloc(i);
...@@ -932,16 +940,6 @@ out_error_hvc: ...@@ -932,16 +940,6 @@ out_error_hvc:
return rc; return rc;
} }
/**
* hvc_iucv_console_init() - Early console initialization
*/
static int __init hvc_iucv_console_init(void)
{
if (!MACHINE_IS_VM || !hvc_iucv_devices)
return -ENODEV;
return hvc_instantiate(HVC_IUCV_MAGIC, 0, &hvc_iucv_ops);
}
/** /**
* hvc_iucv_config() - Parsing of hvc_iucv= kernel command line parameter * hvc_iucv_config() - Parsing of hvc_iucv= kernel command line parameter
* @val: Parameter value (numeric) * @val: Parameter value (numeric)
...@@ -952,10 +950,5 @@ static int __init hvc_iucv_config(char *val) ...@@ -952,10 +950,5 @@ static int __init hvc_iucv_config(char *val)
} }
module_init(hvc_iucv_init); device_initcall(hvc_iucv_init);
console_initcall(hvc_iucv_console_init);
__setup("hvc_iucv=", hvc_iucv_config); __setup("hvc_iucv=", hvc_iucv_config);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("HVC back-end for z/VM IUCV.");
MODULE_AUTHOR("Hendrik Brueckner <brueckner@linux.vnet.ibm.com>");
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment