dmi: add additional strings
authorH. Peter Anvin <hpa@linux.intel.com>
Tue, 26 Apr 2011 23:07:03 +0000 (16:07 -0700)
committerH. Peter Anvin <hpa@linux.intel.com>
Tue, 26 Apr 2011 23:07:03 +0000 (16:07 -0700)
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 <hpa@linux.intel.com>
com32/include/syslinux/sysappend.h
core/dmi.c

index b767bf2..8eb0916 100644 (file)
@@ -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 */
 };
 
index 9c9e0ab..66597af 100644 (file)
@@ -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);
     }
 }