[PATCH 1/2] acpi: pptt: add ACPI PPTT test
Alex Hung
alex.hung at canonical.com
Fri Jul 21 01:00:49 UTC 2017
On Thu, Jul 20, 2017 at 5:07 PM, Jeffrey Hugo <jhugo at codeaurora.org> wrote:
> Tested this. Some minor nits below that I would really like fixed, but I
> think this is in a pretty good state currently.
Thanks for testing and your feedback.
>
> On 7/20/2017 1:14 PM, Alex Hung wrote:
>>
>> Signed-off-by: Alex Hung <alex.hung at canonical.com>
>> ---
>> src/Makefile.am | 1 +
>> src/acpi/pptt/pptt.c | 196
>> ++++++++++++++++++++++++++++++++++++++++++++
>> src/lib/include/fwts_acpi.h | 53 ++++++++++++
>> 3 files changed, 250 insertions(+)
>> create mode 100644 src/acpi/pptt/pptt.c
>>
>> diff --git a/src/Makefile.am b/src/Makefile.am
>> index ca0a449..11862c9 100644
>
>
> <snip>
>
>> +static void pptt_id_test(fwts_framework *fw, fwts_acpi_table_pptt_id
>> *entry, bool *passed)
>> +{
>> +
>> + fwts_log_info_verbatim(fw, " Reserved:
>> 0x%4.4" PRIx16, entry->reserved);
>> + fwts_log_info_verbatim(fw, " VENDOR_ID:
>> 0x%8.8" PRIx32, entry->vendor_id);
>
>
> Vendor ID is supposed to be an ASCII value. I think it would make more
> sense to print it that way, otherwise its not as convenient to verify the
> correct value is here.
Thanks for pointing out. I will change it in V2
>
>> + fwts_log_info_verbatim(fw, " LEVEL_1_ID:
>> 0x%16.16" PRIx64, entry->level1_id);
>> + fwts_log_info_verbatim(fw, " LEVEL_2_ID:
>> 0x%16.16" PRIx64, entry->level2_id);
>> + fwts_log_info_verbatim(fw, " MAJOR_REV:
>> 0x%4.4" PRIx16, entry->major_rev);
>> + fwts_log_info_verbatim(fw, " MINOR_REV:
>> 0x%4.4" PRIx16, entry->minor_rev);
>> + fwts_log_info_verbatim(fw, " SPIN_REV:
>> 0x%4.4" PRIx16, entry->spin_rev);
>> +
>
>
> <snip>
>
>> +static int pptt_test1(fwts_framework *fw)
>> +{
>> + fwts_acpi_table_pptt_header *entry;
>> + uint32_t offset;
>> + bool passed = true;
>> +
>> + fwts_log_info_verbatim(fw, "PPTT Processor Properties Topology
>> Table:");
>> +
>> + entry = (fwts_acpi_table_pptt_header *) (table->data +
>> sizeof(fwts_acpi_table_pptt));
>> + offset = sizeof(fwts_acpi_table_pptt);
>> + while (offset < table->length) {
>> +
>> + fwts_log_info_verbatim(fw, " PPTT Processor Topology
>> Structure:");
>> + fwts_log_info_verbatim(fw, " Type:
>> 0x%2.2" PRIx8, entry->type);
>> + fwts_log_info_verbatim(fw, " Length:
>> 0x%2.2" PRIx8, entry->length);
>> +
>
>
> This is misleading. Here you print "Topology Structure" for all the nodes
> that get dumped, but only type 0 below is a processor node (spec calls it a
> "processor hierarchy node"). Its very confusing to me to see type 1 (cache)
> and type 2 (id) nodes being labeled as processor nodes.
>
> Maybe this print should be deferred into the switch below?
Processor Topology Structure was actually quoted from Table 5-149
Processor Properties Topology Table - "Processor topology
structure[N]", but this is very confusing indeed. I think I will move
it into each function where each sub-structure is tested.
>
>
>> + if (entry->length == 0) {
>> + passed = false;
>> + fwts_failed(fw, LOG_LEVEL_HIGH,
>> "PPTTStructLengthZero",
>> + "PPTT structure (offset 0x%4.4" PRIx32
>> ") "
>> + "length cannot be 0", offset);
>> + break;
>> + }
>> +
>> + switch(entry->type) {
>> + case FWTS_ACPI_PPTT_PROCESSOR:
>> + pptt_processor_test(fw,
>> (fwts_acpi_table_pptt_processor *) entry, &passed);
>> + break;
>> + case FWTS_ACPI_PPTT_CACHE:
>> + pptt_cache_test(fw,
>> (fwts_acpi_table_pptt_cache *) entry, &passed);
>> + break;
>> + case FWTS_ACPI_PPTT_ID:
>> + pptt_id_test(fw, (fwts_acpi_table_pptt_id
>> *) entry, &passed);
>> + break;
>> + default:
>> + passed = false;
>> + fwts_failed(fw, LOG_LEVEL_HIGH,
>> + "PPTTBadSubtableType",
>> + "PPTT must have subtable with Type
>> 0..2, got "
>> + "0x%4.4" PRIx16 " instead",
>> entry->type);
>> + break;
>
>
>
>
> --
> Jeffrey Hugo
> Qualcomm Datacenter Technologies as an affiliate of Qualcomm Technologies,
> Inc.
> Qualcomm Technologies, Inc. is a member of the
> Code Aurora Forum, a Linux Foundation Collaborative Project.
--
Cheers,
Alex Hung
More information about the fwts-devel
mailing list