Focus on returning the results of each test script rather
than the results of each subtest. This will help to keep the
number of PM-QA test results consistent across multiple boards
regardless of number of frequencies, cores, etc.
Examples before the refactoring:
https://validation.linaro.org/dashboard/streams
/anonymous/lisatn/bundles/331786fb33a49b060adccf51bb509d5f286422e7/
Examples after the refactoring:
https://validation.linaro.org/dashboard/streams/anonymous
/lisatn/bundles/3451b80ed9ba8a813b109dac1c41b09f0445f819/
Once this patch is accepted and merged, then there will be a
follow up patch to update the pwrmgmt test definition, so LAVA
can record PM-QA results accurately.
Signed-off-by: Lisa Nguyen <lisa.nguyen(a)linaro.org>
---
Change from v2 to v3:
- Fix a silly increment error for skip count cause I
didn't look closely enough
Changes from v1 to v2:
- Rewrite test_status_show() function
- Add description and log_skip() function in thermal_05
- Moved skip/fail/pass counts to log_end() function
cpufreq/cpufreq_07.sh | 2 +-
include/functions.sh | 35 ++++++++++++++++++++++++++++++-----
thermal/thermal_05.sh | 1 +
thermal/thermal_06.sh | 2 +-
4 files changed, 33 insertions(+), 7 deletions(-)
diff --git a/cpufreq/cpufreq_07.sh b/cpufreq/cpufreq_07.sh
index f8f9e8e..b65d212 100755
--- a/cpufreq/cpufreq_07.sh
+++ b/cpufreq/cpufreq_07.sh
@@ -74,7 +74,7 @@ check_ondemand() {
supported=$(cat $CPU_PATH/cpu0/cpufreq/scaling_available_governors | grep "ondemand")
if [ -z "$supported" ]; then
log_skip "ondemand not supported"
- exit 0
+ return 0
fi
save_governors
diff --git a/include/functions.sh b/include/functions.sh
index 417c725..763f413 100644
--- a/include/functions.sh
+++ b/include/functions.sh
@@ -32,14 +32,31 @@ INC=0
CPU=
pass_count=0
fail_count=0
+skip_count=0
+test_script_status="pass"
test_status_show() {
- echo "-------- total = $(($pass_count + $fail_count))"
- echo "-------- pass = $pass_count"
- # report failure only if it is there
- if [ $fail_count -ne 0 ] ; then
- echo "-------- fail = $fail_count"
+ if [ "$fail_count" -ne "0" ]; then
+ test_script_status="fail"
+ else
+ if [ "$skip_count" -ne "0" ]; then
+ if [ "$pass_count" -ne "0"]; then
+ test_script_status="pass"
+ else
+ test_script_status="skip"
+ fi
+ fi
+ fi
+
+ echo " "
+ if [[ "$test_script_status" == "fail" ]]; then
+ echo "$TEST_NAME: fail"
+ elif [[ "$test_script_status" == "skip" ]]; then
+ echo "$TEST_NAME: skip"
+ else
+ echo "$TEST_NAME: pass"
fi
+ echo " "
}
log_begin() {
@@ -49,6 +66,14 @@ log_begin() {
log_end() {
printf "$*\n"
+
+ if [[ "$*" == "Err" ]]; then
+ fail_count=$(($fail_count + 1))
+ elif [[ "$*" == "skip" ]]; then
+ skip_count=$(($skip_count + 1))
+ else
+ pass_count=$(($pass_count + 1))
+ fi
}
log_skip() {
diff --git a/thermal/thermal_05.sh b/thermal/thermal_05.sh
index 05f83d1..c621b49 100755
--- a/thermal/thermal_05.sh
+++ b/thermal/thermal_05.sh
@@ -36,6 +36,7 @@ verify_cpufreq_cooling_device_action() {
local cpufreq_cdev=$(cat $dirpath/type)
cat $dirpath/type | grep cpufreq
if [ $? -ne 0 ] ; then
+ log_skip "Cannot find cpufreq in $cdev_name..."
return 0
fi
diff --git a/thermal/thermal_06.sh b/thermal/thermal_06.sh
index 92c987a..d8877f0 100755
--- a/thermal/thermal_06.sh
+++ b/thermal/thermal_06.sh
@@ -30,7 +30,7 @@ source ../include/thermal_functions.sh
if [ "$thermal_try_max" -eq 0 ]; then
log_skip "test of trip points being crossed"
- exit 0
+ return 0
fi
TEST_LOOP=100
--
1.7.9.5
From: Patrick Bellasi <patrick.bellasi(a)arm.com>
To properly identify the initial PState of each CPU, the idlestat_wake_all
function is used to force an idle state exit on all CPUs by pinning idlestat
on each CPUs. However, this routine forgets to recover the original mask
at the end of the pinning process.
This patch solve this issue, by properly recovering the original CPU
affinity mask. Moreover, it avoids to wake up CPUs that will not be used
to run the workload.
Signed-off-by: Patrick Bellasi <patrick.bellasi(a)arm.com>
Signed-off-by: Daniel Lezcano <daniel.lezcano(a)linaro.org>
---
idlestat.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/idlestat.c b/idlestat.c
index 0e0e1df..2a0c549 100644
--- a/idlestat.c
+++ b/idlestat.c
@@ -1210,6 +1210,7 @@ static int idlestat_wake_all(void)
{
int rcpu, i, ret;
cpu_set_t cpumask;
+ cpu_set_t original_cpumask;
ret = sysconf(_SC_NPROCESSORS_CONF);
if (ret < 0)
@@ -1219,18 +1220,28 @@ static int idlestat_wake_all(void)
if (rcpu < 0)
return -1;
+ /* Keep track of the CPUs we will run on */
+ sched_getaffinity(0, sizeof(original_cpumask), &original_cpumask);
+
for (i = 0; i < ret; i++) {
/* Pointless to wake up ourself */
if (i == rcpu)
continue;
+ /* Pointless to wake CPUs we will not run on */
+ if (!CPU_ISSET(i, &original_cpumask))
+ continue;
+
CPU_ZERO(&cpumask);
CPU_SET(i, &cpumask);
sched_setaffinity(0, sizeof(cpumask), &cpumask);
}
+ /* Enable all the CPUs of the original mask */
+ sched_setaffinity(0, sizeof(original_cpumask), &original_cpumask);
+
return 0;
}
--
1.7.9.5
Focus on returning the results of each test script rather
than the results of each subtest. This will help to keep the
number of PM-QA test results consistent across multiple boards
regardless of number of frequencies, cores, etc.
Examples before the refactoring:
https://validation.linaro.org/dashboard/streams
/anonymous/lisatn/bundles/331786fb33a49b060adccf51bb509d5f286422e7/
Examples after the refactoring:
https://validation.linaro.org/dashboard/streams/anonymous
/lisatn/bundles/3451b80ed9ba8a813b109dac1c41b09f0445f819/
Once this patch is accepted and merged, then there will be a
follow up patch to update the pwrmgmt test definition, so LAVA
can record PM-QA results accurately.
Signed-off-by: Lisa Nguyen <lisa.nguyen(a)linaro.org>
---
Changes from v1 to v2:
- Rewrite test_status_show() function
- Add description and log_skip() function in thermal_05
- Moved skip/fail/pass counts to log_end() function
cpufreq/cpufreq_07.sh | 2 +-
include/functions.sh | 35 ++++++++++++++++++++++++++++++-----
thermal/thermal_05.sh | 1 +
thermal/thermal_06.sh | 2 +-
4 files changed, 33 insertions(+), 7 deletions(-)
diff --git a/cpufreq/cpufreq_07.sh b/cpufreq/cpufreq_07.sh
index f8f9e8e..b65d212 100755
--- a/cpufreq/cpufreq_07.sh
+++ b/cpufreq/cpufreq_07.sh
@@ -74,7 +74,7 @@ check_ondemand() {
supported=$(cat $CPU_PATH/cpu0/cpufreq/scaling_available_governors | grep "ondemand")
if [ -z "$supported" ]; then
log_skip "ondemand not supported"
- exit 0
+ return 0
fi
save_governors
diff --git a/include/functions.sh b/include/functions.sh
index 417c725..d06fb4e 100644
--- a/include/functions.sh
+++ b/include/functions.sh
@@ -32,14 +32,31 @@ INC=0
CPU=
pass_count=0
fail_count=0
+skip_count=0
+test_script_status="pass"
test_status_show() {
- echo "-------- total = $(($pass_count + $fail_count))"
- echo "-------- pass = $pass_count"
- # report failure only if it is there
- if [ $fail_count -ne 0 ] ; then
- echo "-------- fail = $fail_count"
+ if [ "$fail_count" -ne "0" ]; then
+ test_script_status="fail"
+ else
+ if [ "$skip_count" -ne "0" ]; then
+ if [ "$pass_count" -ne "0"]; then
+ test_script_status="pass"
+ else
+ test_script_status="skip"
+ fi
+ fi
+ fi
+
+ echo " "
+ if [[ "$test_script_status" == "fail" ]]; then
+ echo "$TEST_NAME: fail"
+ elif [[ "$test_script_status" == "skip" ]]; then
+ echo "$TEST_NAME: skip"
+ else
+ echo "$TEST_NAME: pass"
fi
+ echo " "
}
log_begin() {
@@ -49,6 +66,14 @@ log_begin() {
log_end() {
printf "$*\n"
+
+ if [[ "$*" == "Err" ]]; then
+ fail_count=$(($fail_count + 1))
+ elif [[ "$*" == "skip" ]]; then
+ skip_count=$(($fail_count + 1))
+ else
+ pass_count=$(($pass_count + 1))
+ fi
}
log_skip() {
diff --git a/thermal/thermal_05.sh b/thermal/thermal_05.sh
index 05f83d1..c621b49 100755
--- a/thermal/thermal_05.sh
+++ b/thermal/thermal_05.sh
@@ -36,6 +36,7 @@ verify_cpufreq_cooling_device_action() {
local cpufreq_cdev=$(cat $dirpath/type)
cat $dirpath/type | grep cpufreq
if [ $? -ne 0 ] ; then
+ log_skip "Cannot find cpufreq in $cdev_name..."
return 0
fi
diff --git a/thermal/thermal_06.sh b/thermal/thermal_06.sh
index 92c987a..d8877f0 100755
--- a/thermal/thermal_06.sh
+++ b/thermal/thermal_06.sh
@@ -30,7 +30,7 @@ source ../include/thermal_functions.sh
if [ "$thermal_try_max" -eq 0 ]; then
log_skip "test of trip points being crossed"
- exit 0
+ return 0
fi
TEST_LOOP=100
--
1.7.9.5
Focus on returning the results of each test script rather
than the results of each subtest. This will help to keep the
number of pm-qa test results consistent across multiple boards
regardless of number of frequencies, cores, etc.
Examples before the refactoring:
https://validation.linaro.org/dashboard/streams
/anonymous/lisatn/bundles/331786fb33a49b060adccf51bb509d5f286422e7/
Examples after the refactoring:
https://validation.linaro.org/dashboard/streams/anonymous
/lisatn/bundles/3451b80ed9ba8a813b109dac1c41b09f0445f819/
Questions and comments are highly encouraged as it's possible that
the logic can be improved, or my explanation can be clearer. Also,
once the final version of this patch is accepted and merged, then
there will be a follow up patch to update the pwrmgmt test
definition, so LAVA can record PM-QA results accurately.
Signed-off-by: Lisa Nguyen <lisa.nguyen(a)linaro.org>
---
cpufreq/cpufreq_09.sh | 2 +-
include/functions.sh | 22 +++++++++++++++++++---
include/thermal_functions.sh | 6 +++++-
thermal/thermal_06.sh | 2 +-
4 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/cpufreq/cpufreq_09.sh b/cpufreq/cpufreq_09.sh
index 7b65eec..62c953d 100755
--- a/cpufreq/cpufreq_09.sh
+++ b/cpufreq/cpufreq_09.sh
@@ -65,7 +65,7 @@ save_governors
supported=$(cat $CPU_PATH/cpu0/cpufreq/scaling_available_governors | grep "powersave")
if [ -z "$supported" ]; then
log_skip "powersave not supported"
- exit 0
+ return 0
fi
trap "restore_governors; sigtrap" SIGHUP SIGINT SIGTERM
diff --git a/include/functions.sh b/include/functions.sh
index 417c725..a4625ad 100644
--- a/include/functions.sh
+++ b/include/functions.sh
@@ -32,14 +32,29 @@ INC=0
CPU=
pass_count=0
fail_count=0
+skip_count=0
+test_script_status="true"
test_status_show() {
- echo "-------- total = $(($pass_count + $fail_count))"
- echo "-------- pass = $pass_count"
# report failure only if it is there
if [ $fail_count -ne 0 ] ; then
- echo "-------- fail = $fail_count"
+ test_script_status="false"
+ elif [[ $skip_count -ne 0 && $fail_count -eq 0 ]] ; then
+ test_script_status="skip"
+ elif [[ $pass_count -ne 0 && $skip_count -ne 0 ]] ; then
+ test_script_status="pass"
fi
+
+ #print test script result
+ echo " "
+ if [[ $test_script_status == "true" ]]; then
+ echo $TEST_NAME: "pass"
+ elif [[ $test_script_status == "skip" ]]; then
+ echo $TEST_NAME: "skip"
+ else
+ echo $TEST_NAME: "fail"
+ fi
+ echo " "
}
log_begin() {
@@ -54,6 +69,7 @@ log_end() {
log_skip() {
log_begin "$@"
log_end "skip"
+ skip_count=$(($skip_count + 1))
}
for_each_cpu() {
diff --git a/include/thermal_functions.sh b/include/thermal_functions.sh
index a51240b..a719487 100644
--- a/include/thermal_functions.sh
+++ b/include/thermal_functions.sh
@@ -44,11 +44,12 @@ check_valid_temp() {
if [ $temp_val -gt 0 ]; then
log_end "Ok"
+ pass_count=$(($pass_count + 1))
return 0
fi
log_end "Err"
-
+ fail_count=$(($fail_count + 1))
return 1
}
@@ -126,10 +127,12 @@ check_valid_binding() {
log_begin "checking $descr"
if [ $trip_point_val -ge $trip_point_max ]; then
log_end "Err"
+ fail_count=$(($fail_count + 1))
return 1
fi
log_end "Ok"
+ pass_count=$(($pass_count + 1))
return 0
}
@@ -165,6 +168,7 @@ for_each_cooling_device() {
devices=$(ls $THERMAL_PATH | grep "cooling_device['$MAX_CDEV']")
if [ "$devices" == "" ]; then
log_skip "no cooling devices"
+ skip_count=$(($skip_count + 1))
return 0
fi
diff --git a/thermal/thermal_06.sh b/thermal/thermal_06.sh
index 92c987a..d8877f0 100755
--- a/thermal/thermal_06.sh
+++ b/thermal/thermal_06.sh
@@ -30,7 +30,7 @@ source ../include/thermal_functions.sh
if [ "$thermal_try_max" -eq 0 ]; then
log_skip "test of trip points being crossed"
- exit 0
+ return 0
fi
TEST_LOOP=100
--
1.7.9.5
== Progress ==
* Enabling UEFI Fastboot on Panda - on hold (CARD-198: 0 %)
* CARD 1103: Flash support on u-boot fastboot (CARD-1103: 100%)
- Added oem format functionality, DFU Initialization
- Fixed partition related issues
- restructured the code as per Rob’s comments, sent the code for review
- Testing the changes for flashing command, fixing the issues in the process
== Plans ==
* CARD-198: Start working on the activity on Panda/BBB, depending on
availability of board (20%)
* CARD 1103: Send the patches for review to u-boot mailing list and
upstream. (CARD-1103: 80%)
- testing the changes and working on stabilization of flashing functionality
- Need to break the code into meaningful patches to upstream
== Issues ==
* None