mirror of
https://git.jff.email/cgit/dmidecode.git
synced 2026-08-07 06:06:17 +00:00
Merge branch 'release/debian/3.4-1'
This commit is contained in:
commit
918cb82823
6
AUTHORS
6
AUTHORS
@ -21,6 +21,9 @@ Roy Franz <roy.franz@linaro.org>
|
||||
Tyler Bell <tyler.bell@hp.com>
|
||||
Xie XiuQi <xiexiuqi@huawei.com>
|
||||
Petr Oros <poros@redhat.com>
|
||||
Prabhakar Pujeri <prabhakar.pujeri@dell.com>
|
||||
Erwan Velu <e.velu@criteo.com>
|
||||
Jerry Hoemann <jerry.hoemann@hpe.com>
|
||||
|
||||
MANY THANKS TO (IN CHRONOLOGICAL ORDER)
|
||||
Werner Heuser
|
||||
@ -90,3 +93,6 @@ Andrey Matveyev
|
||||
Stefan Tauner
|
||||
Naga Chumbalkar
|
||||
Jens Rosenboom
|
||||
Lianbo Jiang
|
||||
Tianjia Zhang
|
||||
Ivan Tkachenko
|
||||
|
||||
19
NEWS
19
NEWS
@ -1,3 +1,22 @@
|
||||
Version 3.4 (Mon Jun 27 2022)
|
||||
- Support for SMBIOS 3.4.0. This includes new memory device types, new
|
||||
processor upgrades, new slot types and characteristics, decoding of memory
|
||||
module extended speed, new system slot types, new processor characteristics
|
||||
and new format of Processor ID.
|
||||
- Support for SMBIOS 3.5.0. This includes new processor upgrades, BIOS
|
||||
characteristics, new slot characteristics, new on-board device types, new
|
||||
pointing device interface types, and a new record type (type 45 -
|
||||
Firmware Inventory Information).
|
||||
- Decode HPE OEM records 194, 199, 203, 236, 237, 238 ans 240.
|
||||
- Bug fixes:
|
||||
Fix OEM vendor name matching
|
||||
Fix ASCII filtering of strings
|
||||
Fix crash with option -u
|
||||
- Minor improvements:
|
||||
Skip details of uninstalled memory modules
|
||||
Don't display the raw CPU ID in quiet mode
|
||||
Improve the formatting of the manual pages
|
||||
|
||||
Version 3.3 (Wed Oct 14 2020)
|
||||
- [BUILD] Allow overriding build settings from the environment.
|
||||
- [COMPATIBILITY] Document how the UUID fields are interpreted.
|
||||
|
||||
13
debian/changelog
vendored
13
debian/changelog
vendored
@ -1,3 +1,16 @@
|
||||
dmidecode (3.4-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release.
|
||||
- Remove upstream applied patches:
|
||||
+ debian/patches/0145-Fix_condition_error_in_ascii_filter.patch
|
||||
+ debian/patches/0150-Fix_crash.patch
|
||||
- Refresh upstream signing key.
|
||||
* Declare compliance with Debian Policy 4.6.1.0 (No changes needed).
|
||||
* debian/copyright:
|
||||
- Add year 2022 to myself.
|
||||
|
||||
-- Jörg Frings-Fürst <debian@jff.email> Thu, 30 Jun 2022 20:37:08 +0200
|
||||
|
||||
dmidecode (3.3-3) unstable; urgency=medium
|
||||
|
||||
* Add Architecture riscv64 (Closes: #991854).
|
||||
|
||||
2
debian/control
vendored
2
debian/control
vendored
@ -3,7 +3,7 @@ Section: utils
|
||||
Priority: optional
|
||||
Maintainer: Jörg Frings-Fürst <debian@jff.email>
|
||||
Build-Depends: debhelper-compat (= 13)
|
||||
Standards-Version: 4.6.0.0
|
||||
Standards-Version: 4.6.1.0
|
||||
Rules-Requires-Root: no
|
||||
Vcs-Git: git://jff.email/opt/git/dmidecode.git
|
||||
Vcs-Browser: https://jff.email/cgit/dmidecode.git/
|
||||
|
||||
2
debian/copyright
vendored
2
debian/copyright
vendored
@ -13,7 +13,7 @@ License: GPL-2+
|
||||
Files: debian/*
|
||||
Copyright: 2003-2007 Petter Reinholdtsen <pere@debian.org>
|
||||
2011-2012 Daniel Baumann <daniel.baumann@progress-technologies.net>
|
||||
2014-2021 Jörg Frings-Fürst <debian@jff.email>
|
||||
2014-2022 Jörg Frings-Fürst <debian@jff.email>
|
||||
License: GPL-2+
|
||||
|
||||
License: GPL-2+
|
||||
|
||||
4
debian/patches/series
vendored
4
debian/patches/series
vendored
@ -1,5 +1,5 @@
|
||||
0145-Fix_condition_error_in_ascii_filter.patch
|
||||
0150-Fix_crash.patch
|
||||
#0145-Fix_condition_error_in_ascii_filter.patch
|
||||
#0150-Fix_crash.patch
|
||||
0100-ansi-c.patch
|
||||
0001-hurd.patch
|
||||
#0005-build.patch
|
||||
|
||||
129
debian/upstream/signing-key.asc
vendored
129
debian/upstream/signing-key.asc
vendored
@ -1,68 +1,63 @@
|
||||
-----BEGIN PGP ARMORED FILE-----
|
||||
Comment: Use "gpg --dearmor" for unpacking
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
=9biY
|
||||
-----END PGP ARMORED FILE-----
|
||||
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
|
||||
Qu7m8XPTuUj0t1Fvq0Xleoa74ot+e+pKWAaR40U=
|
||||
=3wf6
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
724
dmidecode.c
724
dmidecode.c
File diff suppressed because it is too large
Load Diff
16
dmidecode.h
16
dmidecode.h
@ -31,7 +31,23 @@ struct dmi_header
|
||||
u8 *data;
|
||||
};
|
||||
|
||||
enum cpuid_type
|
||||
{
|
||||
cpuid_none,
|
||||
cpuid_80386,
|
||||
cpuid_80486,
|
||||
cpuid_arm_legacy,
|
||||
cpuid_arm_soc_id,
|
||||
cpuid_x86_intel,
|
||||
cpuid_x86_amd,
|
||||
};
|
||||
|
||||
extern enum cpuid_type cpuid_type;
|
||||
|
||||
int is_printable(const u8 *data, int len);
|
||||
const char *dmi_string(const struct dmi_header *dm, u8 s);
|
||||
void dmi_print_memory_size(const char *addr, u64 code, int shift);
|
||||
void dmi_print_cpuid(void (*print_cb)(const char *name, const char *format, ...),
|
||||
const char *label, enum cpuid_type sig, const u8 *p);
|
||||
|
||||
#endif
|
||||
|
||||
576
dmioem.c
576
dmioem.c
@ -23,8 +23,10 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "types.h"
|
||||
#include "util.h"
|
||||
#include "dmidecode.h"
|
||||
#include "dmioem.h"
|
||||
#include "dmiopt.h"
|
||||
#include "dmioutput.h"
|
||||
|
||||
/*
|
||||
@ -42,34 +44,46 @@ enum DMI_VENDORS
|
||||
};
|
||||
|
||||
static enum DMI_VENDORS dmi_vendor = VENDOR_UNKNOWN;
|
||||
static const char *dmi_product = NULL;
|
||||
|
||||
/*
|
||||
* Remember the system vendor for later use. We only actually store the
|
||||
* value if we know how to decode at least one specific entry type for
|
||||
* that vendor.
|
||||
*/
|
||||
void dmi_set_vendor(const char *s)
|
||||
void dmi_set_vendor(const char *v, const char *p)
|
||||
{
|
||||
int len;
|
||||
const struct { const char *str; enum DMI_VENDORS id; } vendor[] = {
|
||||
{ "Acer", VENDOR_ACER },
|
||||
{ "HP", VENDOR_HP },
|
||||
{ "Hewlett-Packard", VENDOR_HP },
|
||||
{ "HPE", VENDOR_HPE },
|
||||
{ "Hewlett Packard Enterprise", VENDOR_HPE },
|
||||
{ "IBM", VENDOR_IBM },
|
||||
{ "LENOVO", VENDOR_LENOVO },
|
||||
};
|
||||
unsigned int i;
|
||||
size_t len;
|
||||
|
||||
/*
|
||||
* Often DMI strings have trailing spaces. Ignore these
|
||||
* when checking for known vendor names.
|
||||
*/
|
||||
len = strlen(s);
|
||||
while (len && s[len - 1] == ' ')
|
||||
len = v ? strlen(v) : 0;
|
||||
while (len && v[len - 1] == ' ')
|
||||
len--;
|
||||
|
||||
if (strncmp(s, "Acer", len) == 0)
|
||||
dmi_vendor = VENDOR_ACER;
|
||||
else if (strncmp(s, "HP", len) == 0 || strncmp(s, "Hewlett-Packard", len) == 0)
|
||||
dmi_vendor = VENDOR_HP;
|
||||
else if (strncmp(s, "HPE", len) == 0 || strncmp(s, "Hewlett Packard Enterprise", len) == 0)
|
||||
dmi_vendor = VENDOR_HPE;
|
||||
else if (strncmp(s, "IBM", len) == 0)
|
||||
dmi_vendor = VENDOR_IBM;
|
||||
else if (strncmp(s, "LENOVO", len) == 0)
|
||||
dmi_vendor = VENDOR_LENOVO;
|
||||
for (i = 0; i < ARRAY_SIZE(vendor); i++)
|
||||
{
|
||||
if (strlen(vendor[i].str) == len &&
|
||||
strncmp(v, vendor[i].str, len) == 0)
|
||||
{
|
||||
dmi_vendor = vendor[i].id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
dmi_product = p;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -133,7 +147,7 @@ static void dmi_print_hp_net_iface_rec(u8 id, u8 bus, u8 dev, const u8 *mac)
|
||||
if (id == 0xFF)
|
||||
id = ++nic_ctr;
|
||||
|
||||
sprintf(attr, "NIC %hu", id);
|
||||
sprintf(attr, "NIC %hhu", id);
|
||||
if (dev == 0x00 && bus == 0x00)
|
||||
pr_attr(attr, "Disabled");
|
||||
else if (dev == 0xFF && bus == 0xFF)
|
||||
@ -147,15 +161,347 @@ static void dmi_print_hp_net_iface_rec(u8 id, u8 bus, u8 dev, const u8 *mac)
|
||||
}
|
||||
}
|
||||
|
||||
typedef enum { G6 = 6, G7, G8, G9, G10, G10P } dmi_hpegen_t;
|
||||
|
||||
static int dmi_hpegen(const char *s)
|
||||
{
|
||||
struct { const char *name; dmi_hpegen_t gen; } table[] = {
|
||||
{ "Gen10 Plus", G10P },
|
||||
{ "Gen10", G10 },
|
||||
{ "Gen9", G9 },
|
||||
{ "Gen8", G8 },
|
||||
{ "G7", G7 },
|
||||
{ "G6", G6 },
|
||||
};
|
||||
unsigned int i;
|
||||
|
||||
if (!strstr(s, "ProLiant") && !strstr(s, "Apollo") &&
|
||||
!strstr(s, "Synergy") && !strstr(s, "Edgeline"))
|
||||
return -1;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(table); i++) {
|
||||
if (strstr(s, table[i].name))
|
||||
return(table[i].gen);
|
||||
}
|
||||
|
||||
return (dmi_vendor == VENDOR_HPE) ? G10P : G6;
|
||||
}
|
||||
|
||||
static void dmi_hp_240_attr(u64 defined, u64 set)
|
||||
{
|
||||
static const char *attributes[] = {
|
||||
"Updatable",
|
||||
"Reset Required",
|
||||
"Authentication Required",
|
||||
"In Use",
|
||||
"UEFI Image",
|
||||
};
|
||||
unsigned int i;
|
||||
|
||||
pr_attr("Attributes Defined/Set", NULL);
|
||||
for (i = 0; i < ARRAY_SIZE(attributes); i++)
|
||||
{
|
||||
if (!(defined.l & (1UL << i)))
|
||||
continue;
|
||||
pr_subattr(attributes[i], "%s", set.l & (1UL << i) ? "Yes" : "No");
|
||||
}
|
||||
}
|
||||
|
||||
static void dmi_hp_203_assoc_hndl(const char *fname, u16 num)
|
||||
{
|
||||
if (opt.flags & FLAG_QUIET)
|
||||
return;
|
||||
|
||||
if (num == 0xFFFE)
|
||||
pr_attr(fname, "N/A");
|
||||
else
|
||||
pr_attr(fname, "0x%04X", num);
|
||||
}
|
||||
|
||||
static void dmi_hp_203_pciinfo(const char *fname, u16 num)
|
||||
{
|
||||
if (num == 0xFFFF)
|
||||
pr_attr(fname, "Device Not Present");
|
||||
else
|
||||
pr_attr(fname, "0x%04x", num);
|
||||
}
|
||||
|
||||
static void dmi_hp_203_bayenc(const char *fname, u8 num)
|
||||
{
|
||||
switch (num)
|
||||
{
|
||||
case 0x00:
|
||||
pr_attr(fname, "Unknown");
|
||||
break;
|
||||
case 0xff:
|
||||
pr_attr(fname, "Do Not Display");
|
||||
break;
|
||||
default:
|
||||
pr_attr(fname, "%d", num);
|
||||
}
|
||||
}
|
||||
|
||||
static void dmi_hp_203_devtyp(const char *fname, unsigned int code)
|
||||
{
|
||||
const char *str = "Reserved";
|
||||
static const char *type[] = {
|
||||
"Unknown", /* 0x00 */
|
||||
"Reserved",
|
||||
"Reserved",
|
||||
"Flexible LOM",
|
||||
"Embedded LOM",
|
||||
"NIC in a Slot",
|
||||
"Storage Controller",
|
||||
"Smart Array Storage Controller",
|
||||
"USB Hard Disk",
|
||||
"Other PCI Device",
|
||||
"RAM Disk",
|
||||
"Firmware Volume",
|
||||
"UEFI Shell",
|
||||
"Generic UEFI USB Boot Entry",
|
||||
"Dynamic Smart Array Controller",
|
||||
"File",
|
||||
"NVME Hard Drive",
|
||||
"NVDIMM" /* 0x11 */
|
||||
};
|
||||
|
||||
if (code < ARRAY_SIZE(type))
|
||||
str = type[code];
|
||||
|
||||
pr_attr(fname, "%s", str);
|
||||
}
|
||||
|
||||
static void dmi_hp_203_devloc(const char *fname, unsigned int code)
|
||||
{
|
||||
const char *str = "Reserved";
|
||||
static const char *location[] = {
|
||||
"Unknown", /* 0x00 */
|
||||
"Embedded",
|
||||
"iLO Virtual Media",
|
||||
"Front USB Port",
|
||||
"Rear USB Port",
|
||||
"Internal USB",
|
||||
"Internal SD Card",
|
||||
"Internal Virutal USB (Embedded NAND)",
|
||||
"Embedded SATA Port",
|
||||
"Embedded Smart Array",
|
||||
"PCI Slot",
|
||||
"RAM Memory",
|
||||
"USB",
|
||||
"Dynamic Smart Array Controller",
|
||||
"URL",
|
||||
"NVMe Drive Bay" /* 0x0F */
|
||||
};
|
||||
|
||||
if (code < ARRAY_SIZE(location))
|
||||
str = location[code];
|
||||
|
||||
pr_attr(fname, "%s", str);
|
||||
}
|
||||
|
||||
static void dmi_hp_238_loc(const char *fname, unsigned int code)
|
||||
{
|
||||
const char *str = "Reserved";
|
||||
static const char *location[] = {
|
||||
"Internal", /* 0x00 */
|
||||
"Front of Server",
|
||||
"Rear of Server",
|
||||
"Embedded internal SD Card",
|
||||
"iLO USB",
|
||||
"HP NAND Controller (USX 2065 or other)",
|
||||
"Reserved",
|
||||
"Debug Port", /* 0x07 */
|
||||
};
|
||||
|
||||
if (code < ARRAY_SIZE(location))
|
||||
str = location[code];
|
||||
|
||||
pr_attr(fname, "%s", str);
|
||||
}
|
||||
|
||||
static void dmi_hp_238_flags(const char *fname, unsigned int code)
|
||||
{
|
||||
const char *str = "Reserved";
|
||||
static const char *flags[] = {
|
||||
"Not Shared", /* 0x00 */
|
||||
"Shared with physical switch",
|
||||
"Shared with automatic control", /* 0x02 */
|
||||
};
|
||||
|
||||
if (code < ARRAY_SIZE(flags))
|
||||
str = flags[code];
|
||||
|
||||
pr_attr(fname, "%s", str);
|
||||
}
|
||||
|
||||
static void dmi_hp_238_speed(const char *fname, unsigned int code)
|
||||
{
|
||||
const char *str = "Reserved";
|
||||
static const char *speed[] = {
|
||||
"Reserved", /* 0x00 */
|
||||
"USB 1.1 Full Speed",
|
||||
"USB 2.0 High Speed",
|
||||
"USB 3.0 Super Speed" /* 0x03 */
|
||||
};
|
||||
|
||||
if (code < ARRAY_SIZE(speed))
|
||||
str = speed[code];
|
||||
|
||||
pr_attr(fname, "%s", str);
|
||||
}
|
||||
|
||||
static int dmi_decode_hp(const struct dmi_header *h)
|
||||
{
|
||||
u8 *data = h->data;
|
||||
int nic, ptr;
|
||||
u32 feat;
|
||||
const char *company = (dmi_vendor == VENDOR_HP) ? "HP" : "HPE";
|
||||
int gen;
|
||||
|
||||
gen = dmi_hpegen(dmi_product);
|
||||
if (gen < 0)
|
||||
return 0;
|
||||
|
||||
switch (h->type)
|
||||
{
|
||||
case 194:
|
||||
/*
|
||||
* Vendor Specific: Super IO Enable/Disable Features
|
||||
*
|
||||
* Offset | Name | Width | Description
|
||||
* -------------------------------------
|
||||
* 0x00 | Type | BYTE | 0xC2, Super IO Enable/Disable Indicator
|
||||
* 0x01 | Length | BYTE | Length of structure
|
||||
* 0x02 | Handle | WORD | Unique handle
|
||||
* 0x04 | Dev Status | BYTE | Device Status
|
||||
*/
|
||||
pr_handle_name("%s ProLiant Super IO Enable/Disable Indicator", company);
|
||||
if (h->length < 0x05) break;
|
||||
feat = data[0x04];
|
||||
pr_attr("Serial Port A", "%s", feat & (1 << 0) ? "Enabled" : "Disabled");
|
||||
pr_attr("Serial Port B", "%s", feat & (1 << 1) ? "Enabled" : "Disabled");
|
||||
pr_attr("Parallel Port", "%s", feat & (1 << 2) ? "Enabled" : "Disabled");
|
||||
pr_attr("Floppy Disk Port", "%s", feat & (1 << 3) ? "Enabled" : "Disabled");
|
||||
pr_attr("Virtual Serial Port", "%s", feat & (1 << 4) ? "Enabled" : "Disabled");
|
||||
break;
|
||||
|
||||
case 199:
|
||||
/*
|
||||
* Vendor Specific: CPU Microcode Patch
|
||||
*
|
||||
* Offset | Name | Width | Description
|
||||
* -------------------------------------
|
||||
* 0x00 | Type | BYTE | 0xC7, CPU Microcode Patch
|
||||
* 0x01 | Length | BYTE | Length of structure
|
||||
* 0x02 | Handle | WORD | Unique handle
|
||||
* 0x04 | Patch Info | Varies| { <DWORD: ID, DWORD Date, DWORD CPUID> ...}
|
||||
*/
|
||||
if (gen < G9) return 0;
|
||||
pr_handle_name("%s ProLiant CPU Microcode Patch Support Info", company);
|
||||
|
||||
for (ptr = 0x4; ptr + 12 <= h->length; ptr += 12) {
|
||||
u32 cpuid = DWORD(data + ptr + 2 * 4);
|
||||
u32 date;
|
||||
|
||||
/* AMD omits BaseFamily. Reconstruction valid on family >= 15. */
|
||||
if (cpuid_type == cpuid_x86_amd)
|
||||
cpuid = ((cpuid & 0xfff00) << 8) | 0x0f00 | (cpuid & 0xff);
|
||||
|
||||
dmi_print_cpuid(pr_attr, "CPU ID", cpuid_type, (u8 *) &cpuid);
|
||||
|
||||
date = DWORD(data + ptr + 4);
|
||||
pr_subattr("Date", "%04x-%02x-%02x",
|
||||
date & 0xffff, (date >> 24) & 0xff, (date >> 16) & 0xff);
|
||||
pr_subattr("Patch", "0x%X", DWORD(data + ptr));
|
||||
}
|
||||
break;
|
||||
|
||||
case 203:
|
||||
/*
|
||||
* Vendor Specific: HP Device Correlation Record
|
||||
*
|
||||
* Offset | Name | Width | Description
|
||||
* -------------------------------------
|
||||
* 0x00 | Type | BYTE | 0xCB, Correlation Record
|
||||
* 0x01 | Length | BYTE | Length of structure
|
||||
* 0x02 | Handle | WORD | Unique handle
|
||||
* 0x04 | Assoc Device | WORD | Handle of Associated Type 9 or Type 41 Record
|
||||
* 0x06 | Assoc SMBus | WORD | Handle of Associated Type 228 SMBus Segment Record
|
||||
* 0x08 | PCI Vendor ID| WORD | PCI Vendor ID of device 0xFFFF -> not present
|
||||
* 0x0A | PCI Device ID| WORD | PCI Device ID of device 0xFFFF -> not present
|
||||
* 0x0C | PCI SubVendor| WORD | PCI Sub Vendor ID of device 0xFFFF -> not present
|
||||
* 0x0E | PCI SubDevice| WORD | PCI Sub Device ID of device 0xFFFF -> not present
|
||||
* 0x10 | Class Code | BYTE | PCI Class Code of Endpoint. 0xFF if device not present.
|
||||
* 0x11 | Class SubCode| BYTE | PCI Sub Class Code of Endpoint. 0xFF if device not present.
|
||||
* 0x12 | Parent Handle| WORD |
|
||||
* 0x14 | Flags | WORD |
|
||||
* 0x16 | Device Type | BYTE | UEFI only
|
||||
* 0x17 | Device Loc | BYTE | Device Location
|
||||
* 0x18 | Dev Instance | BYTE | Device Instance
|
||||
* 0x19 | Sub Instance | BYTE | NIC Port # or NVMe Drive Bay
|
||||
* 0x1A | Bay | BYTE |
|
||||
* 0x1B | Enclosure | BYTE |
|
||||
* 0x1C | UEFI Dev Path| STRING| String number for UEFI Device Path
|
||||
* 0x1D | Struct Name | STRING| String number for UEFI Device Structured Name
|
||||
* 0x1E | Device Name | STRING| String number for UEFI Device Name
|
||||
* 0x1F | UEFI Location| STRING| String number for UEFI Location
|
||||
* 0x20 | Assoc Handle | WORD | Type 9 Handle. Defined if Flags[0] == 1.
|
||||
* 0x22 | Part Number | STRING| PCI Device Part Number
|
||||
* 0x23 | Serial Number| STRING| PCI Device Serial Number
|
||||
* 0x24 | Seg Number | WORD | Segment Group number. 0 -> Single group topology
|
||||
* 0x26 | Bus Number | BYTE | PCI Device Bus Number
|
||||
* 0x27 | Func Number | BTYE | PCI Device and Function Number
|
||||
*/
|
||||
if (gen < G9) return 0;
|
||||
pr_handle_name("%s Device Correlation Record", company);
|
||||
if (h->length < 0x1F) break;
|
||||
dmi_hp_203_assoc_hndl("Associated Device Record", WORD(data + 0x04));
|
||||
dmi_hp_203_assoc_hndl("Associated SMBus Record", WORD(data + 0x06));
|
||||
if (WORD(data + 0x08) == 0xffff && WORD(data + 0x0A) == 0xffff &&
|
||||
WORD(data + 0x0C) == 0xffff && WORD(data + 0x0E) == 0xffff &&
|
||||
data[0x10] == 0xFF && data[0x11] == 0xFF)
|
||||
{
|
||||
pr_attr("PCI Device Info", "Device Not Present");
|
||||
}
|
||||
else
|
||||
{
|
||||
dmi_hp_203_pciinfo("PCI Vendor ID", WORD(data + 0x08));
|
||||
dmi_hp_203_pciinfo("PCI Device ID", WORD(data + 0x0A));
|
||||
dmi_hp_203_pciinfo("PCI Sub Vendor ID", WORD(data + 0x0C));
|
||||
dmi_hp_203_pciinfo("PCI Sub Device ID", WORD(data + 0x0E));
|
||||
dmi_hp_203_pciinfo("PCI Class Code", (char)data[0x10]);
|
||||
dmi_hp_203_pciinfo("PCI Sub Class Code", (char)data[0x11]);
|
||||
}
|
||||
dmi_hp_203_assoc_hndl("Parent Handle", WORD(data + 0x12));
|
||||
pr_attr("Flags", "0x%04X", WORD(data + 0x14));
|
||||
dmi_hp_203_devtyp("Device Type", data[0x16]);
|
||||
dmi_hp_203_devloc("Device Location", data[0x17]);
|
||||
pr_attr("Device Instance", "%d", data[0x18]);
|
||||
pr_attr("Device Sub-Instance", "%d", data[0x19]);
|
||||
dmi_hp_203_bayenc("Bay", data[0x1A]);
|
||||
dmi_hp_203_bayenc("Enclosure", data[0x1B]);
|
||||
pr_attr("Device Path", "%s", dmi_string(h, data[0x1C]));
|
||||
pr_attr("Structured Name", "%s", dmi_string(h, data[0x1D]));
|
||||
pr_attr("Device Name", "%s", dmi_string(h, data[0x1E]));
|
||||
if (h->length < 0x22) break;
|
||||
pr_attr("UEFI Location", "%s", dmi_string(h, data[0x1F]));
|
||||
if (!(opt.flags & FLAG_QUIET))
|
||||
{
|
||||
if (WORD(data + 0x14) & 1)
|
||||
pr_attr("Associated Real/Phys Handle", "0x%04X",
|
||||
WORD(data + 0x20));
|
||||
else
|
||||
pr_attr("Associated Real/Phys Handle", "N/A");
|
||||
}
|
||||
if (h->length < 0x24) break;
|
||||
pr_attr("PCI Part Number", "%s", dmi_string(h, data[0x22]));
|
||||
pr_attr("Serial Number", "%s", dmi_string(h, data[0x23]));
|
||||
if (h->length < 0x28) break;
|
||||
pr_attr("Segment Group Number", "0x%04x", WORD(data + 0x24));
|
||||
pr_attr("PCI Device", "%02x:%02x.%x",
|
||||
data[0x26], data[0x27] >> 3, data[0x27] & 7);
|
||||
break;
|
||||
|
||||
case 204:
|
||||
/*
|
||||
* Vendor Specific: HPE ProLiant System/Rack Locator
|
||||
@ -208,35 +554,6 @@ static int dmi_decode_hp(const struct dmi_header *h)
|
||||
}
|
||||
break;
|
||||
|
||||
case 233:
|
||||
/*
|
||||
* Vendor Specific: HPE ProLiant NIC MAC Information
|
||||
*
|
||||
* This prints the BIOS NIC number,
|
||||
* PCI bus/device/function, and MAC address
|
||||
*
|
||||
* Offset | Name | Width | Description
|
||||
* -------------------------------------
|
||||
* 0x00 | Type | BYTE | 0xE9, NIC structure
|
||||
* 0x01 | Length | BYTE | Length of structure
|
||||
* 0x02 | Handle | WORD | Unique handle
|
||||
* 0x04 | Grp No | WORD | 0 for single segment
|
||||
* 0x06 | Bus No | BYTE | PCI Bus
|
||||
* 0x07 | Dev No | BYTE | PCI Device/Function No
|
||||
* 0x08 | MAC | 32B | MAC addr padded w/ 0s
|
||||
* 0x28 | Port No| BYTE | Each NIC maps to a Port
|
||||
*/
|
||||
pr_handle_name("%s BIOS PXE NIC PCI and MAC Information",
|
||||
company);
|
||||
if (h->length < 0x0E) break;
|
||||
/* If the record isn't long enough, we don't have an ID
|
||||
* use 0xFF to use the internal counter.
|
||||
* */
|
||||
nic = h->length > 0x28 ? data[0x28] : 0xFF;
|
||||
dmi_print_hp_net_iface_rec(nic, data[0x06], data[0x07],
|
||||
&data[0x08]);
|
||||
break;
|
||||
|
||||
case 212:
|
||||
/*
|
||||
* Vendor Specific: HPE 64-bit CRU Information
|
||||
@ -282,6 +599,177 @@ static int dmi_decode_hp(const struct dmi_header *h)
|
||||
pr_subattr("UEFI", "%s", feat & 0x1400 ? "Yes" : "No");
|
||||
break;
|
||||
|
||||
case 233:
|
||||
/*
|
||||
* Vendor Specific: HPE ProLiant NIC MAC Information
|
||||
*
|
||||
* This prints the BIOS NIC number,
|
||||
* PCI bus/device/function, and MAC address
|
||||
*
|
||||
* Offset | Name | Width | Description
|
||||
* -------------------------------------
|
||||
* 0x00 | Type | BYTE | 0xE9, NIC structure
|
||||
* 0x01 | Length | BYTE | Length of structure
|
||||
* 0x02 | Handle | WORD | Unique handle
|
||||
* 0x04 | Grp No | WORD | 0 for single segment
|
||||
* 0x06 | Bus No | BYTE | PCI Bus
|
||||
* 0x07 | Dev No | BYTE | PCI Device/Function No
|
||||
* 0x08 | MAC | 32B | MAC addr padded w/ 0s
|
||||
* 0x28 | Port No| BYTE | Each NIC maps to a Port
|
||||
*/
|
||||
pr_handle_name("%s BIOS PXE NIC PCI and MAC Information",
|
||||
company);
|
||||
if (h->length < 0x0E) break;
|
||||
/* If the record isn't long enough, we don't have an ID
|
||||
* use 0xFF to use the internal counter.
|
||||
* */
|
||||
nic = h->length > 0x28 ? data[0x28] : 0xFF;
|
||||
dmi_print_hp_net_iface_rec(nic, data[0x06], data[0x07],
|
||||
&data[0x08]);
|
||||
break;
|
||||
|
||||
case 236:
|
||||
/*
|
||||
* Vendor Specific: HPE ProLiant HDD Backplane
|
||||
*
|
||||
* Offset | Name | Width | Description
|
||||
* ---------------------------------------
|
||||
* 0x00 | Type | BYTE | 0xEC, HDD Backplane
|
||||
* 0x01 | Length | BYTE | Length of structure
|
||||
* 0x02 | Handle | WORD | Unique handle
|
||||
* 0x04 | I2C Address| BYTE | Backplane FRU I2C Address
|
||||
* 0x05 | Box Number | WORD | Backplane Box Number
|
||||
* 0x07 | NVRAM ID | WORD | Backplane NVRAM ID
|
||||
* 0x09 | WWID | QWORD | SAS Expander WWID
|
||||
* 0x11 | Total Bays | BYTE | Total SAS Bays
|
||||
* 0x12 | A0 Bays | BYTE | (deprecated) Number of SAS drive bays behind port 0xA0
|
||||
* 0x13 | A2 Bays | BYTE | (deprecated) Number of SAS drive bays behind port 0xA2
|
||||
* 0x14 | Name | STRING| (deprecated) Backplane Name
|
||||
*/
|
||||
pr_handle_name("%s HDD Backplane FRU Information", company);
|
||||
if (h->length < 0x08) break;
|
||||
pr_attr("FRU I2C Address", "0x%X raw(0x%X)", data[0x4] >> 1, data[0x4]);
|
||||
pr_attr("Box Number", "%d", WORD(data + 0x5));
|
||||
pr_attr("NVRAM ID", "0x%X", WORD(data + 0x7));
|
||||
if (h->length < 0x11) break;
|
||||
pr_attr("SAS Expander WWID", "0x%X", QWORD(data + 0x9));
|
||||
if (h->length < 0x12) break;
|
||||
pr_attr("Total SAS Bays", "%d", data[0x11]);
|
||||
if (h->length < 0x15) break;
|
||||
if (gen < G10P) {
|
||||
pr_attr("A0 Bay Count", "%d", data[0x12]);
|
||||
pr_attr("A2 Bay Count", "%d", data[0x13]);
|
||||
pr_attr("Backplane Name", "%s", dmi_string(h, data[0x14]));
|
||||
}
|
||||
break;
|
||||
|
||||
case 237:
|
||||
/*
|
||||
* Vendor Specific: HPE DIMM Vendor Part Number Information
|
||||
*
|
||||
* Offset | Name | Width | Description
|
||||
* ---------------------------------------
|
||||
* 0x00 | Type | BYTE | 0xED, DIMM Vendor Part Number information record
|
||||
* 0x01 | Length | BYTE | Length of structure
|
||||
* 0x02 | Handle | WORD | Unique handle
|
||||
* 0x04 | Hand Assoc | WORD | Handle to map to Type 17
|
||||
* 0x06 | Manufacture|STRING | DIMM Manufacturer
|
||||
* 0x07 | Part Number|STRING | DIMM Manufacturer's Part Number
|
||||
* 0x08 | Serial Num |STRING | DIMM Vendor Serial Number
|
||||
* 0x09 | Spare Part |STRING | DIMM Spare Part Number
|
||||
*/
|
||||
if (gen < G9) return 0;
|
||||
pr_handle_name("%s DIMM Vendor Information", company);
|
||||
if (h->length < 0x08) break;
|
||||
if (!(opt.flags & FLAG_QUIET))
|
||||
pr_attr("Associated Handle", "0x%04X", WORD(data + 0x4));
|
||||
pr_attr("DIMM Manufacturer", "%s", dmi_string(h, data[0x06]));
|
||||
pr_attr("DIMM Manufacturer Part Number", "%s", dmi_string(h, data[0x07]));
|
||||
if (h->length < 0x09) break;
|
||||
pr_attr("DIMM Vendor Serial Number", "%s", dmi_string(h, data[0x08]));
|
||||
if (h->length < 0x0A) break;
|
||||
pr_attr("DIMM Spare Part Number", "%s", dmi_string(h, data[0x09]));
|
||||
break;
|
||||
|
||||
case 238:
|
||||
/*
|
||||
* Vendor Specific: HPE USB Port Connector Correlation Record
|
||||
*
|
||||
* Offset | Name | Width | Description
|
||||
* ---------------------------------------
|
||||
* 0x00 | Type | BYTE | 0xEE, HP Device Correlation Record
|
||||
* 0x01 | Length | BYTE | Length of structure
|
||||
* 0x02 | Handle | WORD | Unique handle
|
||||
* 0x04 | Hand Assoc | WORD | Handle to map to Type 8
|
||||
* 0x06 | Parent Bus | BYTE | PCI Bus number of USB controller of this port
|
||||
* 0x07 | Par Dev/Fun| BYTE | PCI Dev/Fun of USB Controller of this port
|
||||
* 0x08 | Location | BYTE | Enumerated value of location of USB port
|
||||
* 0x09 | Flags | WORD | USB Shared Management Port
|
||||
* 0x0B | Port Inst | BYTE | Instance number for this type of USB port
|
||||
* 0x0C | Parent Hub | BYTE | Instance number of internal Hub
|
||||
* 0x0D | Port Speed | BYTE | Enumerated value of speed configured by BIOS
|
||||
* 0x0E | Device Path| STRING| UEFI Device Path of USB endpoint
|
||||
*/
|
||||
if (gen < G9) return 0;
|
||||
pr_handle_name("%s Proliant USB Port Connector Correlation Record", company);
|
||||
if (h->length < 0x0F) break;
|
||||
if (!(opt.flags & FLAG_QUIET))
|
||||
pr_attr("Associated Handle", "0x%04X", WORD(data + 0x4));
|
||||
pr_attr("PCI Device", "%02x:%02x.%x", data[0x6],
|
||||
data[0x7] >> 3, data[0x7] & 0x7);
|
||||
dmi_hp_238_loc("Location", data[0x8]);
|
||||
dmi_hp_238_flags("Management Port", WORD(data + 0x9));
|
||||
pr_attr("Port Instance", "%d", data[0xB]);
|
||||
if (data[0xC] != 0xFE)
|
||||
pr_attr("Parent Hub Port Instance", "%d", data[0xC]);
|
||||
else
|
||||
pr_attr("Parent Hub Port Instance", "N/A");
|
||||
dmi_hp_238_speed("Port Speed Capability", data[0xD]);
|
||||
pr_attr("Device Path", "%s", dmi_string(h, data[0xE]));
|
||||
break;
|
||||
|
||||
case 240:
|
||||
/*
|
||||
* Vendor Specific: HPE Proliant Inventory Record
|
||||
*
|
||||
* Reports firmware version information for devices that report their
|
||||
* firmware using their UEFI drivers. Additionally provides association
|
||||
* with other SMBIOS records, such as Type 203 (which in turn is
|
||||
* associated with Types 9, 41, and 228).
|
||||
*
|
||||
* Offset | Name | Width | Description
|
||||
* ---------------------------------------
|
||||
* 0x00 | Type | BYTE | 0xF0, HP Firmware Inventory Record
|
||||
* 0x01 | Length | BYTE | Length of structure
|
||||
* 0x02 | Handle | WORD | Unique handle
|
||||
* 0x04 | Hndl Assoc | WORD | Handle to map to Type 203
|
||||
* 0x06 | Pkg Vers | DWORD | FW Vers Release of All FW in Device
|
||||
* 0x0A | Ver String | STRING| FW Version String
|
||||
* 0x0B | Image Size | QWORD | FW image size (bytes)
|
||||
* 0x13 | Attributes | QWORD | Bitfield: Is attribute defined?
|
||||
* 0x1B | Attr Set | QWORD | BitField: If defined, is attribute set?
|
||||
* 0x23 | Version | DWORD | Lowest supported version.
|
||||
*/
|
||||
pr_handle_name("%s Proliant Inventory Record", company);
|
||||
if (h->length < 0x27) break;
|
||||
if (!(opt.flags & FLAG_QUIET))
|
||||
pr_attr("Associated Handle", "0x%04X", WORD(data + 0x4));
|
||||
pr_attr("Package Version", "0x%08X", DWORD(data + 0x6));
|
||||
pr_attr("Version String", "%s", dmi_string(h, data[0x0A]));
|
||||
|
||||
if (DWORD(data + 0x0B))
|
||||
dmi_print_memory_size("Image Size", QWORD(data + 0xB), 0);
|
||||
else
|
||||
pr_attr("Image Size", "Not Available");
|
||||
|
||||
dmi_hp_240_attr(QWORD(data + 0x13), QWORD(data + 0x1B));
|
||||
|
||||
if (DWORD(data + 0x23))
|
||||
pr_attr("Lowest Supported Version", "0x%08X", DWORD(data + 0x23));
|
||||
else
|
||||
pr_attr("Lowest Supported Version", "Not Available");
|
||||
break;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
2
dmioem.h
2
dmioem.h
@ -21,5 +21,5 @@
|
||||
|
||||
struct dmi_header;
|
||||
|
||||
void dmi_set_vendor(const char *s);
|
||||
void dmi_set_vendor(const char *s, const char *p);
|
||||
int dmi_decode_oem(const struct dmi_header *h);
|
||||
|
||||
@ -5,7 +5,7 @@ biosdecode \- \s-1BIOS\s0 information decoder
|
||||
.\"
|
||||
.SH SYNOPSIS
|
||||
.B biosdecode
|
||||
.RB [ OPTIONS ]
|
||||
.RI [ OPTIONS ]
|
||||
.\"
|
||||
.SH DESCRIPTION
|
||||
.B biosdecode
|
||||
@ -59,11 +59,12 @@ program.
|
||||
.\"
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.BR "-d" ", " "--dev-mem FILE"
|
||||
Read memory from device \fBFILE\fR (default: \fB/dev/mem\fR)
|
||||
.BR "-d" ", " "--dev-mem \fIFILE\fP"
|
||||
Read memory from device \fIFILE\fP (default: \fI/dev/mem\fP)
|
||||
.TP
|
||||
.BR " " " " "--pir full"
|
||||
Decode the details of the PCI IRQ routing table
|
||||
.BR " " " " "--pir \fBfull\fP"
|
||||
Decode the details of the PCI IRQ routing table.
|
||||
Only \fBfull\fP mode is supported.
|
||||
.TP
|
||||
.BR "-h" ", " "--help"
|
||||
Display usage information and exit
|
||||
|
||||
114
man/dmidecode.8
114
man/dmidecode.8
@ -5,7 +5,7 @@ dmidecode \- \s-1DMI\s0 table decoder
|
||||
.\"
|
||||
.SH SYNOPSIS
|
||||
.B dmidecode
|
||||
.RB [ OPTIONS ]
|
||||
.RI [ OPTIONS ]
|
||||
.\"
|
||||
.SH DESCRIPTION
|
||||
.B dmidecode
|
||||
@ -63,35 +63,53 @@ and serial number.
|
||||
.\"
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.BR "-d" ", " "--dev-mem FILE"
|
||||
Read memory from device \fBFILE\fR (default: \fB/dev/mem\fR)
|
||||
.BR "-d" ", " "--dev-mem \fIFILE\fP"
|
||||
Read memory from device \fIFILE\fP (default: \fI/dev/mem\fP)
|
||||
.TP
|
||||
.BR "-q" ", " "--quiet"
|
||||
Be less verbose. Unknown, inactive and \s-1OEM\s0-specific entries are not
|
||||
displayed. Meta-data and handle references are hidden.
|
||||
.TP
|
||||
.BR "-s" ", " "--string KEYWORD"
|
||||
Only display the value of the \s-1DMI\s0 string identified by \fBKEYWORD\fR.
|
||||
\fBKEYWORD\fR must be a keyword from the following list: \fBbios-vendor\fR,
|
||||
\fBbios-version\fR, \fBbios-release-date\fR,
|
||||
\fBbios-revision\fR, \fBfirmware-revision\fR,
|
||||
\fBsystem-manufacturer\fR, \fBsystem-product-name\fR,
|
||||
\fBsystem-version\fR, \fBsystem-serial-number\fR,
|
||||
\fBsystem-uuid\fR, \fBsystem-sku-number\fR, \fBsystem-family\fR,
|
||||
\fBbaseboard-manufacturer\fR, \fBbaseboard-product-name\fR,
|
||||
\fBbaseboard-version\fR, \fBbaseboard-serial-number\fR,
|
||||
\fBbaseboard-asset-tag\fR, \fBchassis-manufacturer\fR,
|
||||
\fBchassis-type\fR,
|
||||
\fBchassis-version\fR, \fBchassis-serial-number\fR,
|
||||
\fBchassis-asset-tag\fR, \fBprocessor-family\fR,
|
||||
\fBprocessor-manufacturer\fR,
|
||||
\fBprocessor-version\fR, \fBprocessor-frequency\fR.
|
||||
.BR "-s" ", " "--string \fIKEYWORD\fP"
|
||||
Only display the value of the \s-1DMI\s0 string identified by \fIKEYWORD\fP.
|
||||
It must be a keyword from the following list:
|
||||
.nh
|
||||
.BR bios\-vendor ,
|
||||
.BR bios\-version ,
|
||||
.BR bios\-release\-date ,
|
||||
.BR bios\-revision ,
|
||||
.BR firmware\-revision ,
|
||||
.BR system\-manufacturer ,
|
||||
.BR system\-product\-name ,
|
||||
.BR system\-version ,
|
||||
.BR system\-serial\-number ,
|
||||
.BR system\-uuid ,
|
||||
.BR system\-sku\-number ,
|
||||
.BR system\-family ,
|
||||
.BR baseboard\-manufacturer ,
|
||||
.BR baseboard\-product\-name ,
|
||||
.BR baseboard\-version ,
|
||||
.BR baseboard\-serial\-number ,
|
||||
.BR baseboard\-asset\-tag ,
|
||||
.BR chassis\-manufacturer ,
|
||||
.BR chassis\-type ,
|
||||
.BR chassis\-version ,
|
||||
.BR chassis\-serial\-number ,
|
||||
.BR chassis\-asset\-tag ,
|
||||
.BR processor\-family ,
|
||||
.BR processor\-manufacturer ,
|
||||
.BR processor\-version ,
|
||||
.BR processor\-frequency .
|
||||
.hy
|
||||
Each keyword corresponds to a given \s-1DMI\s0 type and a given offset
|
||||
within this entry type.
|
||||
Not all strings may be meaningful or even defined on all systems. Some
|
||||
keywords may return more than one result on some systems (e.g.
|
||||
\fBprocessor-version\fR on a multi-processor system).
|
||||
If \fBKEYWORD\fR is not provided or not valid, a list of all valid
|
||||
.nh
|
||||
.B processor\-version
|
||||
.hy
|
||||
on a multi-processor system).
|
||||
If \fIKEYWORD\fP is not provided or not valid, a list of all valid
|
||||
keywords is printed and
|
||||
.B dmidecode
|
||||
exits with an error.
|
||||
@ -104,23 +122,32 @@ typically from files under
|
||||
.IR /sys/devices/virtual/dmi/id .
|
||||
Most of these files are even readable by regular users.
|
||||
.TP
|
||||
.BR "-t" ", " "--type TYPE"
|
||||
Only display the entries of type \fBTYPE\fR. \fBTYPE\fR can be either a
|
||||
.BR "-t" ", " "--type \fITYPE\fP"
|
||||
Only display the entries of type \fITYPE\fP. It can be either a
|
||||
\s-1DMI\s0 type number, or a comma-separated list of type numbers, or a
|
||||
keyword from the following list: \fBbios\fR, \fBsystem\fR,
|
||||
\fBbaseboard\fR, \fBchassis\fR, \fBprocessor\fR, \fBmemory\fR,
|
||||
\fBcache\fR, \fBconnector\fR, \fBslot\fR. Refer to the DMI TYPES section
|
||||
below for details.
|
||||
keyword from the following list:
|
||||
.nh
|
||||
.BR bios ,
|
||||
.BR system ,
|
||||
.BR baseboard ,
|
||||
.BR chassis ,
|
||||
.BR processor ,
|
||||
.BR memory ,
|
||||
.BR cache ,
|
||||
.BR connector ,
|
||||
.BR slot .
|
||||
.hy
|
||||
Refer to the DMI TYPES section below for details.
|
||||
If this option is used more than once, the set of displayed entries will be
|
||||
the union of all the given types.
|
||||
If \fBTYPE\fR is not provided or not valid, a list of all valid keywords
|
||||
If \fITYPE\fP is not provided or not valid, a list of all valid keywords
|
||||
is printed and
|
||||
.B dmidecode
|
||||
exits with an error.
|
||||
.TP
|
||||
.BR "-H" ", " "--handle HANDLE"
|
||||
Only display the entry whose handle matches \fBHANDLE\fR. \fBHANDLE\fR
|
||||
is a 16-bit integer.
|
||||
.BR "-H" ", " "--handle \fIHANDLE\fP"
|
||||
Only display the entry whose handle matches \fIHANDLE\fP.
|
||||
\fIHANDLE\fP is a 16-bit integer.
|
||||
.TP
|
||||
.BR "-u" ", " "--dump"
|
||||
Do not decode the entries, dump their contents as hexadecimal instead.
|
||||
@ -128,22 +155,22 @@ Note that this is still a text output, no binary data will be thrown upon
|
||||
you. The strings attached to each entry are displayed as both
|
||||
hexadecimal and \s-1ASCII\s0. This option is mainly useful for debugging.
|
||||
.TP
|
||||
.BR " " " " "--dump-bin FILE"
|
||||
.BR " " " " "--dump-bin \fIFILE\fP"
|
||||
Do not decode the entries, instead dump the DMI data to a file in binary
|
||||
form. The generated file is suitable to pass to \fB--from-dump\fR
|
||||
form. The generated file is suitable to pass to \fB--from-dump\fP
|
||||
later.
|
||||
.TP
|
||||
.BR " " " " "--from-dump FILE"
|
||||
Read the DMI data from a binary file previously generated using
|
||||
\fB--dump-bin\fR.
|
||||
.BR " " " " "--from-dump \fIFILE\fP"
|
||||
Read the DMI data from a binary file previously generated using
|
||||
\fB--dump-bin\fP.
|
||||
.TP
|
||||
.BR " " " " "--no-sysfs"
|
||||
Do not attempt to read DMI data from sysfs files. This is mainly useful for
|
||||
debugging.
|
||||
.TP
|
||||
.BR " " " " "--oem-string N"
|
||||
Only display the value of the \s-1OEM\s0 string number \fBN\fR. The first
|
||||
\s-1OEM\s0 string has number 1. With special value "count", return the
|
||||
.BR " " " " "--oem-string \fIN\fP"
|
||||
Only display the value of the \s-1OEM\s0 string number \fIN\fP. The first
|
||||
\s-1OEM\s0 string has number \fB1\fP. With special value \fBcount\fP, return the
|
||||
number of OEM strings instead.
|
||||
.TP
|
||||
.BR "-h" ", " "--help"
|
||||
@ -152,7 +179,10 @@ Display usage information and exit
|
||||
.BR "-V" ", " "--version"
|
||||
Display the version and exit
|
||||
.P
|
||||
Options --string, --type, --dump-bin and --oem-string
|
||||
Options
|
||||
.BR --string ,
|
||||
.BR --type,
|
||||
.BR --dump-bin " and " --oem-string
|
||||
determine the output format and are mutually exclusive.
|
||||
.P
|
||||
Please note in case of
|
||||
@ -220,7 +250,7 @@ end-of-table marker. Types 128 to 255 are for \s-1OEM\s0-specific data.
|
||||
will display these entries by default, but it can only decode them
|
||||
when the vendors have contributed documentation or code for them.
|
||||
|
||||
Keywords can be used instead of type numbers with \fB--type\fR.
|
||||
Keywords can be used instead of type numbers with \fB--type\fP.
|
||||
Each keyword is equivalent to a list of type numbers:
|
||||
|
||||
.TS
|
||||
@ -250,7 +280,7 @@ dmidecode --type bios
|
||||
dmidecode --type BIOS
|
||||
.\"
|
||||
.SH BINARY DUMP FILE FORMAT
|
||||
The binary dump files generated by --dump-bin and read using --from-dump
|
||||
The binary dump files generated by \fB--dump-bin\fP and read using \fB--from-dump\fP
|
||||
are formatted as follows:
|
||||
.IP \(bu "\w'\(bu'u+1n"
|
||||
The SMBIOS or DMI entry point is located at offset 0x00.
|
||||
|
||||
@ -5,7 +5,7 @@ ownership \- Compaq ownership tag retriever
|
||||
.\"
|
||||
.SH SYNOPSIS
|
||||
.B ownership
|
||||
.RB [ OPTIONS ]
|
||||
.RI [ OPTIONS ]
|
||||
.\"
|
||||
.SH DESCRIPTION
|
||||
.B ownership
|
||||
@ -19,8 +19,8 @@ ownership tag. This should help its integration in scripts.
|
||||
.\"
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.BR "-d" ", " "--dev-mem FILE"
|
||||
Read memory from device \fBFILE\fR (default: \fB/dev/mem\fR)
|
||||
.BR "-d" ", " "--dev-mem \fIFILE\fP"
|
||||
Read memory from device \fIFILE\fP (default: \fI/dev/mem\fP)
|
||||
.TP
|
||||
.BR "-h" ", " "--help"
|
||||
Display usage information and exit
|
||||
|
||||
@ -5,7 +5,7 @@ vpddecode \- \s-1VPD\s0 structure decoder
|
||||
.\"
|
||||
.SH SYNOPSIS
|
||||
.B vpddecode
|
||||
.RB [ OPTIONS ]
|
||||
.RI [ OPTIONS ]
|
||||
.\"
|
||||
.SH DESCRIPTION
|
||||
.B vpddecode
|
||||
@ -32,30 +32,35 @@ the accuracy of these labels is welcome.
|
||||
.\"
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.BR "-d" ", " "--dev-mem FILE"
|
||||
Read memory from device \fBFILE\fR (default: \fB/dev/mem\fR)
|
||||
.BR "-d" ", " "--dev-mem \fIFILE\fP"
|
||||
Read memory from device \fIFILE\fP (default: \fI/dev/mem\fP)
|
||||
.TP
|
||||
.BR "-s" ", " "--string KEYWORD"
|
||||
Only display the value of the \s-1VPD\s0 string identified by \fBKEYWORD\fR.
|
||||
\fBKEYWORD\fR must be a keyword from the following list: \fBbios-build-id\fR,
|
||||
\fBbox-serial-number\fR, \fBmotherboard-serial-number\fR,
|
||||
\fBmachine-type-model\fR, \fBbios-release-date\fR.
|
||||
.BR "-s" ", " "--string \fIKEYWORD\fP"
|
||||
Only display the value of the \s-1VPD\s0 string identified by \fIKEYWORD\fP.
|
||||
It must be a keyword from the following list:
|
||||
.nh
|
||||
.BR bios-build-id ,
|
||||
.BR box-serial-number ,
|
||||
.BR motherboard-serial-number ,
|
||||
.BR machine-type-model ,
|
||||
.BR bios-release-date .
|
||||
.hy
|
||||
Each keyword corresponds to an offset and a length within the \s-1VPD\s0
|
||||
record.
|
||||
Not all strings may be defined on all \s-1VPD\s0-enabled systems.
|
||||
If \fBKEYWORD\fR is not provided or not valid, a list of all valid
|
||||
If \fIKEYWORD\fP is not provided or not valid, a list of all valid
|
||||
keywords is printed and
|
||||
.B vpddecode
|
||||
exits with an error.
|
||||
This option cannot be used more than once.
|
||||
Mutually exclusive with \fB--dump\fR.
|
||||
Mutually exclusive with \fB--dump\fP.
|
||||
.TP
|
||||
.BR "-u" ", " "--dump"
|
||||
Do not decode the VPD records, dump their contents as hexadecimal instead.
|
||||
Note that this is still a text output, no binary data will be thrown upon
|
||||
you. ASCII equivalent is displayed when possible. This option is mainly
|
||||
useful for debugging.
|
||||
Mutually exclusive with \fB--string\fR.
|
||||
Mutually exclusive with \fB--string\fP.
|
||||
.TP
|
||||
.BR "-h" ", " "--help"
|
||||
Display usage information and exit
|
||||
|
||||
Loading…
Reference in New Issue
Block a user