From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH 2/4] arm/early-printk: allow skipping of UART init Date: Fri, 24 May 2013 13:30:31 +0100 Message-ID: <519F5D67.5050405@linaro.org> References: <1369392152-1305-1-git-send-email-andre.przywara@calxeda.com> <1369392152-1305-3-git-send-email-andre.przywara@calxeda.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1369392152-1305-3-git-send-email-andre.przywara@calxeda.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Andre Przywara Cc: xen-devel@lists.xen.org, Ian.Campbell@citrix.com, stefano.stabellini@eu.citrix.com List-Id: xen-devel@lists.xenproject.org On 05/24/2013 11:42 AM, Andre Przywara wrote: > 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. I'm using the fast model: Fast Models [8.0.60 (Mar 7 2013)] and the UART initialization is needed. Could you do one of the following option: 1) add fastmodel early printk (with EARLY_PRINTK_INIT_UART=y) 2) document the behavior in docs/misc/arm/early-printk.txt > Signed-off-by: Andre Przywara > --- > xen/arch/arm/Rules.mk | 2 ++ > xen/arch/arm/arm32/head.S | 2 ++ > xen/arch/arm/arm64/head.S | 2 ++ > 3 files changed, 6 insertions(+) > > 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 -- Julien