On 2016/5/16 23:40, Peter Hurley wrote: > On 05/16/2016 04:35 AM, Zhen Lei wrote: >> Sometimes, we may only use SSH to login, and build 8250 uart driver as a >> ko(insmod if needed). But the earlycon may still be necessary, because >> the kernel boot process may take a long time. It's not good to display >> nothing but ask people to wait patiently. > > I'm confused; you want the possibility of earlycon but _not_ a normal > serial console? Our downstream customers want add some private functions into 8250.ko. So that, we can not pre-build the 8250 driver into Image. > > This configuration is unsafe because nothing prevents the 8250 driver > and 8250 earlycon from concurrently accessing the hardware. earlycon is a boot console, it will be disabled in printk_late_init(suppose we have not set keep_bootcon). > > >> In addition, the 8250.ko can not be worked if we have not opened any >> other serial drivers, because SERIAL_CORE would not be selected. > > I don't understand what this means. Before I opened CONFIG_SERIAL_AMBA_PL011_CONSOLE(only built 8250 as a module, this case can not be worked): CONFIG_SERIAL_CORE=m After I opened CONFIG_SERIAL_AMBA_PL011_CONSOLE: CONFIG_SERIAL_EARLYCON=y CONFIG_SERIAL_AMBA_PL011=y CONFIG_SERIAL_AMBA_PL011_CONSOLE=y CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y > > Regards, > Peter Hurley > > >> Signed-off-by: Zhen Lei <thunder.leizhen@xxxxxxxxxx> >> --- >> drivers/tty/serial/8250/Kconfig | 9 +++++++-- >> drivers/tty/serial/8250/Makefile | 1 - >> drivers/tty/serial/Makefile | 1 + >> 3 files changed, 8 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/tty/serial/8250/Kconfig b/drivers/tty/serial/8250/Kconfig >> index 4d7cb9c..2992f0a 100644 >> --- a/drivers/tty/serial/8250/Kconfig >> +++ b/drivers/tty/serial/8250/Kconfig >> @@ -3,6 +3,12 @@ >> # you somehow have an implicit or explicit dependency on SERIAL_8250. >> # >> >> +config SERIAL_8250_EARLYCON >> + bool "Early console using 8250" >> + select SERIAL_CORE >> + select SERIAL_CORE_CONSOLE >> + select SERIAL_EARLYCON >> + >> config SERIAL_8250 >> tristate "8250/16550 and compatible serial support" >> select SERIAL_CORE >> @@ -60,8 +66,7 @@ config SERIAL_8250_PNP >> config SERIAL_8250_CONSOLE >> bool "Console on 8250/16550 and compatible serial port" >> depends on SERIAL_8250=y >> - select SERIAL_CORE_CONSOLE >> - select SERIAL_EARLYCON >> + select SERIAL_8250_EARLYCON >> ---help--- >> If you say Y here, it will be possible to use a serial port as the >> system console (the system console is the device which receives all >> diff --git a/drivers/tty/serial/8250/Makefile b/drivers/tty/serial/8250/Makefile >> index c9a2d6e..1f24c74 100644 >> --- a/drivers/tty/serial/8250/Makefile >> +++ b/drivers/tty/serial/8250/Makefile >> @@ -13,7 +13,6 @@ obj-$(CONFIG_SERIAL_8250_HP300) += 8250_hp300.o >> obj-$(CONFIG_SERIAL_8250_CS) += serial_cs.o >> obj-$(CONFIG_SERIAL_8250_ACORN) += 8250_acorn.o >> obj-$(CONFIG_SERIAL_8250_BCM2835AUX) += 8250_bcm2835aux.o >> -obj-$(CONFIG_SERIAL_8250_CONSOLE) += 8250_early.o >> obj-$(CONFIG_SERIAL_8250_FOURPORT) += 8250_fourport.o >> obj-$(CONFIG_SERIAL_8250_ACCENT) += 8250_accent.o >> obj-$(CONFIG_SERIAL_8250_BOCA) += 8250_boca.o >> diff --git a/drivers/tty/serial/Makefile b/drivers/tty/serial/Makefile >> index 8c261ad..cd84181 100644 >> --- a/drivers/tty/serial/Makefile >> +++ b/drivers/tty/serial/Makefile >> @@ -19,6 +19,7 @@ obj-$(CONFIG_SERIAL_SUNSAB) += sunsab.o >> >> # Now bring in any enabled 8250/16450/16550 type drivers. >> obj-$(CONFIG_SERIAL_8250) += 8250/ >> +obj-$(CONFIG_SERIAL_8250_EARLYCON) += 8250/8250_early.o >> >> obj-$(CONFIG_SERIAL_AMBA_PL010) += amba-pl010.o >> obj-$(CONFIG_SERIAL_AMBA_PL011) += amba-pl011.o >> -- >> 2.5.0 >> >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-serial" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> > > > . > -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html