aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/misc/arm/early-printk.txt4
-rw-r--r--xen/arch/arm/Rules.mk2
-rw-r--r--xen/arch/arm/arm32/head.S2
-rw-r--r--xen/arch/arm/arm64/head.S2
4 files changed, 10 insertions, 0 deletions
diff --git a/docs/misc/arm/early-printk.txt b/docs/misc/arm/early-printk.txt
index 10c30531f6..965add56b8 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 b4d690716a..fdcf73e453 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 ec7f640613..0588d54709 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 89559469ad..21b7e4d741 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