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

Re: [Xen-devel] [PATCH v2 2/5] arm/early-printk: allow skipping of UART init



On 05/24/2013 02:47 PM, 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.
> 
> Signed-off-by: Andre Przywara <andre.przywara@xxxxxxxxxxx>

Reviewed-by: Julien Grall <julien.grall@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(+)
> 
> 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



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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