|
Michal Suchanek |
2a9f2c |
From 4228a996b072d36f3baafb4afdc2d2d66d2cbadf Mon Sep 17 00:00:00 2001
|
|
Michal Suchanek |
2a9f2c |
From: Michael Ellerman <mpe@ellerman.id.au>
|
|
Michal Suchanek |
2a9f2c |
Date: Mon, 20 Jun 2022 09:31:03 +1000
|
|
Michal Suchanek |
2a9f2c |
Subject: [PATCH] selftests/powerpc: Skip energy_scale_info test on older
|
|
Michal Suchanek |
2a9f2c |
firmware
|
|
Michal Suchanek |
2a9f2c |
|
|
Michal Suchanek |
2a9f2c |
References: git-fixes
|
|
Michal Suchanek |
2a9f2c |
Patch-mainline: v6.0-rc1
|
|
Michal Suchanek |
2a9f2c |
Git-commit: 4228a996b072d36f3baafb4afdc2d2d66d2cbadf
|
|
Michal Suchanek |
2a9f2c |
|
|
Michal Suchanek |
2a9f2c |
Older machines don't have the firmware feature that enables the code
|
|
Michal Suchanek |
2a9f2c |
this test is testing. Skip the test if the sysfs directory doesn't
|
|
Michal Suchanek |
2a9f2c |
exist. Also use the FAIL_IF() macro to provide more verbose error
|
|
Michal Suchanek |
2a9f2c |
reporting if an error is encountered.
|
|
Michal Suchanek |
2a9f2c |
|
|
Michal Suchanek |
2a9f2c |
Fixes: 57201d657eb7 ("selftest/powerpc: Add PAPR sysfs attributes sniff test")
|
|
Michal Suchanek |
2a9f2c |
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
|
|
Michal Suchanek |
2a9f2c |
Link: https://lore.kernel.org/r/20220619233103.2666171-1-mpe@ellerman.id.au
|
|
Michal Suchanek |
2a9f2c |
Acked-by: Michal Suchanek <msuchanek@suse.de>
|
|
Michal Suchanek |
2a9f2c |
---
|
|
Michal Suchanek |
2a9f2c |
.../powerpc/papr_attributes/attr_test.c | 30 +++++++++++--------
|
|
Michal Suchanek |
2a9f2c |
1 file changed, 18 insertions(+), 12 deletions(-)
|
|
Michal Suchanek |
2a9f2c |
|
|
Michal Suchanek |
2a9f2c |
diff --git a/tools/testing/selftests/powerpc/papr_attributes/attr_test.c b/tools/testing/selftests/powerpc/papr_attributes/attr_test.c
|
|
Michal Suchanek |
2a9f2c |
index bab0dc06e90b..9b655be641c9 100644
|
|
Michal Suchanek |
2a9f2c |
--- a/tools/testing/selftests/powerpc/papr_attributes/attr_test.c
|
|
Michal Suchanek |
2a9f2c |
+++ b/tools/testing/selftests/powerpc/papr_attributes/attr_test.c
|
|
Michal Suchanek |
2a9f2c |
@@ -7,6 +7,7 @@
|
|
Michal Suchanek |
2a9f2c |
* Copyright 2022, Pratik Rajesh Sampat, IBM Corp.
|
|
Michal Suchanek |
2a9f2c |
*/
|
|
Michal Suchanek |
2a9f2c |
|
|
Michal Suchanek |
2a9f2c |
+#include <errno.h>
|
|
Michal Suchanek |
2a9f2c |
#include <stdio.h>
|
|
Michal Suchanek |
2a9f2c |
#include <string.h>
|
|
Michal Suchanek |
2a9f2c |
#include <dirent.h>
|
|
Michal Suchanek |
2a9f2c |
@@ -32,7 +33,7 @@ enum type {
|
|
Michal Suchanek |
2a9f2c |
NUM_VAL
|
|
Michal Suchanek |
2a9f2c |
};
|
|
Michal Suchanek |
2a9f2c |
|
|
Michal Suchanek |
2a9f2c |
-int value_type(int id)
|
|
Michal Suchanek |
2a9f2c |
+static int value_type(int id)
|
|
Michal Suchanek |
2a9f2c |
{
|
|
Michal Suchanek |
2a9f2c |
int val_type;
|
|
Michal Suchanek |
2a9f2c |
|
|
Michal Suchanek |
2a9f2c |
@@ -54,15 +55,21 @@ int value_type(int id)
|
|
Michal Suchanek |
2a9f2c |
return val_type;
|
|
Michal Suchanek |
2a9f2c |
}
|
|
Michal Suchanek |
2a9f2c |
|
|
Michal Suchanek |
2a9f2c |
-int verify_energy_info(void)
|
|
Michal Suchanek |
2a9f2c |
+static int verify_energy_info(void)
|
|
Michal Suchanek |
2a9f2c |
{
|
|
Michal Suchanek |
2a9f2c |
const char *path = "/sys/firmware/papr/energy_scale_info";
|
|
Michal Suchanek |
2a9f2c |
struct dirent *entry;
|
|
Michal Suchanek |
2a9f2c |
struct stat s;
|
|
Michal Suchanek |
2a9f2c |
DIR *dirp;
|
|
Michal Suchanek |
2a9f2c |
|
|
Michal Suchanek |
2a9f2c |
- if (stat(path, &s) || !S_ISDIR(s.st_mode))
|
|
Michal Suchanek |
2a9f2c |
- return -1;
|
|
Michal Suchanek |
2a9f2c |
+ errno = 0;
|
|
Michal Suchanek |
2a9f2c |
+ if (stat(path, &s)) {
|
|
Michal Suchanek |
2a9f2c |
+ SKIP_IF(errno == ENOENT);
|
|
Michal Suchanek |
2a9f2c |
+ FAIL_IF(errno);
|
|
Michal Suchanek |
2a9f2c |
+ }
|
|
Michal Suchanek |
2a9f2c |
+
|
|
Michal Suchanek |
2a9f2c |
+ FAIL_IF(!S_ISDIR(s.st_mode));
|
|
Michal Suchanek |
2a9f2c |
+
|
|
Michal Suchanek |
2a9f2c |
dirp = opendir(path);
|
|
Michal Suchanek |
2a9f2c |
|
|
Michal Suchanek |
2a9f2c |
while ((entry = readdir(dirp)) != NULL) {
|
|
Michal Suchanek |
2a9f2c |
@@ -76,25 +83,24 @@ int verify_energy_info(void)
|
|
Michal Suchanek |
2a9f2c |
|
|
Michal Suchanek |
2a9f2c |
id = atoi(entry->d_name);
|
|
Michal Suchanek |
2a9f2c |
attr_type = value_type(id);
|
|
Michal Suchanek |
2a9f2c |
- if (attr_type == INVALID)
|
|
Michal Suchanek |
2a9f2c |
- return -1;
|
|
Michal Suchanek |
2a9f2c |
+ FAIL_IF(attr_type == INVALID);
|
|
Michal Suchanek |
2a9f2c |
|
|
Michal Suchanek |
2a9f2c |
/* Check if the files exist and have data in them */
|
|
Michal Suchanek |
2a9f2c |
sprintf(file_name, "%s/%d/desc", path, id);
|
|
Michal Suchanek |
2a9f2c |
f = fopen(file_name, "r");
|
|
Michal Suchanek |
2a9f2c |
- if (!f || fgetc(f) == EOF)
|
|
Michal Suchanek |
2a9f2c |
- return -1;
|
|
Michal Suchanek |
2a9f2c |
+ FAIL_IF(!f);
|
|
Michal Suchanek |
2a9f2c |
+ FAIL_IF(fgetc(f) == EOF);
|
|
Michal Suchanek |
2a9f2c |
|
|
Michal Suchanek |
2a9f2c |
sprintf(file_name, "%s/%d/value", path, id);
|
|
Michal Suchanek |
2a9f2c |
f = fopen(file_name, "r");
|
|
Michal Suchanek |
2a9f2c |
- if (!f || fgetc(f) == EOF)
|
|
Michal Suchanek |
2a9f2c |
- return -1;
|
|
Michal Suchanek |
2a9f2c |
+ FAIL_IF(!f);
|
|
Michal Suchanek |
2a9f2c |
+ FAIL_IF(fgetc(f) == EOF);
|
|
Michal Suchanek |
2a9f2c |
|
|
Michal Suchanek |
2a9f2c |
if (attr_type == STR_VAL) {
|
|
Michal Suchanek |
2a9f2c |
sprintf(file_name, "%s/%d/value_desc", path, id);
|
|
Michal Suchanek |
2a9f2c |
f = fopen(file_name, "r");
|
|
Michal Suchanek |
2a9f2c |
- if (!f || fgetc(f) == EOF)
|
|
Michal Suchanek |
2a9f2c |
- return -1;
|
|
Michal Suchanek |
2a9f2c |
+ FAIL_IF(!f);
|
|
Michal Suchanek |
2a9f2c |
+ FAIL_IF(fgetc(f) == EOF);
|
|
Michal Suchanek |
2a9f2c |
}
|
|
Michal Suchanek |
2a9f2c |
}
|
|
Michal Suchanek |
2a9f2c |
|
|
Michal Suchanek |
2a9f2c |
--
|
|
Michal Suchanek |
2a9f2c |
2.35.3
|
|
Michal Suchanek |
2a9f2c |
|