]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
dmi: morph dmi_dump_ids() into dmi_format_ids() which formats into a buffer
authorTejun Heo <tj@kernel.org>
Tue, 30 Apr 2013 22:27:14 +0000 (15:27 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 1 May 2013 00:04:02 +0000 (17:04 -0700)
We're goning to use DMI identification for other purposes too.  Morph
dmi_dump_ids() which is used to print DMI identification as a debug
message during boot into dmi_format_ids() which formats the same
information sans the leading "DMI:" tag into a string buffer.

dmi_present() is updated to format the information into dmi_ids_string[]
using the new function and print it with "DMI:" prefix.

dmi_ids_string[] will be used for another purpose by a future patch.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Fengguang Wu <fengguang.wu@intel.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Jesper Nilsson <jesper.nilsson@axis.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Mike Frysinger <vapier@gentoo.org>
Cc: Vineet Gupta <vgupta@synopsys.com>
Cc: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/firmware/dmi_scan.c

index 4cd392dbf115075740cb546f4875f220517c7896..862b1d27a85bcb27c73e97e04f8f7efa4c99a88a 100644 (file)
@@ -22,6 +22,9 @@ static u16 __initdata dmi_ver;
  */
 static int dmi_initialized;
 
+/* DMI system identification string used during boot */
+static char dmi_ids_string[128] __initdata;
+
 static const char * __init dmi_string_nosave(const struct dmi_header *dm, u8 s)
 {
        const u8 *bp = ((u8 *) dm) + dm->length;
@@ -376,38 +379,44 @@ static void __init dmi_decode(const struct dmi_header *dm, void *dummy)
        }
 }
 
-static void __init print_filtered(const char *info)
+static int __init print_filtered(char *buf, size_t len, const char *info)
 {
+       int c = 0;
        const char *p;
 
        if (!info)
-               return;
+               return c;
 
        for (p = info; *p; p++)
                if (isprint(*p))
-                       printk(KERN_CONT "%c", *p);
+                       c += scnprintf(buf + c, len - c, "%c", *p);
                else
-                       printk(KERN_CONT "\\x%02x", *p & 0xff);
+                       c += scnprintf(buf + c, len - c, "\\x%02x", *p & 0xff);
+       return c;
 }
 
-static void __init dmi_dump_ids(void)
+static void __init dmi_format_ids(char *buf, size_t len)
 {
+       int c = 0;
        const char *board;      /* Board Name is optional */
 
-       printk(KERN_DEBUG "DMI: ");
-       print_filtered(dmi_get_system_info(DMI_SYS_VENDOR));
-       printk(KERN_CONT " ");
-       print_filtered(dmi_get_system_info(DMI_PRODUCT_NAME));
+       c += print_filtered(buf + c, len - c,
+                           dmi_get_system_info(DMI_SYS_VENDOR));
+       c += scnprintf(buf + c, len - c, " ");
+       c += print_filtered(buf + c, len - c,
+                           dmi_get_system_info(DMI_PRODUCT_NAME));
+
        board = dmi_get_system_info(DMI_BOARD_NAME);
        if (board) {
-               printk(KERN_CONT "/");
-               print_filtered(board);
+               c += scnprintf(buf + c, len - c, "/");
+               c += print_filtered(buf + c, len - c, board);
        }
-       printk(KERN_CONT ", BIOS ");
-       print_filtered(dmi_get_system_info(DMI_BIOS_VERSION));
-       printk(KERN_CONT " ");
-       print_filtered(dmi_get_system_info(DMI_BIOS_DATE));
-       printk(KERN_CONT "\n");
+       c += scnprintf(buf + c, len - c, ", BIOS ");
+       c += print_filtered(buf + c, len - c,
+                           dmi_get_system_info(DMI_BIOS_VERSION));
+       c += scnprintf(buf + c, len - c, " ");
+       c += print_filtered(buf + c, len - c,
+                           dmi_get_system_info(DMI_BIOS_DATE));
 }
 
 static int __init dmi_present(const char __iomem *p)
@@ -431,7 +440,8 @@ static int __init dmi_present(const char __iomem *p)
                                pr_info("Legacy DMI %d.%d present.\n",
                                       dmi_ver >> 8, dmi_ver & 0xFF);
                        }
-                       dmi_dump_ids();
+                       dmi_format_ids(dmi_ids_string, sizeof(dmi_ids_string));
+                       printk(KERN_DEBUG "DMI: %s\n", dmi_ids_string);
                        return 0;
                }
        }