[PATCH] mtrr: fix mtrr checking without devices that are under bridges

Ivan Hu ivan.hu at canonical.com
Tue Aug 14 10:50:16 UTC 2012


The issue seems that only check the bridges, doesn't check the devices under
the bridges. This causes the test fail. Fix the parser PCI Bus char and
prfetchable char.

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

diff --git a/src/bios/mtrr/mtrr.c b/src/bios/mtrr/mtrr.c
index 4818c64..5bb27b8 100644
--- a/src/bios/mtrr/mtrr.c
+++ b/src/bios/mtrr/mtrr.c
@@ -356,11 +356,11 @@ static int is_prefetchable(fwts_framework *fw, char *device, uint64_t address)
 	fwts_list_foreach(item, lspci_output) {
 		char *str = strstr(fwts_text_list_text(item), "Memory at ");
 		if (str && strtoull(str+10, NULL, 16) == address) {
-			if (strstr(str, "Non-Prefetchable"))
+			if (strstr(str, "non-prefetchable"))
 				pref = 0;
-			else if (strstr(str, "(Prefetchable"))
+			else if (strstr(str, "(prefetchable"))
 				pref = 1;
-			else if (strstr(str, ", Prefetchable"))
+			else if (strstr(str, ", prefetchable"))
 				pref = 1;
 		}
 	}
@@ -419,7 +419,7 @@ static int validate_iomem(fwts_framework *fw)
 		 * For pci bridges, we note the increased depth and
 		 * otherwise skip the entry
  		 */
-		if (strstr(buffer, ": PCI Bus #")) {
+		if (strstr(buffer, ": PCI Bus ")) {
 			pcidepth++;
 			continue;
 		}
-- 
1.7.9.5




More information about the fwts-devel mailing list