[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 09/10] arm: add QEMU, Rcar3 and MPSoC configs
On Wed, 30 May 2018, Julien Grall wrote: > On 30/05/2018 22:39, Stefano Stabellini wrote: > > On Tue, 29 May 2018, Julien Grall wrote: > > > Hi Stefano, > > > > > > On 23/05/18 01:25, Stefano Stabellini wrote: > > > > Add a "Platform Support" menu with three umbrella kconfig options: QEMU, > > > > RCAR3 and MPSOC. They enable the required options for their hardware > > > > platform. > > > > > > > > They are introduced for convience: the user will be able to simply open > > > > the menu and enable the right config for her platform. > > > > > > > > Signed-off-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> > > > > CC: artem_mygaiev@xxxxxxxx > > > > CC: volodymyr_babchuk@xxxxxxxx > > > > > > > > --- > > > > Note that this approach has a limitation: it is not possible to "select > > > > a range". In other words, using tiny.config NR_CPUS is set to 4. It is > > > > not possible to increase it to 8 from config RCAR3. > > > > > > What you can do is: > > > > > > config NR_CPUS > > > range ... > > > default "8" if (RCAR3) > > > default "x" if (QEMU) > > > default 64 > > > > > > This would imply to move NR_CPUS in arch/{arm,x86}/Kconfig. > > > > > > This solution is not very nice, but at least would provide a better > > > experience > > > to the user. > > > > Unfortunately, make olddefconfig is executed automatically when make is > > called, adding CONFIG_NR_CPUS=128. Thus, unless tiny.config has already > > CONFIG_RCAR3 in it, the correct default won't be applied. > > > > This suggestions only make sense if we introduce per-platform configs, > > such as xen/arch/arm/configs/tiny-rcar3.config. > > The other solution is to introduce a new command (or script) that will select > the platform at the same time as olddefconfig. > > This would avoid to create a config per board and still keeping only one tiny > config. I am not looking forward to making changes to the kconfig commands, but fortunately I was wrong on my previous reply: the issue was the order of the defaults in the range! To fix the problem I just had to: default "8" if ARM && RCAR3 default "4" if ARM && QEMU default "4" if ARM && MPSOC default "256" if X86 default "128" if ARM > > > > Suggestions are welcome. > > > > --- > > > > xen/arch/arm/Kconfig | 2 ++ > > > > xen/arch/arm/platforms/Kconfig | 30 ++++++++++++++++++++++++++++++ > > > > 2 files changed, 32 insertions(+) > > > > create mode 100644 xen/arch/arm/platforms/Kconfig > > > > > > > > diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig > > > > index a5a6943..b5ddd12 100644 > > > > --- a/xen/arch/arm/Kconfig > > > > +++ b/xen/arch/arm/Kconfig > > > > @@ -245,6 +245,8 @@ config ARM64_HARDEN_BRANCH_PREDICTOR > > > > config ARM32_HARDEN_BRANCH_PREDICTOR > > > > def_bool y if ARM_32 && HARDEN_BRANCH_PREDICTOR > > > > +source "arch/arm/platforms/Kconfig" > > > > + > > > > source "common/Kconfig" > > > > source "drivers/Kconfig" > > > > diff --git a/xen/arch/arm/platforms/Kconfig > > > > b/xen/arch/arm/platforms/Kconfig > > > > new file mode 100644 > > > > index 0000000..0eafbef > > > > --- /dev/null > > > > +++ b/xen/arch/arm/platforms/Kconfig > > > > @@ -0,0 +1,30 @@ > > > > +menu "Platform Support" > > > > + > > > > +config QEMU > > > > + bool "QEMU aarch virt machine support" > > > > + default n > > > The default value is confusing here. The default .config will support QEMU > > > but > > > not select that. > > > > > > While I don't yet buy the argument, some users will also want to remove > > > platform specific code (Andrii suggest that). This would means by default > > > support for a specific platform will not be in Xen. > > > > > > Furthermore, very likely, the end user will select either one board (e.g > > > automotive) or all of them (e.g distribution). > > > > > > So I think it would be better to do a choice list: > > > - All -> Board support for all board added. Drivers selected by the > > > user > > > - MPSOC -> Select board support for Xilinx + appropriate drivers > > > - RCAR3 -> Select board support for RCAR3 + appropriate drivers > > > > > > The tiny.config would select ALL. This could then be refined by selecting > > > a > > > specific platform. > > > > The idea of an "ALL" configuration is interesting, however, all the > > options we would select under "ALL" already default to "Y". Effectively, > > if we remove the following lines from tiny.config: > > > > # CONFIG_GICV3 is not set > > # CONFIG_MEM_ACCESS is not set > > # CONFIG_SBSA_VUART_CONSOLE is not set > > # CONFIG_HAS_NS16550 is not set > > # CONFIG_HAS_CADENCE_UART is not set > > # CONFIG_HAS_MVEBU is not set > > # CONFIG_HAS_PL011 is not set > > # CONFIG_HAS_SCIF is not set > > # CONFIG_ARM_SMMU is not set > > > > then, it would be as if tiny.config had CONFIG_ALL=y, because after > > running `make olddefconfig' it would get all these options set to "Y". > > > > Given that make olddefconfig is always executed automatically by make, I > > cannot even remove the "is not set" options above from tiny.config > > because otherwise they will all be automatically enabled always unless I > > change all the defaults from Y to N. > > > > In fact, the main issue is that it is not possible to deselect Kconfig > > options using the Kconfig infrastructure. So, if a user has a > > config with CONFIG_ALL in it, then she executes `make menuconfig' > > to select RCAR3 and reduce the config size, the menu won't actually be > > able to deselect any other option automatically. This is very > > unfortunate. For instance, if the config has CADENCE_UART, and the user > > selects CONFIG_RCAR3 from the menu, the resulting config will still have > > CADENCE_UART, unless she goes to remove it by hand. > > > > Given all this, I don't know if it is worth introducing CONFIG_ALL. I > > could add something like: > > > > +config ALL > > + bool "Support for all platforms" > > + default y > > + select GICv3 > > + select HAS_NS16550 > > + select HAS_CADENCE_UART > > + select HAS_PL011 > > + select HAS_EXYNOS4210 > > + select HAS_MVEBU > > + select HAS_OMAP > > + select HAS_SCIF > > + select ARM_SMMU > > + ---help--- > > + Enable support for all platforms. Triggers the build of a larger Xen > > + binary but with more drivers. > > + > > + If unsure, say Y. > > > > but my preference would be to avoid it because it just duplicates the > > default Y/N settings elsewhere. > > This is not what I suggested for all. What I suggested is the option All will > select all platforms/*.c file to build and does not select any drivers. The > user will have to chose the drivers. You can see it as a "custom" option. > > Also, by a list I meant: > > config PLATFORM_RCAR3 > ... > > choice > prompt "Machine" > default .... > > config ALL > select PLATFORM_RCAR3 > select PLATFORM_XILINX > > config RCAR3 > prompt "RCAR 3 support" > select PLATFORM_RCAR3 > select HAS_PL011 > select ... > > endchoice. > > The config PLATFORM_* would then be used in the Makefile > xen-$(CONFIG_PLATFORM_XILINX) += xilinx.o > ... > > I can also understand that there might be issue with the "All" option hence > why I suggested the "NONE" platform. This would select none of the PLATFORM_*. Unfortunately it doesn't seem possible to have an option under a choice menu in kconfig that enables the other options. I get this error: arch/arm/platforms/Kconfig:1:error: recursive dependency detected! arch/arm/platforms/Kconfig:1: choice <choice> contains symbol ALL arch/arm/platforms/Kconfig:9: symbol ALL depends on QEMU arch/arm/platforms/Kconfig:18: symbol QEMU is part of choice <choice> Given the lack of better alternatives, I'll stick with what I had before: all platforms can be enabled manually by ticking all the three boxes, however, I changed the default to y, so that they will all be selected in the menu by default. If you have a better suggestion please reply to the new patch series I'll send shortly. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |