[1/1] tty/serial: to support 8250 earlycon can be enabled independently

Message ID 1463398558-6636-1-git-send-email-thunder.leizhen@huawei.com
State New
Headers show

Commit Message

Leizhen (ThunderTown) May 16, 2016, 11:35 a.m.
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.

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.

Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>

---
 drivers/tty/serial/8250/Kconfig  | 9 +++++++--
 drivers/tty/serial/8250/Makefile | 1 -
 drivers/tty/serial/Makefile      | 1 +
 3 files changed, 8 insertions(+), 3 deletions(-)

--
2.5.0


--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Leizhen (ThunderTown) May 17, 2016, 6:11 a.m. | #1
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@huawei.com>

>> ---

>>  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@vger.kernel.org

>> 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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch hide | download patch | download mbox

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