[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 |