[PATCH v3 00/43] x86: Use qemu-x86_64 to boot EFI installers
Simon Glass
sjg at chromium.org
Fri May 5 00:57:46 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 v3:
- 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 show the number of physical address bits
- 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
Simon Glass (43):
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.
video: Allow building video drivers for SPL
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
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: 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 litlle
x86: Record the start and end of the tables
x86: Show the number of physical address bits
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
arch/sandbox/include/asm/global_data.h | 4 +
arch/x86/cpu/i386/cpu.c | 2 +
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 | 61 ++++++++
arch/x86/cpu/start64.S | 19 +++
arch/x86/dts/chromebook_link.dts | 1 +
arch/x86/include/asm/global_data.h | 5 +
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 | 6 +
arch/x86/lib/bios.c | 4 +-
arch/x86/lib/bootm.c | 2 +-
arch/x86/lib/mrccache.c | 6 +-
arch/x86/lib/spl.c | 63 +++++++--
arch/x86/lib/tables.c | 42 ++++--
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 | 14 ++
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 | 28 ++--
doc/usage/index.rst | 1 +
drivers/Kconfig | 2 +
drivers/Makefile | 5 +-
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 | 12 ++
drivers/nvme/nvme.c | 36 +++--
drivers/pch/pch9.c | 6 +-
drivers/pci/Kconfig | 8 ++
drivers/pci/pci-uclass.c | 10 +-
drivers/pci/pci_rom.c | 165 +++++++++++++++++-----
fs/fat/Kconfig | 13 ++
fs/fat/fat.c | 121 +++++++++++++---
fs/fat/fat_write.c | 22 ++-
include/asm-generic/global_data.h | 11 ++
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/pci_ids.h | 1 +
include/video.h | 24 ++++
lib/efi_loader/efi_acpi.c | 33 +++--
lib/uuid.c | 2 +-
test/dm/acpi.c | 38 +++++
67 files changed, 1107 insertions(+), 266 deletions(-)
create mode 100644 doc/usage/cmd/mtrr.rst
create mode 100644 drivers/bios_emulator/Kconfig
--
2.40.1.521.gf1e218fcd8-goog
More information about the U-Boot
mailing list