static void cb_parse_memory(void *ptr, struct sysinfo_t *info) { struct cb_memory *mem = ptr; int count = MEM_RANGE_COUNT(mem); int i; if (count > SYSINFO_MAX_MEM_RANGES) count = SYSINFO_MAX_MEM_RANGES; info->n_memranges = 0; for (i = 0; i < count; i++) { struct cb_memory_range *range = MEM_RANGE_PTR(mem, i); #if IS_ENABLED(CONFIG_LP_MEMMAP_RAM_ONLY) if (range->type != CB_MEM_RAM) continue; #endif info->memrange[info->n_memranges].base = cb_unpack64(range->start); info->memrange[info->n_memranges].size = cb_unpack64(range->size); info->memrange[info->n_memranges].type = range->type; info->n_memranges++; } }
/* This is the generic parsing code. */ static void cb_parse_memory(void *ptr, struct sysinfo_t *info) { kmprint("%s\n", __func__); struct cb_memory *mem = ptr; int count = MEM_RANGE_COUNT(mem); int i; if (count > SYSINFO_MAX_MEM_RANGES) count = SYSINFO_MAX_MEM_RANGES; info->n_memranges = 0; for (i = 0; i < count; i++) { struct cb_memory_range *range = MEM_RANGE_PTR(mem, i); info->memrange[info->n_memranges].base = cb_unpack64(range->start); info->memrange[info->n_memranges].size = cb_unpack64(range->size); info->memrange[info->n_memranges].type = range->type; info->n_memranges++; } }
int coreboot_module_redraw(WINDOW *win) { int row = 2; int i; print_module_title(win, "Coreboot Tables"); if (tables_good) { mvwprintw(win, row++, 1, "No Coreboot tables were found"); return 0; } mvwprintw(win, row++, 1, "Vendor: %s", cb_info.vendor); mvwprintw(win, row++, 1, "Part: %s", cb_info.part); mvwprintw(win, row++, 1, "Version: %s%s", cb_info.strings[CB_TAG_VERSION - 0x4], cb_info.strings[CB_TAG_EXTRA_VERSION - 0x4]); mvwprintw(win, row++, 1, "Built: %s (%s@%s.%s)", cb_info.strings[CB_TAG_BUILD - 0x4], cb_info.strings[CB_TAG_COMPILE_BY - 0x04], cb_info.strings[CB_TAG_COMPILE_HOST - 0x04], cb_info.strings[CB_TAG_COMPILE_DOMAIN - 0x04]); if (cb_info.serial.tag != 0x0) { mvwprintw(win, row++, 1, "Serial Port I/O base: 0x%x", cb_info.serial.baseaddr); } if (cb_info.console.tag != 0x0) { mvwprintw(win, row++, 1, "Default Output Console: "); switch (cb_info.console.type) { case CB_TAG_CONSOLE_SERIAL8250: wprintw(win, "Serial Port"); break; case CB_TAG_CONSOLE_VGA: wprintw(win, "VGA"); break; case CB_TAG_CONSOLE_BTEXT: wprintw(win, "BTEXT"); break; case CB_TAG_CONSOLE_LOGBUF: wprintw(win, "Log Buffer"); break; case CB_TAG_CONSOLE_SROM: wprintw(win, "Serial ROM"); break; case CB_TAG_CONSOLE_EHCI: wprintw(win, "USB Debug"); break; } } row++; mvwprintw(win, row++, 1, "-- Memory Map --"); for (i = 0; i < cb_info.mem_count; i++) { switch (cb_info.range[i].type) { case CB_MEM_RAM: mvwprintw(win, row++, 3, " RAM: "); break; case CB_MEM_RESERVED: mvwprintw(win, row++, 3, "Reserved: "); break; case CB_MEM_TABLE: mvwprintw(win, row++, 3, " Table: "); } wprintw(win, "%16.16llx - %16.16llx", cb_unpack64(cb_info.range[i].start), cb_unpack64(cb_info.range[i].start) + cb_unpack64(cb_info.range[i].size) - 1); } return 0; }