coreboot-kgpe-d16/payloads/libpayload/include
Julius Werner 9665d389e4 libpayload: dma_malloc: Prevent warm reboot problems and add debugging
Since the DMA memory is allocated by Coreboot (outside of the payload's
linker script), it won't get zeroed upon loading like the heap.
Therefore, a warm reboot that doesn't reset memory may leave stale
malloc cookies lying around and misinterpret them as memory that is
still in use on the next boot. After several boots this may fill up the
whole DMA memory and lead to OOM conditions.

Therefore, this patch explicitly wipes the first cookie in
init_dma_memory() to prevent that from happening. It also expands the
existing memory allocator debugging code to cover the DMA parts, which
was very helpful in identifying this particular problem.

Change-Id: I6e2083c286ff8ec865b22dd922c39c456944b451
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/169455
Reviewed-by: Stefan Reinauer <reinauer@google.com>
(cherry picked from commit 8e5e1784638563b865553125cd5dab1d36a5d2cb)
Signed-off-by: Isaac Christensen <isaac.christensen@se-eng.com>
Reviewed-on: http://review.coreboot.org/6645
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
2014-08-14 23:41:44 +02:00
..
armv7/arch armv7: add wrapper for DCCSW (data cache clean by set/way) 2014-08-01 19:32:20 +02:00
arpa
pci libpayload: Add a few more PCI constants 2013-08-26 00:24:53 +02:00
storage libpayload: Change CONFIG_* to CONFIG_LP_* in the kconfig. 2014-08-05 18:44:08 +02:00
sys libpayload: Start using only internal and compiler headers. 2013-03-13 22:04:44 +01:00
usb libpayload: reintroduce optional PCI in XHCI driver 2014-01-08 13:24:39 +01:00
x86/arch libpayload: Make EHCI driver cache-aware 2014-08-14 23:40:25 +02:00
assert.h
cbfs.h
cbfs_core.h libpayload: Change CONFIG_* to CONFIG_LP_* in the kconfig. 2014-08-05 18:44:08 +02:00
cbfs_ram.h libpayload: expose cbfs ram functions 2013-12-12 22:22:12 +01:00
coreboot_tables.h arm: libpayload: Add cache coherent DMA memory definition and management 2014-08-13 00:04:14 +02:00
ctype.h
endian.h libpayload: Change CONFIG_* to CONFIG_LP_* in the kconfig. 2014-08-05 18:44:08 +02:00
errno.h
getopt.h
inttypes.h libpayload: Start using only internal and compiler headers. 2013-03-13 22:04:44 +01:00
ipchksum.h
kconfig.h libpayload: Change CONFIG_* to CONFIG_LP_* in the kconfig. 2014-08-05 18:44:08 +02:00
keycodes.h libpayload: Make keycode constants available outside of curses.h. 2013-03-18 20:45:48 +01:00
lar.h
libpayload.h libpayload: hexdump.c: Change type of length argument to size_t 2014-08-10 08:30:07 +02:00
limits.h
lzma.h LZMA: Add a version of ulzma which takes the input and output buffer sizes. 2014-08-10 22:29:51 +02:00
malloc.h
multiboot_tables.h
panel.h
pci.h
stdarg.h libpayload: Don't sneak in compiler includes 2013-04-18 02:50:28 +02:00
stddef.h Make ssize_t an actual ssize_t 2013-11-25 23:13:50 +01:00
stdint.h libpayload: Add more integer limits 2013-06-27 14:48:08 +02:00
stdio.h
stdlib.h libpayload: dma_malloc: Prevent warm reboot problems and add debugging 2014-08-14 23:41:44 +02:00
string.h libpayload: Add strerror 2013-06-28 10:39:57 +02:00
strings.h
sysinfo.h libpayload: Change CONFIG_* to CONFIG_LP_* in the kconfig. 2014-08-05 18:44:08 +02:00
term.h
unistd.h libpayload: Don't sneak in compiler includes 2013-04-18 02:50:28 +02:00
video_console.h