Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/s390/kernel/early_printk.c
26424 views
1
// SPDX-License-Identifier: GPL-2.0
2
/*
3
* Copyright IBM Corp. 2017
4
*/
5
6
#include <linux/console.h>
7
#include <linux/kernel.h>
8
#include <linux/init.h>
9
#include <asm/setup.h>
10
#include <asm/sclp.h>
11
12
static void sclp_early_write(struct console *con, const char *s, unsigned int len)
13
{
14
__sclp_early_printk(s, len);
15
}
16
17
static struct console sclp_early_console = {
18
.name = "earlysclp",
19
.write = sclp_early_write,
20
.flags = CON_PRINTBUFFER | CON_BOOT,
21
.index = -1,
22
};
23
24
void __init register_early_console(void)
25
{
26
if (early_console)
27
return;
28
if (!sclp.has_linemode && !sclp.has_vt220)
29
return;
30
early_console = &sclp_early_console;
31
register_console(early_console);
32
}
33
34
static int __init setup_early_printk(char *buf)
35
{
36
if (early_console)
37
return 0;
38
/* Accept only "earlyprintk" and "earlyprintk=sclp" */
39
if (buf && !str_has_prefix(buf, "sclp"))
40
return 0;
41
register_early_console();
42
return 0;
43
}
44
early_param("earlyprintk", setup_early_printk);
45
46