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

Re: [Xen-devel] [XEN PATCH v2 2/2] xen/arm: Configure early printk via Kconfig



On Fri, 6 Mar 2020, Anthony PERARD wrote:
> From: Julien Grall <julien.grall@xxxxxxx>
> 
> At the moment, early printk can only be configured on the make command
> line. It is not very handy because a user has to remove the option
> everytime it is using another command other than compiling the
> hypervisor.
> 
> Furthermore, early printk is one of the few odds one that are not
> using Kconfig.
> 
> So this is about time to move it to Kconfig.
> 
> The new kconfigs options allow a user to eather select a UART driver
> to use at boot time, and set the parameters, or it is still possible
> to select a platform which will set the parameters.
> 
> If a UART driver has been selected, the choice to select a platform
> won't be possible.
> 
> Signed-off-by: Julien Grall <julien.grall@xxxxxxx>
> Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>

Thanks for the cleanup, much needed

You can add

Tested-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>


> ---
> 
> Original patch:
>     [PATCH for-4.13] xen/arm: Add Skeleton for using configuring early printk 
> using Kconfig
>     <20190913103953.8182-1-julien.grall@xxxxxxx>
> ---
>  docs/misc/arm/early-printk.txt |  50 ++++----
>  xen/Kconfig.debug              |   2 +
>  xen/arch/arm/Kconfig.debug     | 208 +++++++++++++++++++++++++++++++++
>  xen/arch/arm/Rules.mk          |  72 ------------
>  xen/arch/x86/Kconfig.debug     |   0
>  5 files changed, 234 insertions(+), 98 deletions(-)
>  create mode 100644 xen/arch/arm/Kconfig.debug
>  create mode 100644 xen/arch/x86/Kconfig.debug
> 
> diff --git a/docs/misc/arm/early-printk.txt b/docs/misc/arm/early-printk.txt
> index 89e081e51eaf..7dff6c314549 100644
> --- a/docs/misc/arm/early-printk.txt
> +++ b/docs/misc/arm/early-printk.txt
> @@ -1,42 +1,40 @@
>  How to enable early printk
>  
> -Early printk can only be enabled if debug=y. You may want to enable it if
> -you are debbuging code that executes before the console is initialized.
> +Early printk can only be enabled if CONFIG_DEBUG=y. You may want to enable
> +it if you are debbuging code that executes before the console is
> +initialized.
>  
>  Note that selecting this option will limit Xen to a single UART definition.
>  Attempting to boot Xen image on a different platform *will not work*, so this
>  option should not be enable for Xens that are intended to be portable.
>  
> -CONFIG_EARLY_PRINTK=<INC>,<BASE_ADDRESS>,<OTHER_OPTIONS>
> +Select one of the "UART drivers for early printk" in the "Debugging options" 
> of
> +Kconfig. You will then need to set other options, which depends on the 
> drivers
> +selected.
>  
> -<INC> and <BASE_ADDRESS> are mandatory arguments:
> +CONFIG_EARLY_UART_BASE_ADDRESS is a mandatory arguments, it is the base
> +physical address of the UART to use.
>  
> -  - <INC> is the name of the driver, see xen/arch/arm/arm{32,64}/debug-*.inc
> -    (where <INC> corresponds to the wildcarded *).
> -  - <BASE_ADDRESS> is the base physical address of the UART to use
> +Other options depends on the driver selected:
> +  - 8250
> +    - CONFIG_EARLY_UART_8250_REG_SHIFT is, optionally, the left-shift to
> +      apply to the register offsets within the uart.
> +  - pl011
> +    - CONFIG_EARLY_UART_BAUD_RATE is, optionally a baud rate which should
> +      be used to configure the UART at start of day.
>  
> -<OTHER_OPTIONS> varies depending on <INC>:
> +      Select CONFIG_EARLY_UART_INIT to have the option, if that's set to N
> +      then the code will not try to initialize the UART, so that bootloader
> +      or firmware settings can be used for maximum compatibility.
> +  - scif
> +    - CONFIG_EARLY_UART_SCIF_VERSION is, optionally, the interface version
> +      of the UART. Default to version NONE.
>  
> -  - 8250,<BASE_ADDRESS>,<REG_SHIFT>
> -    - <REG_SHIFT> is, optionally, the left-shift to apply to the
> -      register offsets within the uart.
> -  - pl011,<BASE_ADDRESS>,<BAUD_RATE>
> -    - <BAUD_RATE> is, optionally a baud rate which should be used to
> -      configure the UART at start of day.
> -
> -      If <BAUD_RATE> is not given then the code will not try to
> -      initialize the UART, so that bootloader or firmware settings can
> -     be used for maximum compatibility.
> -  - scif,<BASE_ADDRESS>,<VERSION>
> -    - SCIF<VERSION> is, optionally, the interface version of the UART.
> -
> -      If <VERSION> is not given then the default interface version (SCIF)
> -      will be used.
>    - For all other uarts there are no additional options.
>  
>  As a convenience it is also possible to select from a list of
> -predefined configurations using CONFIG_EARLY_PRINTK=mach where mach is
> -the name of the machine:
> +predefined configurations via "Enable early printk for a specific platform
> +(deprecated)".
>  
>    - brcm: printk with 8250 on Broadcom 7445D0 boards with A15 processors.
>    - dra7: printk with 8250 on DRA7 platform
> @@ -58,7 +56,7 @@ the name of the machine:
>    - xgene-storm: printk with 820 on Xgene storm platform
>    - zynqmp: printk with Cadence UART for Xilinx ZynqMP SoCs
>  
> -These settings are is hardcoded in xen/arch/arm/Rules.mk,
> +These settings are is hardcoded in xen/arch/arm/Kconfig.debug,
>  see there when adding support for new machines.
>  
>  By default early printk is disabled.
> diff --git a/xen/Kconfig.debug b/xen/Kconfig.debug
> index b3511e81a275..ee6ee33b69be 100644
> --- a/xen/Kconfig.debug
> +++ b/xen/Kconfig.debug
> @@ -128,6 +128,8 @@ config XMEM_POOL_POISON
>         Poison free blocks with 0xAA bytes and verify them when a block is
>         allocated in order to spot use-after-free issues.
>  
> +source "arch/$(SRCARCH)/Kconfig.debug"
> +
>  endif # DEBUG || EXPERT
>  
>  endmenu
> diff --git a/xen/arch/arm/Kconfig.debug b/xen/arch/arm/Kconfig.debug
> new file mode 100644
> index 000000000000..5111f89043ca
> --- /dev/null
> +++ b/xen/arch/arm/Kconfig.debug
> @@ -0,0 +1,208 @@
> +choice
> +     bool "UART drivers for early printk"
> +     optional
> +     help
> +             Choose one of the UART driver, then you'll have to specifie the
                               ^ drivers                   ^ specify 


> +             parameters, like the base address.
> +
> +             Alternatively, there are platform specific options
> +     config EARLY_UART_CHOICE_8250
> +             select EARLY_UART_8250
> +             bool "8250 driver"
> +     config EARLY_UART_CHOICE_CADENCE
> +             select EARLY_UART_CADENCE
> +             depends on ARM_64
> +             bool "Enable early printk via Cadence UART"
> +     config EARLY_UART_CHOICE_EXYNOS4210
> +             select EARLY_UART_EXYNOS4210
> +             depends on ARM_32
> +             bool "exynos 4210 driver"
> +     config EARLY_UART_CHOICE_MESON
> +             select EARLY_UART_MESON
> +             depends on ARM_64
> +             bool "meson driver"
> +     config EARLY_UART_CHOICE_MVEBU
> +             select EARLY_UART_MVEBU
> +             depends on ARM_64
> +             bool "mvebu driver"
> +     config EARLY_UART_CHOICE_PL011
> +             select EARLY_UART_PL011
> +             bool "pl011 driver"
> +     config EARLY_UART_CHOICE_SCIF
> +             select EARLY_UART_SCIF
> +             bool "scif driver"
> +endchoice
> +
> +
> +choice
> +     bool "Enable early printk for a specific platform (deprecated)"
> +     depends on !(EARLY_UART_CHOICE_8250 || EARLY_UART_CHOICE_CADENCE || 
> EARLY_UART_CHOICE_EXYNOS4210 || EARLY_UART_CHOICE_MESON || 
> EARLY_UART_CHOICE_MVEBU || EARLY_UART_CHOICE_PL011 || EARLY_UART_CHOICE_SCIF)
> +     optional
> +     help
> +             Those are platform specific options for early printk. This are
                                                               ^ They

> +             deprecated and will soon be removed.
> +
> +             Select a UART driver instead.

Could you please say "Select a UART driver for early printk instead" or
"Select an early printk UART driver instead". I know it is supposed to
be obvious but we also have UART device drivers under "Device Drivers"
and it actually got me confused for a while.



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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