[PATCH 3/3] arm64: configs: Add virtconfig

Masahiro Yamada masahiroy at kernel.org
Fri Feb 10 23:37:02 PST 2023


On Sat, Feb 11, 2023 at 4:54 AM Mark Brown <broonie at kernel.org> wrote:
>
> Provide a slimline configuration intended to be booted on virtual
> machines, with the goal of providing a light configuration which will
> boot on and enable features available in mach-virt.  This is defined in
> terms of the standard defconfig, with an additional virt.config fragment
> which disables options unneeded in a virtual configuration.
>
> As a first step we just disable all the ARCH_ configuration options,
> disabling the build of all the SoC specific drivers.  This results in a
> kernel that builds about 25% faster in my testing, if this approach
> works for people we can add further options.
>
> Signed-off-by: Mark Brown <broonie at kernel.org>
> ---
>  arch/arm64/Makefile            |  6 ++++++
>  arch/arm64/configs/virt.config | 39 +++++++++++++++++++++++++++++++++++++++
>  2 files changed, 45 insertions(+)
>
> diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
> index c33b5da95b4a..2d49aea0ff67 100644
> --- a/arch/arm64/Makefile
> +++ b/arch/arm64/Makefile
> @@ -205,6 +205,12 @@ ifdef CONFIG_COMPAT_VDSO
>  endif
>  endif
>
> +include $(srctree)/scripts/Makefile.defconf
> +
> +PHONY += virtconfig
> +virtconfig:
> +       $(call merge_into_defconfig_override,defconfig,virt)
> +
>  define archhelp
>    echo  '* Image.gz      - Compressed kernel image (arch/$(ARCH)/boot/Image.gz)'
>    echo  '  Image         - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
> diff --git a/arch/arm64/configs/virt.config b/arch/arm64/configs/virt.config
> new file mode 100644
> index 000000000000..6ef0a739717f
> --- /dev/null
> +++ b/arch/arm64/configs/virt.config
> @@ -0,0 +1,39 @@
> +# CONFIG_ARCH_ACTIONS is not set
> +# CONFIG_ARCH_SUNXI is not set
> +# CONFIG_ARCH_ALPINE is not set
> +# CONFIG_ARCH_APPLE is not set
> +# CONFIG_ARCH_BCM is not set
> +# CONFIG_ARCH_BCM2835 is not set
> +# CONFIG_ARCH_BCMBCA is not set
> +# CONFIG_ARCH_BCM_IPROC is not set
> +# CONFIG_ARCH_BERLIN is not set
> +# CONFIG_ARCH_BRCMSTB is not set
> +# CONFIG_ARCH_EXYNOS is not set
> +# CONFIG_ARCH_K3 is not set
> +# CONFIG_ARCH_LAYERSCAPE is not set
> +# CONFIG_ARCH_LG1K is not set
> +# CONFIG_ARCH_HISI is not set
> +# CONFIG_ARCH_KEEMBAY is not set
> +# CONFIG_ARCH_MEDIATEK is not set
> +# CONFIG_ARCH_MESON is not set
> +# CONFIG_ARCH_MVEBU is not set
> +# CONFIG_ARCH_NXP is not set
> +# CONFIG_ARCH_MXC is not set
> +# CONFIG_ARCH_NPCM is not set
> +# CONFIG_ARCH_QCOM is not set
> +# CONFIG_ARCH_RENESAS is not set
> +# CONFIG_ARCH_ROCKCHIP is not set
> +# CONFIG_ARCH_S32 is not set
> +# CONFIG_ARCH_SEATTLE is not set
> +# CONFIG_ARCH_INTEL_SOCFPGA is not set
> +# CONFIG_ARCH_SYNQUACER is not set
> +# CONFIG_ARCH_TEGRA is not set
> +# CONFIG_ARCH_TESLA_FSD is not set
> +# CONFIG_ARCH_SPRD is not set
> +# CONFIG_ARCH_THUNDER is not set
> +# CONFIG_ARCH_THUNDER2 is not set
> +# CONFIG_ARCH_UNIPHIER is not set
> +# CONFIG_ARCH_VEXPRESS is not set
> +# CONFIG_ARCH_VISCONTI is not set
> +# CONFIG_ARCH_XGENE is not set
> +# CONFIG_ARCH_ZYNQMP is not set
>
> --
> 2.30.2
>



Yeah, I have a _local_ script to apply
a similar config fragragment.

When I run QEMU, I disable unneeded CONFIG_ARCH_*,
and also disable unneeded sub-systems.

Not only me, many people are doing similar in their local env,
I guess.


Of course, I will not upstream my set of CONFIG options
since it is just my preference.
After all, this depends on people in my opinion.


BTW, the minimal set for booting + minimal features
might be similar to what Buildroot provides?
I do not know... It booted at least when I tried some years ago.

https://github.com/buildroot/buildroot/blob/master/board/qemu/aarch64-virt/linux.config






--
Best Regards
Masahiro Yamada



More information about the linux-arm-kernel mailing list