[PATCH 3/3] dmi_decode: Add some more advice text
Colin King
colin.king at canonical.com
Fri Jul 6 14:30:20 UTC 2012
From: Colin Ian King <colin.king at canonical.com>
Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
src/dmi/dmi_decode/dmi_decode.c | 42 +++++++++++++++++++++++++++++++++++++--
1 file changed, 40 insertions(+), 2 deletions(-)
diff --git a/src/dmi/dmi_decode/dmi_decode.c b/src/dmi/dmi_decode/dmi_decode.c
index 67dfea2..940ac35 100644
--- a/src/dmi/dmi_decode/dmi_decode.c
+++ b/src/dmi/dmi_decode/dmi_decode.c
@@ -162,6 +162,17 @@ static uint16_t dmi_remap_version(fwts_framework *fw, uint16_t old)
return old;
}
+static void dmi_out_of_range_advice(fwts_framework *fw)
+{
+ fwts_advice(fw,
+ "A value that is out of range is incorrect and not conforming to "
+ "the SMBIOS specification. It is possible that it "
+ "won't be handled correctly by the operating system or by tools "
+ "like dmidecode. For some fields this out of range setings "
+ "could lead to the operating system to ignore or misunderstand this "
+ "particular SMBIOS configuration.");
+}
+
static void dmi_min_max_uint8_check(fwts_framework *fw,
const char *table,
uint32_t addr,
@@ -172,12 +183,14 @@ static void dmi_min_max_uint8_check(fwts_framework *fw,
uint8_t max)
{
uint8_t val = hdr->data[offset];
- if ((val < min) || (val > max))
+ if ((val < min) || (val > max)) {
fwts_failed(fw, LOG_LEVEL_HIGH,
DMI_VALUE_OUT_OF_RANGE,
"Out of range value 0x%2.2x (range allowed 0x%2.2x..0x%2.2x) "
"while accessing entry '%s' @ 0x%8.8x, field '%s', offset 0x%2.2x",
val, min, max, table, addr, field, offset);
+ dmi_out_of_range_advice(fw);
+ }
}
static void dmi_min_max_mask_uint8_check(fwts_framework *fw,
@@ -193,11 +206,13 @@ static void dmi_min_max_mask_uint8_check(fwts_framework *fw,
{
uint8_t val = (hdr->data[offset] >> shift) & mask;
- if ((val < min) || (val > max))
+ if ((val < min) || (val > max)) {
fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE,
"Out of range value 0x%2.2x (range allowed 0x%2.2x..0x%2.2x) "
"while accessing entry '%s' @ 0x%8.8x, field '%s', offset 0x%2.2x",
val, min, max, table, addr, field, offset);
+ dmi_out_of_range_advice(fw);
+ }
}
static void dmi_str_check_index(fwts_framework *fw,
@@ -226,6 +241,11 @@ static void dmi_str_check_index(fwts_framework *fw,
"Out of range string index 0x%2.2x while accessing entry '%s' "
"@ 0x%8.8x, field '%s', offset 0x%2.2x",
index, table, addr, field, offset);
+ fwts_advice(fw,
+ "DMI strings are stored in a manner that uses a special "
+ "index to fetch the Nth string from the data. For this "
+ "particular DMI string the index given is not in range "
+ "which means this particular entry is broken.");
return;
}
@@ -247,6 +267,13 @@ static void dmi_str_check_index(fwts_framework *fw,
"offset 0x%2.2x has a default value '%s' and probably has "
"not been updated by the BIOS vendor.",
index, table, addr, field, offset, data);
+ fwts_advice(fw,
+ "The DMI table contains data which is clearly been "
+ "left in a default setting and not been configured "
+ "for this machine. While this is not critical it does "
+ "mean that somebody has probably forgotten to define this "
+ "field and it basically means this field is effectively "
+ "useless.");
}
}
}
@@ -281,6 +308,13 @@ static void dmi_uuid_check(fwts_framework *fw,
"offset 0x%2.2x has a default value '%s' and probably has "
"not been updated by the BIOS vendor.",
table, addr, field, offset, guid_str);
+ fwts_advice(fw,
+ "The DMI table contains a UUID which is clearly been "
+ "left in a default setting and not been configured "
+ "for this machine. While this is not critical it does "
+ "mean that somebody has probably forgotten to define this "
+ "field and it basically means this field is effectively "
+ "useless.");
}
}
}
@@ -377,6 +411,10 @@ static void dmi_decode_entry(fwts_framework *fw,
"Incorrect Chassis Type "
"SMBIOS Type 3 reports 0x%x",
data[5]);
+ fwts_advice(fw,
+ "The Chassis Type in the ACPI FADT is out of range "
+ "and hence we cannot identify the preferred power "
+ "management profile for this machine.");
break;
}
--
1.7.10.4
More information about the fwts-devel
mailing list