[PATCH 3/9] x86: Run QEMU machine setup in SPL

Bin Meng bmeng.cn at gmail.com
Fri Jul 28 17:46:36 CEST 2023


On Mon, Jul 24, 2023 at 10:52 PM Simon Glass <sjg at chromium.org> wrote:
>
> Call the hardware-init function from QEMU from SPL. This allows the video
> BIOS to operate correctly.
>
> Create an x86-wide qemu.h header to avoid having to #ifdef the header in
> spl.c
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
>  arch/x86/cpu/qemu/qemu.c    |  2 +-
>  arch/x86/include/asm/qemu.h | 14 ++++++++++++++
>  arch/x86/lib/spl.c          |  3 +++
>  3 files changed, 18 insertions(+), 1 deletion(-)
>  create mode 100644 arch/x86/include/asm/qemu.h
>
> diff --git a/arch/x86/cpu/qemu/qemu.c b/arch/x86/cpu/qemu/qemu.c
> index 274978c023b6..70414556086c 100644
> --- a/arch/x86/cpu/qemu/qemu.c
> +++ b/arch/x86/cpu/qemu/qemu.c
> @@ -48,7 +48,7 @@ static void enable_pm_ich9(void)
>         pci_write_config32(ICH9_PM, PMBA, CONFIG_ACPI_PM1_BASE | 1);
>  }
>
> -static void qemu_chipset_init(void)
> +void qemu_chipset_init(void)
>  {
>         u16 device, xbcs;
>         int pam, i;
> diff --git a/arch/x86/include/asm/qemu.h b/arch/x86/include/asm/qemu.h
> new file mode 100644
> index 000000000000..f1e95ffd7a4d
> --- /dev/null
> +++ b/arch/x86/include/asm/qemu.h
> @@ -0,0 +1,14 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * Generic QEMU header
> + *
> + * Copyright 2023 Google LLC
> + */
> +
> +#ifndef __QEMU_H
> +#define __QEMU_H
> +
> +/* set up the chipset for QEMU so that video can be used */
> +void qemu_chipset_init(void);
> +
> +#endif
> diff --git a/arch/x86/lib/spl.c b/arch/x86/lib/spl.c
> index 55c061570864..74949b2c13cb 100644
> --- a/arch/x86/lib/spl.c
> +++ b/arch/x86/lib/spl.c
> @@ -27,6 +27,7 @@
>  #include <asm/mtrr.h>
>  #include <asm/pci.h>
>  #include <asm/processor.h>
> +#include <asm/qemu.h>
>  #include <asm/spl.h>
>  #include <asm-generic/sections.h>
>
> @@ -291,6 +292,8 @@ void spl_board_init(void)
>  #ifndef CONFIG_TPL
>         preloader_console_init();
>  #endif
> +       if (IS_ENABLED(CONFIG_X86) && IS_ENABLED(CONFIG_QEMU))

CONFIG_X86 is not necessary.

> +               qemu_chipset_init();
>
>         if (CONFIG_IS_ENABLED(VIDEO)) {
>                 struct udevice *dev;
> --

Otherwise,
Reviewed-by: Bin Meng <bmeng.cn at gmail.com>


More information about the U-Boot mailing list