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;
