mirror of https://gitee.com/openkylin/linux.git
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)
|
||||
{
|
||||
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)
|
||||
|
|
|
@ -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 " ");
|
||||
|
|
Loading…
Reference in New Issue