diff options
author | Corvin Köhne <corvink@FreeBSD.org> | 2021-09-09 09:37:03 +0000 |
---|---|---|
committer | Corvin Köhne <corvink@FreeBSD.org> | 2023-05-08 08:21:32 +0000 |
commit | f1b5ce0d1d75a46dfad65a6f2079376d506e9913 (patch) | |
tree | 73d63824a7f724af17eb42717415e044e088d2f0 | |
parent | 0f8a17795d21bbd90eda7e17e98847adca011176 (diff) | |
download | src-f1b5ce0d1d75a46dfad65a6f2079376d506e9913.tar.gz src-f1b5ce0d1d75a46dfad65a6f2079376d506e9913.zip |
bhyve: add E820 dump function
For debugging purposes it is helpful to dump the E820 table.
Reviewed by: markj
MFC after: 1 week
Sponsored by: Beckhoff Automation GmbH & Co. KG
Differential Revision: https://reviews.freebsd.org/D39549
(cherry picked from commit a8a8e9af574c63fbecf4719e3bf184795dc98c51)
-rw-r--r-- | usr.sbin/bhyve/e820.c | 35 | ||||
-rw-r--r-- | usr.sbin/bhyve/e820.h | 1 |
2 files changed, 36 insertions, 0 deletions
diff --git a/usr.sbin/bhyve/e820.c b/usr.sbin/bhyve/e820.c index 922381d032ce..6c43e6eda3a5 100644 --- a/usr.sbin/bhyve/e820.c +++ b/usr.sbin/bhyve/e820.c @@ -70,6 +70,41 @@ e820_element_alloc(uint64_t base, uint64_t end, enum e820_memory_type type) return (element); } +static const char * +e820_get_type_name(const enum e820_memory_type type) +{ + switch (type) { + case E820_TYPE_MEMORY: + return ("RAM"); + case E820_TYPE_RESERVED: + return ("Reserved"); + case E820_TYPE_ACPI: + return ("ACPI"); + case E820_TYPE_NVS: + return ("NVS"); + default: + return ("Unknown"); + } +} + +void +e820_dump_table(void) +{ + struct e820_element *element; + uint64_t i; + + fprintf(stderr, "E820 map:\n"); + + i = 0; + TAILQ_FOREACH(element, &e820_table, chain) { + fprintf(stderr, " (%4lu) [%16lx, %16lx] %s\n", i, + element->base, element->end, + e820_get_type_name(element->type)); + + ++i; + } +} + struct qemu_fwcfg_item * e820_get_fwcfg_item(void) { diff --git a/usr.sbin/bhyve/e820.h b/usr.sbin/bhyve/e820.h index 8b8e23422e1f..8703a55115cd 100644 --- a/usr.sbin/bhyve/e820.h +++ b/usr.sbin/bhyve/e820.h @@ -40,5 +40,6 @@ struct e820_entry { uint64_t e820_alloc(const uint64_t address, const uint64_t length, const uint64_t alignment, const enum e820_memory_type type, const enum e820_allocation_strategy strategy); +void e820_dump_table(void); struct qemu_fwcfg_item *e820_get_fwcfg_item(void); int e820_init(struct vmctx *const ctx); |