From: Bjorn Helgaas Date: Wed, 27 Oct 2010 22:32:59 +0000 (-0700) Subject: dmi: log board, system, and BIOS information X-Git-Tag: v3.0~2990^2~135 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8881cdceb25b4fcebfb17a9548ed80c22cf8b066;p=platform%2Fkernel%2Flinux-amlogic.git dmi: log board, system, and BIOS information Put basic system information in the dmesg log. There are lots of dmesg logs on the web, and it would be useful if they contained this information for debugging platform problems. "BOARD/PRODUCT" format copied from show_regs_common(), which is used in the oops path. Signed-off-by: Bjorn Helgaas Cc: Ingo Molnar Cc: Thomas Gleixner Cc: "H. Peter Anvin" Cc: Alan Cox Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c index b3d22d6..e28e41668 100644 --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include @@ -361,6 +362,33 @@ static void __init dmi_decode(const struct dmi_header *dm, void *dummy) } } +static void __init print_filtered(const char *info) +{ + const char *p; + + if (!info) + return; + + for (p = info; *p; p++) + if (isprint(*p)) + printk(KERN_CONT "%c", *p); + else + printk(KERN_CONT "\\x%02x", *p & 0xff); +} + +static void __init dmi_dump_ids(void) +{ + printk(KERN_DEBUG "DMI: "); + print_filtered(dmi_get_system_info(DMI_BOARD_NAME)); + printk(KERN_CONT "/"); + print_filtered(dmi_get_system_info(DMI_PRODUCT_NAME)); + 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"); +} + static int __init dmi_present(const char __iomem *p) { u8 buf[15]; @@ -381,8 +409,10 @@ static int __init dmi_present(const char __iomem *p) buf[14] >> 4, buf[14] & 0xF); else printk(KERN_INFO "DMI present.\n"); - if (dmi_walk_early(dmi_decode) == 0) + if (dmi_walk_early(dmi_decode) == 0) { + dmi_dump_ids(); return 0; + } } return 1; }