Merge "Rename android bpf library"
diff --git a/OWNERS b/OWNERS
index 80f05a3..ea18248 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,4 +1,3 @@
-romlem@google.com
 smuckle@google.com
 sspatil@google.com
 yim@google.com
diff --git a/api/net/VtsKernelNetTest.py b/api/net/VtsKernelNetTest.py
index da0f33d..71c4f0f 100644
--- a/api/net/VtsKernelNetTest.py
+++ b/api/net/VtsKernelNetTest.py
@@ -73,7 +73,7 @@
         logging.info('exit code: %s', result[const.EXIT_CODE])
         asserts.assertFalse(
             result[const.EXIT_CODE],
-            'kernel_net_tests binary returned non-zero exit code.')
+            'kernel_net_tests binary returned non-zero exit code: \n' + result[const.STDERR])
 
 if __name__ == '__main__':
     test_runner.main()
diff --git a/api/proc/KernelProcFileTestBase.py b/api/proc/KernelProcFileTestBase.py
index c4840f5..aeaac70 100644
--- a/api/proc/KernelProcFileTestBase.py
+++ b/api/proc/KernelProcFileTestBase.py
@@ -187,8 +187,16 @@
         """
         return True
 
-    def file_optional(self):
-        """Returns: True if file is allowed to be absent (boolean)."""
+    def file_optional(self, shell=None, dut=None):
+        """Performs any actions necessary to return if file is allowed to be absent
+
+        Args:
+            shell: shell object, to run commands on the device side
+            dut: AndroidDevice object to access functions and properties of that object
+
+        Returns:
+            boolean, True if file is allowed to be absent.
+        """
         return False
 
     def result_correct(self, parse_result):
diff --git a/api/proc/ProcFsFileTests.py b/api/proc/ProcFsFileTests.py
index 9e37067..266e781 100644
--- a/api/proc/ProcFsFileTests.py
+++ b/api/proc/ProcFsFileTests.py
@@ -110,6 +110,6 @@
     def get_path(self):
         return "/proc/swaps"
 
-    def file_optional(self):
+    def file_optional(self, shell=None, dut=None):
         # It is not mandatory to have this file present
         return True
diff --git a/api/proc/ProcQtaguidCtrlTest.py b/api/proc/ProcQtaguidCtrlTest.py
index 7948d45..ef2be8c 100644
--- a/api/proc/ProcQtaguidCtrlTest.py
+++ b/api/proc/ProcQtaguidCtrlTest.py
@@ -52,6 +52,26 @@
     def get_path(self):
         return "/proc/net/xt_qtaguid/ctrl"
 
+    def file_optional(self, shell=None, dut=None):
+        """Specifies if the /proc/net/xt_qtaguid/ctrl file is mandatory.
+
+        For device running kernel 4.9 or above, it should use the eBPF cgroup
+        filter to monitor networking stats instead. So it may not have
+        xt_qtaguid module and /proc/net/xt_qtaguid/ctrl file on device.
+        But for device that still has xt_qtaguid module, this file is mandatory.
+
+        Same logic as checkKernelSupport in file:
+        test/vts-testcase/kernel/api/qtaguid/SocketTagUserSpace.cpp
+
+        Returns:
+            True when the kernel is 4.9 or newer, otherwise False is returned
+        """
+        (version, patchlevel, sublevel) = dut.kernel_version
+        if version == 4 and patchlevel >= 9 or version > 4:
+            return True
+        else:
+            return False
+
     def get_permission_checker(self):
         """Get r/w file permission checker.
         """
diff --git a/api/proc/ProcSimpleFileTests.py b/api/proc/ProcSimpleFileTests.py
index 2bffe32..e19600d 100644
--- a/api/proc/ProcSimpleFileTests.py
+++ b/api/proc/ProcSimpleFileTests.py
@@ -111,7 +111,7 @@
     def get_permission_checker(self):
         return target_file_utils.IsReadWrite
 
-    def file_optional(self):
+    def file_optional(self, shell=None, dut=None):
         return True
 
 class ProcKptrRestrictTest(KernelProcFileTestBase.KernelProcFileTestBase):
@@ -458,7 +458,7 @@
     def get_permission_checker(self):
         return target_file_utils.IsReadWrite
 
-    def file_optional(self):
+    def file_optional(self, shell=None, dut=None):
         # This file isn't in Android common kernel.
         return True
 
diff --git a/api/proc/ProcUidCpuPowerTests.py b/api/proc/ProcUidCpuPowerTests.py
index d4cb255..71af639 100644
--- a/api/proc/ProcUidCpuPowerTests.py
+++ b/api/proc/ProcUidCpuPowerTests.py
@@ -42,7 +42,7 @@
     def get_path(self):
         return "/proc/uid_cpupower/time_in_state"
 
-    def file_optional(self):
+    def file_optional(self, shell=None, dut=None):
         # This file is optional until implemented in Android common kernel
         return True
 
@@ -66,7 +66,7 @@
     def get_path(self):
         return "/proc/uid_cpupower/concurrent_active_time"
 
-    def file_optional(self):
+    def file_optional(self, shell=None, dut=None):
         # This file is optional until implemented in Android common kernel
         return True
 
@@ -98,6 +98,6 @@
     def get_path(self):
         return "/proc/uid_cpupower/concurrent_policy_time"
 
-    def file_optional(self):
+    def file_optional(self, shell=None, dut=None):
         # This file is optional until implemented in Android common kernel
         return True
diff --git a/api/proc/ProcUidTimeInStateTest.py b/api/proc/ProcUidTimeInStateTest.py
index be812d5..c3a1a71 100644
--- a/api/proc/ProcUidTimeInStateTest.py
+++ b/api/proc/ProcUidTimeInStateTest.py
@@ -49,7 +49,7 @@
     def get_path(self):
         return "/proc/uid_time_in_state"
 
-    def file_optional(self):
+    def file_optional(self, shell=None, dut=None):
         # This file is optional until implemented in Android common kernel
         return True
 
diff --git a/api/proc/VtsKernelProcFileApiTest.py b/api/proc/VtsKernelProcFileApiTest.py
index 4273be5..a656b37 100644
--- a/api/proc/VtsKernelProcFileApiTest.py
+++ b/api/proc/VtsKernelProcFileApiTest.py
@@ -140,7 +140,7 @@
                        "Skip test for 64-bit kernel.")
         filepath = test_object.get_path()
         asserts.skipIf(not target_file_utils.Exists(filepath, self.shell) and
-                       test_object.file_optional(),
+                       test_object.file_optional(shell=self.shell, dut=self.dut),
                        "%s does not exist and is optional." % filepath)
         target_file_utils.assertPermissionsAndExistence(
             self.shell, filepath, test_object.get_permission_checker())
@@ -206,16 +206,16 @@
 
         # This command only performs a best effort attempt to remount all
         # filesystems. Check that it doesn't throw an error.
-        self.dut.adb.shell("\"echo u > %s\"" % filepath)
+        self.dut.adb.shell("echo u > %s" % filepath)
 
         # Reboot the device.
-        self.dut.adb.shell("\"echo b > %s\"" % filepath)
+        self.dut.adb.shell("echo b > %s" % filepath)
         asserts.assertFalse(self.dut.hasBooted(), "Device is still alive.")
         self.dut.waitForBootCompletion()
         self.dut.rootAdb()
 
         # Crash the system.
-        self.dut.adb.shell("\"echo c > %s\"" % filepath)
+        self.dut.adb.shell("echo c > %s" % filepath)
         asserts.assertFalse(self.dut.hasBooted(), "Device is still alive.")
         self.dut.waitForBootCompletion()
         self.dut.rootAdb()
@@ -232,7 +232,7 @@
             """
             stats_path = "/proc/uid_io/stats"
             result = self.dut.adb.shell(
-                    "\"cat %s | grep '^%d'\"" % (stats_path, uid),
+                    "cat %s | grep '^%d'" % (stats_path, uid),
                     no_except=True)
             return result[const.STDOUT].split()
 
@@ -250,9 +250,9 @@
             # fg write chars are at index 2, and bg write chars are at 6.
             wchar_index = 6 if state else 2
             old_wchar = UidIOStats(root_uid)[wchar_index]
-            self.dut.adb.shell("\"echo %d %s > %s\"" % (root_uid, state, filepath))
+            self.dut.adb.shell("echo %d %s > %s" % (root_uid, state, filepath))
             # This should increase the number of write syscalls.
-            self.dut.adb.shell("\"echo foo\"")
+            self.dut.adb.shell("echo foo")
             asserts.assertLess(
                 old_wchar,
                 UidIOStats(root_uid)[wchar_index],
diff --git a/config/Android.mk b/config/Android.mk
deleted file mode 100644
index 181a8e4..0000000
--- a/config/Android.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Copyright (C) 2017 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.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VtsKernelConfig
--include test/vts/tools/build/Android.host_config.mk
\ No newline at end of file
diff --git a/config/AndroidTest.xml b/config/AndroidTest.xml
deleted file mode 100644
index bac70bc..0000000
--- a/config/AndroidTest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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="Config for VTS KernelConfigTest">
-    <option name="config-descriptor:metadata" key="plan" value="vts-kernel" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-        <option name="push-group" value="HostDrivenTest.push" />
-    </target_preparer>
-    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
-        <option name="test-module-name" value="VtsKernelConfig" />
-        <option name="test-case-path" value="vts/testcases/kernel/config/VtsKernelConfigTest" />
-    </test>
-</configuration>
diff --git a/config/VtsKernelConfigTest.py b/config/VtsKernelConfigTest.py
deleted file mode 100644
index 19981ee..0000000
--- a/config/VtsKernelConfigTest.py
+++ /dev/null
@@ -1,252 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2017 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.
-#
-
-import gzip
-import logging
-import os
-import re
-import shutil
-import tempfile
-
-from vts.runners.host import asserts
-from vts.runners.host import base_test
-from vts.runners.host import const
-from vts.runners.host import keys
-from vts.runners.host import test_runner
-from vts.utils.python.android import api
-from vts.utils.python.controllers import android_device
-from vts.utils.python.file import target_file_utils
-
-from vts.testcases.kernel.lib import version
-
-
-class VtsKernelConfigTest(base_test.BaseTestClass):
-    """Test case which check config options in /proc/config.gz.
-
-    Attributes:
-        _temp_dir: The temporary directory to which /proc/config.gz is copied.
-    """
-
-    PROC_FILE_PATH = "/proc/config.gz"
-    KERNEL_CONFIG_FILE_PATH = "vts/testcases/kernel/config/data"
-
-    def setUpClass(self):
-        required_params = [keys.ConfigKeys.IKEY_DATA_FILE_PATH]
-        self.getUserParams(required_params)
-        self.dut = self.android_devices[0]
-        self.shell = self.dut.shell
-        self._temp_dir = tempfile.mkdtemp()
-        self.supported_kernel_versions = version.getSupportedKernels(self.dut)
-        self.release_dir = self.getReleaseDir()
-
-    def getReleaseDir(self):
-        """Return the appropriate subdirectory in kernel/configs.
-
-        Returns the directory in kernel/configs corresponding to
-        the device's first_api_level.
-
-        Returns:
-            string: a directory in kernel configs
-        """
-        api_level = self.dut.getLaunchApiLevel(strict=False)
-
-        if (api_level == 0):
-            logging.info("Cound not detect api level, using last release")
-            return "p"
-        elif api_level == api.PLATFORM_API_LEVEL_P:
-            return "p"
-        elif api_level == api.PLATFORM_API_LEVEL_O_MR1:
-            return "o-mr1"
-        elif api_level <= api.PLATFORM_API_LEVEL_O:
-            return "o"
-        else:
-            return "."
-
-    def checkKernelVersion(self):
-        """Validate the kernel version of DUT is a valid kernel version.
-
-        Returns:
-            string, kernel version of device
-        """
-        cmd = "uname -a"
-        results = self.shell.Execute(cmd)
-        logging.info("Shell command '%s' results: %s", cmd, results)
-
-        match = re.search(r"(\d+)\.(\d+)", results[const.STDOUT][0])
-        if match is None:
-            asserts.fail("Failed to detect kernel version of device.")
-        else:
-            kernel_version = int(match.group(1))
-            kernel_patchlevel = int(match.group(2))
-        logging.info("Detected kernel version: %s", match.group(0))
-
-        for v in self.supported_kernel_versions:
-            if (kernel_version == v[0] and kernel_patchlevel == v[1]):
-                return match.group(0)
-        asserts.fail("Detected kernel version is not one of %s" %
-                     self.supported_kernel_versions)
-
-    def checkKernelArch(self, configs):
-        """Find arch of the device kernel.
-
-        Uses the kernel configuration to determine the architecture
-        it is compiled for.
-
-        Args:
-            configs: dict containing device kernel configuration options
-
-        Returns:
-            A string containing the architecture of the device kernel. If
-            the architecture cannot be determined, an empty string is
-            returned.
-        """
-
-        CONFIG_ARM = "CONFIG_ARM"
-        CONFIG_ARM64 = "CONFIG_ARM64"
-        CONFIG_X86 = "CONFIG_X86"
-
-        if CONFIG_ARM in configs and configs[CONFIG_ARM] == "y":
-            return "arm"
-        elif CONFIG_ARM64 in configs and configs[CONFIG_ARM64] == "y":
-            return "arm64"
-        elif CONFIG_X86 in configs and configs[CONFIG_X86] == "y":
-            return "x86"
-        else:
-            print "Unable to determine kernel architecture."
-            return ""
-
-    def parseConfigFileToDict(self, file, configs):
-        """Parse kernel config file to a dictionary.
-
-        Args:
-            file: file object, android-base.config or unzipped /proc/config.gz
-            configs: dict to which config options in file will be added
-
-        Returns:
-            dict: {config_name: config_state}
-        """
-        config_lines = [line.rstrip("\n") for line in file.readlines()]
-
-        for line in config_lines:
-            if line.startswith("#") and line.endswith("is not set"):
-                match = re.search(r"CONFIG_\S+", line)
-                if match is None:
-                    asserts.fail("Failed to parse config file")
-                else:
-                    config_name = match.group(0)
-                config_state = "n"
-            elif line.startswith("CONFIG_"):
-                config_name, config_state = line.split("=", 1)
-                if config_state.startswith(("'", '"')):
-                    config_state = config_state[1:-1]
-            else:
-                continue
-            configs[config_name] = config_state
-
-        return configs
-
-    def testKernelConfigs(self):
-        """Ensures all kernel configs conform to Android requirements.
-
-        Detects kernel version of device and validates against appropriate
-        Common Android Kernel android-base.config and Android Treble
-        requirements.
-        """
-        logging.info("Testing existence of %s" % self.PROC_FILE_PATH)
-        target_file_utils.assertPermissionsAndExistence(
-            self.shell, self.PROC_FILE_PATH, target_file_utils.IsReadOnly)
-
-        logging.info("Validating kernel version of device.")
-        kernel_version = self.checkKernelVersion()
-
-        # Pull configs from the universal config file.
-        configs = dict()
-        config_file_path = os.path.join(
-            self.data_file_path, self.KERNEL_CONFIG_FILE_PATH,
-            self.release_dir, "android-" + kernel_version, "android-base.config")
-        logging.info("Pulling base config from %s", config_file_path)
-        with open(config_file_path, 'r') as config_file:
-            configs = self.parseConfigFileToDict(config_file, configs)
-
-        # Pull configs from device.
-        device_configs = dict()
-        self.dut.adb.pull("%s %s" % (self.PROC_FILE_PATH, self._temp_dir))
-        logging.info("Adb pull %s to %s", self.PROC_FILE_PATH, self._temp_dir)
-
-        localpath = os.path.join(self._temp_dir, "config.gz")
-        with gzip.open(localpath, "rb") as device_config_file:
-            device_configs = self.parseConfigFileToDict(
-                device_config_file, device_configs)
-
-        # Check device architecture and pull arch-specific configs.
-        kernelArch = self.checkKernelArch(device_configs)
-        if kernelArch is not "":
-            config_file_path = os.path.join(self.data_file_path,
-                                            self.KERNEL_CONFIG_FILE_PATH,
-                                            self.release_dir,
-                                            "android-" + kernel_version,
-                                            "android-base-%s.config" % kernelArch)
-            if os.path.isfile(config_file_path):
-                logging.info("Pulling arch config from %s", config_file_path)
-                with open(config_file_path, 'r') as config_file:
-                    configs = self.parseConfigFileToDict(config_file, configs)
-
-        # Determine any deviations from the required configs.
-        should_be_enabled = []
-        should_not_be_set = []
-        incorrect_config_state = []
-        for config_name, config_state in configs.iteritems():
-            if (config_state == "y" and
-                (config_name not in device_configs or
-                 device_configs[config_name] not in ("y", "m"))):
-                should_be_enabled.append(config_name)
-            elif (config_state == "n" and (config_name in device_configs) and
-                  device_configs[config_name] != "n"):
-                should_not_be_set.append(config_name + "=" +
-                                         device_configs[config_name])
-            elif (config_name in device_configs and
-                  device_configs[config_name] != config_state):
-                incorrect_config_state.append(config_name + "=" +
-                                              device_configs[config_name])
-
-        if ("CONFIG_OF" not in device_configs and
-                "CONFIG_ACPI" not in device_configs):
-            should_be_enabled.append("CONFIG_OF | CONFIG_ACPI")
-
-        if ("CONFIG_ANDROID_LOW_MEMORY_KILLER" not in device_configs and
-                ("CONFIG_MEMCG" not in device_configs or
-                 "CONFIG_MEMCG_SWAP" not in device_configs)):
-            should_be_enabled.append("CONFIG_ANDROID_LOW_MEMORY_KILLER | "
-                                     "(CONFIG_MEMCG & CONFIG_MEMCG_SWAP)")
-
-        asserts.assertTrue(
-            len(should_be_enabled) == 0 and len(should_not_be_set) == 0 and
-            len(incorrect_config_state) == 0,
-            ("The following kernel configs should be enabled: [%s]\n"
-             "The following kernel configs should not be set: [%s]\n"
-             "THe following kernel configs have incorrect state: [%s]") %
-            (", ".join(should_be_enabled), ", ".join(should_not_be_set),
-             ", ".join(incorrect_config_state)))
-
-    def tearDownClass(self):
-        """Deletes the temporary directory."""
-        logging.info("Delete %s", self._temp_dir)
-        shutil.rmtree(self._temp_dir)
-
-
-if __name__ == "__main__":
-    test_runner.main()
diff --git a/config/__init__.py b/config/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/config/__init__.py
+++ /dev/null
diff --git a/lib/__init__.py b/lib/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/__init__.py
+++ /dev/null
diff --git a/lib/version.py b/lib/version.py
deleted file mode 100644
index c5cc466..0000000
--- a/lib/version.py
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Copyright (C) 2018 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.
-
-from vts.utils.python.android import api
-
-def getSupportedKernels(dut):
-    """Returns a list of the supported kernel versions for this
-    devices' advertised API level.
-
-    Args:
-        dut: The AndroidDevice object corresponding to the device
-        under test.
-
-    Returns:
-        A list of supported kernel versions.
-    """
-    api_level = dut.getLaunchApiLevel(strict=False)
-    if api_level > api.PLATFORM_API_LEVEL_O_MR1 or api_level == 0:
-        return [[4, 4, 107], [4, 9, 84], [4, 14, 42]]
-    else:
-        return [[3, 18, 0], [4, 4, 0], [4, 9, 0]]
diff --git a/ltp/configs/stable_tests.py b/ltp/configs/stable_tests.py
index b2cc7cf..0ea8ea1 100644
--- a/ltp/configs/stable_tests.py
+++ b/ltp/configs/stable_tests.py
@@ -302,6 +302,8 @@
     'pty.ptem01_64bit',
     'pty.pty01_32bit',
     'pty.pty01_64bit',
+    'pty.pty02_32bit',
+    'pty.pty02_64bit',
     'sched.hackbench01_32bit',
     'sched.hackbench01_64bit',
     'sched.hackbench01_low_mem_32bit',
@@ -336,6 +338,8 @@
     'syscalls.abort01_64bit',
     'syscalls.accept01_32bit',
     'syscalls.accept01_64bit',
+    'syscalls.accept4_01_32bit',
+    'syscalls.accept4_01_64bit',
     'syscalls.access01_32bit',
     'syscalls.access01_64bit',
     'syscalls.access02_32bit',
@@ -460,6 +464,8 @@
     'syscalls.close08_64bit',
     'syscalls.connect01_32bit',
     'syscalls.connect01_64bit',
+    'syscalls.copy_file_range01_32bit',
+    'syscalls.copy_file_range01_64bit',
     'syscalls.creat01_32bit',
     'syscalls.creat01_64bit',
     'syscalls.creat03_32bit',
@@ -524,6 +530,7 @@
     'syscalls.epoll_wait02_64bit',
     'syscalls.epoll_wait03_32bit',
     'syscalls.epoll_wait03_64bit',
+    'syscalls.eventfd01_32bit',
     'syscalls.eventfd2_01_32bit',
     'syscalls.eventfd2_01_64bit',
     'syscalls.eventfd2_02_32bit',
@@ -734,6 +741,10 @@
     'syscalls.fdatasync01_64bit',
     'syscalls.fdatasync02_32bit',
     'syscalls.fdatasync02_64bit',
+    'syscalls.fgetxattr01_32bit',
+    'syscalls.fgetxattr01_64bit',
+    'syscalls.fgetxattr03_32bit',
+    'syscalls.fgetxattr03_64bit',
     'syscalls.flistxattr01_32bit',
     'syscalls.flistxattr01_64bit',
     'syscalls.flistxattr02_32bit',
@@ -776,6 +787,10 @@
     'syscalls.fork11_64bit',
     'syscalls.fpathconf01_32bit',
     'syscalls.fpathconf01_64bit',
+    'syscalls.fsetxattr01_32bit',
+    'syscalls.fsetxattr01_64bit',
+    'syscalls.fsetxattr02_32bit',
+    'syscalls.fsetxattr02_64bit',
     'syscalls.fstat01_32bit',
     'syscalls.fstat01_64_32bit',
     'syscalls.fstat01_64_64bit',
@@ -1124,6 +1139,8 @@
     'syscalls.madvise05_64bit',
     'syscalls.madvise08_32bit',
     'syscalls.madvise08_64bit',
+    'syscalls.madvise10_32bit',
+    'syscalls.madvise10_64bit',
     'syscalls.memcmp01_32bit',
     'syscalls.memcmp01_64bit',
     'syscalls.memcpy01_32bit',
@@ -1376,6 +1393,8 @@
     'syscalls.prctl01_64bit',
     'syscalls.prctl02_32bit',
     'syscalls.prctl02_64bit',
+    'syscalls.prctl03_32bit',
+    'syscalls.prctl03_64bit',
     'syscalls.pread01_32bit',
     'syscalls.pread01_64_32bit',
     'syscalls.pread01_64_64bit',
diff --git a/version/Android.mk b/version/Android.mk
deleted file mode 100644
index 07cc197..0000000
--- a/version/Android.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Copyright (C) 2018 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.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VtsKernelVersion
--include test/vts/tools/build/Android.host_config.mk
diff --git a/version/AndroidTest.xml b/version/AndroidTest.xml
deleted file mode 100644
index 3a61516..0000000
--- a/version/AndroidTest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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="Config for VTS KernelVersionTest">
-    <option name="config-descriptor:metadata" key="plan" value="vts-kernel" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-        <option name="push-group" value="HostDrivenTest.push" />
-    </target_preparer>
-    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
-        <option name="test-module-name" value="VtsKernelVersion" />
-        <option name="test-case-path" value="vts/testcases/kernel/version/VtsKernelVersionTest" />
-    </test>
-</configuration>
diff --git a/version/VtsKernelVersionTest.py b/version/VtsKernelVersionTest.py
deleted file mode 100644
index b2edeb5..0000000
--- a/version/VtsKernelVersionTest.py
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2018 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.
-#
-
-import logging
-import re
-
-from vts.runners.host import asserts
-from vts.runners.host import base_test
-from vts.runners.host import const
-from vts.runners.host import keys
-from vts.runners.host import test_runner
-from vts.utils.python.controllers import android_device
-from vts.utils.python.file import target_file_utils
-
-from vts.testcases.kernel.lib import version
-
-
-class VtsKernelVersionTest(base_test.BaseTestClass):
-    """Test case which verifies the version of the kernel on the DUT is
-    supported.
-    """
-
-    def setUpClass(self):
-        required_params = [keys.ConfigKeys.IKEY_DATA_FILE_PATH]
-        self.getUserParams(required_params)
-        self.dut = self.android_devices[0]
-        self.shell = self.dut.shell
-        self.supported_kernel_versions = version.getSupportedKernels(self.dut)
-
-    def testKernelVersion(self):
-        """Validate the kernel version of DUT is a valid kernel version.
-
-        Returns:
-            string, kernel version of device
-        """
-        cmd = "uname -a"
-        results = self.shell.Execute(cmd)
-        logging.info("Shell command '%s' results: %s", cmd, results)
-
-        match = re.search(r"(\d+)\.(\d+)\.(\d+)", results[const.STDOUT][0])
-        if match is None:
-            asserts.fail("Failed to detect kernel version of device.")
-        else:
-            kernel_version = int(match.group(1))
-            kernel_patchlevel = int(match.group(2))
-            kernel_sublevel = int(match.group(3))
-        logging.info("Detected kernel version: %s.%s.%s" % (kernel_version,
-            kernel_patchlevel, kernel_sublevel))
-
-        for v in self.supported_kernel_versions:
-            if (kernel_version == v[0] and kernel_patchlevel == v[1] and
-                kernel_sublevel >= v[2]):
-                logging.info("Compliant kernel version %s.%s.%s found." %
-                        (kernel_version, kernel_patchlevel, kernel_sublevel))
-                return
-
-        asserts.fail("Device is running an unsupported kernel version (%s.%s.%s)" %
-                (kernel_version, kernel_patchlevel, kernel_sublevel))
-
-
-if __name__ == "__main__":
-    test_runner.main()
diff --git a/version/__init__.py b/version/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/version/__init__.py
+++ /dev/null