summaryrefslogtreecommitdiff
path: root/android-mainline/ANDROID-tools-Miscellaneous.patch
diff options
context:
space:
mode:
Diffstat (limited to 'android-mainline/ANDROID-tools-Miscellaneous.patch')
-rw-r--r--android-mainline/ANDROID-tools-Miscellaneous.patch353
1 files changed, 274 insertions, 79 deletions
diff --git a/android-mainline/ANDROID-tools-Miscellaneous.patch b/android-mainline/ANDROID-tools-Miscellaneous.patch
index a6fca29f..218ee094 100644
--- a/android-mainline/ANDROID-tools-Miscellaneous.patch
+++ b/android-mainline/ANDROID-tools-Miscellaneous.patch
@@ -7,11 +7,16 @@ Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Ic155709fbf07ec0575fa2fa954ee199e63051a97
---
tools/testing/android/OWNERS | 4 +
- tools/testing/android/bin/acloudb.sh | 43 +++++++++++
- tools/testing/android/bin/kselftest.sh | 76 +++++++++++++++++++
- .../selftests/android/config_arm64.xml | 55 ++++++++++++++
- .../selftests/android/config_x86_64.xml | 55 ++++++++++++++
- 5 files changed, 233 insertions(+)
+ tools/testing/android/bin/acloudb.sh | 43 +++++++++
+ tools/testing/android/bin/kselftest.sh | 88 +++++++++++++++++++
+ .../selftests/android/config_arm64.xml | 84 ++++++++++++++++++
+ .../selftests/android/config_x86_64.xml | 84 ++++++++++++++++++
+ .../filesystems/binderfs/binderfs_test.c | 10 +++
+ .../selftests/futex/functional/futex_wait.c | 6 ++
+ .../futex/functional/futex_wait_timeout.c | 11 ++-
+ .../futex/functional/futex_wait_wouldblock.c | 13 ++-
+ tools/testing/selftests/rtc/rtctest.c | 2 +
+ 10 files changed, 338 insertions(+), 7 deletions(-)
create mode 100644 tools/testing/android/OWNERS
create mode 100755 tools/testing/android/bin/acloudb.sh
create mode 100755 tools/testing/android/bin/kselftest.sh
@@ -79,7 +84,7 @@ diff --git a/tools/testing/android/bin/kselftest.sh b/tools/testing/android/bin/
new file mode 100755
--- /dev/null
+++ b/tools/testing/android/bin/kselftest.sh
-@@ -0,0 +1,76 @@
+@@ -0,0 +1,88 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: GPL-2.0
+
@@ -147,7 +152,19 @@ new file mode 100755
+fi
+
+echo "Building selftests..."
-+$BAZEL build //common:kselftest_tests_x86_64
++ABI=$(adb shell getprop ro.product.cpu.abi)
++case $ABI in
++ arm64*)
++ $BAZEL build //common:kselftest_tests_arm64
++ ;;
++ x86_64*)
++ $BAZEL build //common:kselftest_tests_x86_64
++ ;;
++ *)
++ echo "$ABI not supported"
++ exit 1
++ ;;
++esac
+
+$TRADEFED run commandAndExit template/local_min --template:map test=suite/test_mapping_suite \
+--include-filter selftests --tests-dir=$TESTSDIR --primary-abi-only
@@ -160,11 +177,14 @@ diff --git a/tools/testing/selftests/android/config_arm64.xml b/tools/testing/se
new file mode 100644
--- /dev/null
+++ b/tools/testing/selftests/android/config_arm64.xml
-@@ -0,0 +1,55 @@
+@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2023 The Android Open Source Project
+SPDX-License-Identifier: GPL-2.0 OR Apache-2.0
+-->
++<!DOCTYPE configuration [
++<!ENTITY ktest_dir "/data/selftests/arm64">
++]>
+<configuration description="kselftest">
+ <option name="test-suite-tag" value="kernel-test" />
+ <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
@@ -174,57 +194,86 @@ new file mode 100644
+ <option name="cleanup" value="true" />
+ <option name="push-file" key="selftests" value="/data/selftests" />
+ <option name="skip-abi-filtering" value="true" />
-+ <option name="post-push" value='chmod -R 755 /data/selftests; find /data/selftests; -type f | xargs grep -l -e "bin/sh" -e "bin/bash" | xargs sed -i -e "s?/bin/echo?echo?" -i -e "s?#!/bin/sh?#!/system/bin/sh?" -i -e "s?#!/bin/bash?#!/system/bin/sh?" || echo "There were no files to process"' />
++ <option name="post-push" value='chmod -R 755 /data/selftests; find /data/selftests -type f | xargs grep -l -e "bin/sh" -e "bin/bash" | xargs sed -i -e "s?/bin/echo?echo?" -i -e "s?#!/bin/sh?#!/system/bin/sh?" -i -e "s?#!/bin/bash?#!/system/bin/sh?" || echo "There were no files to process"' />
+ </target_preparer>
+
+ <test class="com.android.tradefed.testtype.binary.KernelTargetTest" >
+ <option name="exit-code-skip" value="4" />
+ <option name="skip-binary-check" value="true" />
-+ <option name="test-command-line" key="kselftest_binderfs_binderfs_test" value="/data/selftests/arm64/kselftest_binderfs_binderfs_test" />
-+ <option name="test-command-line" key="kselftest_breakpoints_breakpoint_test" value="/data/selftests/arm64/kselftest_breakpoints_breakpoint_test" />
-+ <option name="test-command-line" key="kselftest_breakpoints_step_after_suspend_test" value="/data/selftests/arm64/kselftest_breakpoints_step_after_suspend_test" />
-+ <option name="test-command-line" key="kselftest_futex_run" value="cd /data/selftests/arm64/;USE_COLOR=0 ./kselftest_futex_run" />
-+ <option name="test-command-line" key="kselftest_kcmp_kcmp_test" value="/data/selftests/arm64/kselftest_kcmp_kcmp_test" />
-+ <option name="test-command-line" key="kselftest_ptrace_peeksiginfo" value="/data/selftests/arm64/kselftest_ptrace_peeksiginfo" />
-+ <option name="test-command-line" key="kselftest_rtc_rtctest" value="/data/selftests/arm64/kselftest_rtc_rtctest" />
-+ <option name="test-command-line" key="kselftest_vdso_vdso_test_abi" value="/data/selftests/arm64/kselftest_vdso_vdso_test_abi" />
-+ <option name="test-command-line" key="kselftest_vdso_vdso_test_clock_getres" value="/data/selftests/arm64/kselftest_vdso_vdso_test_clock_getres" />
-+ <option name="test-command-line" key="kselftest_vdso_vdso_test_getcpu" value="/data/selftests/arm64/kselftest_vdso_vdso_test_getcpu" />
-+ <option name="test-command-line" key="kselftest_vdso_vdso_test_gettimeofday" value="/data/selftests/arm64/kselftest_vdso_vdso_test_gettimeofday" />
-+ <option name="test-command-line" key="kselftest_size_test_get_size" value="/data/selftests/arm64/kselftest_size_test_get_size" />
-+ <option name="test-command-line" key="kselftest_mm_mremap_dontunmap" value="/data/selftests/arm64/kselftest_mm_mremap_dontunmap" />
-+ <option name="test-command-line" key="kselftest_mm_mremap_test" value="/data/selftests/arm64/kselftest_mm_mremap_test" />
-+ <option name="test-command-line" key="kselftest_mm_uffd_unit_tests" value="/data/selftests/arm64/kselftest_mm_uffd_unit_tests" />
-+ <option name="test-command-line" key="kselftest_timers_adjtick" value="/data/selftests/arm64/kselftest_timers_adjtick" />
-+ <option name="test-command-line" key="kselftest_timers_alarmtimer_suspend" value="/data/selftests/arm64/kselftest_timers_alarmtimer_suspend" />
-+ <option name="test-command-line" key="kselftest_timers_change_skew" value="/data/selftests/arm64/kselftest_timers_change_skew" />
-+ <option name="test-command-line" key="kselftest_timers_clocksource_switch" value="/data/selftests/arm64/kselftest_timers_clocksource_switch" />
-+ <option name="test-command-line" key="kselftest_timers_freq_step" value="/data/selftests/arm64/kselftest_timers_freq_step" />
-+ <option name="test-command-line" key="kselftest_timers_inconsistency_check" value="/data/selftests/arm64/kselftest_timers_inconsistency_check" />
-+ <option name="test-command-line" key="kselftest_timers_leap_a_day" value="/data/selftests/arm64/kselftest_timers_leap_a_day" />
-+ <option name="test-command-line" key="kselftest_timers_leapcrash" value="/data/selftests/arm64/kselftest_timers_leapcrash" />
-+ <option name="test-command-line" key="kselftest_timers_nanosleep" value="/data/selftests/arm64/kselftest_timers_nanosleep" />
-+ <option name="test-command-line" key="kselftest_timers_nsleep_lat" value="/data/selftests/arm64/kselftest_timers_nsleep_lat" />
-+ <option name="test-command-line" key="kselftest_timers_posix_timers" value="/data/selftests/arm64/kselftest_timers_posix_timers" />
-+ <option name="test-command-line" key="kselftest_timers_set_2038" value="/data/selftests/arm64/kselftest_timers_set_2038" />
-+ <option name="test-command-line" key="kselftest_timers_set_tai" value="/data/selftests/arm64/kselftest_timers_set_tai" />
-+ <option name="test-command-line" key="kselftest_timers_set_timer_lat" value="/data/selftests/arm64/kselftest_timers_set_timer_lat" />
-+ <option name="test-command-line" key="kselftest_timers_set_tz" value="/data/selftests/arm64/kselftest_timers_set_tz" />
-+ <option name="test-command-line" key="kselftest_timers_skew_consistency" value="/data/selftests/arm64/kselftest_timers_skew_consistency" />
-+ <option name="test-command-line" key="kselftest_timers_tests_raw_skew" value="/data/selftests/arm64/kselftest_timers_tests_raw_skew" />
-+ <option name="test-command-line" key="kselftest_timers_threadtest" value="/data/selftests/arm64/kselftest_timers_threadtest" />
-+ <option name="test-command-line" key="kselftest_timers_valid_adjtimex" value="/data/selftests/arm64/kselftest_timers_valid_adjtimex" />
++ <option name="test-command-line" key="kselftest_binderfs_binderfs_test" value="cd &ktest_dir;; ./kselftest_binderfs_binderfs_test" />
++ <option name="test-command-line" key="kselftest_breakpoints_breakpoint_test" value="cd &ktest_dir;; ./kselftest_breakpoints_breakpoint_test" />
++ <option name="test-command-line" key="kselftest_futex_requeue" value="cd &ktest_dir;; ./futex_requeue" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi" value="cd &ktest_dir;; ./futex_requeue_pi" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_b" value="cd &ktest_dir;; ./futex_requeue_pi -b" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_bl" value="cd &ktest_dir;; ./futex_requeue_pi -b -l" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_bo" value="cd &ktest_dir;; ./futex_requeue_pi -b -o" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_l" value="cd &ktest_dir;; ./futex_requeue_pi -l" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_o" value="cd &ktest_dir;; ./futex_requeue_pi -o" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_5k" value="cd &ktest_dir;; ./futex_requeue_pi -t 5000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_b_5k" value="cd &ktest_dir;; ./futex_requeue_pi -b -t 5000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_bl_5k" value="cd &ktest_dir;; ./futex_requeue_pi -b -l -t 5000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_bo_5k" value="cd &ktest_dir;; ./futex_requeue_pi -b -o -t 5000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_l_5k" value="cd &ktest_dir;; ./futex_requeue_pi -l -t 5000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_o_5k" value="cd &ktest_dir;; ./futex_requeue_pi -o -t 5000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_500k" value="cd &ktest_dir;; ./futex_requeue_pi -t 500000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_b_500k" value="cd &ktest_dir;; ./futex_requeue_pi -b -t 500000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_bl_500k" value="cd &ktest_dir;; ./futex_requeue_pi -b -l -t 500000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_bo_500k" value="cd &ktest_dir;; ./futex_requeue_pi -b -o -t 500000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_l_500k" value="cd &ktest_dir;; ./futex_requeue_pi -l -t 500000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_o_500k" value="cd &ktest_dir;; ./futex_requeue_pi -o -t 500000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_bl_2G" value="cd &ktest_dir;; ./futex_requeue_pi -b -l -t 2000000000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_l_2G" value="cd &ktest_dir;; ./futex_requeue_pi -l -t 2000000000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_mismatched_ops" value="cd &ktest_dir;; ./futex_requeue_pi_mismatched_ops" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_signal_restart" value="cd &ktest_dir;; ./futex_requeue_pi_signal_restart" />
++ <option name="test-command-line" key="kselftest_futex_wait" value="cd &ktest_dir;; ./futex_wait" />
++ <option name="test-command-line" key="kselftest_futex_wait_private_mapped_file" value="cd &ktest_dir;; ./futex_wait_private_mapped_file" />
++ <option name="test-command-line" key="kselftest_futex_wait_timeout" value="cd &ktest_dir;; ./futex_wait_timeout" />
++ <option name="test-command-line" key="kselftest_futex_wait_uninitialized_heap" value="cd &ktest_dir;; ./futex_wait_uninitialized_heap" />
++ <option name="test-command-line" key="kselftest_futex_wait_wouldblock" value="cd &ktest_dir;; ./futex_wait_wouldblock" />
++ <option name="test-command-line" key="kselftest_kcmp_kcmp_test" value="cd &ktest_dir;; ./kselftest_kcmp_kcmp_test" />
++ <option name="test-command-line" key="kselftest_mm_mremap_dontunmap" value="cd &ktest_dir;; ./kselftest_mm_mremap_dontunmap" />
++ <option name="test-command-line" key="kselftest_mm_mremap_test" value="cd &ktest_dir;; ./kselftest_mm_mremap_test" />
++ <option name="test-command-line" key="kselftest_mm_uffd_unit_tests" value="cd &ktest_dir;; ./kselftest_mm_uffd_unit_tests" />
++ <option name="test-command-line" key="kselftest_ptrace_peeksiginfo" value="cd &ktest_dir;; ./kselftest_ptrace_peeksiginfo" />
++ <option name="test-command-line" key="kselftest_rtc_rtctest" value="cd &ktest_dir;; ./kselftest_rtc_rtctest" />
++ <option name="test-command-line" key="kselftest_size_test_get_size" value="cd &ktest_dir;; ./kselftest_size_test_get_size" />
++ <option name="test-command-line" key="kselftest_timers_adjtick" value="cd &ktest_dir;; ./kselftest_timers_adjtick" />
++ <option name="test-command-line" key="kselftest_timers_alarmtimer_suspend" value="cd &ktest_dir;; ./kselftest_timers_alarmtimer_suspend" />
++ <option name="test-command-line" key="kselftest_timers_change_skew" value="cd &ktest_dir;; ./kselftest_timers_change_skew" />
++ <option name="test-command-line" key="kselftest_timers_clocksource_switch" value="cd &ktest_dir;; ./kselftest_timers_clocksource_switch" />
++ <option name="test-command-line" key="kselftest_timers_freq_step" value="cd &ktest_dir;; ./kselftest_timers_freq_step" />
++ <option name="test-command-line" key="kselftest_timers_inconsistency_check" value="cd &ktest_dir;; ./kselftest_timers_inconsistency_check" />
++ <option name="test-command-line" key="kselftest_timers_leap_a_day" value="cd &ktest_dir;; ./kselftest_timers_leap_a_day" />
++ <option name="test-command-line" key="kselftest_timers_leapcrash" value="cd &ktest_dir;; ./kselftest_timers_leapcrash" />
++ <option name="test-command-line" key="kselftest_timers_nanosleep" value="cd &ktest_dir;; ./kselftest_timers_nanosleep" />
++ <option name="test-command-line" key="kselftest_timers_nsleep_lat" value="cd &ktest_dir;; ./kselftest_timers_nsleep_lat" />
++ <option name="test-command-line" key="kselftest_timers_posix_timers" value="cd &ktest_dir;; ./kselftest_timers_posix_timers" />
++ <option name="test-command-line" key="kselftest_timers_set_2038" value="cd &ktest_dir;; ./kselftest_timers_set_2038" />
++ <option name="test-command-line" key="kselftest_timers_set_tai" value="cd &ktest_dir;; ./kselftest_timers_set_tai" />
++ <option name="test-command-line" key="kselftest_timers_set_timer_lat" value="cd &ktest_dir;; ./kselftest_timers_set_timer_lat" />
++ <option name="test-command-line" key="kselftest_timers_set_tz" value="cd &ktest_dir;; ./kselftest_timers_set_tz" />
++ <option name="test-command-line" key="kselftest_timers_skew_consistency" value="cd &ktest_dir;; ./kselftest_timers_skew_consistency" />
++ <option name="test-command-line" key="kselftest_timers_tests_raw_skew" value="cd &ktest_dir;; ./kselftest_timers_tests_raw_skew" />
++ <option name="test-command-line" key="kselftest_timers_threadtest" value="cd &ktest_dir;; ./kselftest_timers_threadtest" />
++ <option name="test-command-line" key="kselftest_timers_valid_adjtimex" value="cd &ktest_dir;; ./kselftest_timers_valid_adjtimex" />
++ <option name="test-command-line" key="kselftest_vdso_vdso_test_abi" value="cd &ktest_dir;; ./kselftest_vdso_vdso_test_abi" />
++ <option name="test-command-line" key="kselftest_vdso_vdso_test_clock_getres" value="cd &ktest_dir;; ./kselftest_vdso_vdso_test_clock_getres" />
++ <option name="test-command-line" key="kselftest_vdso_vdso_test_getcpu" value="cd &ktest_dir;; ./kselftest_vdso_vdso_test_getcpu" />
++ <option name="test-command-line" key="kselftest_vdso_vdso_test_gettimeofday" value="cd &ktest_dir;; ./kselftest_vdso_vdso_test_gettimeofday" />
+ </test>
+</configuration>
diff --git a/tools/testing/selftests/android/config_x86_64.xml b/tools/testing/selftests/android/config_x86_64.xml
new file mode 100644
--- /dev/null
+++ b/tools/testing/selftests/android/config_x86_64.xml
-@@ -0,0 +1,55 @@
+@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2023 The Android Open Source Project
+SPDX-License-Identifier: GPL-2.0 OR Apache-2.0
+-->
++<!DOCTYPE configuration [
++<!ENTITY ktest_dir "/data/selftests/x86_64">
++]>
+<configuration description="kselftest">
+ <option name="test-suite-tag" value="kernel-test" />
+ <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
@@ -234,45 +283,191 @@ new file mode 100644
+ <option name="cleanup" value="true" />
+ <option name="push-file" key="selftests" value="/data/selftests" />
+ <option name="skip-abi-filtering" value="true" />
-+ <option name="post-push" value='chmod -R 755 /data/selftests; find /data/selftests; -type f | xargs grep -l -e "bin/sh" -e "bin/bash" | xargs sed -i -e "s?/bin/echo?echo?" -i -e "s?#!/bin/sh?#!/system/bin/sh?" -i -e "s?#!/bin/bash?#!/system/bin/sh?" || echo "There were no files to process"' />
++ <option name="post-push" value='chmod -R 755 /data/selftests; find /data/selftests -type f | xargs grep -l -e "bin/sh" -e "bin/bash" | xargs sed -i -e "s?/bin/echo?echo?" -i -e "s?#!/bin/sh?#!/system/bin/sh?" -i -e "s?#!/bin/bash?#!/system/bin/sh?" || echo "There were no files to process"' />
+ </target_preparer>
+
+ <test class="com.android.tradefed.testtype.binary.KernelTargetTest" >
+ <option name="exit-code-skip" value="4" />
+ <option name="skip-binary-check" value="true" />
-+ <option name="test-command-line" key="kselftest_binderfs_binderfs_test" value="/data/selftests/x86_64/kselftest_binderfs_binderfs_test" />
-+ <option name="test-command-line" key="kselftest_breakpoints_breakpoint_test" value="/data/selftests/x86_64/kselftest_breakpoints_breakpoint_test" />
-+ <option name="test-command-line" key="kselftest_breakpoints_step_after_suspend_test" value="/data/selftests/x86_64/kselftest_breakpoints_step_after_suspend_test" />
-+ <option name="test-command-line" key="kselftest_futex_run" value="cd /data/selftests/x86_64/;USE_COLOR=0 ./kselftest_futex_run" />
-+ <option name="test-command-line" key="kselftest_kcmp_kcmp_test" value="/data/selftests/x86_64/kselftest_kcmp_kcmp_test" />
-+ <option name="test-command-line" key="kselftest_ptrace_peeksiginfo" value="/data/selftests/x86_64/kselftest_ptrace_peeksiginfo" />
-+ <option name="test-command-line" key="kselftest_rtc_rtctest" value="/data/selftests/x86_64/kselftest_rtc_rtctest" />
-+ <option name="test-command-line" key="kselftest_vdso_vdso_test_abi" value="/data/selftests/x86_64/kselftest_vdso_vdso_test_abi" />
-+ <option name="test-command-line" key="kselftest_vdso_vdso_test_clock_getres" value="/data/selftests/x86_64/kselftest_vdso_vdso_test_clock_getres" />
-+ <option name="test-command-line" key="kselftest_vdso_vdso_test_getcpu" value="/data/selftests/x86_64/kselftest_vdso_vdso_test_getcpu" />
-+ <option name="test-command-line" key="kselftest_vdso_vdso_test_gettimeofday" value="/data/selftests/x86_64/kselftest_vdso_vdso_test_gettimeofday" />
-+ <option name="test-command-line" key="kselftest_size_test_get_size" value="/data/selftests/x86_64/kselftest_size_test_get_size" />
-+ <option name="test-command-line" key="kselftest_mm_mremap_dontunmap" value="/data/selftests/x86_64/kselftest_mm_mremap_dontunmap" />
-+ <option name="test-command-line" key="kselftest_mm_mremap_test" value="/data/selftests/x86_64/kselftest_mm_mremap_test" />
-+ <option name="test-command-line" key="kselftest_mm_uffd_unit_tests" value="/data/selftests/x86_64/kselftest_mm_uffd_unit_tests" />
-+ <option name="test-command-line" key="kselftest_timers_adjtick" value="/data/selftests/x86_64/kselftest_timers_adjtick" />
-+ <option name="test-command-line" key="kselftest_timers_alarmtimer_suspend" value="/data/selftests/x86_64/kselftest_timers_alarmtimer_suspend" />
-+ <option name="test-command-line" key="kselftest_timers_change_skew" value="/data/selftests/x86_64/kselftest_timers_change_skew" />
-+ <option name="test-command-line" key="kselftest_timers_clocksource_switch" value="/data/selftests/x86_64/kselftest_timers_clocksource_switch" />
-+ <option name="test-command-line" key="kselftest_timers_freq_step" value="/data/selftests/x86_64/kselftest_timers_freq_step" />
-+ <option name="test-command-line" key="kselftest_timers_inconsistency_check" value="/data/selftests/x86_64/kselftest_timers_inconsistency_check" />
-+ <option name="test-command-line" key="kselftest_timers_leap_a_day" value="/data/selftests/x86_64/kselftest_timers_leap_a_day" />
-+ <option name="test-command-line" key="kselftest_timers_leapcrash" value="/data/selftests/x86_64/kselftest_timers_leapcrash" />
-+ <option name="test-command-line" key="kselftest_timers_nanosleep" value="/data/selftests/x86_64/kselftest_timers_nanosleep" />
-+ <option name="test-command-line" key="kselftest_timers_nsleep_lat" value="/data/selftests/x86_64/kselftest_timers_nsleep_lat" />
-+ <option name="test-command-line" key="kselftest_timers_posix_timers" value="/data/selftests/x86_64/kselftest_timers_posix_timers" />
-+ <option name="test-command-line" key="kselftest_timers_set_2038" value="/data/selftests/x86_64/kselftest_timers_set_2038" />
-+ <option name="test-command-line" key="kselftest_timers_set_tai" value="/data/selftests/x86_64/kselftest_timers_set_tai" />
-+ <option name="test-command-line" key="kselftest_timers_set_timer_lat" value="/data/selftests/x86_64/kselftest_timers_set_timer_lat" />
-+ <option name="test-command-line" key="kselftest_timers_set_tz" value="/data/selftests/x86_64/kselftest_timers_set_tz" />
-+ <option name="test-command-line" key="kselftest_timers_skew_consistency" value="/data/selftests/x86_64/kselftest_timers_skew_consistency" />
-+ <option name="test-command-line" key="kselftest_timers_tests_raw_skew" value="/data/selftests/x86_64/kselftest_timers_tests_raw_skew" />
-+ <option name="test-command-line" key="kselftest_timers_threadtest" value="/data/selftests/x86_64/kselftest_timers_threadtest" />
-+ <option name="test-command-line" key="kselftest_timers_valid_adjtimex" value="/data/selftests/x86_64/kselftest_timers_valid_adjtimex" />
++ <option name="test-command-line" key="kselftest_binderfs_binderfs_test" value="cd &ktest_dir;; ./kselftest_binderfs_binderfs_test" />
++ <option name="test-command-line" key="kselftest_breakpoints_breakpoint_test" value="cd &ktest_dir;; ./kselftest_breakpoints_breakpoint_test" />
++ <option name="test-command-line" key="kselftest_futex_requeue" value="cd &ktest_dir;; ./futex_requeue" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi" value="cd &ktest_dir;; ./futex_requeue_pi" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_b" value="cd &ktest_dir;; ./futex_requeue_pi -b" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_bl" value="cd &ktest_dir;; ./futex_requeue_pi -b -l" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_bo" value="cd &ktest_dir;; ./futex_requeue_pi -b -o" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_l" value="cd &ktest_dir;; ./futex_requeue_pi -l" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_o" value="cd &ktest_dir;; ./futex_requeue_pi -o" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_5k" value="cd &ktest_dir;; ./futex_requeue_pi -t 5000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_b_5k" value="cd &ktest_dir;; ./futex_requeue_pi -b -t 5000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_bl_5k" value="cd &ktest_dir;; ./futex_requeue_pi -b -l -t 5000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_bo_5k" value="cd &ktest_dir;; ./futex_requeue_pi -b -o -t 5000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_l_5k" value="cd &ktest_dir;; ./futex_requeue_pi -l -t 5000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_o_5k" value="cd &ktest_dir;; ./futex_requeue_pi -o -t 5000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_500k" value="cd &ktest_dir;; ./futex_requeue_pi -t 500000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_b_500k" value="cd &ktest_dir;; ./futex_requeue_pi -b -t 500000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_bl_500k" value="cd &ktest_dir;; ./futex_requeue_pi -b -l -t 500000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_bo_500k" value="cd &ktest_dir;; ./futex_requeue_pi -b -o -t 500000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_l_500k" value="cd &ktest_dir;; ./futex_requeue_pi -l -t 500000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_o_500k" value="cd &ktest_dir;; ./futex_requeue_pi -o -t 500000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_bl_2G" value="cd &ktest_dir;; ./futex_requeue_pi -b -l -t 2000000000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_l_2G" value="cd &ktest_dir;; ./futex_requeue_pi -l -t 2000000000" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_mismatched_ops" value="cd &ktest_dir;; ./futex_requeue_pi_mismatched_ops" />
++ <option name="test-command-line" key="kselftest_futex_requeue_pi_signal_restart" value="cd &ktest_dir;; ./futex_requeue_pi_signal_restart" />
++ <option name="test-command-line" key="kselftest_futex_wait" value="cd &ktest_dir;; ./futex_wait" />
++ <option name="test-command-line" key="kselftest_futex_wait_private_mapped_file" value="cd &ktest_dir;; ./futex_wait_private_mapped_file" />
++ <option name="test-command-line" key="kselftest_futex_wait_timeout" value="cd &ktest_dir;; ./futex_wait_timeout" />
++ <option name="test-command-line" key="kselftest_futex_wait_uninitialized_heap" value="cd &ktest_dir;; ./futex_wait_uninitialized_heap" />
++ <option name="test-command-line" key="kselftest_futex_wait_wouldblock" value="cd &ktest_dir;; ./futex_wait_wouldblock" />
++ <option name="test-command-line" key="kselftest_kcmp_kcmp_test" value="cd &ktest_dir;; ./kselftest_kcmp_kcmp_test" />
++ <option name="test-command-line" key="kselftest_mm_mremap_dontunmap" value="cd &ktest_dir;; ./kselftest_mm_mremap_dontunmap" />
++ <option name="test-command-line" key="kselftest_mm_mremap_test" value="cd &ktest_dir;; ./kselftest_mm_mremap_test" />
++ <option name="test-command-line" key="kselftest_mm_uffd_unit_tests" value="cd &ktest_dir;; ./kselftest_mm_uffd_unit_tests" />
++ <option name="test-command-line" key="kselftest_ptrace_peeksiginfo" value="cd &ktest_dir;; ./kselftest_ptrace_peeksiginfo" />
++ <option name="test-command-line" key="kselftest_rtc_rtctest" value="cd &ktest_dir;; ./kselftest_rtc_rtctest" />
++ <option name="test-command-line" key="kselftest_size_test_get_size" value="cd &ktest_dir;; ./kselftest_size_test_get_size" />
++ <option name="test-command-line" key="kselftest_timers_adjtick" value="cd &ktest_dir;; ./kselftest_timers_adjtick" />
++ <option name="test-command-line" key="kselftest_timers_alarmtimer_suspend" value="cd &ktest_dir;; ./kselftest_timers_alarmtimer_suspend" />
++ <option name="test-command-line" key="kselftest_timers_change_skew" value="cd &ktest_dir;; ./kselftest_timers_change_skew" />
++ <option name="test-command-line" key="kselftest_timers_clocksource_switch" value="cd &ktest_dir;; ./kselftest_timers_clocksource_switch" />
++ <option name="test-command-line" key="kselftest_timers_freq_step" value="cd &ktest_dir;; ./kselftest_timers_freq_step" />
++ <option name="test-command-line" key="kselftest_timers_inconsistency_check" value="cd &ktest_dir;; ./kselftest_timers_inconsistency_check" />
++ <option name="test-command-line" key="kselftest_timers_leap_a_day" value="cd &ktest_dir;; ./kselftest_timers_leap_a_day" />
++ <option name="test-command-line" key="kselftest_timers_leapcrash" value="cd &ktest_dir;; ./kselftest_timers_leapcrash" />
++ <option name="test-command-line" key="kselftest_timers_nanosleep" value="cd &ktest_dir;; ./kselftest_timers_nanosleep" />
++ <option name="test-command-line" key="kselftest_timers_nsleep_lat" value="cd &ktest_dir;; ./kselftest_timers_nsleep_lat" />
++ <option name="test-command-line" key="kselftest_timers_posix_timers" value="cd &ktest_dir;; ./kselftest_timers_posix_timers" />
++ <option name="test-command-line" key="kselftest_timers_set_2038" value="cd &ktest_dir;; ./kselftest_timers_set_2038" />
++ <option name="test-command-line" key="kselftest_timers_set_tai" value="cd &ktest_dir;; ./kselftest_timers_set_tai" />
++ <option name="test-command-line" key="kselftest_timers_set_timer_lat" value="cd &ktest_dir;; ./kselftest_timers_set_timer_lat" />
++ <option name="test-command-line" key="kselftest_timers_set_tz" value="cd &ktest_dir;; ./kselftest_timers_set_tz" />
++ <option name="test-command-line" key="kselftest_timers_skew_consistency" value="cd &ktest_dir;; ./kselftest_timers_skew_consistency" />
++ <option name="test-command-line" key="kselftest_timers_tests_raw_skew" value="cd &ktest_dir;; ./kselftest_timers_tests_raw_skew" />
++ <option name="test-command-line" key="kselftest_timers_threadtest" value="cd &ktest_dir;; ./kselftest_timers_threadtest" />
++ <option name="test-command-line" key="kselftest_timers_valid_adjtimex" value="cd &ktest_dir;; ./kselftest_timers_valid_adjtimex" />
++ <option name="test-command-line" key="kselftest_vdso_vdso_test_abi" value="cd &ktest_dir;; ./kselftest_vdso_vdso_test_abi" />
++ <option name="test-command-line" key="kselftest_vdso_vdso_test_clock_getres" value="cd &ktest_dir;; ./kselftest_vdso_vdso_test_clock_getres" />
++ <option name="test-command-line" key="kselftest_vdso_vdso_test_getcpu" value="cd &ktest_dir;; ./kselftest_vdso_vdso_test_getcpu" />
++ <option name="test-command-line" key="kselftest_vdso_vdso_test_gettimeofday" value="cd &ktest_dir;; ./kselftest_vdso_vdso_test_gettimeofday" />
+ </test>
+</configuration>
+diff --git a/tools/testing/selftests/filesystems/binderfs/binderfs_test.c b/tools/testing/selftests/filesystems/binderfs/binderfs_test.c
+--- a/tools/testing/selftests/filesystems/binderfs/binderfs_test.c
++++ b/tools/testing/selftests/filesystems/binderfs/binderfs_test.c
+@@ -291,6 +291,11 @@ static int write_id_mapping(enum idmap_type type, pid_t pid, const char *buf,
+ return 0;
+ }
+
++static bool has_userns(void)
++{
++ return (access("/proc/self/ns/user", F_OK) == 0);
++}
++
+ static void change_userns(struct __test_metadata *_metadata, int syncfds[2])
+ {
+ int ret;
+@@ -378,6 +383,9 @@ static void *binder_version_thread(void *data)
+ */
+ TEST(binderfs_stress)
+ {
++ if (!has_userns())
++ SKIP(return, "%s: user namespace not supported\n", __func__);
++
+ int fds[1000];
+ int syncfds[2];
+ pid_t pid;
+@@ -502,6 +510,8 @@ TEST(binderfs_test_privileged)
+
+ TEST(binderfs_test_unprivileged)
+ {
++ if (!has_userns())
++ SKIP(return, "%s: user namespace not supported\n", __func__);
+ int ret;
+ int syncfds[2];
+ pid_t pid;
+diff --git a/tools/testing/selftests/futex/functional/futex_wait.c b/tools/testing/selftests/futex/functional/futex_wait.c
+--- a/tools/testing/selftests/futex/functional/futex_wait.c
++++ b/tools/testing/selftests/futex/functional/futex_wait.c
+@@ -96,6 +96,11 @@ int main(int argc, char *argv[])
+ /* Testing an anon page shared memory */
+ shm_id = shmget(IPC_PRIVATE, 4096, IPC_CREAT | 0666);
+ if (shm_id < 0) {
++ if (errno == ENOSYS) {
++ ksft_test_result_skip("shmget returned: %d %s\n",
++ errno, strerror(errno));
++ goto skip_anon_page_shared_memory_test;
++ }
+ perror("shmget");
+ exit(1);
+ }
+@@ -121,6 +126,7 @@ int main(int argc, char *argv[])
+ ksft_test_result_pass("futex_wake shared (page anon) succeeds\n");
+ }
+
++skip_anon_page_shared_memory_test:
+
+ /* Testing a file backed shared memory */
+ fd = open(SHM_PATH, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
+diff --git a/tools/testing/selftests/futex/functional/futex_wait_timeout.c b/tools/testing/selftests/futex/functional/futex_wait_timeout.c
+--- a/tools/testing/selftests/futex/functional/futex_wait_timeout.c
++++ b/tools/testing/selftests/futex/functional/futex_wait_timeout.c
+@@ -64,9 +64,14 @@ void *get_pi_lock(void *arg)
+ static void test_timeout(int res, int *ret, char *test_name, int err)
+ {
+ if (!res || errno != err) {
+- ksft_test_result_fail("%s returned %d\n", test_name,
+- res < 0 ? errno : res);
+- *ret = RET_FAIL;
++ if (errno == ENOSYS) {
++ ksft_test_result_skip("%s returned %d\n", test_name,
++ errno);
++ } else {
++ ksft_test_result_fail("%s returned %d\n", test_name,
++ res < 0 ? errno : res);
++ *ret = RET_FAIL;
++ }
+ } else {
+ ksft_test_result_pass("%s succeeds\n", test_name);
+ }
+diff --git a/tools/testing/selftests/futex/functional/futex_wait_wouldblock.c b/tools/testing/selftests/futex/functional/futex_wait_wouldblock.c
+--- a/tools/testing/selftests/futex/functional/futex_wait_wouldblock.c
++++ b/tools/testing/selftests/futex/functional/futex_wait_wouldblock.c
+@@ -98,10 +98,15 @@ int main(int argc, char *argv[])
+ info("Calling futex_waitv on f1: %u @ %p with val=%u\n", f1, &f1, f1+1);
+ res = futex_waitv(&waitv, 1, 0, &to, CLOCK_MONOTONIC);
+ if (!res || errno != EWOULDBLOCK) {
+- ksft_test_result_pass("futex_waitv returned: %d %s\n",
+- res ? errno : res,
+- res ? strerror(errno) : "");
+- ret = RET_FAIL;
++ if (errno == ENOSYS) {
++ ksft_test_result_skip("futex_waitv returned %d\n",
++ errno);
++ } else {
++ ksft_test_result_fail("futex_waitv returned: %d %s\n",
++ res ? errno : res,
++ res ? strerror(errno) : "");
++ ret = RET_FAIL;
++ }
+ } else {
+ ksft_test_result_pass("futex_waitv\n");
+ }
+diff --git a/tools/testing/selftests/rtc/rtctest.c b/tools/testing/selftests/rtc/rtctest.c
+--- a/tools/testing/selftests/rtc/rtctest.c
++++ b/tools/testing/selftests/rtc/rtctest.c
+@@ -122,6 +122,7 @@ TEST_F_TIMEOUT(rtc, date_read_loop, READ_LOOP_DURATION_SEC + 2) {
+ TH_LOG("Performed %ld RTC time reads.", iter_count);
+ }
+
++#ifndef __ANDROID__ // b/31578457
+ TEST_F_TIMEOUT(rtc, uie_read, NUM_UIE + 2) {
+ int i, rc, irq = 0;
+ unsigned long data;
+@@ -409,6 +410,7 @@ TEST_F_TIMEOUT(rtc, alarm_wkalm_set_minute, 65) {
+ new = timegm((struct tm *)&tm);
+ ASSERT_EQ(new, secs);
+ }
++#endif
+
+ static void __attribute__((constructor))
+ __constructor_order_last(void)