summaryrefslogtreecommitdiff
path: root/board/emulation
AgeCommit message (Collapse)Author
2026-02-17treewide: Clean up DECLARE_GLOBAL_DATA_PTR usagePeng Fan
Remove DECLARE_GLOBAL_DATA_PTR from files where gd is not used, and drop the unnecessary inclusion of asm/global_data.h. Headers should be included directly by the files that need them, rather than indirectly via global_data.h. Reviewed-by: Patrice Chotard <[email protected]> #STMicroelectronics boards and STM32MP1 ram test driver Tested-by: Anshul Dalal <[email protected]> #TI boards Acked-by: Yao Zi <[email protected]> #TH1520 Signed-off-by: Peng Fan <[email protected]>
2026-02-02board: Add QEMU m68k virt board supportKuan-Wei Chiu
Add support for the QEMU 'virt' machine on the m68k architecture. This board emulates a generic machine based on the Motorola 68040 CPU equipped with Goldfish virtual peripherals. Introduce the necessary board configuration and initialization infrastructure. The implementation includes logic to parse the QEMU bootinfo interface, enabling dynamic detection of system RAM size to adapt to the virtual machine's configuration. Enable the Goldfish TTY driver for serial console output. Additionally, enable Goldfish RTC and timer drivers to support real-time clock functionality and nanosecond-resolution delays. Include comprehensive documentation covering build instructions and usage examples. Signed-off-by: Kuan-Wei Chiu <[email protected]> Tested-by: Daniel Palmer <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2025-12-04qemu-arm-sba: Stop disabling device tree relocationTom Rini
Remove setting of fdt_high to ~0, which disables device tree relocation, from the default environment. Doing so prevents U-Boot from correcting problems such as having an unaligned device tree and leads to various failure modes in the OS. Signed-off-by: Tom Rini <[email protected]>
2025-11-28arm: qemu: Eliminate fdt_high and initrd_high misuseMarek Vasut
The fdt_high and initrd_high have nasty side-effects , which may lead to DT placed at 4-byte aligned offset when used in place, which then prevents Linux on arm64 from booting. This is difficult to debug and inobvious, with little to no gain. Remove this to let U-Boot place the DT at correctly aligned address. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2025-09-19board: qemu-sbsa: Fix mistyped GICV3 definitionKunihiko Hayashi
The config "GIC_V3" seems to be typo, and currently "GICV3" remains disabled. Since "GIC_V3_ITS" is enabled in qemu-sbsa, "GICV3" should also be enabled. Fixes: 6d722894fd48 ("board: emulation: Add QEMU sbsa support") Signed-off-by: Kunihiko Hayashi <[email protected]>
2025-08-21qemu_arm: Select CONFIG_SYS_EARLY_PCI_INITFabio Estevam
Select CONFIG_SYS_EARLY_PCI_INIT so that eMMC emulation can work. Signed-off-by: Fabio Estevam <[email protected]> Reviewed-by: Tom Rini <[email protected]> Tested-by: Jan Kiszka <[email protected]>
2025-07-24treewide: Remove empty board_init() function from all boardsSam Protsenko
Commit 86acdce2ba88 ("common: add config for board_init() call") introduced CONFIG_BOARD_INIT option. This option can be disabled for the boards where board_init() function is not needed. Remove empty board_init() calls for all boards where it's possible, and disable CONFIG_BOARD_INIT in all related defconfigs. This cleanup was made semi-automatically using these scripts: [1]. No functional change, but the binary size for the modified boards is reduced a bit. [1] https://github.com/joe-skb7/uboot-convert-scripts/tree/master/remove-board-init Signed-off-by: Sam Protsenko <[email protected]> Tested-by: Adam Ford <[email protected]> #imx8mm_beacon Tested-by: Bryan Brattlof <[email protected]> Acked-by: Peng Fan <[email protected]> #NXP boards
2025-07-24uclass: Cleanup uclass_find_next_deviceAndrew Goodbody
uclass_find_next_device always returns 0, so instead make it a void and update calling sites. Signed-off-by: Andrew Goodbody <[email protected]>
2025-06-02Merge patch series "Audit include list for include/[a-m]*.h"Tom Rini
Tom Rini <[email protected]> says: Hey all, Related to my other series I've posted recently on cleaning up some headers, this series here is the result of at least lightly auditing the #includes used in include/[a-m]*.h. This ignores subdirectories, as at least in part I think the top-level includes we've constructed are the most likely places to have some extra transitive include paths. I'm sure there's exceptions and I'll likely audit deeper once this first pass is done. This only gets as far as "include/m*.h" because I didn't want this to get too big. This also sets aside <miiphy.h> and <phy.h>. While miiphy.h does not directly need <phy.h> there are *so* many users and I think I had half of the tree just about not building when I first tried. It might be worth further investigation, but it might just be OK as-is. Link: https://lore.kernel.org/r/[email protected]
2025-06-02include/mmc.h: Audit include listTom Rini
This file does not need <linux/sizes.h> nor <linux/compiler.h> so remove them. This exposes however that a number of other files had been relying on this implicit include for <linux/sizes.h> so add that where needed. Signed-off-by: Tom Rini <[email protected]>
2025-05-25x86: efi_loader: Ensure the SMBIOS tables are sent via EFISimon Glass
The EFI-loader code has not been fully converted to use bloblist, so relies on the SMBIOS-table address being set in global_data. Set this up in write_tables() so that the SMBIOS tables are actually available. Enable the command for x86 QEMU so that the SMBIOS tests actually run. Signed-off-by: Simon Glass <[email protected]> Fixes: 83ce35d6ebb ("emulation: Use bloblist to hold tables") Reported-by: Niklas Sombert <[email protected]> Tested-by: Niklas Sombert <[email protected]> Tested-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Heinrich Schuchardt <[email protected]>
2025-04-25board: qemu: riscv: Remove duplicated board_fdt_blob_setupYao Zi
The default version should work for RISC-V QEMU. Signed-off-by: Yao Zi <[email protected]> Reviewed-by: Leo Yu-Chi Liang <[email protected]>
2025-04-22MAINTAINERS: add qemu-riscv* defconfigs to QEMU RISC-V 'VIRT' BOARDHeinrich Schuchardt
Add the follow board to VIRT which otherwise would be unmaintained: * qemu-riscv64_smode_acpi_defconfig Signed-off-by: Heinrich Schuchardt <[email protected]>
2025-04-22MAINTAINERS: add all qemu_arm64* defconfigs to VIRTHeinrich Schuchardt
Add the following boards to VIRT which otherwise would be unmaintained. * qemu_arm64_acpi_defconfig * qemu_arm64_lwip_defconfig Signed-off-by: Heinrich Schuchardt <[email protected]>
2025-04-08Merge patch series "acpi: simplify updating ACPI table header checksum"Tom Rini
Heinrich Schuchardt <[email protected]> says: Introduce a new function to update ACPI table headers. This allows to simplify the existing code. Link: https://lore.kernel.org/r/[email protected]
2025-04-08emulation: qemu-sbsa: Fill in correct ITS IDPatrick Rudolph
The ACPI IORT and ACPI MADT needs to use the same IDs when referencing GIC ITS. The GIC-v3 ITS driver uses dev_seq(dev) to generate a unique ID for the MADT, but qemu sbsa-ref hardcodes it. Currently it's not the same ID, breaking interrupt routing on the OS. Don't assume it's 0 and fetch it from the device instead. TEST: Fixes non working IRQs in QEMU sbsa-ref. Signed-off-by: Patrick Rudolph <[email protected]>
2025-04-08emulation: qemu-sbsa: Move ITS node into GICv3 nodePatrick Rudolph
According to the binding [1] the ITS node should be a subnode of the GICv3 node. Thus move it now that the driver binds subnodes as well. 1: https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/arm%2Cgic-v3.txt Signed-off-by: Patrick Rudolph <[email protected]>
2025-04-08qemu-sbsa: simplify updating ACPI table header checksumHeinrich Schuchardt
Use acpi_update_checksum() to update table header. Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Matthias Brugger <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2025-04-01Kconfig: Do not "select OF_SEPARATE"Tom Rini
As the code is today, we get a warning about "select" statements on "choice" options not doing anything. In the case of OF_SEPARATE this is the default so we do not need to do anything here normally to enforce this. Signed-off-by: Tom Rini <[email protected]>
2025-03-25riscv: qemu: imply CONFIG_RNG_RISCV_ZKRHeinrich Schuchardt
The zkr ISA extension can be used to generate random numbers. Since RVA22 zkr is an optional ISA extension. It can be emulated by QEMU. Our RNG driver detects if the extension is usable during driver binding. Let's enable it by default on QEMU. Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Leo Yu-Chi Liang <[email protected]>
2025-03-12emulation: qemu-sbsa: Enable PCI enumerationPatrick Rudolph
Enable PCI enumeration by default to get the Bochs display driver up and running before the boot medium is scanned. This is just to enhance the user-experience while booting the machine. TEST: U-Boot logo, version, log output and the U-Boot shell is visible on the display device. Signed-off-by: Patrick Rudolph <[email protected]>
2025-03-12emulation: qemu-sbsa: Select SYS_PCI_64BITPatrick Rudolph
qemu's sbsa-ref is always using a 64bit CPU and the PCI prefetch MMIO window is located above 4GiB, thus always enable SYS_PCI_64BIT. Signed-off-by: Patrick Rudolph <[email protected]>
2024-12-18fdt: Swap the signature for board_fdt_blob_setup()Simon Glass
This returns a devicetree and updates a parameter with an error code. Swap it, since this fits better with the way U-Boot normally works. It also (more easily) allows leaving the existing pointer unchanged. No yaks were harmed in this change, but there is a very small code-size reduction. For sifive, the OF_BOARD option must be set for the function to be called, so there is no point in checking it again. Also OF_SEPARATE is defined always. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Matthias Brugger <[email protected]> Reviewed-by: Patrice Chotard <[email protected]> [trini: Update total_compute] Signed-off-by: Tom Rini <[email protected]>
2024-12-06arm: qemu: fix update_info declarationVincent Stehlé
Add a missing comma in the update_info structure declaration. This fixes the following build error when building with EFI_RUNTIME_UPDATE_CAPSULE or EFI_CAPSULE_ON_DISK: board/emulation/qemu-arm/qemu-arm.c:52:9: error: request for member ‘images’ in something not a structure or union Fixes: cccea18813c4 ("efi_loader: add the number of image entries in efi_capsule_update_info") Signed-off-by: Vincent Stehlé <[email protected]> Cc: Masahisa Kojima <[email protected]> Cc: Tuomas Tynkkynen <[email protected]> Cc: Tom Rini <[email protected]>
2024-11-13board: qemu-arm: select CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDRHeinrich Schuchardt
qemu_arm64_defconfig with CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=n leads to a build error: arch/arm/lib/crt0_64.S:85: Error: constant expression expected at operand 2 -- `ldr x0,=((CFG_SYS_INIT_RAM_ADDR+CFG_SYS_INIT_RAM_SIZE-480))' We do not define CFG_SYS_INIT_RAM_ADDR and CFG_SYS_INIT_RAM_SIZE for QEMU. Signed-off-by: Heinrich Schuchardt <[email protected]> Acked-by: Ilias Apalodimas <[email protected]>
2024-10-28riscv: qemu: Enable EFI framebufferLekKit
Enable framebuffer for better virtual machine integration. Some guests need EFI FB to work properly. Reviewed-by: Leo Yu-Chi Liang <[email protected]>
2024-10-27board: emulation: Add QEMU sbsa supportPatrick Rudolph
Add support for Arm sbsa [1] v0.3+ that is supported by QEMU [2]. Unlike other Arm based platforms the machine only provides a minimal FDT that contains number of CPUs, ammount of memory and machine-version. The boot firmware has to provide ACPI tables to the OS. Due to this design a full DTB is added here as well that allows U-Boot's driver to properly function. The DTB is appended at the end of the U-Boot image and will be merged with the QEMU provided DTB. In addition provide documentation how to use, enable binman to fabricate both ROMs that are required to boot and add ACPI tables to make it full compatible to the EDK2 reference implementation. The board was tested using Fedora 40 Aarch64 Workstation. It's able to boot from USB and AHCI or network. Tested and found working: - serial - PCI - xHCI - Bochs display - AHCI - network using e1000e - CPU init - Booting Fedora 40 1: Server Base System Architecture (SBSA) 2: https://www.qemu.org/docs/master/system/arm/sbsa.html Signed-off-by: Patrick Rudolph <[email protected]> Cc: Peter Robinson <[email protected]> Cc: Simon Glass <[email protected]> Cc: Tom Rini <[email protected]>
2024-07-04board: emulation: New board qemu-xtensaJiaxun Yang
Introduce the new board, define every bits. Tested-by: Max Filippov <[email protected]> Signed-off-by: Jiaxun Yang <[email protected]>
2024-05-06board: emulation: Remove <common.h> and add needed includesTom Rini
Remove <common.h> from this board vendor directory and when needed add missing include files directly. Signed-off-by: Tom Rini <[email protected]>
2024-04-10Merge patch series "Resolve issues with booting distros on x86"Tom Rini
Simon Glass <[email protected]> says: This little series reprises the EFI-video fix, fixes a USB problem and enables a boot script for coreboot. It also moves to truetype fonts for coreboot and qemu-x86, since the menus look much better and there are no strong size constraints. With these changes it is possible to boot a Linux distro automatically with U-Boot on x86, including when U-Boot is the second-stage bootloader.
2024-04-10x86: qemu: Expand ROM sizeSimon Glass
Expand the ROM for x86_64 to 2MB to make space for the font, as it is already on the edge. Signed-off-by: Simon Glass <[email protected]>
2024-04-09riscv: Move virtio scan to board_late_init()Łukasz Stelmach
When virtio_init() gets called from board_init() PCI isn't ready. Thus, virtio-over-PCI (e.g. network interfaces) devices can't be detected and used without additional `virtio scan` scan in the shell or a script. Signed-off-by: Łukasz Stelmach <[email protected]> Reviewed-by: Leo Yu-Chi Liang <[email protected]>
2024-03-02qemu-arm: round down memory to multiple of 2MB for LPAEIgor Opaniuk
QEMU's -m option can take fractional megabyte values, and lowest granularity seems to be 0x2000. For example, run qemu with amount of memory set to 100005k (0x61A9400): $ qemu-system-arm -machine virt -cpu cortex-a15 -m 100005k \ -bios denx/u-boot.bin -nographic => fdt addr $fdt_addr => fdt print /memory@40000000 memory@40000000 { reg = <0x00000000 0x40000000 0x00000000 0x061aa000>; device_type = "memory"; }; When LPAE is enabled, 1:1 mapping is created using 2 MB blocks. In case amount of memory provided to QEMU is not multiple of 2 MB, hang occurs during MMU initialization. How to reproduce: qemu-system-arm -machine virt -m 1058 -nographic -bios u-boot.bin - boots qemu-system-arm -machine virt -m 1057 -nographic -bios u-boot.bin - hangs DRAM: 1 GiB initcall: 60011df8 initcall: 60011904 New Stack Pointer is: 80fffe90 initcall: 60011a20 initcall: 60011bcc initcall: 60011bd4 initcall: 600119b4 Relocation Offset is: 22042000 Relocating to 82042000, new gd at 81001ed0, sp at 80fffe90 initcall: 60011b8c initcall: 82053ea0 initcall: 82053ea8 initcall: 60012040 (relocated to 82054040) dram_bank_mmu_setup: bank: 0 - hang here during mmu init - This patches rounds down to the nearest multiple of 2MB when CONFIG_ARMV7_LPAE=y. Fixes: 3fa914af82("arm: qemu: implement enable_caches()") Signed-off-by: Igor Opaniuk <[email protected]> Reviewed-by: Oleksandr Suvorov <[email protected]>
2024-02-27qemu-x86*: Remove empty config headerTom Rini
Now that we support having CONFIG_SYS_CONFIG_NAME be unset to indicate a lack of board.h file, unset this on the qemu-x86* platforms and remove the otherwise empty file. Signed-off-by: Tom Rini <[email protected]>
2024-01-17riscv: qemu: imply GOLDFISH_RTCHeinrich Schuchardt
QEMU's virt board provides an emulated Goldfish RTC. Enable the driver by default. Signed-off-by: Heinrich Schuchardt <[email protected]>
2024-01-07arm: enable support for QEMU firmware tablesHeinrich Schuchardt
Enable the QEMU firmware interface if ACPI tables are to be supported on the QEMU platform. Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2024-01-07configs: qemu: add config fragment for ACPIHeinrich Schuchardt
Provide a configuration fragment to enable ACPI on QEMU. Signed-off-by: Heinrich Schuchardt <[email protected]> Acked-by: Ilias Apalodimas <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2024-01-07riscv: add support for QEMU firmware tablesHeinrich Schuchardt
Enable the QEMU firmware interface if ACPI tables are to be supported on the QEMU platform. Enable the QFW MMIO interface if the QEMU firmware interface is enabled. Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2023-12-18Merge tag 'v2024.01-rc5' into nextTom Rini
Prepare v2024.01-rc5
2023-12-06risc-v: qemu: imply NVME_PCIHeinrich Schuchardt
CONFIG_NVME=y without CONFIG_NVME_PCI=y does not provide working NVMe support. Instead of implying CONFIG_NVME we must imply CONFIG_NVME_PCI which will select CONFIG_NVME. Fixes: e64db0d92e32 ("riscv: qemu: Enable e1000 and nvme support") Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Mark Kettenis <[email protected]>
2023-11-27Merge patch series "ufs: Add a PCI UFS controller support"Tom Rini
To quote the author: This adds a PCI UFS controller support and enables the support on QEMU RISC-V for testing. Requiring QEMU v8.2+.
2023-11-27qemu: riscv: Enable UFS supportBin Meng
This enables UFS support for QEMU RISC-V 'virt' machine. Signed-off-by: Bin Meng <[email protected]> Reviewed-by: Neha Malcom Francis <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-11-07scsi: Forceably finish migration to DM_SCSITom Rini
The migration deadline for moving to DM_SCSI was v2023.04. A further reminder was sent out in August 2023 to the remaining platforms that had not migrated already, and that a few more over the line (or configs deleted). With this commit we: - Rename CONFIG_DM_SCSI to CONFIG_SCSI. - Remove all of the non-DM SCSI code. This includes removing other legacy symbols and code and removes some legacy non-DM AHCI code. - Some platforms that had previously been DM_SCSI=y && SCSI=n are now fully migrated to DM_SCSI as a few corner cases in the code assumed DM_SCSI=y meant SCSI=y. Signed-off-by: Tom Rini <[email protected]>
2023-11-07qemu: Correct CMD_QFW dependencies in KconfigTom Rini
Rather than selecting CMD_QFW, we should make the option itself by enabled by default on these platforms. Then in the board-specific Kconfig we should select the appropriate back-end as needed if the command is enabled. Signed-off-by: Tom Rini <[email protected]>
2023-10-09board: Remove essentially empty board files and MakefilesTom Rini
As part of reviewing a new platform, Daniel Schwierzeck noted that we can have an empty Makefile in the board directory and don't need an empty board.c file as well. Further with further cleanup in the Makefile we can now omit the Makefile entirely. Remove a number of now unnecessary board.c and Makefiles. Signed-off-by: Tom Rini <[email protected]>
2023-09-21global: Use proper project name U-Boot (next2)Michal Simek
Use proper project name in README, rst and comment. Done in connection to commit bb922ca3eb4b ("global: Use proper project name U-Boot (next)"). Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Alexander Graf <[email protected]> (ppce500) Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/536af05e7061982f15b668e87f941cdabfa25392.1694157084.git.michal.simek@amd.com
2023-08-31event: Use an event to replace last_stage_init()Simon Glass
Add a new event which handles this function. Convert existing use of the function to use the new event instead. Make sure that EVENT is enabled by affected boards, by selecting it from the LAST_STAGE_INIT option. For x86, enable it by default since all boards need it. For controlcenterdc, inline the get_tpm() function and make sure the event is not built in SPL. Signed-off-by: Simon Glass <[email protected]>
2023-08-24arm: qemu: Enable usb keyboard as an input deviceAlper Nebi Yasak
Commit 02be57caf730 ("riscv: qemu: Enable usb keyboard as an input device") adds PCI xHCI support to QEMU RISC-V virtual machines and enables using a USB keyboard as one of the input devices. Similarly, enable those for ARM virtual machines as well. Signed-off-by: Alper Nebi Yasak <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Bin Meng <[email protected]>
2023-08-24arm: qemu: Enable PRE_CONSOLE_BUFFERAlper Nebi Yasak
Commit 608b80b5b855 ("riscv: qemu: Enable PRE_CONSOLE_BUFFER") enables buffering console messages for QEMU RISC-V virtual machines so those printed before the video console is available will still show up on the display. Similarly, enable it for ARM virtual machines as well. Signed-off-by: Alper Nebi Yasak <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Bin Meng <[email protected]>
2023-08-24arm: qemu: Enable Bochs video supportAlper Nebi Yasak
Commit 716161663ec49 ("riscv: qemu: Enable Bochs video support") enables a video console for QEMU RISC-V virtual machines using an emulated Bochs VGA card. Similarly, enable it for ARM virtual machines as well. Signed-off-by: Alper Nebi Yasak <[email protected]> Reviewed-by: Bin Meng <[email protected]>