From patchwork Fri Sep 8 09:07:11 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Hung X-Patchwork-Id: 811393 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=fwts-devel-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 3xpWg041jXz9s0g; Fri, 8 Sep 2017 19:07:24 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1dqFFx-0000oI-SQ; Fri, 08 Sep 2017 09:07:21 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by huckleberry.canonical.com with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.86_2) (envelope-from ) id 1dqFFx-0000oB-0f for fwts-devel@lists.ubuntu.com; Fri, 08 Sep 2017 09:07:21 +0000 Received: from 1.general.alexhung.us.vpn ([10.172.65.254] helo=canonical.com) by youngberry.canonical.com with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.76) (envelope-from ) id 1dqFFw-00015L-Gx; Fri, 08 Sep 2017 09:07:20 +0000 From: Alex Hung To: fwts-devel@lists.ubuntu.com Subject: [PATCH 1/3] lib: fwts_acpi_tables: add a new function to check reserved bits Date: Fri, 8 Sep 2017 02:07:11 -0700 Message-Id: <1504861633-20512-1-git-send-email-alex.hung@canonical.com> X-Mailer: git-send-email 2.7.4 X-BeenThere: fwts-devel@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Firmware Test Suite Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: fwts-devel-bounces@lists.ubuntu.com Sender: "fwts-devel" Signed-off-by: Alex Hung Acked-by: Ivan Hu Acked-by: Colin Ian King --- src/lib/include/fwts_acpi_tables.h | 1 + src/lib/src/fwts_acpi_tables.c | 52 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/src/lib/include/fwts_acpi_tables.h b/src/lib/include/fwts_acpi_tables.h index d478d99..011a4c3 100644 --- a/src/lib/include/fwts_acpi_tables.h +++ b/src/lib/include/fwts_acpi_tables.h @@ -54,6 +54,7 @@ bool fwts_acpi_obj_find(fwts_framework *fw, const char *obj_name); fwts_bool fwts_acpi_is_reduced_hardware(const fwts_acpi_table_fadt *fadt); void fwts_acpi_reserved_zero_check(fwts_framework *fw, const char *table, const char *field, uint64_t value, uint8_t size, bool *passed); +void fwts_acpi_reserved_bits_check(fwts_framework *fw, const char *table, const char *field, uint64_t value, uint8_t size, uint8_t min, uint8_t max, bool *passed); #endif diff --git a/src/lib/src/fwts_acpi_tables.c b/src/lib/src/fwts_acpi_tables.c index 4ac70f8..15d07f4 100644 --- a/src/lib/src/fwts_acpi_tables.c +++ b/src/lib/src/fwts_acpi_tables.c @@ -1426,4 +1426,56 @@ void fwts_acpi_reserved_zero_check( } } +/* + * fwts_acpi_reserved_bits_check() + * verify whether the reserved bits are zero + */ +void fwts_acpi_reserved_bits_check( + fwts_framework *fw, + const char *table, + const char *field, + uint64_t value, + uint8_t size, + uint8_t min, + uint8_t max, + bool *passed) +{ + uint64_t mask = 0; + uint8_t i; + + for (i = min; i <= max; i++) { + mask |= (1ULL << i); + } + + if (value & mask) { + char label[24]; + strncpy(label, table, 4); /* ACPI table name is 4 char long */ + strncpy(label + 4, "ReservedBitsNonZero", sizeof(label) - 4); + + switch (size) { + case sizeof(uint8_t): + fwts_failed(fw, LOG_LEVEL_HIGH, label, + "%4.4s %s Bits [%" PRIu8 "..%" PRIu8 "] must be zero, got " + "0x%2.2" PRIx8 " instead", table, field, max, min, (uint8_t)value); + break; + case sizeof(uint16_t): + fwts_failed(fw, LOG_LEVEL_HIGH, label, + "%4.4s %s Bits [%" PRIu8 "..%" PRIu8 "] must be zero, got " + "0x%4.4" PRIx16 " instead", table, field, max, min, (uint16_t)value); + break; + case sizeof(uint32_t): + fwts_failed(fw, LOG_LEVEL_HIGH, label, + "%4.4s %s Bits [%" PRIu8 "..%" PRIu8 "] must be zero, got " + "0x%8.8" PRIx32 " instead", table, field, max, min, (uint32_t)value); + break; + case sizeof(uint64_t): + fwts_failed(fw, LOG_LEVEL_HIGH, label, + "%4.4s %s Bits [%" PRIu8 "..%" PRIu8 "] must be zero, got " + "0x%16.16" PRIx64 " instead", table, field, max, min, value); + break; + } + *passed = false; + } +} + #endif From patchwork Fri Sep 8 09:07:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Hung X-Patchwork-Id: 811394 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=fwts-devel-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 3xpWg81X3Wz9s0g; Fri, 8 Sep 2017 19:07:32 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1dqFG6-0000qK-WD; Fri, 08 Sep 2017 09:07:31 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by huckleberry.canonical.com with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.86_2) (envelope-from ) id 1dqFG4-0000q1-7Y for fwts-devel@lists.ubuntu.com; Fri, 08 Sep 2017 09:07:28 +0000 Received: from 1.general.alexhung.us.vpn ([10.172.65.254] helo=canonical.com) by youngberry.canonical.com with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.76) (envelope-from ) id 1dqFG3-00017O-Hu; Fri, 08 Sep 2017 09:07:28 +0000 From: Alex Hung To: fwts-devel@lists.ubuntu.com Subject: [PATCH 2/3] acpi: replace checks for Flags by fwts_acpi_reserved_bits_check Date: Fri, 8 Sep 2017 02:07:12 -0700 Message-Id: <1504861633-20512-2-git-send-email-alex.hung@canonical.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1504861633-20512-1-git-send-email-alex.hung@canonical.com> References: <1504861633-20512-1-git-send-email-alex.hung@canonical.com> X-BeenThere: fwts-devel@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Firmware Test Suite Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: fwts-devel-bounces@lists.ubuntu.com Sender: "fwts-devel" Signed-off-by: Alex Hung Acked-by: Ivan Hu --- src/acpi/asf/asf.c | 9 +-------- src/acpi/drtm/drtm.c | 9 +-------- src/acpi/einj/einj.c | 9 +-------- src/acpi/facs/facs.c | 20 ++++---------------- src/acpi/gtdt/gtdt.c | 8 +------- src/acpi/hest/hest.c | 33 +++------------------------------ src/acpi/hmat/hmat.c | 19 ++----------------- src/acpi/iort/iort.c | 29 +++++------------------------ src/acpi/mpst/mpst.c | 18 ++---------------- src/acpi/nfit/nfit.c | 24 +++--------------------- src/acpi/pcct/pcct.c | 34 ++++++++++------------------------ src/acpi/pmtt/pmtt.c | 9 +-------- src/acpi/pptt/pptt.c | 18 ++---------------- src/acpi/spcr/spcr.c | 10 +--------- src/acpi/srat/srat.c | 39 +++++++-------------------------------- src/acpi/waet/waet.c | 10 ++-------- src/acpi/wdat/wdat.c | 9 +-------- src/acpi/wsmt/wsmt.c | 9 +-------- src/acpi/xenv/xenv.c | 9 +-------- 19 files changed, 49 insertions(+), 276 deletions(-) diff --git a/src/acpi/asf/asf.c b/src/acpi/asf/asf.c index a95c8de..70f5050 100644 --- a/src/acpi/asf/asf.c +++ b/src/acpi/asf/asf.c @@ -95,15 +95,8 @@ static void asf_check_info( " and must be in the range 0x02..0xff", info->min_sensor_poll_wait_time); } - if (info->flags & ~0x01) { - *passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "ASF!InfoFeatureFlagsReserved", - "ASF! ASF_INFO Feature Flags is 0x%" PRIx8 - ", however reserved bits [7:1] must be zero", - info->flags); - } + fwts_acpi_reserved_bits_check(fw, "ASF!", "ASF_INFO Feature Flags", info->flags, sizeof(info->flags), 1, 7, passed); fwts_acpi_reserved_zero_check(fw, "ASF!", "ASF_INFO Reserved1", info->reserved1, sizeof(info->reserved1), passed); fwts_acpi_reserved_zero_check(fw, "ASF!", "ASF_INFO Reserved2", info->reserved2, sizeof(info->reserved2), passed); fwts_acpi_reserved_zero_check(fw, "ASF!", "ASF_INFO Reserved3", info->reserved3, sizeof(info->reserved3), passed); diff --git a/src/acpi/drtm/drtm.c b/src/acpi/drtm/drtm.c index 8149b27..6e46b1b 100644 --- a/src/acpi/drtm/drtm.c +++ b/src/acpi/drtm/drtm.c @@ -66,14 +66,7 @@ static int drtm_test1(fwts_framework *fw) fwts_log_info_verbatim(fw, " Architecture_Dependent: 0x%16.16" PRIx64, drtm->arch_dependent_address); fwts_log_info_verbatim(fw, " DRT_Flags: 0x%8.8" PRIx32, drtm->flags); - if (drtm->flags & ~0x0F) { - passed = false; - fwts_failed(fw, LOG_LEVEL_MEDIUM, - "DRTMBadFlagReservedNonZero", - "DRTM DRT_Flags Bits [31:4] are reserved, got 0x%8.8" PRIx32 - " instead", drtm->flags); - } - + fwts_acpi_reserved_bits_check(fw, "DRTM", "DRT_Flags", drtm->flags, sizeof(drtm->flags), 4, 31, &passed); fwts_log_nl(fw); offset = sizeof(fwts_acpi_table_drtm); diff --git a/src/acpi/einj/einj.c b/src/acpi/einj/einj.c index 4c2ff8b..1ef0e96 100644 --- a/src/acpi/einj/einj.c +++ b/src/acpi/einj/einj.c @@ -63,14 +63,7 @@ static int einj_test1(fwts_framework *fw) fwts_log_info_verbatim(fw, " Injection Entry Count: 0x%8.8" PRIx32, einj->count); - if (einj->flags) { - fwts_failed(fw, LOG_LEVEL_LOW, - "EINJFlagNonZero", - "EINJ Injection Flags field must be zero, got 0x%" - PRIx8 " instead", einj->flags); - passed = false; - } - + fwts_acpi_reserved_bits_check(fw, "EINJ", "Injection Flags", einj->flags, sizeof(einj->flags), 0, 31, &passed); fwts_acpi_reserved_zero_check(fw, "EINJ", "Reserved", reserved, sizeof(reserved), &passed); fwts_log_nl(fw); diff --git a/src/acpi/facs/facs.c b/src/acpi/facs/facs.c index c41b57c..714e473 100644 --- a/src/acpi/facs/facs.c +++ b/src/acpi/facs/facs.c @@ -130,22 +130,10 @@ static int facs_test1(fwts_framework *fw) "FACSInvalidReserved1", "FACS: 1st Reserved field is non-zero"); } - if (facs->flags & ~0x03) { - passed = false; - fwts_failed(fw, LOG_LEVEL_MEDIUM, - "FACSFlagsReservedBitsSet", - "FACS: Flags field is 0x%" PRIx32 - " and some of the reserved bits [31:2] are set", - facs->flags); - } - if (facs->ospm_flags & ~0x01) { - passed = false; - fwts_failed(fw, LOG_LEVEL_MEDIUM, - "FACSFlagsReservedBitsSet", - "FACS: OSPM Flags field is 0x%" PRIx32 - " and some of the reserved bits [31:1] are set", - facs->ospm_flags); - } + + fwts_acpi_reserved_bits_check(fw, "FACS", "Flags", facs->flags, sizeof(facs->flags), 2, 31, &passed); + fwts_acpi_reserved_bits_check(fw, "FACS", "OSPM Flags", facs->ospm_flags, sizeof(facs->ospm_flags), 1, 31, &passed); + for (i = 0; i < 24; i++) { if (facs->reserved2[i]) { passed = false; diff --git a/src/acpi/gtdt/gtdt.c b/src/acpi/gtdt/gtdt.c index f5a10e0..1559d31 100644 --- a/src/acpi/gtdt/gtdt.c +++ b/src/acpi/gtdt/gtdt.c @@ -56,13 +56,7 @@ static int gtdt_test1(fwts_framework *fw) uint32_t i = 0, n; const fwts_acpi_table_gtdt *gtdt = (const fwts_acpi_table_gtdt *)table->data; - if (gtdt->virtual_timer_flags & ~7) { - passed = false; - fwts_failed(fw, LOG_LEVEL_LOW, - "GTDTFlagReservedNonZero", - "GTDT flag reserved bits 3 to 31 are non-zero, " - "instead got 0x%" PRIx32 ".", gtdt->virtual_timer_flags); - } + fwts_acpi_reserved_bits_check(fw, "GTDT", "Flags", gtdt->virtual_timer_flags, sizeof(gtdt->virtual_timer_flags), 3, 31, &passed); ptr = (uint8_t *)table->data + gtdt->platform_timer_offset; n = gtdt->platform_timer_count; diff --git a/src/acpi/hest/hest.c b/src/acpi/hest/hest.c index 6a1bfd2..86a5312 100644 --- a/src/acpi/hest/hest.c +++ b/src/acpi/hest/hest.c @@ -399,16 +399,7 @@ static void hest_check_pci_express_root_port_aer( fwts_log_nl(fw); fwts_acpi_reserved_zero_check(fw, "HEST", "PCI Express Root Port Reserved1", aer->reserved1, sizeof(aer->reserved1), passed); - - if (aer->flags & ~0x3) { - *passed = false; - fwts_failed(fw, LOG_LEVEL_MEDIUM, - "HESTPciExpressRootPortFlagsReserved", - "HEST PCI Express Root Port Flags Reserved bits " - "[2:7] must be zero, instead got 0x%" PRIx8, - aer->flags); - } - + fwts_acpi_reserved_bits_check(fw, "HEST", "PCI Express Root Port Flags", aer->flags, sizeof(aer->flags), 2, 7, passed); fwts_acpi_reserved_zero_check(fw, "HEST", "PCI Express Root Port Reserved2", aer->reserved2, sizeof(aer->reserved2), passed); if (aer->number_of_records_to_preallocate < 1) { @@ -476,16 +467,7 @@ static void hest_check_pci_express_device_aer( fwts_log_nl(fw); fwts_acpi_reserved_zero_check(fw, "HEST", "PCI Express Device Reserved1", aer->reserved1, sizeof(aer->reserved1), passed); - - if (aer->flags & ~0x3) { - *passed = false; - fwts_failed(fw, LOG_LEVEL_MEDIUM, - "HESTPciExpressDeviceFlagsReserved", - "HEST PCI Express Device Flags Reserved bits " - "[2:7] must be zero, instead got 0x%" PRIx8, - aer->flags); - } - + fwts_acpi_reserved_bits_check(fw, "HEST", "PCI Express Device Flags", aer->flags, sizeof(aer->flags), 2, 7, passed); fwts_acpi_reserved_zero_check(fw, "HEST", "PCI Express Device Reserved2", aer->reserved2, sizeof(aer->reserved2), passed); if (aer->number_of_records_to_preallocate < 1) { @@ -557,16 +539,7 @@ static void hest_heck_pci_express_bridge_aer( fwts_log_nl(fw); fwts_acpi_reserved_zero_check(fw, "HEST", "PCI Express Bridge Reserved1", aer->reserved1, sizeof(aer->reserved1), passed); - - if (aer->flags & ~0x3) { - *passed = false; - fwts_failed(fw, LOG_LEVEL_MEDIUM, - "HESTPciExpressBridgeFlagsReserved", - "HEST PCI Express Bridge Flags Reserved bits " - "[2:7] must be zero, instead got 0x%" PRIx8, - aer->flags); - } - + fwts_acpi_reserved_bits_check(fw, "HEST", "PCI Express Bridge Flags", aer->flags, sizeof(aer->flags), 2, 7, passed); fwts_acpi_reserved_zero_check(fw, "HEST", "PCI Express Bridge Reserved2", aer->reserved2, sizeof(aer->reserved2), passed); if (aer->number_of_records_to_preallocate < 1) { diff --git a/src/acpi/hmat/hmat.c b/src/acpi/hmat/hmat.c index 7b5c58c..4459f1b 100644 --- a/src/acpi/hmat/hmat.c +++ b/src/acpi/hmat/hmat.c @@ -54,15 +54,7 @@ static void hmat_addr_range_test(fwts_framework *fw, const fwts_acpi_table_hmat_ fwts_log_info_verbatim(fw, " System Phy Addr Range Length: 0x%16.16" PRIx64, entry->phy_addr_length); fwts_acpi_reserved_zero_check(fw, "HMAT", "Reserved", entry->header.reserved, sizeof(entry->header.reserved), passed); - - if (entry->flags & ~0x07) { - *passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "HMATBadFlags", - "HMAT Flags's Bits[15..3] must be zero, got " - "0x%4.4" PRIx16 " instead", entry->flags); - } - + fwts_acpi_reserved_bits_check(fw, "HMAT", "Flags", entry->flags, sizeof(entry->flags), 3, 15, passed); fwts_acpi_reserved_zero_check(fw, "HMAT", "Reserved", entry->reserved1, sizeof(entry->reserved1), passed); fwts_acpi_reserved_zero_check(fw, "HMAT", "Reserved", entry->reserved2, sizeof(entry->reserved2), passed); } @@ -84,14 +76,7 @@ static void hmat_locality_test(fwts_framework *fw, const fwts_acpi_table_hmat_lo fwts_log_info_verbatim(fw, " Entry Base Unit: 0x%16.16" PRIx64, entry->entry_base_unit); fwts_acpi_reserved_zero_check(fw, "HMAT", "Reserved", entry->header.reserved, sizeof(entry->header.reserved), passed); - - if (entry->flags & ~0x1f) { - *passed = false; - fwts_failed(fw, LOG_LEVEL_CRITICAL, - "HMATBadFlags", - "HMAT Flags's Bits[7..5] must be zero, got " - "0x%2.2" PRIx8 " instead", entry->flags); - } + fwts_acpi_reserved_bits_check(fw, "HMAT", "Flags", entry->flags, sizeof(entry->flags), 5, 7, passed); if (entry->data_type > 5) { *passed = false; diff --git a/src/acpi/iort/iort.c b/src/acpi/iort/iort.c index b131edd..b7046ea 100644 --- a/src/acpi/iort/iort.c +++ b/src/acpi/iort/iort.c @@ -238,14 +238,7 @@ static void iort_smmu_interrupt_flags_check( uint32_t flags, bool *passed) { - if (flags & ~1) { - *passed = false; - fwts_failed(fw, LOG_LEVEL_MEDIUM, - "IORTSMMUIntrFlagsReservedNonZero", - "IORT %s Flags field reserved " - "bits [31:1] should be all zero, got 0x%" PRIx32, - name, flags); - } + fwts_acpi_reserved_bits_check(fw, "IORT", name, flags, sizeof(flags), 1, 31, passed); } /* @@ -588,14 +581,8 @@ static void iort_check_smmu( "IORT SMMU Model is 0x%" PRIx32 " and was expecting " "a model value 0 to 3.", node->model); } - if (node->flags & ~3) { - *passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "IORTSmmuReservedFlags", - "IORT SMMU Reserved Flags is 0x%" PRIx32 " and has " - "some reserved bits [31:2] set when they should be zero.", - node->flags); - } + + fwts_acpi_reserved_bits_check(fw, "IORT", "SMMU Reserved Flags", node->flags, sizeof(node->flags), 2, 31, passed); fwts_log_nl(fw); } @@ -634,14 +621,8 @@ static void iort_check_smmuv3( "IORT SMMUv3 Model is 0x%" PRIx32 " and was expecting " "a model value of 0.", node->model); } - if (node->flags & ~3) { - *passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "IORTSmmuv3ReservedFlags", - "IORT SMMUv3 Reserved Flags is 0x%" PRIx32 " and has " - "some reserved bits [31:2] set when they should be zero.", - node->flags); - } + + fwts_acpi_reserved_bits_check(fw, "IORT", "SMMUv3 Reserved Flags", node->flags, sizeof(node->flags), 2, 31, passed); fwts_log_nl(fw); } diff --git a/src/acpi/mpst/mpst.c b/src/acpi/mpst/mpst.c index 7a38f78..f5d9555 100644 --- a/src/acpi/mpst/mpst.c +++ b/src/acpi/mpst/mpst.c @@ -87,14 +87,7 @@ static int mpst_test1(fwts_framework *fw) fwts_log_info_verbatim(fw, " Number of Power States: 0x%8.8" PRIx32, power_node->num_states); fwts_log_info_verbatim(fw, " Number of Physical Components: 0x%8.8" PRIx32, power_node->num_components); - if (power_node->flags & ~0x7) { - passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "MPSTBadPowerNodeFlags", - "MPST Power Node Flags Bit 3..7 be zero, got " - "0x%2.2" PRIx8 " instead", power_node->flags); - } - + fwts_acpi_reserved_bits_check(fw, "MPST", "Power Node Flags", power_node->flags, sizeof(power_node->flags), 3, 7, &passed); fwts_acpi_reserved_zero_check(fw, "MPST", "Reserved", power_node->reserved, sizeof(power_node->reserved), &passed); node_length = sizeof(fwts_acpi_table_mpst_power_node) + @@ -180,14 +173,7 @@ static int mpst_test1(fwts_framework *fw) "0x%2.2" PRIx8 " instead", (power_char->structure_id & 0xC0) >> 6); } - if (power_char->flags & ~0x7) { - passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "MPSTBadPowerCharacteristicsFlags", - "MPST Power Characteristics Flags Bit 3..7 be zero, got " - "0x%2.2" PRIx8 " instead", power_char->flags); - } - + fwts_acpi_reserved_bits_check(fw, "MPST", "Power Characteristics Flags", power_char->flags, sizeof(power_char->flags), 3, 7, &passed); fwts_acpi_reserved_zero_check(fw, "MPST", "Reserved1", power_char->reserved1, sizeof(power_char->reserved1), &passed); fwts_acpi_reserved_zero_check(fw, "MPST", "Reserved2", power_char->reserved2, sizeof(power_char->reserved2), &passed); diff --git a/src/acpi/nfit/nfit.c b/src/acpi/nfit/nfit.c index c3b69db..fc69798 100644 --- a/src/acpi/nfit/nfit.c +++ b/src/acpi/nfit/nfit.c @@ -162,13 +162,7 @@ static int nfit_test1(fwts_framework *fw) } } - if (nfit_struct->flags & ~0x03) { - passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "NFITBadFlags", - "NFIT Flags's Bits[15..2] must be zero, got " - "0x%8.8" PRIx32 " instead", nfit_struct->flags); - } + fwts_acpi_reserved_bits_check(fw, "NFIT", "Flags", nfit_struct->flags, sizeof(nfit_struct->flags), 2, 15, &passed); if (nfit_struct->reserved != 0) reserved_passed = nfit_struct->reserved; @@ -199,13 +193,7 @@ static int nfit_test1(fwts_framework *fw) fwts_log_info_verbatim(fw, " NVDIMM State Flags: 0x%4.4" PRIx16, nfit_struct->flags); fwts_log_info_verbatim(fw, " Reserved: 0x%4.4" PRIx16, nfit_struct->reserved); - if (nfit_struct->flags & ~0x7F) { - passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "NFITBadFlags", - "NFIT Flags's Bits[15..7] must be zero, got " - "0x%8.8" PRIx32 " instead", nfit_struct->flags); - } + fwts_acpi_reserved_bits_check(fw, "NFIT", "NVDIMM State Flags", nfit_struct->flags, sizeof(nfit_struct->flags), 7, 15, &passed); if (nfit_struct->reserved != 0) reserved_passed = nfit_struct->reserved; @@ -304,13 +292,7 @@ static int nfit_test1(fwts_framework *fw) "0x%2.2" PRIx8 " instead", nfit_struct->valid_fields); } - if (nfit_struct->flags & ~0x01) { - passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "NFITBadFlags", - "NFIT Flags's Bits[15..1] must be zero, got " - "0x%4.4" PRIx16 " instead", nfit_struct->flags); - } + fwts_acpi_reserved_bits_check(fw, "NFIT", "NVDIMM Control Region Flags", nfit_struct->flags, sizeof(nfit_struct->flags), 1, 15, &passed); } else if (entry->type == FWTS_ACPI_NFIT_TYPE_DATA_REGION) { fwts_acpi_table_nfit_data_range *nfit_struct = (fwts_acpi_table_nfit_data_range *) entry; diff --git a/src/acpi/pcct/pcct.c b/src/acpi/pcct/pcct.c index 424cfc1..c6c18be 100644 --- a/src/acpi/pcct/pcct.c +++ b/src/acpi/pcct/pcct.c @@ -52,19 +52,6 @@ static bool subspace_length_equal(fwts_framework *fw, uint8_t type, uint8_t type return true; } -static void platform_interrupt_flags(fwts_framework *fw, uint8_t flags, bool *passed) -{ - fwts_log_info_verbatim(fw, " Platform Interrupt Flags: 0x%2.2" PRIx8, flags); - - if (flags & ~0x3) { - *passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "PCCTBadSubtypePlatformbInterruptlags", - "PCCT Subspace Platform Interrupt Flags's bit [7:2] be zero, got " - "0x%2.2" PRIx8 " instead", flags); - } -} - static void gas_messages(fwts_framework *fw, uint8_t type, fwts_acpi_gas *gas, bool *passed) { fwts_log_info_verbatim(fw, " Address Space ID 0x%2.2" PRIx8, gas->address_space_id); @@ -148,7 +135,7 @@ static void generic_comm_test(fwts_framework *fw, fwts_acpi_table_pcct_subspace_ static void hw_reduced_comm_test_type1(fwts_framework *fw, fwts_acpi_table_pcct_subspace_type_1 *entry, bool *passed) { fwts_log_info_verbatim(fw, " Platform Interrupt: 0x%8.8" PRIx32, entry->platform_interrupt); - platform_interrupt_flags(fw, entry->platform_interrupt_flags, passed); + fwts_log_info_verbatim(fw, " Platform Interrupt Flags: 0x%2.2" PRIx8, entry->platform_interrupt_flags); fwts_log_info_verbatim(fw, " Reserved: 0x%2.2" PRIx8, entry->reserved); fwts_log_info_verbatim(fw, " Base Address: 0x%16.16" PRIx64, entry->base_address); memory_length(fw, entry->header.type, entry->length, 8, passed); @@ -159,12 +146,14 @@ static void hw_reduced_comm_test_type1(fwts_framework *fw, fwts_acpi_table_pcct_ fwts_log_info_verbatim(fw, " Nominal Latency: 0x%8.8" PRIx32, entry->nominal_latency); fwts_log_info_verbatim(fw, " Max Periodic Access Rate: 0x%8.8" PRIx32, entry->max_periodic_access_rate); fwts_log_info_verbatim(fw, " Min Request Turnaround Time: 0x%8.8" PRIx32, entry->min_request_turnaround_time); + + fwts_acpi_reserved_bits_check(fw, "PCCT", "Platform Interrupt Flags", entry->platform_interrupt_flags, sizeof(uint8_t), 2, 7, passed); } static void hw_reduced_comm_test_type2(fwts_framework *fw, fwts_acpi_table_pcct_subspace_type_2 *entry, bool *passed) { fwts_log_info_verbatim(fw, " Platform Interrupt: 0x%8.8" PRIx32, entry->platform_interrupt); - platform_interrupt_flags(fw, entry->platform_interrupt_flags, passed); + fwts_log_info_verbatim(fw, " Platform Interrupt Flags: 0x%2.2" PRIx8, entry->platform_interrupt_flags); fwts_log_info_verbatim(fw, " Reserved: 0x%2.2" PRIx8, entry->reserved); fwts_log_info_verbatim(fw, " Base Address: 0x%16.16" PRIx64, entry->base_address); memory_length(fw, entry->header.type, entry->length, 8, passed); @@ -179,12 +168,14 @@ static void hw_reduced_comm_test_type2(fwts_framework *fw, fwts_acpi_table_pcct_ gas_messages(fw, entry->header.type, &entry->platform_ack_register, passed); fwts_log_info_verbatim(fw, " Platform Ack Preserve: 0x%16.16" PRIx64, entry->platform_ack_preserve); fwts_log_info_verbatim(fw, " Platform Ack Write: 0x%16.16" PRIx64, entry->platform_ack_write); + + fwts_acpi_reserved_bits_check(fw, "PCCT", "Platform Interrupt Flags", entry->platform_interrupt_flags, sizeof(uint8_t), 2, 7, passed); } static void extended_pcc_test(fwts_framework *fw, fwts_acpi_table_pcct_subspace_type_3_4 *entry, bool *passed) { fwts_log_info_verbatim(fw, " Platform Interrupt: 0x%8.8" PRIx32, entry->platform_interrupt); - platform_interrupt_flags(fw, entry->platform_interrupt_flags, passed); + fwts_log_info_verbatim(fw, " Platform Interrupt Flags: 0x%2.2" PRIx8, entry->platform_interrupt_flags); fwts_log_info_verbatim(fw, " Reserved: 0x%2.2" PRIx8, entry->reserved1); fwts_log_info_verbatim(fw, " Base Address: 0x%16.16" PRIx64, entry->base_address); memory_length(fw, entry->header.type, entry->length, 16, passed); @@ -210,6 +201,8 @@ static void extended_pcc_test(fwts_framework *fw, fwts_acpi_table_pcct_subspace_ fwts_log_info_verbatim(fw, " Error Status Register:"); gas_messages(fw, entry->header.type, &entry->error_status_register, passed); fwts_log_info_verbatim(fw, " Error Status Mask: 0x%16.16" PRIx64, entry->error_status_mask); + + fwts_acpi_reserved_bits_check(fw, "PCCT", "Platform Interrupt Flags", entry->platform_interrupt_flags, sizeof(uint8_t), 2, 7, passed); } static int pcct_test1(fwts_framework *fw) @@ -224,14 +217,7 @@ static int pcct_test1(fwts_framework *fw) fwts_log_info_verbatim(fw, " Reserved: 0x%16.16" PRIx64, pcct->reserved); fwts_log_nl(fw); - if ((pcct->flags & ~0x01) != 0) { - passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "PCCTBadFlags", - "PCCT flags field's bit 1..31 be zero, got " - "0x%8.8" PRIx32 " instead", pcct->flags); - } - + fwts_acpi_reserved_bits_check(fw, "PCCT", "Flags", pcct->flags, sizeof(pcct->flags), 1, 31, &passed); fwts_acpi_reserved_zero_check(fw, "PCCT", "Reserved", pcct->reserved, sizeof(pcct->reserved), &passed); offset = sizeof(fwts_acpi_table_pcct); diff --git a/src/acpi/pmtt/pmtt.c b/src/acpi/pmtt/pmtt.c index 915b0c6..f7cdd61 100644 --- a/src/acpi/pmtt/pmtt.c +++ b/src/acpi/pmtt/pmtt.c @@ -49,14 +49,7 @@ static void pmtt_subtable_header_test(fwts_framework *fw, fwts_acpi_table_pmtt_h fwts_log_info_verbatim(fw, " Reserved: 0x%4.4" PRIx16, entry->reserved2); fwts_acpi_reserved_zero_check(fw, "PMTT", "Reserved1", entry->reserved1, sizeof(entry->reserved1), passed); - - if (entry->flags & ~0x0F) { - *passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "PMTTBadFlags", - "PMTT Flags's Bits[15..4] must be zero, got " - "0x%4.4" PRIx16 " instead", entry->flags); - } + fwts_acpi_reserved_bits_check(fw, "PMTT", "Flags", entry->flags, sizeof(entry->flags), 4, 15, passed); if ((entry->flags & 0x0C) == 0x0C) { *passed = false; diff --git a/src/acpi/pptt/pptt.c b/src/acpi/pptt/pptt.c index c1d3cc0..50b7491 100644 --- a/src/acpi/pptt/pptt.c +++ b/src/acpi/pptt/pptt.c @@ -65,14 +65,7 @@ static void pptt_processor_test(fwts_framework *fw, const fwts_acpi_table_pptt_p } fwts_acpi_reserved_zero_check(fw, "PPTT", "Reserved", entry->reserved, sizeof(entry->reserved), passed); - - if (entry->flags & ~0x03) { - *passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "PPTTBadFlags", - "PPTT Flags's Bits[31..2] must be zero, got " - "0x%8.8" PRIx32 " instead", entry->flags); - } + fwts_acpi_reserved_bits_check(fw, "PPTT", "Flags", entry->flags, sizeof(entry->flags), 2, 31, passed); } static void pptt_cache_test(fwts_framework *fw, const fwts_acpi_table_pptt_cache *entry, bool *passed) @@ -91,14 +84,7 @@ static void pptt_cache_test(fwts_framework *fw, const fwts_acpi_table_pptt_cache fwts_log_info_verbatim(fw, " Line size: 0x%4.4" PRIx16, entry->line_size); fwts_acpi_reserved_zero_check(fw, "PPTT", "Reserved", entry->reserved, sizeof(entry->reserved), passed); - - if (entry->flags & ~0x7f) { - *passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "PPTTBadFlags", - "PPTT Flags's Bits[31..7] must be zero, got " - "0x%8.8" PRIx32 " instead", entry->flags); - } + fwts_acpi_reserved_bits_check(fw, "PPTT", "Flags", entry->flags, sizeof(entry->flags), 7, 31, passed); if (entry->attributes & ~0x1f) { *passed = false; diff --git a/src/acpi/spcr/spcr.c b/src/acpi/spcr/spcr.c index 4f91ed6..7ac39d3 100644 --- a/src/acpi/spcr/spcr.c +++ b/src/acpi/spcr/spcr.c @@ -290,15 +290,7 @@ static int spcr_test1(fwts_framework *fw) } } - if (spcr->pci_flags & 0xfffe) { - passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "SPCRPciFlags", - "SPCR PCI flags reserved bits 1-31 are %" PRIx32 - ", expecting 0", - spcr->pci_flags); - } - + fwts_acpi_reserved_bits_check(fw, "SPCR", "PCI Flags", spcr->pci_flags, sizeof(spcr->pci_flags), 1, 31, &passed); fwts_acpi_reserved_zero_check(fw, "SPCR", "Reserved3", spcr->reserved3, sizeof(spcr->reserved3), &passed); if (passed) diff --git a/src/acpi/srat/srat.c b/src/acpi/srat/srat.c index 50df660..d7c9007 100644 --- a/src/acpi/srat/srat.c +++ b/src/acpi/srat/srat.c @@ -85,14 +85,7 @@ static void srat_check_local_apic_sapic_affinity( fwts_log_info_verbatim(fw, " Clock Domain 0x%8.8" PRIx32, affinity->clock_domain); fwts_log_nl(fw); - if (affinity->flags & ~0x1UL) { - fwts_failed(fw, LOG_LEVEL_MEDIUM, - "SRATLocalApicSapicAffinityFlags", - "SRAT Local APIC/SPAIC Affinity Flags field reserved bits 1..31 should be zero, got " - "0x%" PRIx32, - affinity->flags); - *passed = false; - } + fwts_acpi_reserved_bits_check(fw, "SRAT", "Local APIC/SPAIC Affinity Flags", affinity->flags, sizeof(affinity->flags), 1, 31, passed); /* * Not clear of bits 0..7 of Proximity Domain are reserved or not @@ -151,14 +144,8 @@ static void srat_check_memory_affinity( fwts_log_info_verbatim(fw, " Reserved: 0x%16.16" PRIx64, affinity->reserved3); fwts_log_nl(fw); - if (affinity->flags & ~0x7UL) { - fwts_failed(fw, LOG_LEVEL_MEDIUM, - "SRATMemoryAffinityFlags", - "SRAT Memory Affinity Flags field reserved bits 3..31 should be zero, got " - "0x%" PRIx32, - affinity->flags); - *passed = false; - } + fwts_acpi_reserved_bits_check(fw, "SRAT", "Memory Affinity Flags", affinity->flags, sizeof(affinity->flags), 3, 31, passed); + done: *length -= sizeof(fwts_acpi_table_memory_affinity); *data += sizeof(fwts_acpi_table_memory_affinity); @@ -214,14 +201,8 @@ static void srat_check_local_x2apic_affinity( *passed = false; } - if (affinity->flags & ~0x1UL) { - fwts_failed(fw, LOG_LEVEL_MEDIUM, - "SRATLocalx2apicAffinityFlags", - "SRAT Local x2APIC Affinity Flags field reserved bits 1..31 should be zero, got " - "0x%" PRIx32, - affinity->flags); - *passed = false; - } + fwts_acpi_reserved_bits_check(fw, "SRAT", "Local x2APIC Affinity Flags", affinity->flags, sizeof(affinity->flags), 1, 31, passed); + /* * Clock domain probably needs deeper sanity checking, for now * skip this. @@ -270,14 +251,8 @@ static void srat_check_gicc_affinity( fwts_log_info_verbatim(fw, " Clock Domain 0x%8.8" PRIx32, affinity->clock_domain); fwts_log_nl(fw); - if (affinity->flags & ~0x1UL) { - fwts_failed(fw, LOG_LEVEL_MEDIUM, - "SRATGICCAffinityFlags", - "SRAT GICC Affinity Flags field reserved bits 1..31 should be zero, got " - "0x%" PRIx32, - affinity->flags); - *passed = false; - } + fwts_acpi_reserved_bits_check(fw, "SRAT", "GICC Affinity Flags", affinity->flags, sizeof(affinity->flags), 1, 31, passed); + /* * Clock domain probably needs deeper sanity checking, for now * skip this. diff --git a/src/acpi/waet/waet.c b/src/acpi/waet/waet.c index ae8cf4d..e6a42dc 100644 --- a/src/acpi/waet/waet.c +++ b/src/acpi/waet/waet.c @@ -71,14 +71,8 @@ static int waet_test1(fwts_framework *fw) fwts_log_info_verbatim(fw, " Bit [1] PM Timer Good: %1" PRIu32, (waet->flags >> 1) & 1); fwts_log_nl(fw); - if (waet->flags & ~3) { - passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "WAETFlagReservedNotZero", - "WAET Emulated Device Flags was 0x%" PRIx32 - " and so some of reserved bits [31:2] are not zero " - " as expected.", waet->flags); - } + fwts_acpi_reserved_bits_check(fw, "WAET", "Emulated Device Flags", waet->flags, sizeof(waet->flags), 2, 31, &passed); + done: if (passed) fwts_passed(fw, "No issues found in WAET table."); diff --git a/src/acpi/wdat/wdat.c b/src/acpi/wdat/wdat.c index b2de651..3046e56 100644 --- a/src/acpi/wdat/wdat.c +++ b/src/acpi/wdat/wdat.c @@ -116,14 +116,7 @@ static int wdat_test1(fwts_framework *fw) * this does sanity check that somebody has not set these * bits accidentally. This is a LOW issue. */ - if (wdat->watchdog_flags & ~0x81) { - passed = false; - fwts_failed(fw, LOG_LEVEL_LOW, - "WDATWatchdogFlagsUndefinedSet", - "WDAT Watchdog Flags bits [6:1] are not all 0. These bits " - "are not defined in the specification and should be " - "set to 0. Watchdog flags are: 0x%" PRIx8, wdat->watchdog_flags); - } + fwts_acpi_reserved_bits_check(fw, "WDAT", "Watchdog Flags", wdat->watchdog_flags, sizeof(wdat->watchdog_flags), 1, 6, &passed); total_length = sizeof(fwts_acpi_table_wdat) + (wdat->number_of_entries * sizeof(fwts_acpi_table_wdat_instr_entries)); diff --git a/src/acpi/wsmt/wsmt.c b/src/acpi/wsmt/wsmt.c index ad23fba..9405adc 100644 --- a/src/acpi/wsmt/wsmt.c +++ b/src/acpi/wsmt/wsmt.c @@ -53,14 +53,7 @@ static int wsmt_test1(fwts_framework *fw) fwts_log_info_verbatim(fw, "WSMT Windows SMM Security Mitigations Table:"); fwts_log_info_verbatim(fw, " Protection Flags: 0x%8.8" PRIx32, wsmt->protection_flags); - if (wsmt->protection_flags & ~0x7) { - passed = false; - fwts_failed(fw, LOG_LEVEL_MEDIUM, - "WSMTFlagsReserved", - "WSMT Protection Flags reserved bits " - "[3:31] must be zero, instead got 0x%" PRIx32, - wsmt->protection_flags); - } + fwts_acpi_reserved_bits_check(fw, "WSMT", "Protection Flags", wsmt->protection_flags, sizeof(wsmt->protection_flags), 3, 31, &passed); if ((wsmt->protection_flags & 0x2) && !(wsmt->protection_flags & 0x1)) { passed = false; diff --git a/src/acpi/xenv/xenv.c b/src/acpi/xenv/xenv.c index 09f8158..74bd428 100644 --- a/src/acpi/xenv/xenv.c +++ b/src/acpi/xenv/xenv.c @@ -71,14 +71,7 @@ static int xenv_test1(fwts_framework *fw) fwts_log_info_verbatim(fw, " Evtchn Intr: 0x%8.8" PRIx32, xenv->evtchn_intr); fwts_log_info_verbatim(fw, " Evtchn Intr Flags: 0x%2.2" PRIx8, xenv->evtchn_intr_flags); - if (xenv->evtchn_intr_flags & ~3) { - passed = false; - fwts_failed(fw, LOG_LEVEL_HIGH, - "XENVBadEvtchnIntrFlags", - "XENV Evtchn Intr Flags was 0x%2.2" PRIx8 - " and reserved bits [7:2] are not zero.", - xenv->evtchn_intr_flags); - } + fwts_acpi_reserved_bits_check(fw, "XENV", "Evtchn Intr Flags", xenv->evtchn_intr_flags, sizeof(xenv->evtchn_intr_flags), 2, 7, &passed); if (passed) fwts_passed(fw, "No issues found in XENV table."); From patchwork Fri Sep 8 09:07:13 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Hung X-Patchwork-Id: 811395 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=fwts-devel-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 3xpWgG1hkDz9s0g; Fri, 8 Sep 2017 19:07:38 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1dqFGD-0000s6-2U; Fri, 08 Sep 2017 09:07:37 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by huckleberry.canonical.com with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.86_2) (envelope-from ) id 1dqFGB-0000rc-EG for fwts-devel@lists.ubuntu.com; Fri, 08 Sep 2017 09:07:35 +0000 Received: from 1.general.alexhung.us.vpn ([10.172.65.254] helo=canonical.com) by youngberry.canonical.com with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.76) (envelope-from ) id 1dqFGA-0001AL-Ok; Fri, 08 Sep 2017 09:07:35 +0000 From: Alex Hung To: fwts-devel@lists.ubuntu.com Subject: [PATCH 3/3] fwts-test: sync up with new fwts_acpi_reserved_bits_check Date: Fri, 8 Sep 2017 02:07:13 -0700 Message-Id: <1504861633-20512-3-git-send-email-alex.hung@canonical.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1504861633-20512-1-git-send-email-alex.hung@canonical.com> References: <1504861633-20512-1-git-send-email-alex.hung@canonical.com> X-BeenThere: fwts-devel@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Firmware Test Suite Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: fwts-devel-bounces@lists.ubuntu.com Sender: "fwts-devel" Signed-off-by: Alex Hung Acked-by: Ivan Hu Acked-by: Colin Ian King --- fwts-test/asf-0001/asf-0002.log | 6 ++-- fwts-test/drtm-0001/drtm-0002.log | 5 ++-- fwts-test/facs-0001/facs-0002.log | 10 +++---- fwts-test/hest-0001/hest-0002.log | 18 ++++++------ fwts-test/hmat-0001/hmat-0002.log | 8 +++--- fwts-test/iort-0001/iort-0002.log | 58 +++++++++++++++++---------------------- fwts-test/nfit-0001/nfit-0002.log | 13 +++++---- fwts-test/pmtt-0001/pmtt-0002.log | 4 +-- fwts-test/pptt-0001/pptt-0002.log | 8 +++--- fwts-test/srat-0001/srat-0002.log | 18 ++++++------ fwts-test/waet-0001/waet-0002.log | 6 ++-- fwts-test/wsmt-0001/wsmt-0002.log | 5 ++-- fwts-test/xenv-0001/xenv-0002.log | 4 +-- 13 files changed, 78 insertions(+), 85 deletions(-) diff --git a/fwts-test/asf-0001/asf-0002.log b/fwts-test/asf-0001/asf-0002.log index b8212e7..bee1002 100644 --- a/fwts-test/asf-0001/asf-0002.log +++ b/fwts-test/asf-0001/asf-0002.log @@ -8,9 +8,9 @@ asf in the range 0x01..0xff asf FAILED [HIGH] ASF!InfoMinPollWaitTimeInvalid: Test 1, ASF! asf ASF_INFO Minimum Poll Wait Time is 0x0 and must be in the asf range 0x02..0xff -asf FAILED [HIGH] ASF!InfoFeatureFlagsReserved: Test 1, ASF! -asf ASF_INFO Feature Flags is 0xff, however reserved bits [7 -asf :1] must be zero +asf FAILED [HIGH] ASF!ReservedBitsNonZero: Test 1, ASF! +asf ASF_INFO Feature Flags Bits [7..1] must be zero, got 0xff +asf instead asf FAILED [MEDIUM] ASF!ReservedNonZero: Test 1, ASF! ASF_INFO asf Reserved1 field must be zero, got 0x10 instead asf FAILED [MEDIUM] ASF!ReservedNonZero: Test 1, ASF! ASF_INFO diff --git a/fwts-test/drtm-0001/drtm-0002.log b/fwts-test/drtm-0001/drtm-0002.log index 01fe9e1..05ed80e 100644 --- a/fwts-test/drtm-0001/drtm-0002.log +++ b/fwts-test/drtm-0001/drtm-0002.log @@ -11,8 +11,9 @@ drtm Log_Area_Start: 0x0000000050000000 drtm Log_Area_Length: 0x00006000 drtm Architecture_Dependent: 0x0000000070000000 drtm DRT_Flags: 0x00008000 -drtm FAILED [MEDIUM] DRTMBadFlagReservedNonZero: Test 1, DRTM -drtm DRT_Flags Bits [31:4] are reserved, got 0x00008000 instead +drtm FAILED [HIGH] DRTMReservedBitsNonZero: Test 1, DRTM +drtm DRT_Flags Bits [31..4] must be zero, got 0x00008000 +drtm instead drtm drtm VTL_Length: 0x00000002 drtm Validated_Tables: 0x00000000a0000000 diff --git a/fwts-test/facs-0001/facs-0002.log b/fwts-test/facs-0001/facs-0002.log index 6d7cb7c..68b2ee4 100644 --- a/fwts-test/facs-0001/facs-0002.log +++ b/fwts-test/facs-0001/facs-0002.log @@ -21,12 +21,10 @@ facs Reserved: 0x00 0x00 0x00 0x00 facs Reserved: 0x00 0x00 0x00 0x00 facs FAILED [LOW] FACSInvalidReserved1: Test 1, FACS: 1st facs Reserved field is non-zero -facs FAILED [MEDIUM] FACSFlagsReservedBitsSet: Test 1, FACS: -facs Flags field is 0xffffffff and some of the reserved bits -facs [31:2] are set -facs FAILED [MEDIUM] FACSFlagsReservedBitsSet: Test 1, FACS: -facs OSPM Flags field is 0xefefefef and some of the reserved -facs bits [31:1] are set +facs FAILED [HIGH] FACSReservedBitsNonZero: Test 1, FACS Flags +facs Bits [31..2] must be zero, got 0xffffffff instead +facs FAILED [HIGH] FACSReservedBitsNonZero: Test 1, FACS OSPM +facs Flags Bits [31..1] must be zero, got 0xefefefef instead facs FAILED [LOW] FACSInvalidReserved1: Test 1, FACS: 2nd facs Reserved field is non-zero facs diff --git a/fwts-test/hest-0001/hest-0002.log b/fwts-test/hest-0001/hest-0002.log index 274c0cf..88aa45d 100644 --- a/fwts-test/hest-0001/hest-0002.log +++ b/fwts-test/hest-0001/hest-0002.log @@ -23,9 +23,9 @@ hest Correctable Error Mask: 0x000011c1 hest Advanced Capabilities: 0x00000000 hest Root Error Command: 0x00000006 hest -hest FAILED [MEDIUM] HESTPciExpressRootPortFlagsReserved: Test -hest 1, HEST PCI Express Root Port Flags Reserved bits [2:7] -hest must be zero, instead got 0x7 +hest FAILED [HIGH] HESTReservedBitsNonZero: Test 1, HEST PCI +hest Express Root Port Flags Bits [7..2] must be zero, got 0x07 +hest instead hest HEST PCI Express Device AER: hest Type: 0x07 hest Source ID: 0x00ff @@ -43,9 +43,9 @@ hest Uncorrectable Severity: 0x0017f011 hest Correctable Error Mask: 0x000011c1 hest Advanced Capabilities: 0x00000000 hest -hest FAILED [MEDIUM] HESTPciExpressDeviceFlagsReserved: Test 1, -hest HEST PCI Express Device Flags Reserved bits [2:7] must be -hest zero, instead got 0x9 +hest FAILED [HIGH] HESTReservedBitsNonZero: Test 1, HEST PCI +hest Express Device Flags Bits [7..2] must be zero, got 0x09 +hest instead hest FAILED [HIGH] HESTInvalidRecordsToPreallocate: Test 1, hest HEST PCI Express Device Number of Records to Preallocate hest is 0x0 and must be more than zero. @@ -70,9 +70,9 @@ hest 2nd Uncorrectable Mask: 0x00100020 hest 2nd Uncurrectable Svrity: 0x0017f011 hest 2nd Advanced Capabilities:0x00000000 hest -hest FAILED [MEDIUM] HESTPciExpressBridgeFlagsReserved: Test 1, -hest HEST PCI Express Bridge Flags Reserved bits [2:7] must be -hest zero, instead got 0xf +hest FAILED [HIGH] HESTReservedBitsNonZero: Test 1, HEST PCI +hest Express Bridge Flags Bits [7..2] must be zero, got 0x0f +hest instead hest FAILED [HIGH] HESTInvalidRecordsToPreallocate: Test 1, hest HEST PCI Express Bridge Number of Records to Preallocate hest is 0x0 and must be more than zero. diff --git a/fwts-test/hmat-0001/hmat-0002.log b/fwts-test/hmat-0001/hmat-0002.log index d90468b..953413c 100644 --- a/fwts-test/hmat-0001/hmat-0002.log +++ b/fwts-test/hmat-0001/hmat-0002.log @@ -16,8 +16,8 @@ hmat System Phy Addr Range Base: 0x0000000000000000 hmat System Phy Addr Range Length: 0x0000000000000000 hmat FAILED [MEDIUM] HMATReservedNonZero: Test 1, HMAT Reserved hmat field must be zero, got 0x0001 instead -hmat FAILED [HIGH] HMATBadFlags: Test 1, HMAT Flags's -hmat Bits[15..3] must be zero, got 0x000f instead +hmat FAILED [HIGH] HMATReservedBitsNonZero: Test 1, HMAT Flags +hmat Bits [15..3] must be zero, got 0x000f instead hmat FAILED [MEDIUM] HMATReservedNonZero: Test 1, HMAT Reserved hmat field must be zero, got 0x0002 instead hmat FAILED [MEDIUM] HMATReservedNonZero: Test 1, HMAT Reserved @@ -36,8 +36,8 @@ hmat Reserved: 0x00000006 hmat Entry Base Unit: 0x0000000000000000 hmat FAILED [MEDIUM] HMATReservedNonZero: Test 1, HMAT Reserved hmat field must be zero, got 0x0004 instead -hmat FAILED [CRITICAL] HMATBadFlags: Test 1, HMAT Flags's -hmat Bits[7..5] must be zero, got 0x3f instead +hmat FAILED [HIGH] HMATReservedBitsNonZero: Test 1, HMAT Flags +hmat Bits [7..5] must be zero, got 0x3f instead hmat FAILED [CRITICAL] HMATBadFDataType: Test 1, HMAT Data Type hmat must be 0..5, got 0x06 instead hmat FAILED [MEDIUM] HMATReservedNonZero: Test 1, HMAT Reserved diff --git a/fwts-test/iort-0001/iort-0002.log b/fwts-test/iort-0001/iort-0002.log index 7a0746b..82eb3d0 100644 --- a/fwts-test/iort-0001/iort-0002.log +++ b/fwts-test/iort-0001/iort-0002.log @@ -164,36 +164,28 @@ iort FAILED [LOW] IORTNodeRevisionNonZero: Test 1, IORT Node iort Revision field is 0xa0 and should be zero. iort FAILED [MEDIUM] IORTReservedNonZero: Test 1, IORT Node iort Reserved field must be zero, got 0x00008100 instead -iort FAILED [MEDIUM] IORTSMMUIntrFlagsReservedNonZero: Test 1, -iort IORT SMMU_NsgIrpt Flags field reserved bits [31:1] should -iort be all zero, got 0x2 -iort FAILED [MEDIUM] IORTSMMUIntrFlagsReservedNonZero: Test 1, -iort IORT SMMU_NsgCfgIrpt Flags field reserved bits [31:1] -iort should be all zero, got 0x4 -iort FAILED [MEDIUM] IORTSMMUIntrFlagsReservedNonZero: Test 1, -iort IORT SMMU_GSV Flags field reserved bits [31:1] should be -iort all zero, got 0x8 -iort FAILED [MEDIUM] IORTSMMUIntrFlagsReservedNonZero: Test 1, -iort IORT SMMU_GSV Flags field reserved bits [31:1] should be -iort all zero, got 0x10 -iort FAILED [MEDIUM] IORTSMMUIntrFlagsReservedNonZero: Test 1, -iort IORT SMMU_GSV Flags field reserved bits [31:1] should be -iort all zero, got 0x20 -iort FAILED [MEDIUM] IORTSMMUIntrFlagsReservedNonZero: Test 1, -iort IORT SMMU_GSV Flags field reserved bits [31:1] should be -iort all zero, got 0x40 -iort FAILED [MEDIUM] IORTSMMUIntrFlagsReservedNonZero: Test 1, -iort IORT SMMU_GSV Flags field reserved bits [31:1] should be -iort all zero, got 0xaa -iort FAILED [MEDIUM] IORTSMMUIntrFlagsReservedNonZero: Test 1, -iort IORT SMMU_GSV Flags field reserved bits [31:1] should be -iort all zero, got 0xab -iort FAILED [MEDIUM] IORTSMMUIntrFlagsReservedNonZero: Test 1, -iort IORT SMMU_GSV Flags field reserved bits [31:1] should be -iort all zero, got 0x92 -iort FAILED [MEDIUM] IORTSMMUIntrFlagsReservedNonZero: Test 1, -iort IORT SMMU_GSV Flags field reserved bits [31:1] should be -iort all zero, got 0x4 +iort FAILED [HIGH] IORTReservedBitsNonZero: Test 1, IORT +iort SMMU_NsgIrpt Bits [31..1] must be zero, got 0x00000002 +iort instead +iort FAILED [HIGH] IORTReservedBitsNonZero: Test 1, IORT +iort SMMU_NsgCfgIrpt Bits [31..1] must be zero, got 0x00000004 +iort instead +iort FAILED [HIGH] IORTReservedBitsNonZero: Test 1, IORT +iort SMMU_GSV Bits [31..1] must be zero, got 0x00000008 instead +iort FAILED [HIGH] IORTReservedBitsNonZero: Test 1, IORT +iort SMMU_GSV Bits [31..1] must be zero, got 0x00000010 instead +iort FAILED [HIGH] IORTReservedBitsNonZero: Test 1, IORT +iort SMMU_GSV Bits [31..1] must be zero, got 0x00000020 instead +iort FAILED [HIGH] IORTReservedBitsNonZero: Test 1, IORT +iort SMMU_GSV Bits [31..1] must be zero, got 0x00000040 instead +iort FAILED [HIGH] IORTReservedBitsNonZero: Test 1, IORT +iort SMMU_GSV Bits [31..1] must be zero, got 0x000000aa instead +iort FAILED [HIGH] IORTReservedBitsNonZero: Test 1, IORT +iort SMMU_GSV Bits [31..1] must be zero, got 0x000000ab instead +iort FAILED [HIGH] IORTReservedBitsNonZero: Test 1, IORT +iort SMMU_GSV Bits [31..1] must be zero, got 0x00000092 instead +iort FAILED [HIGH] IORTReservedBitsNonZero: Test 1, IORT +iort SMMU_GSV Bits [31..1] must be zero, got 0x00000004 instead iort FAILED [HIGH] IORTSmmuInterruptsOutsideTable: Test 1, IORT iort SMMU Interrupt 4 is outside the IORT ACPI table. Either iort the offset is incorrect or the IORT table size is too @@ -204,9 +196,9 @@ iort offset is incorrect or the IORT table size or the node is iort too small. iort FAILED [HIGH] IORTSmmuInvalidModel: Test 1, IORT SMMU iort Model is 0x4 and was expecting a model value 0 to 3. -iort FAILED [HIGH] IORTSmmuReservedFlags: Test 1, IORT SMMU -iort Reserved Flags is 0xaa and has some reserved bits [31:2] -iort set when they should be zero. +iort FAILED [HIGH] IORTReservedBitsNonZero: Test 1, IORT SMMU +iort Reserved Flags Bits [31..2] must be zero, got 0x000000aa +iort instead iort iort FAILED [HIGH] IORTInvalidType: Test 1, IORT Type 0xff is iort invalid, aborting check diff --git a/fwts-test/nfit-0001/nfit-0002.log b/fwts-test/nfit-0001/nfit-0002.log index 02fba5a..2b13fe4 100644 --- a/fwts-test/nfit-0001/nfit-0002.log +++ b/fwts-test/nfit-0001/nfit-0002.log @@ -19,8 +19,8 @@ nfit System Physical Address Range Length: 0x000000000c000000 nfit Address Range Memory Mapping Attribute: 0x00000000000000ff nfit FAILED [HIGH] NFITBadRangeIndexZero: Test 1, NFIT SPA nfit Range Structure Index must not be zero -nfit FAILED [HIGH] NFITBadFlags: Test 1, NFIT Flags's -nfit Bits[15..2] must be zero, got 0x00000005 instead +nfit FAILED [HIGH] NFITReservedBitsNonZero: Test 1, NFIT Flags +nfit Bits [15..2] must be zero, got 0x0005 instead nfit FAILED [HIGH] NFITBadMemoryMappingAttribute: Test 1, NFIT nfit Memory Mapping Attribute must meet UEFI Spec, got nfit 0x00000000000000ff instead @@ -42,8 +42,8 @@ nfit Interleave Structure Index: 0x0001 nfit Interleave Ways: 0x0003 nfit NVDIMM State Flags: 0x00fa nfit Reserved: 0x0000 -nfit FAILED [HIGH] NFITBadFlags: Test 1, NFIT Flags's -nfit Bits[15..7] must be zero, got 0x000000fa instead +nfit FAILED [HIGH] NFITReservedBitsNonZero: Test 1, NFIT NVDIMM +nfit State Flags Bits [15..7] must be zero, got 0x00fa instead nfit nfit NFIT Subtable: nfit Type: 0x0002 @@ -101,8 +101,9 @@ nfit FAILED [HIGH] NFITBadRevisionId: Test 1, NFIT Subsystem nfit Revision ID's BYTE 1 must be zero, got 0xaa01 instead nfit FAILED [HIGH] NFITBadValidField: Test 1, NFIT Valid nfit Field's Bits[7..1] must be zero, got 0x03 instead -nfit FAILED [HIGH] NFITBadFlags: Test 1, NFIT Flags's -nfit Bits[15..1] must be zero, got 0x0003 instead +nfit FAILED [HIGH] NFITReservedBitsNonZero: Test 1, NFIT NVDIMM +nfit Control Region Flags Bits [15..1] must be zero, got 0x0003 +nfit instead nfit FAILED [MEDIUM] NFITReservedNonZero: Test 1, NFIT Reserved nfit field must be zero, got 0x0000000000000f00 instead nfit diff --git a/fwts-test/pmtt-0001/pmtt-0002.log b/fwts-test/pmtt-0001/pmtt-0002.log index 2ce24a2..dfa1d00 100644 --- a/fwts-test/pmtt-0001/pmtt-0002.log +++ b/fwts-test/pmtt-0001/pmtt-0002.log @@ -95,8 +95,8 @@ pmtt Reserved: 0x00 pmtt Length: 0x000c pmtt Flags: 0x0013 pmtt Reserved: 0x0000 -pmtt FAILED [HIGH] PMTTBadFlags: Test 1, PMTT Flags's -pmtt Bits[15..4] must be zero, got 0x0013 instead +pmtt FAILED [HIGH] PMTTReservedBitsNonZero: Test 1, PMTT Flags +pmtt Bits [15..4] must be zero, got 0x0013 instead pmtt Socket Identifier: 0x0002 pmtt Reserved: 0x0000 pmtt PMTT Subtable: diff --git a/fwts-test/pptt-0001/pptt-0002.log b/fwts-test/pptt-0001/pptt-0002.log index 4b3f2a6..0c83c65 100644 --- a/fwts-test/pptt-0001/pptt-0002.log +++ b/fwts-test/pptt-0001/pptt-0002.log @@ -40,8 +40,8 @@ pptt Private Resources[0]: 0x00000000 pptt Private Resources[1]: 0x00000000 pptt FAILED [MEDIUM] PPTTReservedNonZero: Test 1, PPTT Reserved pptt field must be zero, got 0x0003 instead -pptt FAILED [HIGH] PPTTBadFlags: Test 1, PPTT Flags's -pptt Bits[31..2] must be zero, got 0x00000007 instead +pptt FAILED [HIGH] PPTTReservedBitsNonZero: Test 1, PPTT Flags +pptt Bits [31..2] must be zero, got 0x00000007 instead pptt pptt Cache Type Structure (Type 1): pptt Type: 0x01 @@ -56,8 +56,8 @@ pptt Attributes: 0x00 pptt Line size: 0x0000 pptt FAILED [MEDIUM] PPTTReservedNonZero: Test 1, PPTT Reserved pptt field must be zero, got 0x0004 instead -pptt FAILED [HIGH] PPTTBadFlags: Test 1, PPTT Flags's -pptt Bits[31..7] must be zero, got 0x000000ff instead +pptt FAILED [HIGH] PPTTReservedBitsNonZero: Test 1, PPTT Flags +pptt Bits [31..7] must be zero, got 0x000000ff instead pptt pptt ID structure (Type 2): pptt Type: 0x02 diff --git a/fwts-test/srat-0001/srat-0002.log b/fwts-test/srat-0001/srat-0002.log index 2abc922..9d5b1ff 100644 --- a/fwts-test/srat-0001/srat-0002.log +++ b/fwts-test/srat-0001/srat-0002.log @@ -15,9 +15,9 @@ srat Proximity Domain: [16:23] 0x00 srat Proximity Domain: [23:31] 0x00 srat Clock Domain 0x00000000 srat -srat FAILED [MEDIUM] SRATLocalApicSapicAffinityFlags: Test 1, -srat SRAT Local APIC/SPAIC Affinity Flags field reserved bits -srat 1..31 should be zero, got 0x9 +srat FAILED [HIGH] SRATReservedBitsNonZero: Test 1, SRAT Local +srat APIC/SPAIC Affinity Flags Bits [31..1] must be zero, got +srat 0x00000009 instead srat SRAT Local APIC/SAPIC Affinity Structure: srat Type: 0x00 srat Length: 0x10 @@ -76,9 +76,9 @@ srat Reserved: 0x0000000f srat Flags: 0x000000ff srat Reserved: 0x0000000000000000 srat -srat FAILED [MEDIUM] SRATMemoryAffinityFlags: Test 1, SRAT -srat Memory Affinity Flags field reserved bits 3..31 should be -srat zero, got 0xff +srat FAILED [HIGH] SRATReservedBitsNonZero: Test 1, SRAT Memory +srat Affinity Flags Bits [31..3] must be zero, got 0x000000ff +srat instead srat SRAT Memory Affinity Structure: srat Type: 0x01 srat Length: 0x28 @@ -90,9 +90,9 @@ srat Reserved: 0x00000001 srat Flags: 0x00000008 srat Reserved: 0x0000000000000000 srat -srat FAILED [MEDIUM] SRATMemoryAffinityFlags: Test 1, SRAT -srat Memory Affinity Flags field reserved bits 3..31 should be -srat zero, got 0x8 +srat FAILED [HIGH] SRATReservedBitsNonZero: Test 1, SRAT Memory +srat Affinity Flags Bits [31..3] must be zero, got 0x00000008 +srat instead srat srat ========================================================== srat 0 passed, 4 failed, 0 warning, 0 aborted, 0 skipped, 0 diff --git a/fwts-test/waet-0001/waet-0002.log b/fwts-test/waet-0001/waet-0002.log index a8552c2..066ece2 100644 --- a/fwts-test/waet-0001/waet-0002.log +++ b/fwts-test/waet-0001/waet-0002.log @@ -6,9 +6,9 @@ waet Emulated Device Flags: 0xfffffffc waet Bit [0] RTC Good: 0 waet Bit [1] PM Timer Good: 0 waet -waet FAILED [HIGH] WAETFlagReservedNotZero: Test 1, WAET -waet Emulated Device Flags was 0xfffffffc and so some of -waet reserved bits [31:2] are not zero as expected. +waet FAILED [HIGH] WAETReservedBitsNonZero: Test 1, WAET +waet Emulated Device Flags Bits [31..2] must be zero, got +waet 0xfffffffc instead waet waet ========================================================== waet 0 passed, 1 failed, 0 warning, 0 aborted, 0 skipped, 0 diff --git a/fwts-test/wsmt-0001/wsmt-0002.log b/fwts-test/wsmt-0001/wsmt-0002.log index b862a8f..52c45c2 100644 --- a/fwts-test/wsmt-0001/wsmt-0002.log +++ b/fwts-test/wsmt-0001/wsmt-0002.log @@ -4,8 +4,9 @@ wsmt Test 1 of 1: WSMT Windows SMM Security Mitigations Table wsmt test. wsmt WSMT Windows SMM Security Mitigations Table: wsmt Protection Flags: 0x00000009 -wsmt FAILED [MEDIUM] WSMTFlagsReserved: Test 1, WSMT Protection -wsmt Flags reserved bits [3:31] must be zero, instead got 0x9 +wsmt FAILED [HIGH] WSMTReservedBitsNonZero: Test 1, WSMT +wsmt Protection Flags Bits [31..3] must be zero, got 0x00000009 +wsmt instead wsmt wsmt wsmt ========================================================== diff --git a/fwts-test/xenv-0001/xenv-0002.log b/fwts-test/xenv-0001/xenv-0002.log index ca573a3..c25a0db 100644 --- a/fwts-test/xenv-0001/xenv-0002.log +++ b/fwts-test/xenv-0001/xenv-0002.log @@ -6,8 +6,8 @@ xenv GNT Start Address: 0x0000000010000000 xenv GNT Size: 0x0000000000002000 xenv Evtchn Intr: 0x25000000 xenv Evtchn Intr Flags: 0x07 -xenv FAILED [HIGH] XENVBadEvtchnIntrFlags: Test 1, XENV Evtchn -xenv Intr Flags was 0x07 and reserved bits [7:2] are not zero. +xenv FAILED [HIGH] XENVReservedBitsNonZero: Test 1, XENV Evtchn +xenv Intr Flags Bits [7..2] must be zero, got 0x07 instead xenv xenv ========================================================== xenv 0 passed, 1 failed, 0 warning, 0 aborted, 0 skipped, 0