diff options
-rw-r--r-- | payloads/libpayload/include/coreboot_tables.h | 3 | ||||
-rw-r--r-- | payloads/libpayload/include/sysinfo.h | 1 | ||||
-rw-r--r-- | payloads/libpayload/libc/coreboot.c | 3 |
3 files changed, 7 insertions, 0 deletions
diff --git a/payloads/libpayload/include/coreboot_tables.h b/payloads/libpayload/include/coreboot_tables.h index c46fbf9227..649cc2bb07 100644 --- a/payloads/libpayload/include/coreboot_tables.h +++ b/payloads/libpayload/include/coreboot_tables.h @@ -256,6 +256,9 @@ struct cb_spi_flash { uint32_t erase_cmd; }; +#define CB_TAG_SERIALNO 0x002a +#define CB_MAX_SERIALNO_LENGTH 32 + #define CB_TAG_CMOS_OPTION_TABLE 0x00c8 struct cb_cmos_option_table { u32 tag; diff --git a/payloads/libpayload/include/sysinfo.h b/payloads/libpayload/include/sysinfo.h index ec8a31c6b6..de8b0feaea 100644 --- a/payloads/libpayload/include/sysinfo.h +++ b/payloads/libpayload/include/sysinfo.h @@ -91,6 +91,7 @@ struct sysinfo_t { struct cb_gpio gpios[SYSINFO_MAX_GPIOS]; int num_macs; struct mac_address macs[SYSINFO_MAX_MACS]; + char *serialno; #endif unsigned long *mbtable; /** Pointer to the multiboot table */ diff --git a/payloads/libpayload/libc/coreboot.c b/payloads/libpayload/libc/coreboot.c index 5999e86856..999465cb82 100644 --- a/payloads/libpayload/libc/coreboot.c +++ b/payloads/libpayload/libc/coreboot.c @@ -333,6 +333,9 @@ int cb_parse_header(void *addr, int len, struct sysinfo_t *info) case CB_TAG_MAC_ADDRS: cb_parse_mac_addresses(ptr, info); break; + case CB_TAG_SERIALNO: + cb_parse_string(ptr, &info->serialno); + break; #endif case CB_TAG_TIMESTAMPS: cb_parse_tstamp(ptr, info); |