SOURCES: kernel-desktop-dmi-decode-and-save-oem-string-information...
adamg
adamg at pld-linux.org
Wed Aug 16 11:33:47 CEST 2006
Author: adamg Date: Wed Aug 16 09:33:47 2006 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- new
---- Files affected:
SOURCES:
kernel-desktop-dmi-decode-and-save-oem-string-information.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/kernel-desktop-dmi-decode-and-save-oem-string-information.patch
diff -u /dev/null SOURCES/kernel-desktop-dmi-decode-and-save-oem-string-information.patch:1.1
--- /dev/null Wed Aug 16 11:33:47 2006
+++ SOURCES/kernel-desktop-dmi-decode-and-save-oem-string-information.patch Wed Aug 16 11:33:42 2006
@@ -0,0 +1,77 @@
+Subject: DMI: Decode and save OEM String information
+From: "Shem Multinymous" <multinymous at gmail.com>
+
+This teaches dmi_decode() how to decode and save OEM Strings (type 11) DMI
+information, which is currently discarded silently. Existing code using
+DMI is not affected. Follows the "System Management BIOS (SMBIOS)
+Specification" (http://www.dmtf.org/standards/smbios), and also the
+userspace dmidecode.c code.
+
+OEM Strings are the only safe way to identify some hardware, e.g., the
+ThinkPad embedded controller used by the soon-to-be-submitted tp_smapi
+driver. This will also let us eliminate the long whitelist in the mainline
+hdaps driver (in a future patch).
+
+Signed-off-by: Shem Multinymous <multinymous at gmail.com>
+Cc: Bjorn Helgaas <bjorn.helgaas at hp.com>
+Signed-off-by: Andrew Morton <akpm at osdl.org>
+---
+
+ drivers/firmware/dmi_scan.c | 23 +++++++++++++++++++++++
+ include/linux/dmi.h | 3 ++-
+ 2 files changed, 25 insertions(+), 1 deletion(-)
+
+diff -puN drivers/firmware/dmi_scan.c~dmi-decode-and-save-oem-string-information drivers/firmware/dmi_scan.c
+--- a/drivers/firmware/dmi_scan.c~dmi-decode-and-save-oem-string-information
++++ a/drivers/firmware/dmi_scan.c
+@@ -123,6 +123,26 @@ static void __init dmi_save_devices(stru
+ dev->type = *d++ & 0x7f;
+ dev->name = dmi_string(dm, *d);
+ dev->device_data = NULL;
++ list_add(&dev->list, &dmi_devices);
++ }
++}
++
++static void __init dmi_save_oem_strings_devices(struct dmi_header *dm)
++{
++ int i, count = *(u8 *)(dm + 1);
++ struct dmi_device *dev;
++
++ for (i = 1; i <= count; i++) {
++ dev = dmi_alloc(sizeof(*dev));
++ if (!dev) {
++ printk(KERN_ERR
++ "dmi_save_oem_strings_devices: out of memory.\n");
++ break;
++ }
++
++ dev->type = DMI_DEV_TYPE_OEM_STRING;
++ dev->name = dmi_string(dm, i);
++ dev->device_data = NULL;
+
+ list_add(&dev->list, &dmi_devices);
+ }
+@@ -181,6 +201,9 @@ static void __init dmi_decode(struct dmi
+ case 10: /* Onboard Devices Information */
+ dmi_save_devices(dm);
+ break;
++ case 11: /* OEM Strings */
++ dmi_save_oem_strings_devices(dm);
++ break;
+ case 38: /* IPMI Device Information */
+ dmi_save_ipmi_device(dm);
+ }
+diff -puN include/linux/dmi.h~dmi-decode-and-save-oem-string-information include/linux/dmi.h
+--- a/include/linux/dmi.h~dmi-decode-and-save-oem-string-information
++++ a/include/linux/dmi.h
+@@ -27,7 +27,8 @@ enum dmi_device_type {
+ DMI_DEV_TYPE_ETHERNET,
+ DMI_DEV_TYPE_TOKENRING,
+ DMI_DEV_TYPE_SOUND,
+- DMI_DEV_TYPE_IPMI = -1
++ DMI_DEV_TYPE_IPMI = -1,
++ DMI_DEV_TYPE_OEM_STRING = -2
+ };
+
+ struct dmi_header {
+_
================================================================
More information about the pld-cvs-commit
mailing list