ACK: [PATCH] hpet: warn if HPET Device address not found in DSDT/SSDT

Alex Hung alex.hung at canonical.com
Fri Apr 29 07:54:36 UTC 2016


On 2016-04-27 05:30 PM, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> Better warn if not found rather than just silently not report non-passing
> state.
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
>   src/acpi/hpet/hpet.c | 31 +++++++++++++++++++++----------
>   1 file changed, 21 insertions(+), 10 deletions(-)
>
> diff --git a/src/acpi/hpet/hpet.c b/src/acpi/hpet/hpet.c
> index 35a574d..a488670 100644
> --- a/src/acpi/hpet/hpet.c
> +++ b/src/acpi/hpet/hpet.c
> @@ -35,8 +35,11 @@ static fwts_list *klog;
>   static uint64_t	hpet_base_p = 0;
>   static void     *hpet_base_v = 0;
>
> -static void hpet_parse_check_base(fwts_framework *fw,
> -	const char *table, fwts_list_link *item)
> +static void hpet_parse_check_base(
> +	fwts_framework *fw,
> +	const char *table,
> +	fwts_list_link *item,
> +	bool *parsed)
>   {
>   	char *val;
>
> @@ -49,6 +52,7 @@ static void hpet_parse_check_base(fwts_framework *fw,
>   		address_base = strtoul(val, NULL, 0x10);
>
>   		if (hpet_base_p != 0) {
> +			*parsed = true;
>   			if (hpet_base_p != address_base)
>   				fwts_failed(fw, LOG_LEVEL_MEDIUM,
>   					"HPETBaseMismatch",
> @@ -67,8 +71,11 @@ static void hpet_parse_check_base(fwts_framework *fw,
>   	}
>   }
>
> -static void hpet_parse_device_hpet(fwts_framework *fw,
> -	const char *table, fwts_list_link *item)
> +static void hpet_parse_device_hpet(
> +	fwts_framework *fw,
> +	const char *table,
> +	fwts_list_link *item,
> +	bool *parsed)
>   {
>   	for (;item != NULL; item = item->next) {
>   		const char *str = fwts_text_list_text(item);
> @@ -82,13 +89,13 @@ static void hpet_parse_device_hpet(fwts_framework *fw,
>   				if (strstr(tmpstr, "Memory32Fixed") != NULL) {
>   					/* Next line contains base address */
>   					if (tmp_item->next != NULL) {
> -						hpet_parse_check_base(fw, table, tmp_item->next);
> +						hpet_parse_check_base(fw, table, tmp_item->next, parsed);
>   						return;
>   					}
>   				} else if (strstr(tmpstr, "DWordMemory") != NULL) {
>   					if (tmp_item->next != NULL &&		/* Granularity */
>   					    tmp_item->next->next != NULL) {	/* Base address */
> -						hpet_parse_check_base(fw, table, tmp_item->next->next);
> +						hpet_parse_check_base(fw, table, tmp_item->next->next, parsed);
>   						return;
>   					}
>   				}
> @@ -103,7 +110,8 @@ static void hpet_parse_device_hpet(fwts_framework *fw,
>    */
>   static void hpet_check_base_acpi_table(
>   	fwts_framework *fw,
> -	fwts_acpi_table_info *info)
> +	fwts_acpi_table_info *info,
> +	bool *parsed)
>   {
>   	fwts_list *output;
>   	fwts_list_link *item;
> @@ -117,7 +125,7 @@ static void hpet_check_base_acpi_table(
>
>   	fwts_list_foreach(item, output)
>   		if (strstr(fwts_text_list_text(item), "Device (HPET)") != NULL)
> -			hpet_parse_device_hpet(fw, info->name, item);
> +			hpet_parse_device_hpet(fw, info->name, item, parsed);
>
>   	fwts_text_list_free(output);
>   }
> @@ -373,6 +381,7 @@ static int hpet_check_test2(fwts_framework *fw)
>   static int hpet_check_test3(fwts_framework *fw)
>   {
>   	int i;
> +	bool parsed = false;
>
>   	if (hpet_base_p == 0) {
>   		fwts_log_info(fw, "Test skipped because HPET address was not found.");
> @@ -391,11 +400,13 @@ static int hpet_check_test3(fwts_framework *fw)
>   		if (fwts_acpi_get_table(fw, i, &info) != FWTS_OK)
>   			break;
>   		if (info && info->has_aml)
> -			hpet_check_base_acpi_table(fw, info);
> +			hpet_check_base_acpi_table(fw, info, &parsed);
>   	}
> -
>   	fwts_iasl_deinit();
>
> +	if (!parsed)
> +		fwts_warning(fw, "Test skipped because HPET Device address was not found in DSDT/SSDT.");
> +
>   	return FWTS_OK;
>   }
>
>


Acked-by: Alex Hung <alex.hung at canonical.com>



More information about the fwts-devel mailing list