Index: include/sysinfo.h =================================================================== --- include/sysinfo.h (revision 3501) +++ include/sysinfo.h (working copy) @@ -48,6 +48,9 @@ u32 cmos_range_start; u32 cmos_range_end; u32 cmos_checksum_location; + + unsigned char mb_vendor[32]; + unsigned char mb_part[32]; }; extern struct sysinfo_t lib_sysinfo; Index: i386/coreboot.c =================================================================== --- i386/coreboot.c (revision 3501) +++ i386/coreboot.c (working copy) @@ -90,6 +90,15 @@ } #endif +static void cb_parse_mainboard(unsigned char *ptr, struct sysinfo_t *info) +{ + struct cb_mainboard *mb = (struct cb_mainboard *)ptr; + + strncpy(info->mb_vendor, (const char *)MB_VENDOR_STRING(mb), 31); + strncpy(info->mb_part, (const char *)MB_PART_STRING(mb), 31); +} + + static int cb_parse_header(void *addr, int len, struct sysinfo_t *info) { struct cb_header *header; @@ -128,6 +137,9 @@ case CB_TAG_MEMORY: cb_parse_memory(ptr, info); break; + case CB_TAG_MAINBOARD: + cb_parse_mainboard(ptr, info); + break; case CB_TAG_SERIAL: cb_parse_serial(ptr, info); break;