coreboot-kgpe-d16/Documentation/mainboard/emulation/qemu-q35.md
Angel Pons 16fe5e1511 src: Consolidate x86_64 support Kconfig
Introduce `USE_EXP_X86_64_SUPPORT` in `src/arch/x86/Kconfig` and guard
it with `HAVE_EXP_X86_64_SUPPORT`. Replace the per-CPU implementations
of the same functionality with the newly-added Kconfig options. Update
documentation and the config file for QEMU accordingly.

Change-Id: I550216fd2a8323342d6b605306b0b95ffd5dcd1c
Signed-off-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/55760
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
2021-07-02 08:19:21 +00:00

1.7 KiB

qemu q35 mainboard

Running coreboot in qemu

Emulators like qemu don't need a firmware to do hardware init. The hardware starts in the configured state already.

The coreboot port allows to test non mainboard specific code. As you can easily attach a debugger, it's a good target for experimental code.

coreboot x86_64 support

coreboot historically runs in 32-bit protected mode, even though the processor supports x86_64 instructions (long mode).

The qemu-q35 mainboard has been ported to x86_64 and will serve as reference platform to enable additional platforms.

To enable the support set the Kconfig option CONFIG_USE_EXP_X86_64_SUPPORT=y.

Installing qemu

On debian you can install qemu by running:

$ sudo apt-get install qemu

On redhat you can install qemu by running:

$ sudo dnf install qemu

Running coreboot

To run the i386 version of coreboot (default)

Running on qemu-system-i386 will require a 32 bit operating system.

qemu-system-i386 -bios build/coreboot.rom -serial stdio -M q35

To run the experimental x86_64 version of coreboot

Running on qemu-system-x86_64 allows to run a 32 bit or 64 bit operating system and firmware.

qemu-system-x86_64 -bios build/coreboot.rom -serial stdio -M q35

Finding bugs

To test coreboot's x86 code it's recommended to run on a x86 host and enable KVM. It will not only run faster, but is closer to real hardware. If you see the following message:

KVM internal error. Suberror: 1
emulation failure

something went wrong. The same bug will likely cause a FAULT on real hardware, too.

To enable KVM run:

qemu-system-x86_64 -bios build/coreboot.rom -serial stdio -M q35 -accel kvm -cpu host