Skip to content

Commit

Permalink
x86, dmi, debug: Log board name (when present) in dmesg/oops output
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Naga Chumbalkar authored and Ingo Molnar committed Feb 15, 2011
1 parent 678301e commit 84e383b
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 8 deletions.
22 changes: 16 additions & 6 deletions arch/x86/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,21 +92,31 @@ void show_regs(struct pt_regs *regs)

void show_regs_common(void)
{
const char *board, *product;
const char *vendor, *product, *board;

board = dmi_get_system_info(DMI_BOARD_NAME);
if (!board)
board = "";
vendor = dmi_get_system_info(DMI_SYS_VENDOR);
if (!vendor)
vendor = "";
product = dmi_get_system_info(DMI_PRODUCT_NAME);
if (!product)
product = "";

/* Board Name is optional */
board = dmi_get_system_info(DMI_BOARD_NAME);

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(),
init_utsname()->release,
(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)
Expand Down
11 changes: 9 additions & 2 deletions drivers/firmware/dmi_scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -378,10 +378,17 @@ static void __init print_filtered(const char *info)

static void __init dmi_dump_ids(void)
{
const char *board; /* Board Name is optional */

printk(KERN_DEBUG "DMI: ");
print_filtered(dmi_get_system_info(DMI_BOARD_NAME));
printk(KERN_CONT "/");
print_filtered(dmi_get_system_info(DMI_SYS_VENDOR));
printk(KERN_CONT " ");
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 ");
print_filtered(dmi_get_system_info(DMI_BIOS_VERSION));
printk(KERN_CONT " ");
Expand Down

0 comments on commit 84e383b

Please sign in to comment.