ACK: [PATCH 12/21] FADT: restructure test sequence around reduced hardware mode

Colin Ian King colin.king at canonical.com
Tue Feb 9 12:21:06 UTC 2016


On 09/02/16 01:32, Al Stone wrote:
> Since a prior patch added a test of of the reduced hardware fields, we
> can now resequence the tests so that we only test the fields we must.
> 
> If we are not in reduced hardware mode, we test everything.  If we are,
> we ignore tests for many fields.  They are simply irrelevant, and if the
> fields are non-zero, that would have been caught in the prior patch.
> 
> There are also several fields that really cannot be reliably tested; we
> cannot gather enough info to know whether they are correct or not, or
> the field is allowed to be any value that it can hold.  Simply log the
> value for these fields, but only when in the proper mode.
> 
> Signed-off-by: Al Stone <al.stone at linaro.org>
> ---
>  src/acpi/fadt/fadt.c | 40 ++++++++++++++++++++++++++++++++++++----
>  1 file changed, 36 insertions(+), 4 deletions(-)
> 
> diff --git a/src/acpi/fadt/fadt.c b/src/acpi/fadt/fadt.c
> index fd430ec..430bfd4 100644
> --- a/src/acpi/fadt/fadt.c
> +++ b/src/acpi/fadt/fadt.c
> @@ -848,10 +848,34 @@ static int fadt_test1(fwts_framework *fw)
>  	acpi_table_check_fadt_reserved(fw);
>  	acpi_table_check_fadt_pm_profile(fw);
>  	acpi_table_check_fadt_reduced_hardware(fw);
> -	acpi_table_check_fadt_smi(fw, fadt, &passed);
> -	acpi_table_check_fadt_pm_tmr(fw, fadt, &passed);
> -	acpi_table_check_fadt_gpe(fw, fadt, &passed);
> -	acpi_table_check_fadt_pm_addr(fw, fadt, &passed);
> +
> +	/*
> +	 * If a field can be tested, we call a function to do so.  If
> +	 * any value is reasonable and allowable, we simply log the value.
> +	 * For example, the SCI_INT is one byte and can be from 0..255, and
> +	 * there is no other info (as far as this author knows) that can be
> +	 * used to verify that the value is correct.
> +	 */
> +	if (!fwts_acpi_is_reduced_hardware(fadt)) {
> +		fwts_log_info(fw, "FADT SCI_INT is %" PRIu8, fadt->sci_int);
> +		acpi_table_check_fadt_smi(fw, fadt, &passed);
> +		acpi_table_check_fadt_pm_tmr(fw, fadt, &passed);
> +		acpi_table_check_fadt_gpe(fw, fadt, &passed);
> +		acpi_table_check_fadt_pm_addr(fw, fadt, &passed);
> +		fwts_log_info(fw, "FADT GPE1_BASE is %" PRIu8, fadt->gpe1_base);
> +
> +		fwts_log_info(fw, "FADT FLUSH_SIZE is %" PRIu16,
> +			      fadt->flush_size);
> +		fwts_log_info(fw, "FADT FLUSH_STRIDE is %" PRIu16,
> +			      fadt->flush_stride);
> +		fwts_log_info(fw, "FADT DUTY_OFFSET is %" PRIu8,
> +			      fadt->duty_offset);
> +		fwts_log_info(fw, "FADT DUTY_WIDTH is %" PRIu8,
> +			      fadt->duty_width);
> +		fwts_log_info(fw, "FADT DAY_ALRM is %" PRIu8, fadt->day_alrm);
> +		fwts_log_info(fw, "FADT MON_ALRM is %" PRIu8, fadt->mon_alrm);
> +		fwts_log_info(fw, "FADT CENTURY is %" PRIu8, fadt->century);
> +	}
>  
>  	/*
>  	 * Bug LP: #833644
> @@ -878,6 +902,14 @@ static int fadt_test1(fwts_framework *fw)
>  	}
>  	*/
>  
> +	/*
> +	 * Cannot really test the Hypervisor Vendor Identity since
> +	 * the value is provided by the hypervisor to the OS (as a
> +	 * sign that the ACPI tables have been fabricated), if it
> +	 * being used at all.  Or, it's set to zero.
> +	 */
> +	fwts_log_info(fw, "FADT Hypervisor Vendor Identity is %" PRIu64,
> +		      fadt->hypervisor_id);
>  	if (passed)
>  		fwts_passed(fw, "No issues found in FADT table.");
>  
> 
Seems very reasonable to me.

Acked-by: Colin Ian King <colin.king at canonucal.com>



More information about the fwts-devel mailing list