[PATCH] acpi: method: dump out _PSS states in a tabular format

IvanHu ivan.hu at canonical.com
Thu Dec 20 02:29:29 UTC 2012


On 12/13/2012 03:08 AM, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> The _PSS states that were being dumped out were messy. This patch
> dumps out the interesting _PSS states if the elements have passed
> the parsing checks.
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
>   src/acpi/method/method.c | 45 ++++++++++++++++++++++++++++++++++++++-------
>   1 file changed, 38 insertions(+), 7 deletions(-)
>
> diff --git a/src/acpi/method/method.c b/src/acpi/method/method.c
> index 52b0e18..2dcbee0 100644
> --- a/src/acpi/method/method.c
> +++ b/src/acpi/method/method.c
> @@ -1715,6 +1715,8 @@ static void method_test_PSS_return(
>   	uint32_t max_freq = 0;
>   	uint32_t prev_power = 0;
>   	bool max_freq_valid = false;
> +	bool dump_elements = false;
> +	bool *element_ok;
>
>   	FWTS_UNUSED(private);
>
> @@ -1731,6 +1733,12 @@ static void method_test_PSS_return(
>   		return;
>   	}
>
> +	element_ok = calloc(obj->Package.Count, sizeof(bool));
> +	if (element_ok == NULL) {
> +		fwts_log_error(fw, "Cannot allocate an array. Test aborted.");
> +		return;
> +	}
> +
>   	for (i = 0; i < obj->Package.Count; i++) {
>   		ACPI_OBJECT *pstate;
>
> @@ -1772,13 +1780,11 @@ static void method_test_PSS_return(
>   			continue;
>   		}
>
> -		fwts_log_info(fw, "P-State %d: CPU %" PRIu64 " Mhz, %" PRIu64 " mW, "
> -			"latency %" PRIu64 " us, bus master latency %" PRIu64 " us.",
> -			i,
> -			pstate->Package.Elements[0].Integer.Value,
> -			pstate->Package.Elements[1].Integer.Value,
> -			pstate->Package.Elements[2].Integer.Value,
> -			pstate->Package.Elements[3].Integer.Value);
> +		/*
> +	 	 *  Parses OK, so this element can be dumped out
> +		 */
> +		element_ok[i] = true;
> +		dump_elements = true;
>
>   		/*
>   		 * Collect maximum frequency.  The sub-packages are sorted in
> @@ -1813,6 +1819,31 @@ static void method_test_PSS_return(
>   	}
>
>   	/*
> +	 *  If we have some valid data then dump it out, it is useful to see
> +	 */
> +	if (dump_elements) {
> +		fwts_log_info_verbatum(fw, "P-State  Freq     Power  Latency   Bus Master");
> +		fwts_log_info_verbatum(fw, "         (MHz)    (mW)    (us)    Latency (us)");
> +		for (i = 0; i < obj->Package.Count; i++) {
> +			ACPI_OBJECT *pstate = &obj->Package.Elements[i];
> +			if (element_ok[i]) {
> +				fwts_log_info_verbatum(fw, " %3d   %7" PRIu64 " %8" PRIu64
> +					" %5" PRIu64 "     %5" PRIu64,
> +					i,
> +					pstate->Package.Elements[0].Integer.Value,
> +					pstate->Package.Elements[1].Integer.Value,
> +					pstate->Package.Elements[2].Integer.Value,
> +					pstate->Package.Elements[3].Integer.Value);
> +			} else {
> +				fwts_log_info_verbatum(fw,
> +					" %3d      ----    -----    --        -- (invalid)", i);
> +			}
> +		}
> +	}
> +
> +	free(element_ok);
> +
> +	/*
>   	 * Sanity check maximum frequency.  We could also check the DMI data
>   	 * for a BIOS date (but this can be wrong) or check the CPU identity
>   	 * (which requires adding in new CPU identity checks) to make a decision
>
Acked-by: Ivan Hu <ivan.hu at canonical.com>



More information about the fwts-devel mailing list