[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen master] arm/early-printk: allow skipping of UART init



commit 130645eee340608c12b632535d3f983508348ba1
Author:     Andre Przywara <andre.przywara@xxxxxxxxxxx>
AuthorDate: Fri May 24 15:47:27 2013 +0200
Commit:     Ian Campbell <ian.campbell@xxxxxxxxxx>
CommitDate: Thu May 30 09:20:29 2013 +0100

    arm/early-printk: allow skipping of UART init
    
    While it seems obvious to initialize the UART before using it, chances
    are that some firmware code or the bootloader already did this.
    So it may actually be a good idea to skip the initialization, in fact
    this fixes early printk on my TC2 Versatile Express.
    So provide an option in xen/arch/arm/Rules.mk to only initialize the
    UART when needed.
    
    Signed-off-by: Andre Przywara <andre.przywara@xxxxxxxxxxx>
    Reviewed-by: Julien Grall <julien.grall@xxxxxxxxxx>
    Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
---
 docs/misc/arm/early-printk.txt |    4 ++++
 xen/arch/arm/Rules.mk          |    2 ++
 xen/arch/arm/arm32/head.S      |    2 ++
 xen/arch/arm/arm64/head.S      |    2 ++
 4 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/docs/misc/arm/early-printk.txt b/docs/misc/arm/early-printk.txt
index 10c3053..965add5 100644
--- a/docs/misc/arm/early-printk.txt
+++ b/docs/misc/arm/early-printk.txt
@@ -14,5 +14,9 @@ where mach is the name of the machine:
 
 The baud rate is hardcoded in xen/arch/arm/Rules.mk,
 see there when adding support for new machines.
+If not explicitly requested with "EARLY_PRINTK_INIT_UART := y" in Rules.mk,
+the code will not try to initialize the UART, so that bootloader or
+firmware settings can be used for maximum compatibility. The baud rate
+parameter is ignored in this case.
 
 By default early printk is disabled.
diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
index b4d6907..fdcf73e 100644
--- a/xen/arch/arm/Rules.mk
+++ b/xen/arch/arm/Rules.mk
@@ -49,6 +49,7 @@ EARLY_PRINTK_BAUD := 38400
 endif
 ifeq ($(CONFIG_EARLY_PRINTK), exynos5250)
 EARLY_PRINTK_INC := exynos4210
+EARLY_PRINTK_INIT_UART := y
 EARLY_PRINTK_BAUD := 115200
 endif
 
@@ -57,6 +58,7 @@ EARLY_PRINTK := y
 endif
 
 CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK
+CFLAGS-$(EARLY_PRINTK_INIT_UART) += -DEARLY_PRINTK_INIT_UART
 CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK_INC=\"debug-$(EARLY_PRINTK_INC).inc\"
 CFLAGS-$(EARLY_PRINTK) += -DEARLY_PRINTK_BAUD=$(EARLY_PRINTK_BAUD)
 endif
diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S
index ec7f640..0588d54 100644
--- a/xen/arch/arm/arm32/head.S
+++ b/xen/arch/arm/arm32/head.S
@@ -369,7 +369,9 @@ fail:   PRINT("- Boot failed -\r\n")
  * r11: Early UART base address
  * Clobbers r0-r2 */
 init_uart:
+#ifdef EARLY_PRINTK_INIT_UART
         early_uart_init r11, r1, r2
+#endif
         adr   r0, 1f
         b     puts                  /* Jump to puts */
 1:      .asciz "- UART enabled -\r\n"
diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
index 8955946..21b7e4d 100644
--- a/xen/arch/arm/arm64/head.S
+++ b/xen/arch/arm/arm64/head.S
@@ -116,7 +116,9 @@ boot_cpu:
 #ifdef EARLY_PRINTK
         ldr   x23, =EARLY_UART_BASE_ADDRESS /* x23 := UART base address */
         cbnz  x22, 1f
+#ifdef EARLY_PRINTK_INIT_UART
         bl    init_uart                 /* CPU 0 sets up the UART too */
+#endif
 1:      PRINT("- CPU ")
         mov   x0, x22
         bl    putn
--
generated by git-patchbot for /home/xen/git/xen.git#master

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.