From aca7a3605df5d171f69c4bbe8ef5642ae3abf9fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20=C5=BBenczykowski?= Date: Thu, 4 May 2023 11:16:26 +0000 Subject: netd_integration_test: add a test for 64-bit kernel CONFIG_BPF_JIT_ALWAYS_ON MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See also: https://googleplex-android-review.git.corp.google.com/c/platform/test/vts-testcase/kernel/+/22930654 isa: Add a test to ensure that a device is using a 64-bit kernel Devices launching with Android 14 and later versions of Android must use a 64-bit kernel, so add a test to enforce this. Test: TreeHugger, atest netd_integration_test:KernelTest Signed-off-by: Maciej Żenczykowski (cherry picked from https://android-review.googlesource.com/q/commit:099e1961906d1b3994b3a0b8c4b679601c9c33b6) Merged-In: Iafcc9f88f0c761a288e3307792ec5c625edc4ba0 Change-Id: Iafcc9f88f0c761a288e3307792ec5c625edc4ba0 Bug: 283523051 --- tests/kernel_test.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'tests') diff --git a/tests/kernel_test.cpp b/tests/kernel_test.cpp index b9e1875e..517b165c 100644 --- a/tests/kernel_test.cpp +++ b/tests/kernel_test.cpp @@ -21,6 +21,8 @@ #include #include +#include "bpf/KernelUtils.h" + namespace android { namespace net { @@ -72,5 +74,22 @@ TEST(KernelTest, TestRateLimitingSupport) { ASSERT_TRUE(configVerifier.hasOption("CONFIG_BPF_JIT")); } +TEST(KernelTest, TestBpfJitAlwaysOn) { + // 32-bit arm & x86 kernels aren't capable of JIT-ing all of our BPF code, + if (bpf::isKernel32Bit()) GTEST_SKIP() << "Exempt on 32-bit kernel."; + KernelConfigVerifier configVerifier; + ASSERT_TRUE(configVerifier.hasOption("CONFIG_BPF_JIT_ALWAYS_ON")); +} + +/* Android 14/U should only launch on 64-bit kernels + * T launches on 5.10/5.15 + * U launches on 5.15/6.1 + * So >=5.16 implies isKernel64Bit() + */ +TEST(KernelTest, TestKernel64Bit) { + if (!bpf::isAtLeastKernelVersion(5, 16, 0)) GTEST_SKIP() << "Exempt on < 5.16 kernel."; + ASSERT_TRUE(bpf::isKernel64Bit()); +} + } // namespace net } // namespace android -- cgit v1.2.3