[PATCH] acpi: iort: update IORT node revision check

Ivan Hu ivan.hu at canonical.com
Fri Apr 1 06:07:28 UTC 2022


BugLink: https://bugs.launchpad.net/fwts/+bug/1963841

Signed-off-by: Ivan Hu <ivan.hu at canonical.com>
---
 src/acpi/iort/iort.c | 34 ++++++++++++++++++++++++++++++----
 1 file changed, 30 insertions(+), 4 deletions(-)

diff --git a/src/acpi/iort/iort.c b/src/acpi/iort/iort.c
index f2a8a062..dfd9c074 100644
--- a/src/acpi/iort/iort.c
+++ b/src/acpi/iort/iort.c
@@ -60,7 +60,35 @@ static void iort_node_check(
 {
 	fwts_acpi_table_iort_node *node = (fwts_acpi_table_iort_node *)data;
 
-	if (node->type == 1 || node->type == 3 || node->type == 4) {
+	if (node->type == 1 || node->type == 2 || node->type == 4) {
+		if (node->revision > 4) {
+			*passed = false;
+			fwts_failed(fw, LOG_LEVEL_LOW,
+				"IORTNodeRevisionInvalid",
+				"IORT Node Revision field is 0x%2.2" PRIx8
+				" and should be less than 5.",
+				node->revision);
+		}
+	} else if (node->type == 3 || node->type == 6) {
+		if (node->revision > 3) {
+			*passed = false;
+			fwts_failed(fw, LOG_LEVEL_LOW,
+				"IORTNodeRevisionInvalid",
+				"IORT Node Revision field is 0x%2.2" PRIx8
+				" and should be less than 4.",
+				node->revision);
+		}
+	} else if (node->type == 5) {
+		if (node->revision > 2) {
+			*passed = false;
+			fwts_failed(fw, LOG_LEVEL_LOW,
+				"IORTNodeRevisionInvalid",
+				"IORT Node Revision field is 0x%2.2" PRIx8
+				" and should be less than 3.",
+				node->revision);
+		}
+	} else {
+		/* type 0 */
 		if (node->revision > 1) {
 			*passed = false;
 			fwts_failed(fw, LOG_LEVEL_LOW,
@@ -69,9 +97,7 @@ static void iort_node_check(
 				" and should be zero or one.",
 				node->revision);
 		}
-
-	} else
-		fwts_acpi_fixed_value(fw, LOG_LEVEL_MEDIUM, "IORT", "IORT Node Revision", node->revision, 0, passed);
+	}
 
 	fwts_acpi_reserved_zero("IORT", "Node Reserved", node->reserved, passed);
 
-- 
2.17.1




More information about the fwts-devel mailing list