summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorSantosh Shukla <santosh.shukla@linaro.org>2014-08-19 21:53:00 +0530
committerViresh Kumar <viresh.kumar@linaro.org>2014-08-20 14:21:00 +0530
commit79127ad5e22376f4d6e6a1c9e33fce5a2b3e2e0d (patch)
tree66d56905e63a8513c809c60ffc51078a72ff4e3c /common
parente71038268a122472a6e7650e889df18a75cfcb68 (diff)
is-cpu-isolated.sh: broken x86 quirk switch in getopts
In case of x86 - spurious IPI lead to break isolation so mask them in script for temporary period. Only applicable for x86 HW. FIXME(TODO). Added -q switch to enable quirk for x86 isolation test. run this command - ./is-cpu-isolated.sh -q Change-Id: If3aa73755cd9f9a4c39debb99c70ed679dcbb40d Signed-off-by: Santosh Shukla <santosh.shukla@linaro.org> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Not-Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Diffstat (limited to 'common')
-rwxr-xr-xcommon/scripts/is-cpu-isolated.sh21
1 files changed, 18 insertions, 3 deletions
diff --git a/common/scripts/is-cpu-isolated.sh b/common/scripts/is-cpu-isolated.sh
index 3122c71..46a8095 100755
--- a/common/scripts/is-cpu-isolated.sh
+++ b/common/scripts/is-cpu-isolated.sh
@@ -25,6 +25,8 @@ DEBUG_SCRIPT=1 # Print debug messages, set 0 if not required
TASK="stress" # Single threaded task to Run on Isolated CPUs
FUNC="all" # Perform complete isolation test by default
SCRIPT_VERSION=1.0 # To track release version
+FILE="cat /proc/interrupts" # File to monitor for isolation
+QUIRKS="" # IPI mask variable for known x86 IPI quirk, default 'null'
RESULT="PASS"
# Variables to keep an eye on total interrupt counts
@@ -98,6 +100,7 @@ update_non_isol_cpus() {
# - one CPU, pass cpu number as parameter
# - all CPUs, pass "ALL" as parameter
total_interrupts() {
+ (([ $QUIRKS ] && $FILE | egrep -v $QUIRKS) || $FILE) |
awk -v isolate_cpu="$1" '
BEGIN {
line=0;
@@ -136,7 +139,7 @@ total_interrupts() {
}
# File to process
-' /proc/interrupts
+'
}
# Create per-cpu data plane cpuset
@@ -434,7 +437,7 @@ clear_cpusets() {
# Execution starts from HERE
-USAGE="Usage: $0 [-hv] [-ctfsd args] [-c <Comma separated isol cpulist (default cpu1)>] [-t <Task name for isolation (default stress)>] [-f <Function type options - isolate, duration, clear, nonisol_list, all (default all)>] [-s <Number of samples to take (default 1)>] [-d <Min Isolation duration expected in seconds (default 10)>]"
+USAGE="Usage: $0 [-hvq] [-ctfsd args] [-h <help>] [-v <script version>] [-q <quirks: X86_IPI>][-c <Comma separated isol cpulist (default cpu1)>] [-t <Task name for isolation (default stress)>] [-f <Function type options: isolate, duration, clear, all (default all)>] [-s <Number of samples to take (default 1)>] [-d <Min Isolation duration expected in seconds (default 10)>]"
# Run isolation test for $FUNC
run_func()
@@ -474,7 +477,7 @@ run_func()
# Parse isol arguments
parse_arguments()
{
- while getopts hvc:t:f:s:d: arguments 2>/dev/null
+ while getopts hvc:t:f:s:d:q: arguments 2>/dev/null
do
case $arguments in
h) # --help
@@ -508,6 +511,18 @@ parse_arguments()
MIN_ISOLATION=$OPTARG
;;
+ q) # --quirk
+ # Known Quirks:
+ # - X86_IPI: Spurious IPI's break isolation
+
+ if [ $OPTARG = X86_IPI ]; then
+ QUIRKS="interrupts|RTR|TLB|MCE|MCP|ERR|MIS"
+ isdebug echo "Enabled Quriks: $OPTARG"
+ else
+ echo "Invalid Quirk passed. Valid options: X86_IPI"
+ fi
+ ;;
+
\?) # getopts issues an error message
echo "$USAGE "
exit 1