From 47eda5f32f0883c91788033536a9b1c706c9c0e6 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Tue, 26 Apr 2011 16:07:03 -0700 Subject: [PATCH] dmi: add additional strings Add additional strings, and create fallbacks when the strings are empty. Unfortunately we can't easily fall back for crap like "Insert name of OEM here". Signed-off-by: H. Peter Anvin --- com32/include/syslinux/sysappend.h | 11 +++++++---- core/dmi.c | 24 ++++++++++++++---------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/com32/include/syslinux/sysappend.h b/com32/include/syslinux/sysappend.h index b767bf2..8eb0916 100644 --- a/com32/include/syslinux/sysappend.h +++ b/com32/include/syslinux/sysappend.h @@ -38,10 +38,13 @@ enum syslinux_sysappend { SYSAPPEND_IP, /* PXELINUX: ip= address */ SYSAPPEND_BOOTIF, /* PXELINUX: BOOTIF= address */ SYSAPPEND_SYSUUID, /* System UUID from PXE or DMI */ - SYSAPPEND_SYSVENDOR, /* System vendor from DMI */ - SYSAPPEND_SYSPRODUCT, /* System product from DMI */ - SYSAPPEND_SYSVERSION, /* System version from DMI */ - SYSAPPEND_SYSSERIAL, /* System serial from DMI */ + SYSAPPEND_VENDOR, /* System or MB vendor from DMI */ + SYSAPPEND_PRODUCT, /* System or MB product from DMI */ + SYSAPPEND_VERSION, /* System or MB version from DMI */ + SYSAPPEND_SERIAL, /* System or MB serial from DMI */ + SYSAPPEND_SKU, /* System SKU from DMI */ + SYSAPPEND_FAMILY, /* System family from DMI */ + SYSAPPEND_ASSET, /* MB asset tag from DMI */ SYSAPPEND_MAX /* Total number of strings */ }; diff --git a/core/dmi.c b/core/dmi.c index 9c9e0ab..66597af 100644 --- a/core/dmi.c +++ b/core/dmi.c @@ -225,10 +225,17 @@ struct sysappend_dmi_strings { }; static const struct sysappend_dmi_strings dmi_strings[] = { - { "SYSVENDOR=", SYSAPPEND_SYSVENDOR, 1, 0x04 }, - { "SYSPRODUCT=", SYSAPPEND_SYSPRODUCT, 1, 0x05 }, - { "SYSVERSION=", SYSAPPEND_SYSVERSION, 1, 0x06 }, - { "SYSSERIAL=", SYSAPPEND_SYSSERIAL, 1, 0x07 }, + { "SYSVENDOR=", SYSAPPEND_VENDOR, 1, 0x04 }, + { "SYSPRODUCT=", SYSAPPEND_PRODUCT, 1, 0x05 }, + { "SYSVERSION=", SYSAPPEND_VERSION, 1, 0x06 }, + { "SYSSERIAL=", SYSAPPEND_SERIAL, 1, 0x07 }, + { "SYSSKU=", SYSAPPEND_SKU, 1, 0x19 }, + { "SYSFAMILY=", SYSAPPEND_FAMILY, 1, 0x1a }, + { "MBVENDOR=", SYSAPPEND_VENDOR, 2, 0x04 }, + { "MBPRODUCT=", SYSAPPEND_PRODUCT, 2, 0x05 }, + { "MBVERSION=", SYSAPPEND_VERSION, 2, 0x06 }, + { "MBSERIAL=", SYSAPPEND_SERIAL, 2, 0x07 }, + { "MBASSET=", SYSAPPEND_ASSET, 2, 0x08 }, { NULL, 0, 0, 0 } }; @@ -287,12 +294,9 @@ void dmi_init(void) sysappend_set_uuid(dmi_find_data(1, 0x08, 16)); for (ds = dmi_strings; ds->prefix; ds++) { - const char *str = dmi_find_string(ds->index, ds->offset); - - if (sysappend_strings[ds->sa]) { - free((char *)sysappend_strings[ds->sa]); - sysappend_strings[ds->sa] = NULL; + if (!sysappend_strings[ds->sa]) { + const char *str = dmi_find_string(ds->index, ds->offset); + sysappend_strings[ds->sa] = dmi_install_string(ds->prefix, str); } - sysappend_strings[ds->sa] = dmi_install_string(ds->prefix, str); } } -- 2.7.4