x86, dmi, debug: Log board name (when present) in dmesg/oops output
The "Type 2" SMBIOS record that contains Board Name is not strictly required and may be absent in the SMBIOS on some platforms. ( Please note that Type 2 is not listed in Table 3 in Sec 6.2 ("Required Structures and Data") of the SMBIOS v2.7 Specification. ) Use the Manufacturer Name (aka System Vendor) name. Print Board Name only when it is present. Before the fix: (i) dmesg output: DMI: /ProLiant DL380 G6, BIOS P62 01/29/2011 (ii) oops output: Pid: 2170, comm: bash Not tainted 2.6.38-rc4+ #3 /ProLiant DL380 G6 After the fix: (i) dmesg output: DMI: HP ProLiant DL380 G6, BIOS P62 01/29/2011 (ii) oops output: Pid: 2278, comm: bash Not tainted 2.6.38-rc4+ #4 HP ProLiant DL380 G6 Signed-off-by: Naga Chumbalkar <nagananda.chumbalkar@hp.com> Reviewed-by: Bjorn Helgaas <bjorn.helgaas@hp.com> Cc: <stable@kernel.org> # .3x - good for debugging, please apply as far back as it applies cleanly LKML-Reference: <20110214224423.2182.13929.sendpatchset@nchumbalkar.americas.hpqcorp.net> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
678301ecad
commit
84e383b322
|
@ -92,21 +92,31 @@ void show_regs(struct pt_regs *regs)
|
||||||
|
|
||||||
void show_regs_common(void)
|
void show_regs_common(void)
|
||||||
{
|
{
|
||||||
const char *board, *product;
|
const char *vendor, *product, *board;
|
||||||
|
|
||||||
board = dmi_get_system_info(DMI_BOARD_NAME);
|
vendor = dmi_get_system_info(DMI_SYS_VENDOR);
|
||||||
if (!board)
|
if (!vendor)
|
||||||
board = "";
|
vendor = "";
|
||||||
product = dmi_get_system_info(DMI_PRODUCT_NAME);
|
product = dmi_get_system_info(DMI_PRODUCT_NAME);
|
||||||
if (!product)
|
if (!product)
|
||||||
product = "";
|
product = "";
|
||||||
|
|
||||||
|
/* Board Name is optional */
|
||||||
|
board = dmi_get_system_info(DMI_BOARD_NAME);
|
||||||
|
|
||||||
printk(KERN_CONT "\n");
|
printk(KERN_CONT "\n");
|
||||||
printk(KERN_DEFAULT "Pid: %d, comm: %.20s %s %s %.*s %s/%s\n",
|
printk(KERN_DEFAULT "Pid: %d, comm: %.20s %s %s %.*s",
|
||||||
current->pid, current->comm, print_tainted(),
|
current->pid, current->comm, print_tainted(),
|
||||||
init_utsname()->release,
|
init_utsname()->release,
|
||||||
(int)strcspn(init_utsname()->version, " "),
|
(int)strcspn(init_utsname()->version, " "),
|
||||||
init_utsname()->version, board, product);
|
init_utsname()->version);
|
||||||
|
printk(KERN_CONT " ");
|
||||||
|
printk(KERN_CONT "%s %s", vendor, product);
|
||||||
|
if (board) {
|
||||||
|
printk(KERN_CONT "/");
|
||||||
|
printk(KERN_CONT "%s", board);
|
||||||
|
}
|
||||||
|
printk(KERN_CONT "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void flush_thread(void)
|
void flush_thread(void)
|
||||||
|
|
|
@ -378,10 +378,17 @@ static void __init print_filtered(const char *info)
|
||||||
|
|
||||||
static void __init dmi_dump_ids(void)
|
static void __init dmi_dump_ids(void)
|
||||||
{
|
{
|
||||||
|
const char *board; /* Board Name is optional */
|
||||||
|
|
||||||
printk(KERN_DEBUG "DMI: ");
|
printk(KERN_DEBUG "DMI: ");
|
||||||
print_filtered(dmi_get_system_info(DMI_BOARD_NAME));
|
print_filtered(dmi_get_system_info(DMI_SYS_VENDOR));
|
||||||
printk(KERN_CONT "/");
|
printk(KERN_CONT " ");
|
||||||
print_filtered(dmi_get_system_info(DMI_PRODUCT_NAME));
|
print_filtered(dmi_get_system_info(DMI_PRODUCT_NAME));
|
||||||
|
board = dmi_get_system_info(DMI_BOARD_NAME);
|
||||||
|
if (board) {
|
||||||
|
printk(KERN_CONT "/");
|
||||||
|
print_filtered(board);
|
||||||
|
}
|
||||||
printk(KERN_CONT ", BIOS ");
|
printk(KERN_CONT ", BIOS ");
|
||||||
print_filtered(dmi_get_system_info(DMI_BIOS_VERSION));
|
print_filtered(dmi_get_system_info(DMI_BIOS_VERSION));
|
||||||
printk(KERN_CONT " ");
|
printk(KERN_CONT " ");
|
||||||
|
|
Loading…
Reference in New Issue