|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |