[automerger skipped] cgroup_core01: disable cve-2021-4197_1 am: 74a0aa2dac -s ours

am skip reason: Merged-In I360bf9fbad888721e4e6234f355e2b8b10f7a4aa with SHA-1 994918441a is already in history

Original change: https://android-review.googlesource.com/c/platform/test/vts-testcase/kernel/+/2908683

Change-Id: I29455d608f943dfc78fa47bdf05cf040f741e550
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/abi/TEST_MAPPING b/abi/TEST_MAPPING
new file mode 100644
index 0000000..7cd30de
--- /dev/null
+++ b/abi/TEST_MAPPING
@@ -0,0 +1,8 @@
+{
+  "kernel-presubmit": [
+    {
+      "name": "KernelAbilistTest"
+    }
+  ]
+}
+
diff --git a/api/TEST_MAPPING b/api/TEST_MAPPING
new file mode 100644
index 0000000..aba9301
--- /dev/null
+++ b/api/TEST_MAPPING
@@ -0,0 +1,16 @@
+{
+  "kernel-presubmit": [
+    {
+      "name": "bpf_module_test"
+    },
+    {
+      "name": "drop_caches_test"
+    },
+    {
+      "name": "KernelApiSysfsTest"
+    },
+    {
+      "name": "vts_kernel_tun_test"
+    }
+  ]
+}
diff --git a/api/bpf_native_test/OWNERS b/api/bpf_native_test/OWNERS
index 4ebca2d..c53d0c4 100644
--- a/api/bpf_native_test/OWNERS
+++ b/api/bpf_native_test/OWNERS
@@ -1,3 +1,3 @@
 # Bug component: 31808
 set noparent
-file:platform/system/bpf:master:/OWNERS_bpf
+file:platform/system/bpf:main:/OWNERS_bpf
diff --git a/api/drop_caches_prop/Android.bp b/api/drop_caches_prop/Android.bp
index 3be048c..96cfb2c 100644
--- a/api/drop_caches_prop/Android.bp
+++ b/api/drop_caches_prop/Android.bp
@@ -25,7 +25,10 @@
         "libcutils",
         "liblog",
     ],
-    test_suites: ["vts"],
+    test_suites: [
+        "general-tests",
+        "vts",
+    ],
     auto_gen_config: true,
     require_root: false,
 }
diff --git a/api/drop_caches_prop/drop_caches_test.cpp b/api/drop_caches_prop/drop_caches_test.cpp
index 76707ab..a6ea1e3 100644
--- a/api/drop_caches_prop/drop_caches_test.cpp
+++ b/api/drop_caches_prop/drop_caches_test.cpp
@@ -130,11 +130,15 @@
       usage_after_minor.ru_minflt - usage_before_minor.ru_minflt;
   long without_cache_major_faults =
       usage_after_major.ru_majflt - usage_before_major.ru_majflt;
-  bool failure = abs(with_cache_minor_faults - without_cache_major_faults) > 2;
-  ALOGI("There were %ld minor faults and %ld major faults.",
-        with_cache_minor_faults, without_cache_major_faults);
-  ASSERT_EQ(failure, false)
-      << "The difference between minor and major faults was too large.";
+
+  long with_cache_major_faults =
+      usage_after_minor.ru_majflt - usage_before_minor.ru_majflt;
+  long without_cache_minor_faults =
+      usage_after_major.ru_minflt - usage_before_major.ru_minflt;
+
+  ASSERT_NEAR(with_cache_minor_faults, without_cache_major_faults, 2)
+    << "with_cache_major_faults=" << with_cache_major_faults
+    << " without_cache_minor_faults=" << without_cache_minor_faults;
 
   // Try to clean up the garbage.data file from the device.
   remove("/data/local/tmp/garbage.data");
diff --git a/api/sysfs/Android.bp b/api/sysfs/Android.bp
index e447d41..fbf5b7c 100644
--- a/api/sysfs/Android.bp
+++ b/api/sysfs/Android.bp
@@ -25,6 +25,7 @@
     ],
     srcs: ["src/**/*.java"],
     test_suites: [
+        "general-tests",
         "vts",
     ],
     test_config: "KernelApiSysfsTest.xml",
diff --git a/api/sysfs/src/com/android/tests/sysfs/KernelApiSysfsTest.java b/api/sysfs/src/com/android/tests/sysfs/KernelApiSysfsTest.java
index 247356e..9dcdfa4 100644
--- a/api/sysfs/src/com/android/tests/sysfs/KernelApiSysfsTest.java
+++ b/api/sysfs/src/com/android/tests/sysfs/KernelApiSysfsTest.java
@@ -93,10 +93,10 @@
      */
     @Test
     public void testPerCpuCpufreq() throws Exception {
-        String filePath = "/sys/devices/system/cpu/present";
+        String filePath = "/sys/devices/system/cpu/online";
         assertTrue(TargetFileUtils.isReadOnly(filePath, getDevice()));
-        String presentCpus = getDevice().pullFileContents(filePath).trim();
-        String[] cpuRanges = presentCpus.split(",");
+        String onlineCpus = getDevice().pullFileContents(filePath).trim();
+        String[] cpuRanges = onlineCpus.split(",");
         List<Integer> cpuList = new ArrayList<>();
         Pattern p = Pattern.compile("(\\d+)(-\\d+)?");
         for (String range : cpuRanges) {
diff --git a/api/tun/Android.bp b/api/tun/Android.bp
index 8ad5116..0b08cf1 100644
--- a/api/tun/Android.bp
+++ b/api/tun/Android.bp
@@ -23,7 +23,10 @@
     shared_libs: [
         "libbase",
     ],
-    test_suites: ["vts"],
+    test_suites: [
+        "general-tests",
+        "vts",
+    ],
     auto_gen_config: true,
     require_root: true,
 }
diff --git a/dynamic_partitions/Android.bp b/dynamic_partitions/Android.bp
index 9f271cd..3778d9c 100644
--- a/dynamic_partitions/Android.bp
+++ b/dynamic_partitions/Android.bp
@@ -24,6 +24,7 @@
     ],
     srcs: ["src/**/*.java"],
     test_suites: [
+        "general-tests",
         "vts",
     ],
     test_config: "KernelDynamicPartitionsTest.xml",
diff --git a/dynamic_partitions/TEST_MAPPING b/dynamic_partitions/TEST_MAPPING
new file mode 100644
index 0000000..e40232a
--- /dev/null
+++ b/dynamic_partitions/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "kernel-presubmit": [
+    {
+      "name": "KernelDynamicPartitionsTest"
+    }
+  ]
+}
diff --git a/encryption/TEST_MAPPING b/encryption/TEST_MAPPING
new file mode 100644
index 0000000..866dcc3
--- /dev/null
+++ b/encryption/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "kernel-presubmit": [
+    {
+      "name": "vts_kernel_encryption_test"
+    }
+  ]
+}
diff --git a/encryption/file_based_encryption_tests.cpp b/encryption/file_based_encryption_tests.cpp
index 58c656d..8f28ec1 100644
--- a/encryption/file_based_encryption_tests.cpp
+++ b/encryption/file_based_encryption_tests.cpp
@@ -1274,7 +1274,11 @@
 //
 // Note, this test will be flaky if the kernel is missing commit 093f0bac32b
 // ("f2fs: change fiemap way in printing compression chunk").
-TEST_F(FBEPolicyTest, TestF2fsCompression) {
+//
+// This test is currently disabled because the test is still flaky even with the
+// above fix, and it hasn't been able to be root-caused.  TODO(b/329449658):
+// root cause the issue and re-enable the test.
+TEST_F(FBEPolicyTest, DISABLED_TestF2fsCompression) {
   if (skip_test_) return;
 
   // Currently, only f2fs supports compression+encryption.
diff --git a/linux_kselftest/OWNERS b/linux_kselftest/OWNERS
deleted file mode 100644
index e32ce0e..0000000
--- a/linux_kselftest/OWNERS
+++ /dev/null
@@ -1,5 +0,0 @@
-# Bug component: 391836
-vmartensson@google.com
-edliaw@google.com
-bettyzhou@google.com
-joefradley@google.com
diff --git a/linux_kselftest/TEST_MAPPING b/linux_kselftest/TEST_MAPPING
deleted file mode 100644
index 30d3833..0000000
--- a/linux_kselftest/TEST_MAPPING
+++ /dev/null
@@ -1,60 +0,0 @@
-{
-  "presubmit": [
-    {
-      "name": "vts_linux_kselftest_arm_32"
-    },
-    {
-      "name": "vts_linux_kselftest_arm_64"
-    },
-    {
-      "name": "vts_linux_kselftest_riscv_64"
-    },
-    {
-      "name": "vts_linux_kselftest_x86_32",
-      "options": [
-        {
-          // TODO(b/191663053)
-          "exclude-filter": "x86_single_step_syscall_x86_32"
-        }
-      ]
-    },
-    {
-      "name": "vts_linux_kselftest_x86_64",
-      "options": [
-        {
-          // TODO(b/191663053)
-          "exclude-filter": "x86_single_step_syscall_x86_64"
-        }
-      ]
-    }
-  ],
-  "kernel-presubmit": [
-    {
-      "name": "vts_linux_kselftest_arm_32"
-    },
-    {
-      "name": "vts_linux_kselftest_arm_64"
-    },
-    {
-      "name": "vts_linux_kselftest_riscv_64"
-    },
-    {
-      "name": "vts_linux_kselftest_x86_32",
-      "options": [
-        {
-          // TODO(b/191663053)
-          "exclude-filter": "x86_single_step_syscall_x86_32"
-        }
-      ]
-    },
-    {
-      "name": "vts_linux_kselftest_x86_64",
-      "options": [
-        {
-          // TODO(b/191663053)
-          "exclude-filter": "x86_single_step_syscall_x86_64"
-        }
-      ]
-    }
-  ]
-}
diff --git a/linux_kselftest/testcases/Android.bp b/linux_kselftest/testcases/Android.bp
deleted file mode 100644
index eef39d0..0000000
--- a/linux_kselftest/testcases/Android.bp
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// Copyright (C) 2020 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-package {
-    default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
-sh_test {
-    name: "vts_linux_kselftest_arm_64",
-    src: "phony_kselftest_arm64.sh",
-    test_suites: [
-        "general-tests",
-        "vts"
-    ],
-    test_config: "vts_linux_kselftest_arm_64.xml",
-}
-
-sh_test {
-    name: "vts_linux_kselftest_arm_32",
-    src: "phony_kselftest_arm.sh",
-    test_suites: [
-        "general-tests",
-        "vts"
-    ],
-    test_config: "vts_linux_kselftest_arm_32.xml",
-}
-
-sh_test {
-    name: "vts_linux_kselftest_x86_64",
-    src: "phony_kselftest_x86_64.sh",
-    test_suites: [
-        "general-tests",
-        "vts"
-    ],
-    test_config: "vts_linux_kselftest_x86_64.xml",
-}
-
-sh_test {
-    name: "vts_linux_kselftest_x86_32",
-    src: "phony_kselftest_x86.sh",
-    test_suites: [
-        "general-tests",
-        "vts"
-    ],
-    test_config: "vts_linux_kselftest_x86_32.xml",
-}
-
-sh_test {
-    name: "vts_linux_kselftest_riscv_64",
-    src: "phony_kselftest_riscv64.sh",
-    test_suites: [
-        "general-tests",
-        "vts"
-    ],
-    test_config: "vts_linux_kselftest_riscv_64.xml",
-}
diff --git a/linux_kselftest/testcases/OWNERS b/linux_kselftest/testcases/OWNERS
deleted file mode 100644
index 1f6a131..0000000
--- a/linux_kselftest/testcases/OWNERS
+++ /dev/null
@@ -1,5 +0,0 @@
-# Bug component: 391836
-vmartensson@google.com
-edliaw@google.com
-henneman@google.com
-
diff --git a/linux_kselftest/testcases/phony_kselftest_arm.sh b/linux_kselftest/testcases/phony_kselftest_arm.sh
deleted file mode 100755
index e69de29..0000000
--- a/linux_kselftest/testcases/phony_kselftest_arm.sh
+++ /dev/null
diff --git a/linux_kselftest/testcases/phony_kselftest_arm64.sh b/linux_kselftest/testcases/phony_kselftest_arm64.sh
deleted file mode 100755
index e69de29..0000000
--- a/linux_kselftest/testcases/phony_kselftest_arm64.sh
+++ /dev/null
diff --git a/linux_kselftest/testcases/phony_kselftest_riscv64.sh b/linux_kselftest/testcases/phony_kselftest_riscv64.sh
deleted file mode 100755
index e69de29..0000000
--- a/linux_kselftest/testcases/phony_kselftest_riscv64.sh
+++ /dev/null
diff --git a/linux_kselftest/testcases/phony_kselftest_x86.sh b/linux_kselftest/testcases/phony_kselftest_x86.sh
deleted file mode 100755
index e69de29..0000000
--- a/linux_kselftest/testcases/phony_kselftest_x86.sh
+++ /dev/null
diff --git a/linux_kselftest/testcases/phony_kselftest_x86_64.sh b/linux_kselftest/testcases/phony_kselftest_x86_64.sh
deleted file mode 100755
index e69de29..0000000
--- a/linux_kselftest/testcases/phony_kselftest_x86_64.sh
+++ /dev/null
diff --git a/linux_kselftest/testcases/vts_linux_kselftest_arm_32.xml b/linux_kselftest/testcases/vts_linux_kselftest_arm_32.xml
deleted file mode 100644
index 45e4ce33..0000000
--- a/linux_kselftest/testcases/vts_linux_kselftest_arm_32.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-          http://www.apache.org/licenses/LICENSE-2.0
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<!DOCTYPE configuration [
-    <!ENTITY ktest_dir "/data/local/tmp/vts_kernel_kselftest_tests/DATA/nativetest/linux-kselftest">
-]>
-<configuration description="Runs vts_linux_kselftest.">
-    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
-    <target_preparer class="com.android.tradefed.targetprep.StopServicesSetup" />
-
-    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.KernelTestModuleController" >
-        <option name="arch" value="arm"/>
-    </object>
-
-    <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
-        <option name="cleanup" value="true" />
-        <option name="push" value="vts_kernel_kselftest_tests->/data/local/tmp/vts_kernel_kselftest_tests" />
-    </target_preparer>
-
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value='find &ktest_dir; -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?"' />
-    </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="binderfs_arm_32" value="chmod 755 &ktest_dir;/filesystems/binderfs/binderfs_test; cd &ktest_dir;/filesystems/binderfs; ./binderfs_test" />
-        <option name="test-command-line" key="capabilities_test_execve_arm_32" value="chmod 755 &ktest_dir;/capabilities/test_execve; cd &ktest_dir;/capabilities; ./test_execve" />
-        <option name="test-command-line" key="futex_functional_run.sh_arm_32" value="chmod 755 &ktest_dir;/futex/functional/run.sh; cd &ktest_dir;/futex/functional; USE_COLOR=0 ./run.sh" />
-        <option name="test-command-line" key="kcmp_kcmp_test_arm_32" value="chmod 755 &ktest_dir;/kcmp/kcmp_test; cd &ktest_dir;/kcmp; ./kcmp_test" />
-        <option name="test-command-line" key="net_reuseaddr_conflict_arm_32" value="chmod 755 &ktest_dir;/net/reuseaddr_conflict; cd &ktest_dir;/net; ./reuseaddr_conflict" />
-        <option name="test-command-line" key="net_socket_arm_32" value="chmod 755 &ktest_dir;/net/socket; cd &ktest_dir;/net; ./socket" />
-        <option name="test-command-line" key="rtc_rtctest_arm_32" value="chmod 755 &ktest_dir;/rtc/rtctest; cd &ktest_dir;/rtc; ./rtctest" />
-        <option name="test-command-line" key="seccomp_seccomp_bpf_arm_32" value="chmod 755 &ktest_dir;/seccomp/seccomp_bpf; cd &ktest_dir;/seccomp; ./seccomp_bpf" />
-        <option name="test-command-line" key="size_get_size_arm_32" value="chmod 755 &ktest_dir;/size/get_size; cd &ktest_dir;/size; ./get_size" />
-        <option name="test-command-line" key="splice_default_file_splice_read.sh_arm_32" value="chmod 755 &ktest_dir;/splice/default_file_splice_read.sh; cd &ktest_dir;/splice; ./default_file_splice_read.sh" />
-        <option name="test-command-line" key="timers_inconsistency-check_arm_32" value="chmod 755 &ktest_dir;/timers/inconsistency-check; cd &ktest_dir;/timers; ./inconsistency-check" />
-        <option name="test-command-line" key="timers_nanosleep_arm_32" value="chmod 755 &ktest_dir;/timers/nanosleep; cd &ktest_dir;/timers; ./nanosleep" />
-        <option name="test-command-line" key="timers_nsleep-lat_arm_32" value="chmod 755 &ktest_dir;/timers/nsleep-lat; cd &ktest_dir;/timers; ./nsleep-lat" />
-        <option name="test-command-line" key="timers_posix_timers_arm_32" value="chmod 755 &ktest_dir;/timers/posix_timers; cd &ktest_dir;/timers; ./posix_timers" />
-        <option name="test-command-line" key="timers_raw_skew_arm_32" value="chmod 755 &ktest_dir;/timers/raw_skew; cd &ktest_dir;/timers; ./raw_skew" />
-        <option name="test-command-line" key="timers_set-tai_arm_32" value="chmod 755 &ktest_dir;/timers/set-tai; cd &ktest_dir;/timers; ./set-tai" />
-        <option name="test-command-line" key="timers_set-timer-lat_arm_32" value="chmod 755 &ktest_dir;/timers/set-timer-lat; cd &ktest_dir;/timers; ./set-timer-lat" />
-        <option name="test-command-line" key="timers_threadtest_arm_32" value="chmod 755 &ktest_dir;/timers/threadtest; cd &ktest_dir;/timers; ./threadtest" />
-        <option name="test-command-line" key="timers_valid-adjtimex_arm_32" value="chmod 755 &ktest_dir;/timers/valid-adjtimex; cd &ktest_dir;/timers; ./valid-adjtimex" />
-        <option name="test-command-line" key="vm_mremap_dontunmap_arm_32" value="chmod 755 &ktest_dir;/vm/mremap_dontunmap; cd &ktest_dir;/vm; ./mremap_dontunmap" />
-        <option name="test-command-line" key="vm_userfaultfd_anon_arm_32" value="chmod 755 &ktest_dir;/vm/userfaultfd; cd &ktest_dir;/vm; ./userfaultfd anon 32 99" />
-        <option name="test-command-line" key="vm_userfaultfd_shmem_arm_32" value="chmod 755 &ktest_dir;/vm/userfaultfd; cd &ktest_dir;/vm; ./userfaultfd shmem 32 99" />
-    </test>
-</configuration>
-
diff --git a/linux_kselftest/testcases/vts_linux_kselftest_arm_64.xml b/linux_kselftest/testcases/vts_linux_kselftest_arm_64.xml
deleted file mode 100644
index be1c8e4..0000000
--- a/linux_kselftest/testcases/vts_linux_kselftest_arm_64.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-          http://www.apache.org/licenses/LICENSE-2.0
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<!DOCTYPE configuration [
-    <!ENTITY ktest_dir "/data/local/tmp/vts_kernel_kselftest_tests/DATA/nativetest64/linux-kselftest">
-]>
-<configuration description="Runs vts_linux_kselftest.">
-    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
-    <target_preparer class="com.android.tradefed.targetprep.StopServicesSetup" />
-
-    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.KernelTestModuleController" >
-        <option name="arch" value="arm64"/>
-    </object>
-
-    <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
-        <option name="cleanup" value="true" />
-        <option name="push" value="vts_kernel_kselftest_tests->/data/local/tmp/vts_kernel_kselftest_tests" />
-    </target_preparer>
-
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value='find &ktest_dir; -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?"' />
-    </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="binderfs_arm_64" value="chmod 755 &ktest_dir;/filesystems/binderfs/binderfs_test; cd &ktest_dir;/filesystems/binderfs; ./binderfs_test" />
-        <option name="test-command-line" key="breakpoints_breakpoint_test_arm64_arm_64" value="chmod 755 &ktest_dir;/breakpoints/breakpoint_test_arm64; cd &ktest_dir;/breakpoints; ./breakpoint_test_arm64" />
-        <option name="test-command-line" key="capabilities_test_execve_arm_64" value="chmod 755 &ktest_dir;/capabilities/test_execve; cd &ktest_dir;/capabilities; ./test_execve" />
-        <option name="test-command-line" key="futex_functional_run.sh_arm_64" value="chmod 755 &ktest_dir;/futex/functional/run.sh; cd &ktest_dir;/futex/functional; USE_COLOR=0 ./run.sh" />
-        <option name="test-command-line" key="kcmp_kcmp_test_arm_64" value="chmod 755 &ktest_dir;/kcmp/kcmp_test; cd &ktest_dir;/kcmp; ./kcmp_test" />
-        <option name="test-command-line" key="kvm_pvm_wipe_mem_arm_64" value="chmod 755 &ktest_dir;/kvm/aarch64/pvm_wipe_mem; cd &ktest_dir;/kvm/aarch64; ./pvm_wipe_mem" />
-        <option name="test-command-line" key="net_psock_tpacket_arm_64" value="chmod 755 &ktest_dir;/net/psock_tpacket; cd &ktest_dir;/net; ./psock_tpacket" />
-        <option name="test-command-line" key="net_reuseaddr_conflict_arm_64" value="chmod 755 &ktest_dir;/net/reuseaddr_conflict; cd &ktest_dir;/net; ./reuseaddr_conflict" />
-        <option name="test-command-line" key="net_socket_arm_64" value="chmod 755 &ktest_dir;/net/socket; cd &ktest_dir;/net; ./socket" />
-        <option name="test-command-line" key="ptrace_peeksiginfo_arm_64" value="chmod 755 &ktest_dir;/ptrace/peeksiginfo; cd &ktest_dir;/ptrace; ./peeksiginfo" />
-        <option name="test-command-line" key="rtc_rtctest_arm_64" value="chmod 755 &ktest_dir;/rtc/rtctest; cd &ktest_dir;/rtc; ./rtctest" />
-        <option name="test-command-line" key="seccomp_seccomp_bpf_arm_64" value="chmod 755 &ktest_dir;/seccomp/seccomp_bpf; cd &ktest_dir;/seccomp; ./seccomp_bpf" />
-        <option name="test-command-line" key="size_get_size_arm_64" value="chmod 755 &ktest_dir;/size/get_size; cd &ktest_dir;/size; ./get_size" />
-        <option name="test-command-line" key="splice_default_file_splice_read.sh_arm_64" value="chmod 755 &ktest_dir;/splice/default_file_splice_read.sh; cd &ktest_dir;/splice; ./default_file_splice_read.sh" />
-        <option name="test-command-line" key="timers_inconsistency-check_arm_64" value="chmod 755 &ktest_dir;/timers/inconsistency-check; cd &ktest_dir;/timers; ./inconsistency-check" />
-        <option name="test-command-line" key="timers_nanosleep_arm_64" value="chmod 755 &ktest_dir;/timers/nanosleep; cd &ktest_dir;/timers; ./nanosleep" />
-        <option name="test-command-line" key="timers_nsleep-lat_arm_64" value="chmod 755 &ktest_dir;/timers/nsleep-lat; cd &ktest_dir;/timers; ./nsleep-lat" />
-        <option name="test-command-line" key="timers_posix_timers_arm_64" value="chmod 755 &ktest_dir;/timers/posix_timers; cd &ktest_dir;/timers; ./posix_timers" />
-        <option name="test-command-line" key="timers_raw_skew_arm_64" value="chmod 755 &ktest_dir;/timers/raw_skew; cd &ktest_dir;/timers; ./raw_skew" />
-        <option name="test-command-line" key="timers_set-tai_arm_64" value="chmod 755 &ktest_dir;/timers/set-tai; cd &ktest_dir;/timers; ./set-tai" />
-        <option name="test-command-line" key="timers_set-timer-lat_arm_64" value="chmod 755 &ktest_dir;/timers/set-timer-lat; cd &ktest_dir;/timers; ./set-timer-lat" />
-        <option name="test-command-line" key="timers_threadtest_arm_64" value="chmod 755 &ktest_dir;/timers/threadtest; cd &ktest_dir;/timers; ./threadtest" />
-        <option name="test-command-line" key="timers_valid-adjtimex_arm_64" value="chmod 755 &ktest_dir;/timers/valid-adjtimex; cd &ktest_dir;/timers; ./valid-adjtimex" />
-        <option name="test-command-line" key="vDSO_kselftest_vdso_test_abi_arm_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test_abi; cd &ktest_dir;/vDSO; ./kselftest_vdso_test_abi" />
-        <option name="test-command-line" key="vDSO_kselftest_vdso_test_clock_getres_arm_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test_clock_getres; cd &ktest_dir;/vDSO; ./kselftest_vdso_test_clock_getres" />
-        <option name="test-command-line" key="vDSO_kselftest_vdso_test_getcpu_arm_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test_getcpu; cd &ktest_dir;/vDSO; ./kselftest_vdso_test_getcpu" />
-        <option name="test-command-line" key="vDSO_kselftest_vdso_test_gettimeofday_arm_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test_gettimeofday; cd &ktest_dir;/vDSO; ./kselftest_vdso_test_gettimeofday" />
-        <option name="test-command-line" key="vm_mremap_dontunmap_arm_64" value="chmod 755 &ktest_dir;/vm/mremap_dontunmap; cd &ktest_dir;/vm; ./mremap_dontunmap" />
-        <option name="test-command-line" key="vm_mremap_test_arm_64" value="chmod 755 &ktest_dir;/vm/mremap_test; cd &ktest_dir;/vm; ./mremap_test" />
-        <option name="test-command-line" key="vm_userfaultfd_anon_arm_64" value="chmod 755 &ktest_dir;/vm/userfaultfd; cd &ktest_dir;/vm; ./userfaultfd anon 32 99" />
-        <option name="test-command-line" key="vm_userfaultfd_shmem_arm_64" value="chmod 755 &ktest_dir;/vm/userfaultfd; cd &ktest_dir;/vm; ./userfaultfd shmem 32 99" />
-    </test>
-</configuration>
-
diff --git a/linux_kselftest/testcases/vts_linux_kselftest_riscv_64.xml b/linux_kselftest/testcases/vts_linux_kselftest_riscv_64.xml
deleted file mode 100644
index 6339073..0000000
--- a/linux_kselftest/testcases/vts_linux_kselftest_riscv_64.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-          http://www.apache.org/licenses/LICENSE-2.0
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<!DOCTYPE configuration [
-    <!ENTITY ktest_dir "/data/local/tmp/vts_kernel_tests/DATA/nativetest64/linux-kselftest">
-]>
-<configuration description="Runs vts_linux_kselftest.">
-    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
-    <target_preparer class="com.android.tradefed.targetprep.StopServicesSetup" />
-
-    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.KernelTestModuleController" >
-        <option name="arch" value="riscv64"/>
-    </object>
-
-    <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
-        <option name="cleanup" value="true" />
-        <option name="push" value="vts_kernel_tests->/data/local/tmp/vts_kernel_tests" />
-    </target_preparer>
-
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value='find &ktest_dir; -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?"' />
-    </target_preparer>
-
-    <test class="com.android.tradefed.testtype.binary.ExecutableTargetTest" >
-        <option name="test-command-line" key="capabilities_test_execve_riscv_64" value="chmod 755 &ktest_dir;/capabilities/test_execve; cd &ktest_dir;/capabilities; ./test_execve" />
-        <option name="test-command-line" key="futex_functional_run.sh_riscv_64" value="chmod 755 &ktest_dir;/futex/functional/run.sh; cd &ktest_dir;/futex/functional; ./run.sh" />
-        <option name="test-command-line" key="kcmp_kcmp_test_riscv_64" value="chmod 755 &ktest_dir;/kcmp/kcmp_test; cd &ktest_dir;/kcmp; ./kcmp_test" />
-        <option name="test-command-line" key="net_psock_tpacket_riscv_64" value="chmod 755 &ktest_dir;/net/psock_tpacket; cd &ktest_dir;/net; ./psock_tpacket" />
-        <option name="test-command-line" key="net_reuseaddr_conflict_riscv_64" value="chmod 755 &ktest_dir;/net/reuseaddr_conflict; cd &ktest_dir;/net; ./reuseaddr_conflict" />
-        <option name="test-command-line" key="net_socket_riscv_64" value="chmod 755 &ktest_dir;/net/socket; cd &ktest_dir;/net; ./socket" />
-        <option name="test-command-line" key="ptrace_peeksiginfo_riscv_64" value="chmod 755 &ktest_dir;/ptrace/peeksiginfo; cd &ktest_dir;/ptrace; ./peeksiginfo" />
-        <option name="test-command-line" key="rtc_rtctest_riscv_64" value="chmod 755 &ktest_dir;/rtc/rtctest; cd &ktest_dir;/rtc; ./rtctest" />
-        <option name="test-command-line" key="seccomp_seccomp_bpf_riscv_64" value="chmod 755 &ktest_dir;/seccomp/seccomp_bpf; cd &ktest_dir;/seccomp; ./seccomp_bpf" />
-        <option name="test-command-line" key="size_get_size_riscv_64" value="chmod 755 &ktest_dir;/size/get_size; cd &ktest_dir;/size; ./get_size" />
-        <option name="test-command-line" key="splice_default_file_splice_read.sh_riscv_64" value="chmod 755 &ktest_dir;/splice/default_file_splice_read.sh; cd &ktest_dir;/splice; ./default_file_splice_read.sh" />
-        <option name="test-command-line" key="timers_inconsistency-check_riscv_64" value="chmod 755 &ktest_dir;/timers/inconsistency-check; cd &ktest_dir;/timers; ./inconsistency-check" />
-        <option name="test-command-line" key="timers_nanosleep_riscv_64" value="chmod 755 &ktest_dir;/timers/nanosleep; cd &ktest_dir;/timers; ./nanosleep" />
-        <option name="test-command-line" key="timers_nsleep-lat_riscv_64" value="chmod 755 &ktest_dir;/timers/nsleep-lat; cd &ktest_dir;/timers; ./nsleep-lat" />
-        <option name="test-command-line" key="timers_posix_timers_riscv_64" value="chmod 755 &ktest_dir;/timers/posix_timers; cd &ktest_dir;/timers; ./posix_timers" />
-        <option name="test-command-line" key="timers_raw_skew_riscv_64" value="chmod 755 &ktest_dir;/timers/raw_skew; cd &ktest_dir;/timers; ./raw_skew" />
-        <option name="test-command-line" key="timers_set-tai_riscv_64" value="chmod 755 &ktest_dir;/timers/set-tai; cd &ktest_dir;/timers; ./set-tai" />
-        <option name="test-command-line" key="timers_set-timer-lat_riscv_64" value="chmod 755 &ktest_dir;/timers/set-timer-lat; cd &ktest_dir;/timers; ./set-timer-lat" />
-        <option name="test-command-line" key="timers_threadtest_riscv_64" value="chmod 755 &ktest_dir;/timers/threadtest; cd &ktest_dir;/timers; ./threadtest" />
-        <option name="test-command-line" key="timers_valid-adjtimex_riscv_64" value="chmod 755 &ktest_dir;/timers/valid-adjtimex; cd &ktest_dir;/timers; ./valid-adjtimex" />
-        <option name="test-command-line" key="vDSO_kselftest_vdso_test_riscv_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test; cd &ktest_dir;/vDSO; ./kselftest_vdso_test" />
-    </test>
-</configuration>
-
diff --git a/linux_kselftest/testcases/vts_linux_kselftest_x86_32.xml b/linux_kselftest/testcases/vts_linux_kselftest_x86_32.xml
deleted file mode 100644
index 8b24dff..0000000
--- a/linux_kselftest/testcases/vts_linux_kselftest_x86_32.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-          http://www.apache.org/licenses/LICENSE-2.0
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<!DOCTYPE configuration [
-    <!ENTITY ktest_dir "/data/local/tmp/vts_kernel_kselftest_tests/DATA/nativetest/linux-kselftest">
-]>
-<configuration description="Runs vts_linux_kselftest.">
-    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
-    <target_preparer class="com.android.tradefed.targetprep.StopServicesSetup" />
-
-    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.KernelTestModuleController" >
-        <option name="arch" value="x86"/>
-    </object>
-
-    <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
-        <option name="cleanup" value="true" />
-        <option name="push-file" key="vts_kernel_kselftest_tests" value="/data/local/tmp/vts_kernel_kselftest_tests" />
-        <option name="skip-abi-filtering" value="true" />
-    </target_preparer>
-
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value='find &ktest_dir; -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?"' />
-    </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="binderfs_x86_32" value="chmod 755 &ktest_dir;/filesystems/binderfs/binderfs_test; cd &ktest_dir;/filesystems/binderfs; ./binderfs_test" />
-        <option name="test-command-line" key="capabilities_test_execve_x86_32" value="chmod 755 &ktest_dir;/capabilities/test_execve; cd &ktest_dir;/capabilities; ./test_execve" />
-        <option name="test-command-line" key="futex_functional_run.sh_x86_32" value="chmod 755 &ktest_dir;/futex/functional/run.sh; cd &ktest_dir;/futex/functional; USE_COLOR=0 ./run.sh" />
-        <option name="test-command-line" key="kcmp_kcmp_test_x86_32" value="chmod 755 &ktest_dir;/kcmp/kcmp_test; cd &ktest_dir;/kcmp; ./kcmp_test" />
-        <option name="test-command-line" key="net_reuseaddr_conflict_x86_32" value="chmod 755 &ktest_dir;/net/reuseaddr_conflict; cd &ktest_dir;/net; ./reuseaddr_conflict" />
-        <option name="test-command-line" key="net_socket_x86_32" value="chmod 755 &ktest_dir;/net/socket; cd &ktest_dir;/net; ./socket" />
-        <option name="test-command-line" key="rtc_rtctest_x86_32" value="chmod 755 &ktest_dir;/rtc/rtctest; cd &ktest_dir;/rtc; ./rtctest" />
-        <option name="test-command-line" key="seccomp_seccomp_bpf_x86_32" value="chmod 755 &ktest_dir;/seccomp/seccomp_bpf; cd &ktest_dir;/seccomp; ./seccomp_bpf" />
-        <option name="test-command-line" key="size_get_size_x86_32" value="chmod 755 &ktest_dir;/size/get_size; cd &ktest_dir;/size; ./get_size" />
-        <option name="test-command-line" key="splice_default_file_splice_read.sh_x86_32" value="chmod 755 &ktest_dir;/splice/default_file_splice_read.sh; cd &ktest_dir;/splice; ./default_file_splice_read.sh" />
-        <option name="test-command-line" key="timers_inconsistency-check_x86_32" value="chmod 755 &ktest_dir;/timers/inconsistency-check; cd &ktest_dir;/timers; ./inconsistency-check" />
-        <option name="test-command-line" key="timers_nanosleep_x86_32" value="chmod 755 &ktest_dir;/timers/nanosleep; cd &ktest_dir;/timers; ./nanosleep" />
-        <option name="test-command-line" key="timers_nsleep-lat_x86_32" value="chmod 755 &ktest_dir;/timers/nsleep-lat; cd &ktest_dir;/timers; ./nsleep-lat" />
-        <option name="test-command-line" key="timers_posix_timers_x86_32" value="chmod 755 &ktest_dir;/timers/posix_timers; cd &ktest_dir;/timers; ./posix_timers" />
-        <option name="test-command-line" key="timers_raw_skew_x86_32" value="chmod 755 &ktest_dir;/timers/raw_skew; cd &ktest_dir;/timers; ./raw_skew" />
-        <option name="test-command-line" key="timers_set-tai_x86_32" value="chmod 755 &ktest_dir;/timers/set-tai; cd &ktest_dir;/timers; ./set-tai" />
-        <option name="test-command-line" key="timers_set-timer-lat_x86_32" value="chmod 755 &ktest_dir;/timers/set-timer-lat; cd &ktest_dir;/timers; ./set-timer-lat" />
-        <option name="test-command-line" key="timers_threadtest_x86_32" value="chmod 755 &ktest_dir;/timers/threadtest; cd &ktest_dir;/timers; ./threadtest" />
-        <option name="test-command-line" key="timers_valid-adjtimex_x86_32" value="chmod 755 &ktest_dir;/timers/valid-adjtimex; cd &ktest_dir;/timers; ./valid-adjtimex" />
-        <option name="test-command-line" key="x86_single_step_syscall_x86_32" value="chmod 755 &ktest_dir;/x86/single_step_syscall; cd &ktest_dir;/x86; ./single_step_syscall" />
-        <option name="test-command-line" key="x86_sysret_ss_attrs_x86_32" value="chmod 755 &ktest_dir;/x86/sysret_ss_attrs; cd &ktest_dir;/x86; ./sysret_ss_attrs" />
-        <option name="test-command-line" key="x86_syscall_nt_x86_32" value="chmod 755 &ktest_dir;/x86/syscall_nt; cd &ktest_dir;/x86; ./syscall_nt" />
-        <option name="test-command-line" key="x86_ptrace_syscall_x86_32" value="chmod 755 &ktest_dir;/x86/ptrace_syscall; cd &ktest_dir;/x86; ./ptrace_syscall" />
-        <option name="test-command-line" key="x86_test_mremap_vdso_x86_32" value="chmod 755 &ktest_dir;/x86/test_mremap_vdso; cd &ktest_dir;/x86; ./test_mremap_vdso" />
-        <option name="test-command-line" key="x86_check_initial_reg_state_x86_32" value="chmod 755 &ktest_dir;/x86/check_initial_reg_state; cd &ktest_dir;/x86; ./check_initial_reg_state" />
-        <option name="test-command-line" key="x86_ldt_gdt_x86_32" value="chmod 755 &ktest_dir;/x86/ldt_gdt; cd &ktest_dir;/x86; ./ldt_gdt" />
-        <option name="test-command-line" key="x86_syscall_arg_fault_x86_32" value="chmod 755 &ktest_dir;/x86/syscall_arg_fault; cd &ktest_dir;/x86; ./syscall_arg_fault" />
-        <option name="test-command-line" key="x86_test_syscall_vdso_x86_32" value="chmod 755 &ktest_dir;/x86/test_syscall_vdso; cd &ktest_dir;/x86; ./test_syscall_vdso" />
-        <option name="test-command-line" key="x86_unwind_vdso_x86_32" value="chmod 755 &ktest_dir;/x86/unwind_vdso; cd &ktest_dir;/x86; ./unwind_vdso" />
-        <option name="test-command-line" key="x86_test_FCMOV_x86_32" value="chmod 755 &ktest_dir;/x86/test_FCMOV; cd &ktest_dir;/x86; ./test_FCMOV" />
-        <option name="test-command-line" key="x86_test_FCOMI_x86_32" value="chmod 755 &ktest_dir;/x86/test_FCOMI; cd &ktest_dir;/x86; ./test_FCOMI" />
-        <option name="test-command-line" key="x86_test_FISTTP_x86_32" value="chmod 755 &ktest_dir;/x86/test_FISTTP; cd &ktest_dir;/x86; ./test_FISTTP" />
-        <option name="test-command-line" key="x86_vdso_restorer_x86_32" value="chmod 755 &ktest_dir;/x86/vdso_restorer; cd &ktest_dir;/x86; ./vdso_restorer" />
-        <option name="test-command-line" key="vm_mremap_dontunmap_x86_32" value="chmod 755 &ktest_dir;/vm/mremap_dontunmap; cd &ktest_dir;/vm; ./mremap_dontunmap" />
-        <option name="test-command-line" key="vm_userfaultfd_anon_x86_32" value="chmod 755 &ktest_dir;/vm/userfaultfd; cd &ktest_dir;/vm; ./userfaultfd anon 32 99" />
-        <option name="test-command-line" key="vm_userfaultfd_shmem_x86_32" value="chmod 755 &ktest_dir;/vm/userfaultfd; cd &ktest_dir;/vm; ./userfaultfd shmem 32 99" />
-    </test>
-</configuration>
-
diff --git a/linux_kselftest/testcases/vts_linux_kselftest_x86_64.xml b/linux_kselftest/testcases/vts_linux_kselftest_x86_64.xml
deleted file mode 100644
index 9dd513c..0000000
--- a/linux_kselftest/testcases/vts_linux_kselftest_x86_64.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-          http://www.apache.org/licenses/LICENSE-2.0
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<!DOCTYPE configuration [
-    <!ENTITY ktest_dir "/data/local/tmp/vts_kernel_kselftest_tests/DATA/nativetest64/linux-kselftest">
-]>
-<configuration description="Runs vts_linux_kselftest.">
-    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
-    <target_preparer class="com.android.tradefed.targetprep.StopServicesSetup" />
-
-    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.KernelTestModuleController" >
-        <option name="arch" value="x86_64"/>
-    </object>
-
-    <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
-        <option name="cleanup" value="true" />
-        <option name="push-file" key="vts_kernel_kselftest_tests" value="/data/local/tmp/vts_kernel_kselftest_tests" />
-        <option name="skip-abi-filtering" value="true" />
-    </target_preparer>
-
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value='find &ktest_dir; -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?"' />
-    </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="binderfs_x86_64" value="chmod 755 &ktest_dir;/filesystems/binderfs/binderfs_test; cd &ktest_dir;/filesystems/binderfs; ./binderfs_test" />
-        <option name="test-command-line" key="capabilities_test_execve_x86_64" value="chmod 755 &ktest_dir;/capabilities/test_execve; cd &ktest_dir;/capabilities; ./test_execve" />
-        <option name="test-command-line" key="futex_functional_run.sh_x86_64" value="chmod 755 &ktest_dir;/futex/functional/run.sh; cd &ktest_dir;/futex/functional; USE_COLOR=0 ./run.sh" />
-        <option name="test-command-line" key="kcmp_kcmp_test_x86_64" value="chmod 755 &ktest_dir;/kcmp/kcmp_test; cd &ktest_dir;/kcmp; ./kcmp_test" />
-        <option name="test-command-line" key="net_psock_tpacket_x86_64" value="chmod 755 &ktest_dir;/net/psock_tpacket; cd &ktest_dir;/net; ./psock_tpacket" />
-        <option name="test-command-line" key="net_reuseaddr_conflict_x86_64" value="chmod 755 &ktest_dir;/net/reuseaddr_conflict; cd &ktest_dir;/net; ./reuseaddr_conflict" />
-        <option name="test-command-line" key="net_socket_x86_64" value="chmod 755 &ktest_dir;/net/socket; cd &ktest_dir;/net; ./socket" />
-        <option name="test-command-line" key="ptrace_peeksiginfo_x86_64" value="chmod 755 &ktest_dir;/ptrace/peeksiginfo; cd &ktest_dir;/ptrace; ./peeksiginfo" />
-        <option name="test-command-line" key="rtc_rtctest_x86_64" value="chmod 755 &ktest_dir;/rtc/rtctest; cd &ktest_dir;/rtc; ./rtctest" />
-        <option name="test-command-line" key="seccomp_seccomp_bpf_x86_64" value="chmod 755 &ktest_dir;/seccomp/seccomp_bpf; cd &ktest_dir;/seccomp; ./seccomp_bpf" />
-        <option name="test-command-line" key="size_get_size_x86_64" value="chmod 755 &ktest_dir;/size/get_size; cd &ktest_dir;/size; ./get_size" />
-        <option name="test-command-line" key="splice_default_file_splice_read.sh_x86_64" value="chmod 755 &ktest_dir;/splice/default_file_splice_read.sh; cd &ktest_dir;/splice; ./default_file_splice_read.sh" />
-        <option name="test-command-line" key="timers_inconsistency-check_x86_64" value="chmod 755 &ktest_dir;/timers/inconsistency-check; cd &ktest_dir;/timers; ./inconsistency-check" />
-        <option name="test-command-line" key="timers_nanosleep_x86_64" value="chmod 755 &ktest_dir;/timers/nanosleep; cd &ktest_dir;/timers; ./nanosleep" />
-        <option name="test-command-line" key="timers_nsleep-lat_x86_64" value="chmod 755 &ktest_dir;/timers/nsleep-lat; cd &ktest_dir;/timers; ./nsleep-lat" />
-        <option name="test-command-line" key="timers_posix_timers_x86_64" value="chmod 755 &ktest_dir;/timers/posix_timers; cd &ktest_dir;/timers; ./posix_timers" />
-        <option name="test-command-line" key="timers_raw_skew_x86_64" value="chmod 755 &ktest_dir;/timers/raw_skew; cd &ktest_dir;/timers; ./raw_skew" />
-        <option name="test-command-line" key="timers_set-tai_x86_64" value="chmod 755 &ktest_dir;/timers/set-tai; cd &ktest_dir;/timers; ./set-tai" />
-        <option name="test-command-line" key="timers_set-timer-lat_x86_64" value="chmod 755 &ktest_dir;/timers/set-timer-lat; cd &ktest_dir;/timers; ./set-timer-lat" />
-        <option name="test-command-line" key="timers_threadtest_x86_64" value="chmod 755 &ktest_dir;/timers/threadtest; cd &ktest_dir;/timers; ./threadtest" />
-        <option name="test-command-line" key="timers_valid-adjtimex_x86_64" value="chmod 755 &ktest_dir;/timers/valid-adjtimex; cd &ktest_dir;/timers; ./valid-adjtimex" />
-        <option name="test-command-line" key="vDSO_kselftest_vdso_test_abi_x86_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test_abi; cd &ktest_dir;/vDSO; ./kselftest_vdso_test_abi" />
-        <option name="test-command-line" key="vDSO_kselftest_vdso_test_clock_getres_x86_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test_clock_getres; cd &ktest_dir;/vDSO; ./kselftest_vdso_test_clock_getres" />
-        <option name="test-command-line" key="vDSO_kselftest_vdso_test_getcpu_x86_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test_getcpu; cd &ktest_dir;/vDSO; ./kselftest_vdso_test_getcpu" />
-        <option name="test-command-line" key="vDSO_kselftest_vdso_test_gettimeofday_x86_64" value="chmod 755 &ktest_dir;/vDSO/kselftest_vdso_test_gettimeofday; cd &ktest_dir;/vDSO; ./kselftest_vdso_test_gettimeofday" />
-        <option name="test-command-line" key="x86_single_step_syscall_x86_64" value="chmod 755 &ktest_dir;/x86/single_step_syscall; cd &ktest_dir;/x86; ./single_step_syscall" />
-        <option name="test-command-line" key="x86_syscall_nt_x86_64" value="chmod 755 &ktest_dir;/x86/syscall_nt; cd &ktest_dir;/x86; ./syscall_nt" />
-        <option name="test-command-line" key="x86_ptrace_syscall_x86_64" value="chmod 755 &ktest_dir;/x86/ptrace_syscall; cd &ktest_dir;/x86; ./ptrace_syscall" />
-        <option name="test-command-line" key="x86_test_mremap_vdso_x86_64" value="chmod 755 &ktest_dir;/x86/test_mremap_vdso; cd &ktest_dir;/x86; ./test_mremap_vdso" />
-        <option name="test-command-line" key="x86_check_initial_reg_state_x86_64" value="chmod 755 &ktest_dir;/x86/check_initial_reg_state; cd &ktest_dir;/x86; ./check_initial_reg_state" />
-        <option name="test-command-line" key="x86_ldt_gdt_x86_64" value="chmod 755 &ktest_dir;/x86/ldt_gdt; cd &ktest_dir;/x86; ./ldt_gdt" />
-        <option name="test-command-line" key="vm_mremap_dontunmap_x86_64" value="chmod 755 &ktest_dir;/vm/mremap_dontunmap; cd &ktest_dir;/vm; ./mremap_dontunmap" />
-        <option name="test-command-line" key="vm_mremap_test_x86_64" value="chmod 755 &ktest_dir;/vm/mremap_test; cd &ktest_dir;/vm; ./mremap_test" />
-        <option name="test-command-line" key="vm_userfaultfd_anon_x86_64" value="chmod 755 &ktest_dir;/vm/userfaultfd; cd &ktest_dir;/vm; ./userfaultfd anon 32 99" />
-        <option name="test-command-line" key="vm_userfaultfd_shmem_x86_64" value="chmod 755 &ktest_dir;/vm/userfaultfd; cd &ktest_dir;/vm; ./userfaultfd shmem 32 99" />
-    </test>
-</configuration>
-
diff --git a/loop/TEST_MAPPING b/loop/TEST_MAPPING
new file mode 100644
index 0000000..f443dfc
--- /dev/null
+++ b/loop/TEST_MAPPING
@@ -0,0 +1,12 @@
+{
+  "postsubmit": [
+    {
+      "name": "vts_kernel_loopconfig_test"
+    }
+  ],
+  "kernel-presubmit": [
+    {
+      "name": "vts_kernel_loopconfig_test"
+    }
+  ]
+}
diff --git a/ltp/TEST_MAPPING b/ltp/TEST_MAPPING
new file mode 100644
index 0000000..621dd29
--- /dev/null
+++ b/ltp/TEST_MAPPING
@@ -0,0 +1,1050 @@
+{
+  "presubmit": [
+    {
+      "name": "vts_ltp_test_arm",
+      "options": [
+        {
+          // vts_slow_ltp_tests_arm
+          "exclude-filter": "controllers.memcg_regression_32bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2011-0999_32bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2015-7550_32bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2016-7117_32bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2017-2671_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio15_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio16_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio17_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio19_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio20_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio21_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio23_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio24_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio25_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio27_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio28_32bit"
+        },
+        {
+          "exclude-filter": "fs.fs_di_32bit"
+        },
+        {
+          "exclude-filter": "fs.fs_fill_32bit"
+        },
+        {
+          "exclude-filter": "fs.fs_inod01_32bit"
+        },
+        {
+          "exclude-filter": "fs.linker01_32bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress01_32bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress06_32bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress09_32bit"
+        },
+        {
+          "exclude-filter": "mm.mtest06_32bit"
+        },
+        {
+          "exclude-filter": "mm.mtest06_32bit"
+        },
+        {
+          "exclude-filter": "nptl.nptl01_32bit"
+        },
+        {
+          "exclude-filter": "pty.pty01_32bit"
+        },
+        {
+          "exclude-filter": "sched.hackbench01_32bit"
+        },
+        {
+          "exclude-filter": "sched.hackbench02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.copy_file_range01_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.fallocate05_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.fcntl15_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.fcntl15_64_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.gettimeofday02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.inotify09_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.keyctl02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.kill02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.mkdir09_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.readahead02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.waitid01_32bit"
+        }
+      ]
+    },
+    {
+      "name": "vts_ltp_test_arm_64",
+      "options": [
+        {
+          // vts_slow_ltp_tests_arm
+          "exclude-filter": "controllers.memcg_regression_64bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2011-0999_64bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2015-7550_64bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2016-7117_64bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2017-2671_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio15_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio16_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio17_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio19_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio20_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio21_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio23_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio24_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio25_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio27_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio28_64bit"
+        },
+        {
+          "exclude-filter": "fs.fs_di_64bit"
+        },
+        {
+          "exclude-filter": "fs.fs_fill_64bit"
+        },
+        {
+          "exclude-filter": "fs.fs_inod01_64bit"
+        },
+        {
+          "exclude-filter": "fs.linker01_64bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress01_64bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress06_64bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress09_64bit"
+        },
+        {
+          "exclude-filter": "nptl.nptl01_64bit"
+        },
+        {
+          "exclude-filter": "pty.pty01_64bit"
+        },
+        {
+          "exclude-filter": "sched.hackbench01_64bit"
+        },
+        {
+          "exclude-filter": "sched.hackbench02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.copy_file_range01_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.fallocate05_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.fcntl15_64_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.fcntl15_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.gettimeofday02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.inotify09_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.keyctl02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.kill02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.mkdir09_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.readahead02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.waitid01_64bit"
+        }
+      ]
+    },
+    {
+      "name": "vts_ltp_test_x86",
+      "options": [
+        {
+          // vts_slow_ltp_tests_x86
+          "exclude-filter": "controllers.memcg_regression_32bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2011-0999_32bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2015-7550_32bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2016-7117_32bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2017-2671_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio15_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio16_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio17_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio19_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio20_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio21_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio23_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio24_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio25_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio27_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio28_32bit"
+        },
+        {
+          "exclude-filter": "fs.fs_di_32bit"
+        },
+        {
+          "exclude-filter": "fs.fs_fill_32bit"
+        },
+        {
+          "exclude-filter": "fs.fs_inod01_32bit"
+        },
+        {
+          "exclude-filter": "fs.linker01_32bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress01_32bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress06_32bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress09_32bit"
+        },
+        {
+          "exclude-filter": "mm.mtest06_32bit"
+        },
+        {
+          "exclude-filter": "nptl.nptl01_32bit"
+        },
+        {
+          "exclude-filter": "pty.pty01_32bit"
+        },
+        {
+          "exclude-filter": "sched.hackbench01_32bit"
+        },
+        {
+          "exclude-filter": "sched.hackbench02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.clock_nanosleep02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.copy_file_range01_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.fallocate05_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.fcntl15_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.gettimeofday02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.inotify09_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.keyctl02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.kill02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.mkdir09_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.nanosleep01_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.poll02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.readahead02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.select04_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.waitid01_32bit"
+        }
+      ]
+    },
+    {
+      "name": "vts_ltp_test_x86_64",
+      "options": [
+        {
+          // vts_slow_ltp_tests_x86
+          "exclude-filter": "cve.cve-2011-0999_64bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2015-7550_64bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2016-7117_64bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2017-2671_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio01_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio02_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio03_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio04_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio05_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio06_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio07_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio08_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio09_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio10_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio11_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio12_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio13_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio14_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio15_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio16_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio17_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio18_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio19_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio20_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio21_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio22_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio23_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio24_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio25_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio26_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio27_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio28_64bit"
+        },
+        {
+          "exclude-filter": "fs.fs_fill_64bit"
+        },
+        {
+          "exclude-filter": "fs.fs_inod01_64bit"
+        },
+        {
+          "exclude-filter": "fs.linker01_64bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress06_64bit"
+        },
+        {
+          "exclude-filter": "mm.mtest06_64bit"
+        },
+        {
+          "exclude-filter": "nptl.nptl01_64bit"
+        },
+        {
+          "exclude-filter": "sched.hackbench01_64bit"
+        },
+        {
+          "exclude-filter": "sched.hackbench02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.clock_nanosleep02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.inotify09_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.keyctl02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.nanosleep01_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.poll02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.select04_64bit"
+        }
+      ]
+    }
+  ],
+  "kernel-presubmit": [
+    {
+      "name": "vts_ltp_test_arm",
+      "options": [
+        {
+          // vts_slow_ltp_tests_arm
+          "exclude-filter": "controllers.memcg_regression_32bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2011-0999_32bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2015-7550_32bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2016-7117_32bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2017-2671_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio15_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio16_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio17_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio19_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio20_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio21_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio23_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio24_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio25_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio27_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio28_32bit"
+        },
+        {
+          "exclude-filter": "fs.fs_di_32bit"
+        },
+        {
+          "exclude-filter": "fs.fs_fill_32bit"
+        },
+        {
+          "exclude-filter": "fs.fs_inod01_32bit"
+        },
+        {
+          "exclude-filter": "fs.linker01_32bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress01_32bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress06_32bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress09_32bit"
+        },
+        {
+          "exclude-filter": "mm.mtest06_32bit"
+        },
+        {
+          "exclude-filter": "mm.mtest06_32bit"
+        },
+        {
+          "exclude-filter": "nptl.nptl01_32bit"
+        },
+        {
+          "exclude-filter": "pty.pty01_32bit"
+        },
+        {
+          "exclude-filter": "sched.hackbench01_32bit"
+        },
+        {
+          "exclude-filter": "sched.hackbench02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.copy_file_range01_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.fallocate05_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.fcntl15_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.fcntl15_64_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.gettimeofday02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.inotify09_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.keyctl02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.kill02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.mkdir09_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.readahead02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.waitid01_32bit"
+        }
+      ]
+    },
+    {
+      "name": "vts_ltp_test_arm_64",
+      "options": [
+        {
+          // vts_slow_ltp_tests_arm
+          "exclude-filter": "controllers.memcg_regression_64bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2011-0999_64bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2015-7550_64bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2016-7117_64bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2017-2671_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio15_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio16_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio17_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio19_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio20_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio21_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio23_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio24_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio25_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio27_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio28_64bit"
+        },
+        {
+          "exclude-filter": "fs.fs_di_64bit"
+        },
+        {
+          "exclude-filter": "fs.fs_fill_64bit"
+        },
+        {
+          "exclude-filter": "fs.fs_inod01_64bit"
+        },
+        {
+          "exclude-filter": "fs.linker01_64bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress01_64bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress06_64bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress09_64bit"
+        },
+        {
+          "exclude-filter": "nptl.nptl01_64bit"
+        },
+        {
+          "exclude-filter": "pty.pty01_64bit"
+        },
+        {
+          "exclude-filter": "sched.hackbench01_64bit"
+        },
+        {
+          "exclude-filter": "sched.hackbench02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.copy_file_range01_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.fallocate05_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.fcntl15_64_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.fcntl15_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.gettimeofday02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.inotify09_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.keyctl02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.kill02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.mkdir09_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.readahead02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.waitid01_64bit"
+        }
+      ]
+    },
+    {
+      "name": "vts_ltp_test_x86",
+      "options": [
+        {
+          // vts_slow_ltp_tests_x86
+          "exclude-filter": "controllers.memcg_regression_32bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2011-0999_32bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2015-7550_32bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2016-7117_32bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2017-2671_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio15_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio16_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio17_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio19_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio20_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio21_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio23_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio24_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio25_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio27_32bit"
+        },
+        {
+          "exclude-filter": "dio.dio28_32bit"
+        },
+        {
+          "exclude-filter": "fs.fs_di_32bit"
+        },
+        {
+          "exclude-filter": "fs.fs_fill_32bit"
+        },
+        {
+          "exclude-filter": "fs.fs_inod01_32bit"
+        },
+        {
+          "exclude-filter": "fs.linker01_32bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress01_32bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress06_32bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress09_32bit"
+        },
+        {
+          "exclude-filter": "mm.mtest06_32bit"
+        },
+        {
+          "exclude-filter": "nptl.nptl01_32bit"
+        },
+        {
+          "exclude-filter": "pty.pty01_32bit"
+        },
+        {
+          "exclude-filter": "sched.hackbench01_32bit"
+        },
+        {
+          "exclude-filter": "sched.hackbench02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.clock_nanosleep02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.copy_file_range01_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.fallocate05_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.fcntl15_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.gettimeofday02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.inotify09_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.keyctl02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.kill02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.mkdir09_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.nanosleep01_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.poll02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.readahead02_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.select04_32bit"
+        },
+        {
+          "exclude-filter": "syscalls.waitid01_32bit"
+        }
+      ]
+    },
+    {
+      "name": "vts_ltp_test_x86_64",
+      "options": [
+        {
+          // vts_slow_ltp_tests_x86
+          "exclude-filter": "cve.cve-2011-0999_64bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2015-7550_64bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2016-7117_64bit"
+        },
+        {
+          "exclude-filter": "cve.cve-2017-2671_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio01_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio02_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio03_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio04_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio05_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio06_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio07_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio08_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio09_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio10_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio11_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio12_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio13_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio14_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio15_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio16_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio17_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio18_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio19_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio20_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio21_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio22_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio23_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio24_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio25_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio26_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio27_64bit"
+        },
+        {
+          "exclude-filter": "dio.dio28_64bit"
+        },
+        {
+          "exclude-filter": "fs.fs_fill_64bit"
+        },
+        {
+          "exclude-filter": "fs.fs_inod01_64bit"
+        },
+        {
+          "exclude-filter": "fs.linker01_64bit"
+        },
+        {
+          "exclude-filter": "mm.mmapstress06_64bit"
+        },
+        {
+          "exclude-filter": "mm.mtest06_64bit"
+        },
+        {
+          "exclude-filter": "nptl.nptl01_64bit"
+        },
+        {
+          "exclude-filter": "sched.hackbench01_64bit"
+        },
+        {
+          "exclude-filter": "sched.hackbench02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.clock_nanosleep02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.inotify09_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.keyctl02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.nanosleep01_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.poll02_64bit"
+        },
+        {
+          "exclude-filter": "syscalls.select04_64bit"
+        }
+      ]
+    }
+  ]
+}
diff --git a/ltp/testcase/Android.bp b/ltp/testcase/Android.bp
index a4aec2a..2f06c08 100644
--- a/ltp/testcase/Android.bp
+++ b/ltp/testcase/Android.bp
@@ -31,12 +31,8 @@
 genrule {
     name: "ltp_config_arm_64",
     out: ["vts_ltp_test_arm_64.xml"],
-    tool_files: [
-        "tools/gen_ltp_config.py",
-        "tools/**/*.py",
-        "tools/template/template.xml",
-    ],
-    cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch arm --bitness 64 --low-mem False --hwasan False $(out)",
+    tools: ["gen_ltp_config"],
+    cmd: "$(location gen_ltp_config) --arch arm --bitness 64 --low-mem False --hwasan False $(out)",
 }
 
 sh_test {
@@ -52,12 +48,8 @@
 genrule {
     name: "ltp_config_arm_64_lowmem",
     out: ["vts_ltp_test_arm_64_lowmem.xml"],
-    tool_files: [
-        "tools/gen_ltp_config.py",
-        "tools/**/*.py",
-        "tools/template/template.xml",
-    ],
-    cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch arm --bitness 64 --low-mem True --hwasan False $(out)",
+    tools: ["gen_ltp_config"],
+    cmd: "$(location gen_ltp_config) --arch arm --bitness 64 --low-mem True --hwasan False $(out)",
 }
 
 sh_test {
@@ -73,12 +65,8 @@
 genrule {
     name: "ltp_config_arm_64_hwasan",
     out: ["vts_ltp_test_arm_64_hwasan.xml"],
-    tool_files: [
-        "tools/gen_ltp_config.py",
-        "tools/**/*.py",
-        "tools/template/template.xml",
-    ],
-    cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch arm --bitness 64 --low-mem False --hwasan True $(out)",
+    tools: ["gen_ltp_config"],
+    cmd: "$(location gen_ltp_config) --arch arm --bitness 64 --low-mem False --hwasan True $(out)",
 }
 
 sh_test {
@@ -94,12 +82,8 @@
 genrule {
     name: "ltp_config_arm_64_lowmem_hwasan",
     out: ["vts_ltp_test_arm_64_lowmem_hwasan.xml"],
-    tool_files: [
-        "tools/gen_ltp_config.py",
-        "tools/**/*.py",
-        "tools/template/template.xml",
-    ],
-    cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch arm --bitness 64 --low-mem True --hwasan True $(out)",
+    tools: ["gen_ltp_config"],
+    cmd: "$(location gen_ltp_config) --arch arm --bitness 64 --low-mem True --hwasan True $(out)",
 }
 
 sh_test {
@@ -115,12 +99,8 @@
 genrule {
     name: "ltp_config_arm",
     out: ["vts_ltp_test_arm.xml"],
-    tool_files: [
-        "tools/gen_ltp_config.py",
-        "tools/**/*.py",
-        "tools/template/template.xml",
-    ],
-    cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch arm --bitness 32 --low-mem False --hwasan False $(out)",
+    tools: ["gen_ltp_config"],
+    cmd: "$(location gen_ltp_config) --arch arm --bitness 32 --low-mem False --hwasan False $(out)",
 }
 
 sh_test {
@@ -136,12 +116,8 @@
 genrule {
     name: "ltp_config_arm_lowmem",
     out: ["vts_ltp_test_arm_lowmem.xml"],
-    tool_files: [
-        "tools/gen_ltp_config.py",
-        "tools/**/*.py",
-        "tools/template/template.xml",
-    ],
-    cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch arm --bitness 32 --low-mem True --hwasan False $(out)",
+    tools: ["gen_ltp_config"],
+    cmd: "$(location gen_ltp_config) --arch arm --bitness 32 --low-mem True --hwasan False $(out)",
 }
 
 sh_test {
@@ -154,12 +130,8 @@
 genrule {
     name: "ltp_config_riscv_64",
     out: ["vts_ltp_test_riscv_64.xml"],
-    tool_files: [
-        "tools/gen_ltp_config.py",
-        "tools/**/*.py",
-        "tools/template/template.xml",
-    ],
-    cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch riscv --bitness 64 --low-mem False --hwasan False $(out)",
+    tools: ["gen_ltp_config"],
+    cmd: "$(location gen_ltp_config) --arch riscv --bitness 64 --low-mem False --hwasan False $(out)",
 }
 
 sh_test {
@@ -175,12 +147,8 @@
 genrule {
     name: "ltp_config_x86_64",
     out: ["vts_ltp_test_x86_64.xml"],
-    tool_files: [
-        "tools/gen_ltp_config.py",
-        "tools/**/*.py",
-        "tools/template/template.xml",
-    ],
-    cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch x86 --bitness 64 --low-mem False --hwasan False $(out)",
+    tools: ["gen_ltp_config"],
+    cmd: "$(location gen_ltp_config) --arch x86 --bitness 64 --low-mem False --hwasan False $(out)",
 }
 
 sh_test {
@@ -196,10 +164,6 @@
 genrule {
     name: "ltp_config_x86",
     out: ["vts_ltp_test_x86.xml"],
-    tool_files: [
-        "tools/gen_ltp_config.py",
-        "tools/**/*.py",
-        "tools/template/template.xml",
-    ],
-    cmd: "export ANDROID_BUILD_TOP=$$(pwd) && python3 $(location tools/gen_ltp_config.py) --arch x86 --bitness 32 --low-mem False --hwasan False $(out)",
+    tools: ["gen_ltp_config"],
+    cmd: "$(location gen_ltp_config) --arch x86 --bitness 32 --low-mem False --hwasan False $(out)",
 }
diff --git a/ltp/testcase/tools/Android.bp b/ltp/testcase/tools/Android.bp
index 032610d..3d443a9 100644
--- a/ltp/testcase/tools/Android.bp
+++ b/ltp/testcase/tools/Android.bp
@@ -32,3 +32,22 @@
         }
     },
 }
+
+python_binary_host {
+    name: "gen_ltp_config",
+    main: "gen_ltp_config.py",
+    srcs: [
+        "**/*.py",
+    ],
+    data: [
+        "template/template.xml",
+        ":ltp_gen_bp_file",
+        ":ltp_disabled_tests",
+        ":ltp_runtests",
+    ],
+    version: {
+        py3: {
+            embedded_launcher: true,
+        }
+    },
+}
diff --git a/ltp/testcase/tools/configs/disabled_tests.py b/ltp/testcase/tools/configs/disabled_tests.py
index 8b99f43..750261b 100644
--- a/ltp/testcase/tools/configs/disabled_tests.py
+++ b/ltp/testcase/tools/configs/disabled_tests.py
@@ -36,6 +36,8 @@
     'cve.cve-2021-3444_64bit',  # b/191226866
     'cve.cve-2021-4197_1_32bit',  # b/259557077
     'cve.cve-2021-4197_1_64bit',  # b/259557077
+    'cve.cve-2021-4204_32bit',  # b/314008608
+    'cve.cve-2021-4204_64bit',  # b/314008608
     'kernel_misc.zram01_32bit',  # b/191226875
     'kernel_misc.zram01_64bit',  # b/191226875
     'kernel_misc.zram02_32bit',  # b/191227531
@@ -44,8 +46,8 @@
     'sched.sched_setattr01_32bit',  # b/200686092
     'syscalls.bpf_prog02_32bit',  # b/191867447
     'syscalls.bpf_prog02_64bit',  # b/191867447
-    'syscalls.bpf_prog06_32bit',  # b/259559270
-    'syscalls.bpf_prog06_64bit',  # b/259559270
+    'syscalls.bpf_prog06_32bit',  # b/314008608
+    'syscalls.bpf_prog06_64bit',  # b/314008608
     'syscalls.clone301_32bit',  # b/191236153
     'syscalls.clone301_64bit',  # b/191236153
     'syscalls.clone302_32bit',  # b/191236103
@@ -55,14 +57,6 @@
     'syscalls.epoll_pwait01_64bit',  # b/277586905
     'syscalls.epoll_pwait04_32bit',  # b/241310858
     'syscalls.epoll_pwait04_64bit',  # b/241310858
-    'syscalls.fcntl34_32bit',  # b/278714055
-    'syscalls.fcntl34_64_32bit',  # b/278714055
-    'syscalls.fcntl36_32bit',  # b/278714055
-    'syscalls.fcntl36_64_32bit',  # b/278714055
-    'syscalls.ftruncate04_32bit',  # b/198611142
-    'syscalls.ftruncate04_64_32bit',  # b/198611142
-    'syscalls.ftruncate04_64_64bit',  # b/198611142
-    'syscalls.ftruncate04_64bit',  # b/198611142
     'syscalls.inotify07_32bit',  # b/191773884
     'syscalls.inotify07_64bit',  # b/191773884
     'syscalls.inotify08_32bit',  # b/191748474
@@ -101,6 +95,8 @@
     'syscalls.semctl09_64bit',  # b/191227035
     'syscalls.setpgid02_32bit',  # b/276300873
     'syscalls.setpgid02_64bit',  # b/276300873
+    'syscalls.splice07_32bit',  # b/328315662
+    'syscalls.splice07_64bit',  # b/328315662
     'syscalls.statx07_32bit',  # b/191236106
     'syscalls.statx07_64bit',  # b/191236106
 }
diff --git a/ltp/testcase/tools/configs/stable_tests.py b/ltp/testcase/tools/configs/stable_tests.py
index 7612681..ef0ffff 100644
--- a/ltp/testcase/tools/configs/stable_tests.py
+++ b/ltp/testcase/tools/configs/stable_tests.py
@@ -301,8 +301,6 @@
     'cve.cve-2021-4034_64bit': False,
     'cve.cve-2021-4197_2_32bit': False,
     'cve.cve-2021-4197_2_64bit': False,
-    'cve.cve-2021-4204_32bit': False,
-    'cve.cve-2021-4204_64bit': False,
     'cve.cve-2022-0185_32bit': False,
     'cve.cve-2022-0185_64bit': False,
     'cve.cve-2022-0847_32bit': False,
@@ -650,6 +648,8 @@
     'syscalls.abort01_64bit': False,
     'syscalls.accept01_32bit': True,
     'syscalls.accept01_64bit': True,
+    'syscalls.accept03_32bit': False,
+    'syscalls.accept03_64bit': False,
     'syscalls.accept4_01_32bit': True,
     'syscalls.accept4_01_64bit': True,
     'syscalls.access01_32bit': True,
@@ -1056,6 +1056,8 @@
     'syscalls.fchmod07_64bit': True,
     'syscalls.fchmodat01_32bit': True,
     'syscalls.fchmodat01_64bit': True,
+    'syscalls.fchmodat02_32bit': True,
+    'syscalls.fchmodat02_64bit': True,
     'syscalls.fchown01_16_32bit': False,
     'syscalls.fchown01_16_64bit': False,
     'syscalls.fchown01_32bit': True,
@@ -1196,12 +1198,16 @@
     'syscalls.fcntl33_64_32bit': True,
     'syscalls.fcntl33_64_64bit': True,
     'syscalls.fcntl33_64bit': True,
+    'syscalls.fcntl34_32bit': True,
+    'syscalls.fcntl34_64_32bit': True,
     'syscalls.fcntl34_64_64bit': True,
     'syscalls.fcntl34_64bit': True,
     'syscalls.fcntl35_32bit': True,
     'syscalls.fcntl35_64_32bit': True,
     'syscalls.fcntl35_64_64bit': True,
     'syscalls.fcntl35_64bit': True,
+    'syscalls.fcntl36_32bit': True,
+    'syscalls.fcntl36_64_32bit': True,
     'syscalls.fcntl36_64_64bit': True,
     'syscalls.fcntl36_64bit': True,
     'syscalls.fcntl37_32bit': True,
@@ -1330,6 +1336,10 @@
     'syscalls.ftruncate03_64_32bit': True,
     'syscalls.ftruncate03_64_64bit': True,
     'syscalls.ftruncate03_64bit': True,
+    'syscalls.ftruncate04_32bit': False,
+    'syscalls.ftruncate04_64bit': False,
+    'syscalls.ftruncate04_64_32bit': False,
+    'syscalls.ftruncate04_64_64bit': False,
     'syscalls.futex_cmp_requeue02_32bit': True,
     'syscalls.futex_cmp_requeue02_64bit': True,
     'syscalls.futex_wait01_32bit': True,
@@ -1496,6 +1506,8 @@
     'syscalls.getsockopt02_64bit': True,
     'syscalls.gettid01_32bit': True,
     'syscalls.gettid01_64bit': True,
+    'syscalls.gettid02_32bit': True,
+    'syscalls.gettid02_64bit': True,
     'syscalls.gettimeofday01_32bit': True,
     'syscalls.gettimeofday01_64bit': True,
     'syscalls.gettimeofday02_32bit': True,
@@ -1616,8 +1628,6 @@
     'syscalls.keyctl01_64bit': True,
     'syscalls.keyctl03_32bit': True,
     'syscalls.keyctl03_64bit': True,
-    'syscalls.keyctl05_32bit': True,
-    'syscalls.keyctl05_64bit': True,
     'syscalls.keyctl06_32bit': True,
     'syscalls.keyctl06_64bit': True,
     'syscalls.kill01_32bit': True,
@@ -2036,6 +2046,8 @@
     'syscalls.pipe13_64bit': True,
     'syscalls.pipe14_32bit': True,
     'syscalls.pipe14_64bit': True,
+    'syscalls.pipe15_32bit': True,
+    'syscalls.pipe15_64bit': True,
     'syscalls.pipe2_01_32bit': True,
     'syscalls.pipe2_01_64bit': True,
     'syscalls.pipe2_02_32bit': True,
@@ -2142,6 +2154,8 @@
     'syscalls.ptrace04_64bit': False,
     'syscalls.ptrace05_32bit': True,
     'syscalls.ptrace05_64bit': True,
+    'syscalls.ptrace06_32bit': True,
+    'syscalls.ptrace06_64bit': True,
     'syscalls.ptrace10_32bit': False,
     'syscalls.ptrace10_64bit': False,
     'syscalls.ptrace11_32bit': True,
@@ -2376,6 +2390,8 @@
     'syscalls.sched_setscheduler02_64bit': True,
     'syscalls.sched_setscheduler03_32bit': True,
     'syscalls.sched_setscheduler03_64bit': True,
+    'syscalls.sched_setscheduler04_32bit': True,
+    'syscalls.sched_setscheduler04_64bit': True,
     'syscalls.sched_yield01_32bit': True,
     'syscalls.sched_yield01_64bit': True,
     'syscalls.select01_32bit': True,
@@ -2731,6 +2747,8 @@
     'syscalls.splice04_64bit': True,
     'syscalls.splice05_32bit': True,
     'syscalls.splice05_64bit': True,
+    'syscalls.splice06_32bit': False,
+    'syscalls.splice06_64bit': False,
     'syscalls.ssetmask01_32bit': False,
     'syscalls.ssetmask01_64bit': False,
     'syscalls.stat01_32bit': True,
diff --git a/ltp/testcase/tools/gen_ltp_config.py b/ltp/testcase/tools/gen_ltp_config.py
index 59fc150..0da59d4 100755
--- a/ltp/testcase/tools/gen_ltp_config.py
+++ b/ltp/testcase/tools/gen_ltp_config.py
@@ -17,16 +17,13 @@
 import argparse
 import os
 import sys
-from distutils.util import strtobool
 
 import ltp_test_cases
 from common import filter_utils
 
-def run(android_build_top: str, arch: str, n_bit: int, is_low_mem: bool, is_hwasan: bool, run_staging: bool, output_file: str):
+def run(arch: str, n_bit: int, is_low_mem: bool, is_hwasan: bool, run_staging: bool, output_file: str):
 
-    android_build_top = android_build_top
-    ltp_tests = ltp_test_cases.LtpTestCases(
-        android_build_top, None)
+    ltp_tests = ltp_test_cases.LtpTestCases(None)
 
     test_filter = filter_utils.Filter()
     ltp_tests.GenConfig(
@@ -72,14 +69,12 @@
                             default="False",
                             help="Run all the tests, except from the disabled ones")
     arg_parser.add_argument('output_file_path',
-                            nargs=1,
                             help="Path for the output file")
     args = arg_parser.parse_args()
 
-    run(android_build_top=os.environ['ANDROID_BUILD_TOP'],
-        arch=args.arch,
+    run(arch=args.arch,
         n_bit=str(args.bitness),
-        is_low_mem=strtobool(args.is_low_mem),
-        is_hwasan=strtobool(args.is_hwasan),
-        run_staging=strtobool(args.run_staging),
-        output_file=args.output_file_path[0])
+        is_low_mem=args.is_low_mem == 'True',
+        is_hwasan=args.is_hwasan == 'True',
+        run_staging=args.run_staging == 'True',
+        output_file=args.output_file_path)
diff --git a/ltp/testcase/tools/ltp_configs.py b/ltp/testcase/tools/ltp_configs.py
index cd3f4fb..dfd22ab 100644
--- a/ltp/testcase/tools/ltp_configs.py
+++ b/ltp/testcase/tools/ltp_configs.py
@@ -19,15 +19,6 @@
 import ltp_enums
 
 VTS_LTP_OUTPUT = os.path.join('DATA', 'nativetest', 'ltp')
-LTP_RUNTEST_DIR = 'external/ltp/runtest'
-# The bp file that contains all binaries of ltp
-LTP_GEN_BINARY_BP = 'external/ltp/gen.bp'
-
-LTP_DISABLED_BUILD_TESTS_CONFIG_PATH = 'external/ltp/android/tools/disabled_tests.txt'
-# Directory for the template of the test config.
-LTP_CONFIG_TEMPLATE_DIR = 'test/vts-testcase/kernel/ltp/testcase/tools/template'
-# The file name of the config template file
-LTP_CONFIG_TEMPLATE_FILE_NAME = 'template.xml'
 
 # Environment paths for ltp test cases
 # string, ltp build root directory on target
@@ -92,7 +83,6 @@
     'can',
     'cap_bounds',
     'commands',
-    'connectors',
     'containers',
     'controllers',
     'cpuhotplug',
@@ -103,7 +93,6 @@
     'fs',
     'fs_bind',
     'fs_perms_simple',
-    'fsx',
     'hugetlb',
     'hyperthreading',
     'input',
@@ -126,7 +115,6 @@
     'can',
     'cap_bounds',
     'commands',
-    'connectors',
     'containers',
     'cpuhotplug',
     'cve',
@@ -136,7 +124,6 @@
     'fs',
     'fs_bind',
     'fs_perms_simple',
-    'fsx',
     'hugetlb',
     'hyperthreading',
     'input',
diff --git a/ltp/testcase/tools/ltp_test_cases.py b/ltp/testcase/tools/ltp_test_cases.py
index 25451ec..07682eb 100644
--- a/ltp/testcase/tools/ltp_test_cases.py
+++ b/ltp/testcase/tools/ltp_test_cases.py
@@ -16,6 +16,8 @@
 
 import os
 import logging
+import pkgutil
+from importlib import resources
 
 import ltp_configs
 import ltp_enums
@@ -39,8 +41,7 @@
         _ltp_config_lines: list of string: the context of the generated config
     """
 
-    def __init__(self, android_build_top: str, filter_func: Callable):
-        self._android_build_top = android_build_top
+    def __init__(self, filter_func: Callable):
         self._filter_func = filter_func
         self._ltp_tests_filter = filter_utils.Filter(
             set(stable_tests.STABLE_TESTS.keys()),
@@ -77,10 +78,8 @@
         Returns:
             String.
         """
-        file_name = ltp_configs.LTP_CONFIG_TEMPLATE_FILE_NAME
-        file_path = os.path.join(self._android_build_top, ltp_configs.LTP_CONFIG_TEMPLATE_DIR, file_name)
-        with open(file_path, 'r') as f:
-            return f.read()
+        # This gets bundled into the gen_ltp_config tool during the build
+        return pkgutil.get_data('template', 'template.xml').decode()
 
     def GetKernelModuleControllerOption(self, arch: str, n_bit: int, is_low_mem: bool = False, is_hwasan: bool = False) -> str:
         """Get the Option of KernelModuleController.
@@ -116,8 +115,7 @@
         Args:
             command: String, the test command
         """
-        gen_bp_path = os.path.join(self._android_build_top, ltp_configs.LTP_GEN_BINARY_BP)
-        for line in open(gen_bp_path, 'r'):
+        for line in pkgutil.get_data('android.tools', 'gen.bp').decode().splitlines():
             line = line.strip()
             if not line or line.startswith('#'):
                 continue
@@ -263,25 +261,6 @@
         with open(output_file, 'w') as f:
             f.write(config_lines)
 
-    def ReadCommentedTxt(self, filepath: str) -> Optional[Set[str]]:
-        '''Read a lines of a file that are not commented by #.
-
-        Args:
-            filepath: string, path of file to read
-
-        Returns:
-            A set of string representing non-commented lines in given file
-        '''
-        if not filepath:
-            logging.error('Invalid file path')
-            return None
-
-        with open(filepath, 'r') as f:
-            lines_gen = (line.strip() for line in f)
-            return set(
-                line for line in lines_gen
-                if line and not line.startswith('#'))
-
     def GenerateLtpTestCases(self, testsuite: str, disabled_tests_list: List[str]) -> List[str]:
         '''Generate test cases for each ltp test suite.
 
@@ -291,11 +270,8 @@
         Returns:
             A list of string
         '''
-        testsuite_script = os.path.join(self._android_build_top,
-                                        ltp_configs.LTP_RUNTEST_DIR, testsuite)
-
         result = []
-        for line in open(testsuite_script, 'r'):
+        for line in pkgutil.get_data('runtest', testsuite).decode().splitlines():
             line = line.strip()
             if not line or line.startswith('#'):
                 continue
@@ -318,9 +294,11 @@
         Returns:
             A list of string
         '''
-        disabled_tests_path = os.path.join(
-            self._android_build_top, ltp_configs.LTP_DISABLED_BUILD_TESTS_CONFIG_PATH)
-        disabled_tests_list = self.ReadCommentedTxt(disabled_tests_path)
+        disabled_tests_list = pkgutil.get_data('android.tools', 'disabled_tests.txt').decode().splitlines()
+        disabled_tests_list = [line.strip() for line in disabled_tests_list]
+        disabled_tests_list = set(
+            line for line in disabled_tests_list
+            if line and not line.startswith('#'))
 
         result = []
         for testsuite in scenario_groups:
diff --git a/page_size_16kb/OWNERS b/page_size_16kb/OWNERS
deleted file mode 100644
index 392e306..0000000
--- a/page_size_16kb/OWNERS
+++ /dev/null
@@ -1,4 +0,0 @@
-# Bug component: 1261834
-jyescas@google.com
-kaleshsingh@google.com
-surenb@google.com
diff --git a/page_size_16kb/vendor_elf_alignment_test.sh b/page_size_16kb/vendor_elf_alignment_test.sh
deleted file mode 100755
index 0d6802d..0000000
--- a/page_size_16kb/vendor_elf_alignment_test.sh
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/bash
-
-# Copyright (C) 2023 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Check that vendor ELF files have the required 16KB [or 64KB] load segment
-# alignment on devices.
-
-# Requirement added in U (34)
-MIN_VENDOR_API_LEVEL=34
-
-DEFAULT_VENDOR_API_LEVEL=0
-
-# Default to 64KB max page size unless otherwise specified.
-DEFAULT_MAX_PAGE_SIZE=65536
-
-# Device is only low RAM if explicitly stated
-DEFAULT_CONFIG_LOW_RAM=false
-
-fail() { #msg
-    echo "FAILED: $1"
-    exit 1
-}
-
-pass() { #msg
-    echo "PASSED: $1"
-    exit 0
-}
-
-skip() { #msg
-    echo "SKIPPED: $1"
-    exit 0
-}
-
-# Skip test if vendor API level < U (34)
-vendor_api_level="$(adb shell getprop ro.vendor.api_level $DEFAULT_VENDOR_API_LEVEL)"
-if [ "$vendor_api_level" -lt "$MIN_VENDOR_API_LEVEL" ]; then
-    skip "Vendor API level ($vendor_api_level) < Min vendor API level ($MIN_VENDOR_API_LEVEL)"
-fi
-
-# Android Go and other low RAM devices do not support larger than 4KB page size
-config_low_ram="$(adb shell getprop ro.config.low_ram $DEFAULT_CONFIG_LOW_RAM)"
-if [ "$config_low_ram" != "$DEFAULT_CONFIG_LOW_RAM" ]; then
-    skip "Low RAM devices only support 4096 max page size"
-fi
-
-# Some devices may choose to opt out of 64KB max page size support
-max_page_size="$(adb shell getprop ro.product.cpu.pagesize.max $DEFAULT_MAX_PAGE_SIZE)"
-if [ $max_page_size -lt $DEFAULT_MAX_PAGE_SIZE ]; then
-    skip "Device only supports $max_page_size max page size"
-fi
-
-
-unaligned_elfs=()
-
-get_unaligned_elfs() {
-    adb shell '
-        # Find all vendor ELF files
-        paths=()
-        for i in `find /vendor -type f -exec file {} \; | grep ELF | awk -F: "{ print \\$1 }"`; do
-            paths+=( $i )
-        done
-
-        unaligned=()
-        for path in "${paths[@]}"; do
-            load_alignment=$( readelf -l $path | grep LOAD | head -n1 | awk "{ print \$NF }" )
-
-            # Require 64KB alignment for future proofing. Android uses sparse files so
-            # the real disk space impact is not significant.
-            if [ "$load_alignment" != "0x10000" ]; then
-                unaligned+=( $path )
-            fi
-        done
-
-        echo "${unaligned[@]}"'
-}
-
-print_unaligned_elfs() { # arr_unaligned_elfs
-    elfs=("$@")
-
-    echo ""
-    echo "=== Unaligned vendor ELF files found ==="
-    echo ""
-    for elf in ${elfs[@]}; do
-        echo "    $elf"
-    done
-    echo ""
-    echo "Please rebuild the above artifacts with 64KB aligned load segments."
-    echo ""
-    echo "    This can be done by specifying the following linker flag:"
-    echo "        -Wl,-z,max-page-size=65536"
-    echo ""
-    echo "This is required in devices with Vendor API Level >= $MIN_VENDOR_API_LEVEL"
-    echo ""
-}
-
-# @VsrTest = 3.3-005
-vendor_elf_alignment_test() {
-    unaligned_elfs+=( $(get_unaligned_elfs) )
-    nr_unaligned="${#unaligned_elfs[@]}"
-
-    if [ "$nr_unaligned" == "0" ]; then
-        pass "All vendor ELF files have the required load segment alignment"
-    else
-        print_unaligned_elfs "${unaligned_elfs[@]}"
-        fail "Vendor ELF files with unaligned load segments found"
-    fi
-}
-
-vendor_elf_alignment_test
diff --git a/page_size_16kb/vendor_elf_alignment_test.xml b/page_size_16kb/vendor_elf_alignment_test.xml
deleted file mode 100644
index 7c372c1..0000000
--- a/page_size_16kb/vendor_elf_alignment_test.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2023 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<configuration description="64KB Vendor ELF Alignment Test">
-    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
-    <test class="com.android.tradefed.testtype.binary.ExecutableHostTest" >
-        <option name="binary" value="vendor_elf_alignment_test" />
-        <option name="per-binary-timeout" value="5m" />
-    </test>
-</configuration>
diff --git a/pagesize_16kb/.clang-format b/pagesize_16kb/.clang-format
new file mode 120000
index 0000000..0457b53
--- /dev/null
+++ b/pagesize_16kb/.clang-format
@@ -0,0 +1 @@
+../../../../build/soong/scripts/system-clang-format
\ No newline at end of file
diff --git a/page_size_16kb/Android.bp b/pagesize_16kb/Android.bp
similarity index 70%
rename from page_size_16kb/Android.bp
rename to pagesize_16kb/Android.bp
index 5188807..ece6764 100644
--- a/page_size_16kb/Android.bp
+++ b/pagesize_16kb/Android.bp
@@ -18,11 +18,29 @@
     default_applicable_licenses: ["Android-Apache-2.0"],
 }
 
-sh_test {
-    name: "vendor_elf_alignment_test",
-    src: "vendor_elf_alignment_test.sh",
+cc_test {
+    name: "Vts16KPageSizeTest",
+    require_root: true,
     test_suites: [
         "general-tests",
+        "vts",
     ],
-    test_config: "vendor_elf_alignment_test.xml",
+
+    srcs: [
+        "Vts16KPageSizeTest.cpp",
+    ],
+
+    static_libs: [
+        "libelf64",
+    ],
+
+    shared_libs: [
+        "libbase",
+        "liblog",
+    ],
+
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
 }
diff --git a/pagesize_16kb/OWNERS b/pagesize_16kb/OWNERS
new file mode 100644
index 0000000..192a75b
--- /dev/null
+++ b/pagesize_16kb/OWNERS
@@ -0,0 +1,6 @@
+# Bug component: 1261834
+jyescas@google.com
+kaleshsingh@google.com
+ramjiyani@google.com
+smoreland@google.com
+willmcvicker@google.com
diff --git a/pagesize_16kb/TEST_MAPPING b/pagesize_16kb/TEST_MAPPING
new file mode 100644
index 0000000..c8eedfe
--- /dev/null
+++ b/pagesize_16kb/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "Vts16KPageSizeTest"
+    }
+  ]
+}
diff --git a/pagesize_16kb/Vts16KPageSizeTest.cpp b/pagesize_16kb/Vts16KPageSizeTest.cpp
new file mode 100644
index 0000000..3fd74ba
--- /dev/null
+++ b/pagesize_16kb/Vts16KPageSizeTest.cpp
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <android-base/properties.h>
+#include <android/api-level.h>
+#include <elf.h>
+#include <gtest/gtest.h>
+#include <libelf64/parse.h>
+
+class Vts16KPageSizeTest : public ::testing::Test {
+  protected:
+    static int VendorApiLevel() {
+        // "ro.vendor.api_level" is added in Android T.
+        // Undefined indicates S or below
+        return android::base::GetIntProperty("ro.vendor.api_level", __ANDROID_API_S__);
+    }
+
+    static std::string Architecture() { return android::base::GetProperty("ro.bionic.arch", ""); }
+
+    static ssize_t MaxPageSize(const std::string& filepath) {
+        ssize_t maxPageSize = -1;
+
+        android::elf64::Elf64Binary elf;
+
+        if (!android::elf64::Elf64Parser::ParseElfFile(filepath, elf)) {
+            return -1;
+        }
+
+        for (int i = 0; i < elf.phdrs.size(); i++) {
+            Elf64_Phdr phdr = elf.phdrs[i];
+
+            if ((phdr.p_type != PT_LOAD) || !(phdr.p_type & PF_X)) {
+                continue;
+            }
+
+            maxPageSize = phdr.p_align;
+            break;
+        }
+
+        return maxPageSize;
+    }
+
+    static void SetUpTestSuite() {
+        if (VendorApiLevel() < __ANDROID_API_V__) {
+            GTEST_SKIP() << "16kB support is only required on V and later releases.";
+        }
+    }
+
+    size_t RequiredMaxPageSize() {
+        if (mArch == "x86_64") {
+            return 4096;
+        } else if (mArch == "arm64" || mArch == "aarch64") {
+            return 16384;
+        } else {
+            return -1;
+        }
+    }
+
+    const std::string mArch = Architecture();
+};
+
+/**
+ * Checks the max-page-size of init against the architecture's
+ * required max-page-size.
+ */
+TEST_F(Vts16KPageSizeTest, InitMaxPageSizeTest) {
+    constexpr char initPath[] = "/system/bin/init";
+
+    ssize_t expectedMaxPageSize = RequiredMaxPageSize();
+    ASSERT_NE(expectedMaxPageSize, -1)
+            << "Failed to get required max page size for arch: " << mArch;
+
+    ssize_t initMaxPageSize = MaxPageSize(initPath);
+    ASSERT_NE(initMaxPageSize, -1) << "Failed to get max page size of ELF: " << initPath;
+
+    ASSERT_EQ(initMaxPageSize % expectedMaxPageSize, 0)
+            << "ELF " << initPath << " with page size " << initMaxPageSize
+            << " was not built with the required max-page-size " << expectedMaxPageSize;
+}
diff --git a/sdcardfs/src/com/android/sdcardfs/vts/SdcardfsTest.java b/sdcardfs/src/com/android/sdcardfs/vts/SdcardfsTest.java
index 9834be1..1574a8d 100644
--- a/sdcardfs/src/com/android/sdcardfs/vts/SdcardfsTest.java
+++ b/sdcardfs/src/com/android/sdcardfs/vts/SdcardfsTest.java
@@ -17,12 +17,14 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
+import com.android.tradefed.device.DeviceNotAvailableException;
 import com.android.tradefed.log.LogUtil.CLog;
 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
 import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
 import com.android.tradefed.util.CommandResult;
 import com.android.tradefed.util.CommandStatus;
 import java.util.Scanner;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -32,8 +34,17 @@
 
     private static final int MIN_KERNEL_MAJOR = 5;
     private static final int MIN_KERNEL_MINOR = 4;
+    private static final int MIN_FIRST_API_LEVEL = 30; // Android 11
 
-    private boolean should_run(String str) {
+    private boolean should_run(String str) throws DeviceNotAvailableException {
+        String result = getDevice().getProperty("ro.product.first_api_level");
+        if (result != null && !result.isEmpty()) {
+            int first_api_level = Integer.parseInt(result);
+
+            if (first_api_level < MIN_FIRST_API_LEVEL)
+                return false;
+        }
+
         Scanner versionScanner = new Scanner(str).useDelimiter("\\.");
         int major = versionScanner.nextInt();
         int minor = versionScanner.nextInt();
@@ -44,6 +55,10 @@
         return minor >= MIN_KERNEL_MINOR;
     }
 
+    // This test cannot currently determine launch kernel version
+    // To avoid false positives now that devices update kernels in the
+    // field, skipping this test for now.
+    @Ignore("b/319914104")
     @Test
     public void testSdcardfsNotPresent() throws Exception {
         CommandResult result = getDevice().executeShellV2Command("uname -r");
diff --git a/toolchain/Android.bp b/toolchain/Android.bp
index 6999bb6..659c962 100644
--- a/toolchain/Android.bp
+++ b/toolchain/Android.bp
@@ -28,10 +28,11 @@
     ],
     static_libs: [
         "libgmock",
+        "libkver",
     ],
     test_suites: [
         "device-tests",
-        "vts"
+        "vts",
     ],
     require_root: true,
     auto_gen_config: true,
diff --git a/toolchain/vts_kernel_toolchain.cpp b/toolchain/vts_kernel_toolchain.cpp
index a491914..bb72b3c 100644
--- a/toolchain/vts_kernel_toolchain.cpp
+++ b/toolchain/vts_kernel_toolchain.cpp
@@ -21,6 +21,7 @@
 #include <android/api-level.h>
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
+#include <kver/kernel_release.h>
 
 namespace android {
 namespace kernel {
@@ -77,5 +78,26 @@
   ASSERT_THAT(version_, ::testing::HasSubstr(needle));
 }
 
+// @VsrTest = 3.4.2
+TEST_F(KernelVersionTest, IsKleaf) {
+  constexpr uint64_t kMinAndroidRelease = 15;  // Android 15
+  const auto kernel_release =
+      android::kver::KernelRelease::Parse(version_, /* allow_suffix = */ true);
+  if (!kernel_release.has_value()) {
+    GTEST_SKIP()
+        << "The test only applies to android" << kMinAndroidRelease
+        << " or later kernels. The kernel release string does not have the"
+        << " GKI kernel release format: " << version_;
+  }
+  if (kernel_release->android_release() < kMinAndroidRelease) {
+    GTEST_SKIP() << "The test only applies to android" << kMinAndroidRelease
+                 << " or later kernels. This kernel declares android"
+                 << kernel_release->android_release() << ": " << version_;
+  }
+  ASSERT_THAT(version_, ::testing::HasSubstr("kleaf@"))
+      << "android" << kernel_release->android_release()
+      << " kernel is required to be built with Kleaf.";
+}
+
 }  // namespace kernel
 }  // namespace android
diff --git a/virtual_ab/metadata_test.cpp b/virtual_ab/metadata_test.cpp
index 1264b27..2f8d03e 100644
--- a/virtual_ab/metadata_test.cpp
+++ b/virtual_ab/metadata_test.cpp
@@ -28,16 +28,10 @@
   ASSERT_EQ(0, statfs(kMetadata, &buf))
       << "Cannot statfs " << kMetadata << ": " << strerror(errno);
 
-  int vsr_level = android::base::GetIntProperty("ro.vendor.api_level", -1);
-
   bool is_ext4 = (buf.f_type == EXT4_SUPER_MAGIC);
   bool is_f2fs = (buf.f_type == F2FS_SUPER_MAGIC);
-  if (vsr_level < __ANDROID_API_T__) {
-    ASSERT_TRUE(is_ext4) << "Filesystem magic: " << std::to_string(buf.f_type);
-  } else {
-    ASSERT_TRUE(is_ext4 || is_f2fs)
-        << "Filesystem magic: " << std::to_string(buf.f_type);
-  }
+  ASSERT_TRUE(is_ext4 || is_f2fs)
+    << "Filesystem magic: " << std::to_string(buf.f_type);
 }
 
 TEST(Metadata, FstabEntryFlagsAreSet) {