diff --git a/api/proc/KernelProcFileApiTest.py b/api/proc/KernelProcFileApiTest.py
index da9dc99..0ac78dc 100644
--- a/api/proc/KernelProcFileApiTest.py
+++ b/api/proc/KernelProcFileApiTest.py
@@ -23,12 +23,12 @@
 from vts.runners.host import test_runner
 
 from vts.testcases.kernel.api.proc import ProcCmdlineTest
-from vts.testcases.kernel.api.proc import ProcCpuInfoTest
+from vts.testcases.kernel.api.proc import ProcCpuFileTests
+from vts.testcases.kernel.api.proc import ProcFsFileTests
 from vts.testcases.kernel.api.proc import ProcKmsgTest
 from vts.testcases.kernel.api.proc import ProcMapsTest
 from vts.testcases.kernel.api.proc import ProcMemInfoTest
 from vts.testcases.kernel.api.proc import ProcModulesTest
-from vts.testcases.kernel.api.proc import ProcMountsTest
 from vts.testcases.kernel.api.proc import ProcQtaguidCtrlTest
 from vts.testcases.kernel.api.proc import ProcRemoveUidRangeTest
 from vts.testcases.kernel.api.proc import ProcSimpleFileTests
@@ -43,19 +43,22 @@
 
 TEST_OBJECTS = {
     ProcCmdlineTest.ProcCmdlineTest(),
-    ProcCpuInfoTest.ProcCpuInfoTest(),
+    ProcCpuFileTests.ProcCpuInfoTest(),
+    ProcCpuFileTests.ProcLoadavgTest(),
+    ProcFsFileTests.ProcFilesystemsTest(),
+    ProcFsFileTests.ProcMountsTest(),
+    ProcFsFileTests.ProcSwapsTest(),
     ProcKmsgTest.ProcKmsgTest(),
-    ProcSimpleFileTests.ProcKptrRestrictTest(),
     ProcMapsTest.ProcMapsTest(),
     ProcMemInfoTest.ProcMemInfoTest(),
+    ProcModulesTest.ProcModulesTest(),
+    ProcQtaguidCtrlTest.ProcQtaguidCtrlTest(),
+    ProcRemoveUidRangeTest.ProcRemoveUidRangeTest(),
+    ProcSimpleFileTests.ProcKptrRestrictTest(),
     ProcSimpleFileTests.ProcMmapMinAddrTest(),
     ProcSimpleFileTests.ProcMmapRndBitsTest(),
-    ProcModulesTest.ProcModulesTest(),
-    ProcMountsTest.ProcMountsTest(),
     ProcSimpleFileTests.ProcOverCommitMemoryTest(),
-    ProcQtaguidCtrlTest.ProcQtaguidCtrlTest(),
     ProcSimpleFileTests.ProcRandomizeVaSpaceTest(),
-    ProcRemoveUidRangeTest.ProcRemoveUidRangeTest(),
     ProcShowUidStatTest.ProcShowUidStatTest(),
     ProcStatTest.ProcStatTest(),
     ProcVersionTest.ProcVersionTest(),
diff --git a/api/proc/ProcCpuInfoTest.py b/api/proc/ProcCpuFileTests.py
similarity index 88%
rename from api/proc/ProcCpuInfoTest.py
rename to api/proc/ProcCpuFileTests.py
index 04fb4e4..870bda6 100644
--- a/api/proc/ProcCpuInfoTest.py
+++ b/api/proc/ProcCpuFileTests.py
@@ -73,3 +73,13 @@
 
     def get_path(self):
         return "/proc/cpuinfo"
+
+
+class ProcLoadavgTest(KernelProcFileTestBase.KernelProcFileTestBase):
+    '''/proc/loadavg displays CPU and IO load average over time.'''
+
+    def parse_contents(self, contents):
+        return self.parse_line("{:f} {:f} {:f} {:d}/{:d} {:d}\n", contents)
+
+    def get_path(self):
+        return "/proc/loadavg"
diff --git a/api/proc/ProcMountsTest.py b/api/proc/ProcFsFileTests.py
similarity index 61%
rename from api/proc/ProcMountsTest.py
rename to api/proc/ProcFsFileTests.py
index da0ce0b..258c728 100644
--- a/api/proc/ProcMountsTest.py
+++ b/api/proc/ProcFsFileTests.py
@@ -54,3 +54,44 @@
 
     def get_path(self):
         return "/proc/self/mounts"
+
+class ProcFilesystemsTest(KernelProcFileTestBase.KernelProcFileTestBase):
+    '''/proc/filesystems lists filesystems currently supported by kernel.'''
+
+    def parse_contents(self, contents):
+        if len(contents) == 0 or contents[-1] != '\n':
+            raise SyntaxError('Missing final newline')
+
+        result = []
+        for line in contents.split('\n')[:-1]:
+            parsed = line.split('\t')
+            num_columns = len(parsed)
+            if num_columns != 2:
+                raise SyntaxError('Wrong number of columns.')
+            result.append(parsed)
+        return result
+
+    def get_path(self):
+        return "/proc/filesystems"
+
+class ProcSwapsTest(KernelProcFileTestBase.KernelProcFileTestBase):
+    '''/proc/swaps measures swap space utilization.'''
+
+    REQUIRED_COLUMNS = {
+        'Filename',
+        'Type',
+        'Size',
+        'Used',
+        'Priority'
+    }
+
+    def parse_contents(self, contents):
+        if len(contents) == 0 or contents[-1] != '\n':
+            raise SyntaxError('Missing final newline')
+        return map(lambda x: x.split(), contents.split('\n')[:-1])
+
+    def result_correct(self, result):
+        return self.REQUIRED_COLUMNS.issubset(result[0])
+
+    def get_path(self):
+        return "/proc/swaps"
diff --git a/api/proc/ProcVmallocInfoTest.py b/api/proc/ProcVmallocInfoTest.py
index bd1368a..bf0bff0 100644
--- a/api/proc/ProcVmallocInfoTest.py
+++ b/api/proc/ProcVmallocInfoTest.py
@@ -95,6 +95,7 @@
 
     def p_caller(self, p):
         '''caller : CALLER
+                  | HEX_LITERAL
                   | empty'''
         p[0] = p[1]
 
diff --git a/api/tun/Android.bp b/api/tun/Android.bp
index f065de2..9ca5ce7 100644
--- a/api/tun/Android.bp
+++ b/api/tun/Android.bp
@@ -17,6 +17,7 @@
     srcs: [
         "vts_kernel_tun_test.cpp",
     ],
+    cflags: ["-Wall", "-Werror"],
     shared_libs: [
         "libbase",
     ],
diff --git a/ltp/configs/disabled_tests.py b/ltp/configs/disabled_tests.py
index 659ef52..aa36175 100644
--- a/ltp/configs/disabled_tests.py
+++ b/ltp/configs/disabled_tests.py
@@ -178,7 +178,6 @@
     'mm.mtest06',
     'mm.shm_test01',
     'mm.mallocstress01',
-    'mm.mmapstress04',
     'mm.vma03',
     'mm.min_free_kbytes',
     'pipes.pipeio_1',
@@ -238,7 +237,6 @@
     'fs.inode02',
     'ipc.signal_test_01',
     'mm.data_space',
-    'mm.mmapstress01',
     'mm.mmapstress10',
     'syscalls.clock_nanosleep01',
     'syscalls.clone04',
