# SPDX-License-Identifier: GPL-2.0+
#
# Copyright (C) 2017, Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>

U-Boot on QEMU's 'virt' machine on ARM & AArch64
================================================

QEMU for ARM supports a special 'virt' machine designed for emulation and
virtualization purposes. This document describes how to run U-Boot under it.
Both 32-bit ARM and AArch64 are supported.

The 'virt' platform provides the following as the basic functionality:

    - A freely configurable amount of CPU cores
    - U-Boot loaded and executing in the emulated flash at address 0x0
    - A generated device tree blob placed at the start of RAM
    - A freely configurable amount of RAM, described by the DTB
    - A PL011 serial port, discoverable via the DTB
    - An ARMv7/ARMv8 architected timer
    - PSCI for rebooting the system
    - A generic ECAM-based PCI host controller, discoverable via the DTB

Additionally, a number of optional peripherals can be added to the PCI bus.

Building U-Boot
---------------
Set the CROSS_COMPILE environment variable as usual, and run:

- For ARM:
    make qemu_arm_defconfig
    make

- For AArch64:
    make qemu_arm64_defconfig
    make

Running U-Boot
--------------
The minimal QEMU command line to get U-Boot up and running is:

- For ARM:
    qemu-system-arm -machine virt,highmem=off -bios u-boot.bin

- For AArch64:
    qemu-system-aarch64 -machine virt,highmem=off -cpu cortex-a57 -bios u-boot.bin

The 'highmem=off' parameter to the 'virt' machine is required for PCI to work
in U-Boot. Also, for some odd reason qemu-system-aarch64 needs to be explicitly
told to use a 64-bit CPU or it will boot in 32-bit mode.

Additional peripherals that have been tested to work in both U-Boot and Linux
can be enabled with the following command line parameters:

- To add a Serial ATA disk via an Intel ICH9 AHCI controller, pass e.g.:
    -drive if=none,file=disk.img,id=mydisk -device ich9-ahci,id=ahci -device ide-drive,drive=mydisk,bus=ahci.0
- To add an Intel E1000 network adapter, pass e.g.:
    -netdev user,id=net0 -device e1000,netdev=net0
- To add an EHCI-compliant USB host controller, pass e.g.:
    -device usb-ehci,id=ehci
- To add a NVMe disk, pass e.g.:
    -drive if=none,file=disk.img,id=mydisk -device nvme,drive=mydisk,serial=foo

These have been tested in QEMU 2.9.0 but should work in at least 2.5.0 as well.
