Commit c90fe6bc authored by Tejun Heo's avatar Tejun Heo Committed by Linus Torvalds

dmi: morph dmi_dump_ids() into dmi_format_ids() which formats into a buffer

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: default avatarTejun 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: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 196779b9
...@@ -22,6 +22,9 @@ static u16 __initdata dmi_ver; ...@@ -22,6 +22,9 @@ static u16 __initdata dmi_ver;
*/ */
static int dmi_initialized; 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) static const char * __init dmi_string_nosave(const struct dmi_header *dm, u8 s)
{ {
const u8 *bp = ((u8 *) dm) + dm->length; const u8 *bp = ((u8 *) dm) + dm->length;
...@@ -376,38 +379,44 @@ static void __init dmi_decode(const struct dmi_header *dm, void *dummy) ...@@ -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; const char *p;
if (!info) if (!info)
return; return c;
for (p = info; *p; p++) for (p = info; *p; p++)
if (isprint(*p)) if (isprint(*p))
printk(KERN_CONT "%c", *p); c += scnprintf(buf + c, len - c, "%c", *p);
else 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 */ const char *board; /* Board Name is optional */
printk(KERN_DEBUG "DMI: "); c += print_filtered(buf + c, len - c,
print_filtered(dmi_get_system_info(DMI_SYS_VENDOR)); dmi_get_system_info(DMI_SYS_VENDOR));
printk(KERN_CONT " "); c += scnprintf(buf + c, len - c, " ");
print_filtered(dmi_get_system_info(DMI_PRODUCT_NAME)); c += print_filtered(buf + c, len - c,
dmi_get_system_info(DMI_PRODUCT_NAME));
board = dmi_get_system_info(DMI_BOARD_NAME); board = dmi_get_system_info(DMI_BOARD_NAME);
if (board) { if (board) {
printk(KERN_CONT "/"); c += scnprintf(buf + c, len - c, "/");
print_filtered(board); c += print_filtered(buf + c, len - c, board);
} }
printk(KERN_CONT ", BIOS "); c += scnprintf(buf + c, len - c, ", BIOS ");
print_filtered(dmi_get_system_info(DMI_BIOS_VERSION)); c += print_filtered(buf + c, len - c,
printk(KERN_CONT " "); dmi_get_system_info(DMI_BIOS_VERSION));
print_filtered(dmi_get_system_info(DMI_BIOS_DATE)); c += scnprintf(buf + c, len - c, " ");
printk(KERN_CONT "\n"); c += print_filtered(buf + c, len - c,
dmi_get_system_info(DMI_BIOS_DATE));
} }
static int __init dmi_present(const char __iomem *p) static int __init dmi_present(const char __iomem *p)
...@@ -431,7 +440,8 @@ 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", pr_info("Legacy DMI %d.%d present.\n",
dmi_ver >> 8, dmi_ver & 0xFF); 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; return 0;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment