ACK: [PATCH 2/6] dmicheck: re-orgainise the smbios entry point check
Colin Ian King
colin.king at canonical.com
Wed Sep 2 09:15:49 UTC 2015
On 02/09/15 08:36, Ivan Hu wrote:
> Move the checking SMBIOS/DMI table entry point to the smbios_entry_check
> function. Also add the flag to check if the SMBIOS table exist or not,
> if not skip the SMBIOS/DMI table check instead of searching table again.
>
> Signed-off-by: Ivan Hu <ivan.hu at canonical.com>
> ---
> src/dmi/dmicheck/dmicheck.c | 36 +++++++++++++++++++++++++++++-------
> 1 file changed, 29 insertions(+), 7 deletions(-)
>
> diff --git a/src/dmi/dmicheck/dmicheck.c b/src/dmi/dmicheck/dmicheck.c
> index 5fabca0..02bca98 100644
> --- a/src/dmi/dmicheck/dmicheck.c
> +++ b/src/dmi/dmicheck/dmicheck.c
> @@ -84,6 +84,8 @@ typedef struct {
> uint8_t offset;
> } fwts_dmi_used_by_kernel;
>
> +static bool smbios_found = false;
> +
> /*
> * Table derived by scanning thousands of DMI table dumps from bug reports
> */
> @@ -406,9 +408,10 @@ static int dmi_sane(fwts_framework *fw, fwts_smbios_entry *entry)
> return ret;
> }
>
> -static int dmicheck_test1(fwts_framework *fw)
> +static int smbios_entry_check(fwts_framework *fw)
> {
> void *addr = 0;
> +
> fwts_smbios_entry entry;
> fwts_smbios_type type;
> uint16_t version;
> @@ -422,12 +425,8 @@ static int dmicheck_test1(fwts_framework *fw)
> "This test tries to find and sanity check the SMBIOS "
> "data structures.");
>
> - if ((addr = fwts_smbios_find_entry(fw, &entry, &type, &version)) == NULL) {
> - fwts_failed(fw, LOG_LEVEL_MEDIUM,
> - "SMBIOSNoEntryPoint",
> - "Could not find SMBIOS Table Entry Point.");
> - return FWTS_OK;
> - }
> + if ((addr = fwts_smbios_find_entry(fw, &entry, &type, &version)) == NULL)
> + return FWTS_ERROR;
>
> fwts_passed(fw, "Found SMBIOS Table Entry Point at %p", addr);
> dmi_dump_entry(fw, &entry, type);
> @@ -490,6 +489,24 @@ static int dmicheck_test1(fwts_framework *fw)
> }
>
> return FWTS_OK;
> +
> +}
> +
> +static int dmicheck_test1(fwts_framework *fw)
> +{
> +
> + if (smbios_entry_check(fw) != FWTS_ERROR) {
> + smbios_found = true;
> + }
> +
> + if (!smbios_found) {
> + fwts_failed(fw, LOG_LEVEL_HIGH,
> + "SMBIOSNoEntryPoint",
> + "Could not find SMBIOS Table Entry Point.");
> + return FWTS_ERROR;
> + }
> +
> + return FWTS_OK;
> }
>
> static bool dmi_used_by_kernel(uint8_t type, uint8_t offset)
> @@ -1548,6 +1565,11 @@ static int dmicheck_test2(fwts_framework *fw)
> uint16_t version = 0;
> uint8_t *table;
>
> + if (!smbios_found) {
> + fwts_skipped(fw, "Cannot find SMBIOS or DMI table entry, skip the test.");
> + return FWTS_SKIP;
> + }
> +
> addr = fwts_smbios_find_entry(fw, &entry, &type, &version);
> if (addr == NULL) {
> fwts_failed(fw, LOG_LEVEL_HIGH, DMI_NO_TABLE_HEADER,
>
Acked-by: Colin Ian King <colin.king at canonical.com>
More information about the fwts-devel
mailing list