coreboot-kgpe-d16/payloads/coreinfo
Julius Werner d67c6876b5 Turn CBMEM console into a ring buffer that can persist across reboots
This patch allows the CBMEM console to persist across reboots, which
should greatly help post factum debugging of issues involving multiple
reboots. In order to prevent the console from filling up, it will
instead operate as a ring buffer that continues to evict the oldest
lines once full. (This means that if even a single boot doesn't fit into
the buffer, we will now drop the oldest lines whereas previous code
would've dropped the newest lines instead.)

The console control structure is modified in a sorta
backwards-compatible way, so that new readers can continue to work with
old console buffers and vice versa. When an old reader reads a new
buffer that has already once overflowed (i.e. is operating in true ring
buffer mode) it will print lines out of order, but it will at least
still print out the whole console content and not do any illegal memory
accesses (assuming it correctly implemented cursor overflow as it was
already possible before this patch).

BUG=chromium:651966
TEST=Rebooted and confirmed output repeatedly on a Kevin and a Falco.
Also confirmed correct behavior across suspend/resume for the latter.

Change-Id: Ifcbf59d58e1ad20995b98d111c4647281fbb45ff
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://review.coreboot.org/18301
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2017-04-20 00:29:07 +02:00
..
COPYING
Kconfig coreinfo: Add support to read timestamps 2016-07-20 22:09:32 +02:00
Makefile build system: don't run xcompile or git for %clean/%config targets 2017-01-24 23:22:56 +01:00
README
bootlog_module.c Turn CBMEM console into a ring buffer that can persist across reboots 2017-04-20 00:29:07 +02:00
cbfs_module.c coreinfo: make the CBFS list scrollable 2016-10-13 18:21:02 +02:00
coreboot_module.c tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
coreinfo.c coreinfo: Add support to read timestamps 2016-07-20 22:09:32 +02:00
coreinfo.h coreinfo: Move screen dimensions to header 2015-11-19 17:32:24 +01:00
cpuid.S tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
cpuinfo_module.c tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
multiboot_module.c tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
nvram_module.c coreinfo/nvram: Print correct line numbers 2016-03-11 18:44:04 +01:00
pci_module.c tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
ramdump_module.c coreinfo: Pretty print RAM addresses 2016-03-15 18:23:30 +01:00
timestamps_module.c coreinfo: Add support to read timestamps 2016-07-20 22:09:32 +02:00

README

This is a silly little program that demonstrates how cool libpayload is
and also serves a purpose.  It is fun and educational!

Requirements
------------

You should use the coreboot reference cross compiler. If you insist on using
your system compiler, some Linux distributions might require you to install
a package called gcc-multilib if you are on a 64bit system.

Build
-----

You need libpayload to build coreinfo. So, first, you need follow the README of 
libpayload to build it but install libpayload into its own directory by doing 
this:

 $ make DESTDIR=/path/to/libpayload/install install

Then you can build coreinfo now:

 $ cd coreinfo

 $ make menuconfig
 
 $ make