Page MenuHomeFreeBSD

D36985.1787908250.diff
No OneTemporary

Size
1 KB
Referenced Files
None
Subscribers
None

D36985.1787908250.diff

diff --git a/usr.sbin/bhyve/basl.c b/usr.sbin/bhyve/basl.c
--- a/usr.sbin/bhyve/basl.c
+++ b/usr.sbin/bhyve/basl.c
@@ -35,6 +35,65 @@
static STAILQ_HEAD(basl_table_list, basl_table) basl_tables = STAILQ_HEAD_INITIALIZER(
basl_tables);
+static int
+basl_dump_table(const struct basl_table *const table, const bool mem)
+{
+ const ACPI_TABLE_HEADER *const header = table->data;
+ const uint8_t *data;
+
+ if (!mem) {
+ data = table->data;
+ } else {
+ data = vm_map_gpa(table->ctx, BHYVE_ACPI_BASE + table->off,
+ table->len);
+ if (data == NULL) {
+ return (ENOMEM);
+ }
+ }
+
+ printf("%c%c%c%c @ %8x (%s)\n", header->Signature[0],
+ header->Signature[1], header->Signature[2], header->Signature[3],
+ BHYVE_ACPI_BASE + table->off, mem ? "Memory" : "FwCfg");
+ for (uint32_t i = 0; i < table->len; i += 0x10) {
+ printf("%08x: ", i);
+ for (uint32_t n = 0; n < 0x10; ++n) {
+ if (table->len <= i + n) {
+ printf(" ");
+ continue;
+ }
+ printf("%02x ", data[i + n]);
+ }
+ printf("| ");
+ for (uint32_t n = 0; n < 0x10; ++n) {
+ if (table->len <= i + n) {
+ printf(" ");
+ continue;
+ }
+ const uint8_t c = data[i + n];
+ if (isprint(c)) {
+ printf("%c", c);
+ } else {
+ printf(".");
+ }
+ }
+ printf("\n");
+ }
+
+ return (0);
+}
+
+static int
+basl_dump(const bool mem)
+{
+ struct basl_table *table;
+
+ STAILQ_FOREACH(table, &basl_tables, chain) {
+ BASL_EXEC(basl_dump_table(table, mem));
+ }
+
+ return (0);
+}
+
static int
basl_finish_install_guest_tables(struct basl_table *const table)
{

File Metadata

Mime Type
text/plain
Expires
Fri, Aug 28, 9:10 AM (16 h, 36 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29477995
Default Alt Text
D36985.1787908250.diff (1 KB)

Event Timeline