[PATCH v5 00/46] x86: Use qemu-x86_64 to boot EFI installers

Simon Glass sjg at chromium.org
Sun Jul 16 05:38:33 CEST 2023


This series adds various minor features so that qemu-x86_64 can boot the
Ubuntu 2022.04 installer using a virtio device:

    qemu-system-x86_64 -M pc -drive format=raw,file=root.img
        -bios /tmp/b/qemu-x86_64/u-boot.rom
        -drive if=virtio,file=ubuntu-22.04.2-desktop-amd64.iso
        -smp 4 -m 4G -serial mon:stdio

The main changes include:
- Enable video in SPL while running in 32-bit mode
- Drop the duplicate ACPI tables with EFI
- Support PCI autoconfig in SPL
- Support FAT on a CDROM filesystem
- Improved bootstd rules around device tree and efi_set_bootdev()

There are also quite a number of minor tweaks and fixes to make things
easier to use.

This series is based on an older version of the SPL-video series from
Nikhil M Jain. It is available at u-boot-dm/bryc-working

Changes in v5:
- Make mtrr_type_name[] static
- Fix 'abrievated' typo
- Drop extra space in penultimate example
- Drop unnecessary 'it' in commit message
- Adjust the prompt for clarity (although it is now >12 chars)
- Reword commit message
- Drop unnecessary 'allow' word
- Add tests for bdinfo additions
- Drop extra 'qfw list' line
- Update commit message to explain 'md' reference
- Drop period at end of commit subject
- Drop extra 'a' in commit message
- Add 'bdinfo' tag to commit subject
- Use the existing QEMU code instead
- Use u16 instead of ushort
- Split out banner code into a separate patch
- Drop code to ensure the SPL banner is only shown once
- Fix 'litlle' typo in subject
- Correct indentation
- Add a comment about QFW putting its tables up high
- Add a comment that the bloblist is always in high memory
- Use "gpio" for log return
- Use QEMU instead of qemu
- Drop patch 'Show the number of physical address bits'

Changes in v4:
- Drop patch "video: Allow building video drivers for SPL"
- Drop use of video in SPL

Changes in v3:
- Fix invalid commit IDs obtained from another branch
- Add a tag name for the blob
- Add new patch to refactor table-writing code a ltitle
- Adjust the code to handle qemu writing a pointer to tables in memory

Changes in v2:
- Add new patch with docs for mtrr command
- Add docs to board_init_f_r() too
- Fix BINS typo
- Drop the Ooops string
- Drop ** in strings and use log_err() for messages
- Use log_warning() for the warning
- Handle the case where the tables are in the bloblist
- Add new patch to convert some debug statements to use logging
- Add new patch to support Micron memory
- Add new patch to make sure that the LPC is active before SDRAM init
- Add new patch to support outputing function names in SPL
- Drop patch to set high bits of the mtrr base register, for now
- Bring in to qemu series
- Rebase to -next
- Drop unused of_match
- Fix Boschs typo
- Rename bochs_init_linear_fb() function to drop 'linear'
- Fix uninited variable

Simon Glass (46):
  bdinfo: Add tests for serial settings
  x86: Return mtrr_add_request() to its old purpose
  x86: Allow listing MTRRs in SPL
  x86: mtrr: Add documentation
  bios_emulator: Add Kconfig and adjust Makefile for SPL
  bios_emulator: Drop VIDEO_IO_OFFSET
  x86: Tidy up EFI code in interrupt_init()
  x86: Add a comment for board_init_f_r_trampoline()
  x86: Show the CPU physical address size with bdinfo
  x86: Correct get_sp() implementation for 64-bit
  x86: Show an error when a BIOS exception occurs
  acpi: Add a comment to set the acpi tables
  bdinfo: Show the RAM top and approximate stack pointer
  part: Allow setting the partition-table type
  qfw: Show the file address if available
  log: Tidy up an ambiguous comment
  qfw: Set the address of the ACPI tables
  efi: Show all known UUIDs with CONFIG_CMD_EFIDEBUG
  x86: Improve the trampoline in 64-bit mode
  bdinfo: Show the malloc base with the bdinfo command
  nvme: Provide more useful debugging messages
  pci: Support autoconfig in SPL
  pci: Allow the video BIOS to work in SPL with QEMU
  pci: Tidy up logging and reporting for video BIOS
  x86: Allow video-BIOS code to be built for SPL
  x86: Pass video settings from SPL to U-Boot proper
  x86: Ensure SPL banner is only shown once
  x86: Init video in SPL if enabled
  pci: Adjust video BIOS debugging to be SPL-friendly
  pci: Mask the ROM address in case it is already enabled
  x86: Enable display for QEMU 64-bit
  x86: Allow logging to be used in SPL reliably
  fs: fat: Shrink the size of a few strings
  fs: fat: Support reading from a larger block size
  x86: Enable useful options for qemu-86_64
  x86: Refactor table-writing code a little
  x86: Record the start and end of the tables
  x86: Convert some debug statements to use logging
  x86: link: Support Micron memory
  x86: Make sure that the LPC is active before SDRAM init
  log: Support outputing function names in SPL
  sandbox: Correct header order in board file
  sandbox: Install ACPI tables on startup
  efi: Use the installed ACPI tables
  x86: video: Add a driver for QEMU bochs emulation
  x86: Switch QEMU over to use the bochs driver

 arch/sandbox/include/asm/global_data.h    |   4 +
 arch/x86/cpu/i386/interrupt.c             |  17 +--
 arch/x86/cpu/intel_common/mrc.c           |  10 +-
 arch/x86/cpu/ivybridge/sdram.c            |   4 +-
 arch/x86/cpu/mtrr.c                       |  67 +++++++++-
 arch/x86/cpu/qemu/Kconfig                 |   2 +-
 arch/x86/cpu/qemu/qemu.c                  |   5 +-
 arch/x86/cpu/start64.S                    |  19 +++
 arch/x86/dts/chromebook_link.dts          |   1 +
 arch/x86/include/asm/global_data.h        |   4 +
 arch/x86/include/asm/mtrr.h               |  20 +++
 arch/x86/include/asm/u-boot-x86.h         |  27 +++-
 arch/x86/lib/Makefile                     |   7 +-
 arch/x86/lib/bdinfo.c                     |   5 +
 arch/x86/lib/bios.c                       |   4 +-
 arch/x86/lib/bootm.c                      |   2 +-
 arch/x86/lib/mrccache.c                   |   6 +-
 arch/x86/lib/spl.c                        |  68 ++++++++--
 arch/x86/lib/tables.c                     |  46 +++++--
 board/google/Kconfig                      |   7 -
 board/sandbox/sandbox.c                   |  22 +++-
 cmd/Kconfig                               |   8 ++
 cmd/acpi.c                                |  24 +++-
 cmd/bdinfo.c                              |   6 +
 cmd/part.c                                |  34 +++++
 cmd/qfw.c                                 |   2 +-
 cmd/x86/mtrr.c                            |  60 +--------
 common/bloblist.c                         |   1 +
 common/board_f.c                          |  12 +-
 common/board_r.c                          |   7 +-
 common/log.c                              |   2 +-
 common/log_console.c                      |  10 +-
 configs/qemu-x86_64_defconfig             |  16 ++-
 configs/qemu-x86_defconfig                |   3 -
 disk/part.c                               |  16 +++
 doc/usage/cmd/acpi.rst                    |  29 ++++-
 doc/usage/cmd/mtrr.rst                    | 151 ++++++++++++++++++++++
 doc/usage/cmd/part.rst                    |  74 +++++++++++
 doc/usage/cmd/qfw.rst                     |  27 ++--
 doc/usage/index.rst                       |   1 +
 drivers/Kconfig                           |   2 +
 drivers/Makefile                          |   2 +-
 drivers/bios_emulator/Kconfig             |  10 ++
 drivers/bios_emulator/biosemui.h          |  18 +--
 drivers/bios_emulator/x86emu/sys.c        |   1 +
 drivers/gpio/intel_ich6_gpio.c            |   5 +-
 drivers/misc/qfw.c                        |  13 ++
 drivers/nvme/nvme.c                       |  36 ++++--
 drivers/pch/pch9.c                        |   6 +-
 drivers/pci/Kconfig                       |   5 +
 drivers/pci/pci-uclass.c                  |  10 +-
 drivers/pci/pci_rom.c                     | 124 ++++++++++++------
 drivers/video/Kconfig                     |  30 +++++
 drivers/video/Makefile                    |   1 +
 drivers/video/bochs.c                     | 123 ++++++++++++++++++
 drivers/video/bochs.h                     |  36 ++++++
 fs/fat/Kconfig                            |  13 ++
 fs/fat/fat.c                              | 121 ++++++++++++++---
 fs/fat/fat_write.c                        |  22 ++--
 include/asm-generic/global_data.h         |  13 ++
 include/bloblist.h                        |   1 +
 include/configs/conga-qeval20-qa3-e3845.h |   2 -
 include/configs/dfi-bt700.h               |   2 -
 include/configs/minnowmax.h               |   2 -
 include/configs/som-db5800-som-6867.h     |   2 -
 include/configs/theadorable-x86-common.h  |   2 -
 include/configs/x86-chromebook.h          |   2 -
 include/part.h                            |   9 ++
 include/qemu.h                            |  14 ++
 include/video.h                           |  24 ++++
 lib/efi_loader/efi_acpi.c                 |  33 +++--
 lib/uuid.c                                |   2 +-
 test/cmd/bdinfo.c                         |  21 +++
 test/dm/acpi.c                            |  38 ++++++
 74 files changed, 1299 insertions(+), 276 deletions(-)
 create mode 100644 doc/usage/cmd/mtrr.rst
 create mode 100644 drivers/bios_emulator/Kconfig
 create mode 100644 drivers/video/bochs.c
 create mode 100644 drivers/video/bochs.h
 create mode 100644 include/qemu.h

-- 
2.41.0.455.g037347b96a-goog



More information about the U-Boot mailing list