Patrick Rudolph uploaded patch set #9 to this change.

View Change

[WIP]x86: Introduce the blobolator

This is a PoC to run arbitrary code and blobs inside an emulated
virtual machine using libx86emu, thus the name blobolator.

The libx86emu has been patched to the following:
* redirect IO to the host machine it's running on
* trace IO
* start in protected mode
* add mechanism to drop IO access
* add Kconfig to debug code it is running

Implemented features:
* Run ramstage in libx86emu
* Kconfig specific hooks by using _blobolator_drivers
(same mechanism as __pci_driver)
* PCI decoding and BAR tracing
* POST code decoding
* Unhandled IO tracing
* Added test code in qemu emulation/q35

TODO:
* Add support to trace only blobs, not stages.
* Improve translation of known IO to human readable format
** COM
** PCI
** APIC
** PIT
** POST

Tested on qemu. Sucessfully run ramstage in blobolator.
Tested on X11SSH-TF. Sucessfully run ramstage in blobolator
(requires additional libx86emu patches).

Change-Id: I13e47f45e69376d046f35c04363fe3db1cfaa610
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
---
M src/Kconfig
M src/arch/x86/Makefile.inc
M src/arch/x86/boot.c
A src/arch/x86/libx86emu/Kconfig.debug
A src/arch/x86/libx86emu/Makefile.inc
A src/arch/x86/libx86emu/blobolator.c
A src/arch/x86/libx86emu/blobolator_internal.h
A src/arch/x86/libx86emu/stdarg.h
A src/arch/x86/libx86emu/stdio.h
A src/arch/x86/libx86emu/time.h
A src/arch/x86/libx86emu/trace-bios.c
A src/arch/x86/libx86emu/trace-pci.c
A src/arch/x86/libx86emu/trace-serial.c
A src/arch/x86/libx86emu/trace-skl.c
A src/arch/x86/libx86emu/trace.c
M src/arch/x86/postcar_loader.c
M src/commonlib/include/commonlib/cbmem_id.h
A src/include/blobolator.h
M src/include/rules.h
M src/include/stddef.h
M src/lib/Makefile.inc
M src/lib/hardwaremain.c
M src/lib/program.ld
M src/mainboard/emulation/qemu-q35/mainboard.c
24 files changed, 2,065 insertions(+), 7 deletions(-)

git pull ssh://review.coreboot.org:29418/coreboot refs/changes/20/32020/9

To view, visit change 32020. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I13e47f45e69376d046f35c04363fe3db1cfaa610
Gerrit-Change-Number: 32020
Gerrit-PatchSet: 9
Gerrit-Owner: Patrick Rudolph <patrick.rudolph@9elements.com>
Gerrit-Reviewer: Angel Pons <th3fanbus@gmail.com>
Gerrit-Reviewer: Arthur Heymans <arthur@aheymans.xyz>
Gerrit-Reviewer: Christian Walter <christian.walter@9elements.com>
Gerrit-Reviewer: Daniel Maslowski <info@orangecms.org>
Gerrit-Reviewer: Felix Singer <felixsinger@posteo.net>
Gerrit-Reviewer: Julius Werner <jwerner@chromium.org>
Gerrit-Reviewer: Martin Roth <martinroth@google.com>
Gerrit-Reviewer: Nico Huber <nico.h@gmx.de>
Gerrit-Reviewer: Patrick Georgi <pgeorgi@google.com>
Gerrit-Reviewer: Patrick Rudolph <patrick.rudolph@9elements.com>
Gerrit-Reviewer: Philipp Deppenwiese <zaolin.daisuki@gmail.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-CC: Michael Niewöhner
Gerrit-CC: Paul Menzel <paulepanter@users.sourceforge.net>
Gerrit-CC: Stefan Reinauer <stefan.reinauer@coreboot.org>
Gerrit-CC: Thomas Heijligen <src@posteo.de>
Gerrit-MessageType: newpatchset