[PATCH 06/16] acpi: srat/hmat: update fields of sub-structures (mantis 1991)
Colin Ian King
colin.king at canonical.com
Tue Jan 26 20:46:20 UTC 2021
On 26/01/2021 20:30, Alex Hung wrote:
> Also fixed incorrect flag size output in SRAT
>
> Signed-off-by: Alex Hung <alex.hung at canonical.com>
> ---
> src/acpi/hmat/hmat.c | 14 +++++++++++---
> src/acpi/srat/srat.c | 2 +-
> src/lib/include/fwts_acpi.h | 3 ++-
> 3 files changed, 14 insertions(+), 5 deletions(-)
>
> diff --git a/src/acpi/hmat/hmat.c b/src/acpi/hmat/hmat.c
> index 307adcfd..6a52e2ab 100644
> --- a/src/acpi/hmat/hmat.c
> +++ b/src/acpi/hmat/hmat.c
> @@ -51,6 +51,7 @@ static void hmat_proximity_domain_test(fwts_framework *fw, const fwts_acpi_table
> static void hmat_locality_test(fwts_framework *fw, const fwts_acpi_table_hmat_locality *entry, bool *passed)
> {
> uint32_t pd_size;
> + uint16_t reserved1 = (entry->reserved1 << 8) + entry->min_transfer_size;;
the statement ends in ;; and should be ;
>
> fwts_log_info_verbatim(fw, " System Locality Latency and Bandwidth Information (Type 1):");
> fwts_log_info_simp_int(fw, " Type: ", entry->header.type);
> @@ -58,14 +59,18 @@ static void hmat_locality_test(fwts_framework *fw, const fwts_acpi_table_hmat_lo
> fwts_log_info_simp_int(fw, " Length: ", entry->header.length);
> fwts_log_info_simp_int(fw, " Flags: ", entry->flags);
> fwts_log_info_simp_int(fw, " Data Type: ", entry->data_type);
> - fwts_log_info_simp_int(fw, " Reserved: ", entry->reserved1);
> + if (fwts_get_acpi_version(fw) >= FWTS_ACPI_VERSION_64) {
> + fwts_log_info_simp_int(fw, " MinTransferSize: ", entry->min_transfer_size);
> + fwts_log_info_simp_int(fw, " Reserved: ", entry->reserved1);
> + } else
> + fwts_log_info_simp_int(fw, " Reserved: ", reserved1);
> fwts_log_info_simp_int(fw, " Number of Initiator PDs: ", entry->num_initiator);
> fwts_log_info_simp_int(fw, " Number of Target PDs: ", entry->num_target);
> fwts_log_info_simp_int(fw, " Reserved: ", entry->reserved2);
> fwts_log_info_simp_int(fw, " Entry Base Unit: ", entry->entry_base_unit);
>
> fwts_acpi_reserved_zero_check(fw, "HMAT", "Reserved", entry->header.reserved, sizeof(entry->header.reserved), passed);
> - fwts_acpi_reserved_bits_check(fw, "HMAT", "Flags", entry->flags, sizeof(entry->flags), 4, 7, passed);
> + fwts_acpi_reserved_bits_check(fw, "HMAT", "Flags", entry->flags, sizeof(entry->flags), 6, 7, passed);
>
> if (entry->data_type > 5) {
> *passed = false;
> @@ -75,7 +80,10 @@ static void hmat_locality_test(fwts_framework *fw, const fwts_acpi_table_hmat_lo
> "0x%2.2" PRIx8 " instead", entry->data_type);
> }
>
> - fwts_acpi_reserved_zero_check(fw, "HMAT", "Reserved", entry->reserved1, sizeof(entry->reserved1), passed);
> + if (fwts_get_acpi_version(fw) >= FWTS_ACPI_VERSION_64)
> + fwts_acpi_reserved_zero_check(fw, "HMAT", "Reserved", entry->reserved1, sizeof(entry->reserved1), passed);
> + else
> + fwts_acpi_reserved_zero_check(fw, "HMAT", "Reserved", reserved1, sizeof(reserved1), passed);
> fwts_acpi_reserved_zero_check(fw, "HMAT", "Reserved", entry->reserved2, sizeof(entry->reserved2), passed);
>
> pd_size = (entry->num_initiator + entry->num_target) * 4 +
> diff --git a/src/acpi/srat/srat.c b/src/acpi/srat/srat.c
> index 3c0abdb7..65513e37 100644
> --- a/src/acpi/srat/srat.c
> +++ b/src/acpi/srat/srat.c
> @@ -329,7 +329,7 @@ static void srat_check_initiator_affinity(
> h_reserved += affinity->device_handle[i];
> }
> fwts_acpi_reserved_zero_check(fw, "SRAT", "Initiator Affinity Device Handle Reserve", h_reserved, sizeof(uint32_t), passed);
> - fwts_acpi_reserved_bits_check(fw, "SRAT", "Initiator Affinity Flags", affinity->flags, sizeof(affinity->flags), 1, 15, passed);
> + fwts_acpi_reserved_bits_check(fw, "SRAT", "Initiator Affinity Flags", affinity->flags, sizeof(affinity->flags), 2, 31, passed);
> fwts_acpi_reserved_zero_check(fw, "SRAT", "Initiator Affinity Reserved", affinity->reserved2, sizeof(affinity->reserved2), passed);
>
> done:
> diff --git a/src/lib/include/fwts_acpi.h b/src/lib/include/fwts_acpi.h
> index 6c759a2a..a00b0660 100644
> --- a/src/lib/include/fwts_acpi.h
> +++ b/src/lib/include/fwts_acpi.h
> @@ -1382,7 +1382,8 @@ typedef struct {
> fwts_acpi_table_hmat_header header;
> uint8_t flags;
> uint8_t data_type;
> - uint16_t reserved1;
> + uint8_t min_transfer_size;
> + uint8_t reserved1;
> uint32_t num_initiator;
> uint32_t num_target;
> uint32_t reserved2;
>
More information about the fwts-devel
mailing list