diff --git a/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java b/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
index ceebb52..0e59a01 100644
--- a/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
+++ b/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
@@ -94,12 +94,14 @@
     private static final String MICRODROID_IMG_PREFIX = "microdroid_";
     private static final String MICRODROID_IMG_SUFFIX = ".img";
 
-    @Parameterized.Parameters(name = "protectedVm={0},os={1}")
+    @Parameterized.Parameters(name = "protectedVm={0},gki={1}")
     public static Collection<Object[]> params() {
         List<Object[]> ret = new ArrayList<>();
-        for (String os : SUPPORTED_OSES) {
-            ret.add(new Object[] {true /* protectedVm */, os});
-            ret.add(new Object[] {false /* protectedVm */, os});
+        ret.add(new Object[] {true /* protectedVm */, null /* use microdroid kernel */});
+        ret.add(new Object[] {false /* protectedVm */, null /* use microdroid kernel */});
+        for (String gki : SUPPORTED_GKI_VERSIONS) {
+            ret.add(new Object[] {true /* protectedVm */, gki});
+            ret.add(new Object[] {false /* protectedVm */, gki});
         }
         return ret;
     }
@@ -108,7 +110,7 @@
     public boolean mProtectedVm;
 
     @Parameterized.Parameter(1)
-    public String mOs;
+    public String mGki;
 
     private final MetricsProcessor mMetricsProcessor = new MetricsProcessor(METRIC_NAME_PREFIX);
 
@@ -141,7 +143,7 @@
     public void setup() throws IOException {
         grantPermission(VirtualMachine.MANAGE_VIRTUAL_MACHINE_PERMISSION);
         grantPermission(VirtualMachine.USE_CUSTOM_VIRTUAL_MACHINE_PERMISSION);
-        prepareTestSetup(mProtectedVm, mOs);
+        prepareTestSetup(mProtectedVm, mGki);
         mInstrumentation = getInstrumentation();
     }
 
diff --git a/tests/helper/src/java/com/android/microdroid/test/device/MicrodroidDeviceTestBase.java b/tests/helper/src/java/com/android/microdroid/test/device/MicrodroidDeviceTestBase.java
index 72e5c75..135d947 100644
--- a/tests/helper/src/java/com/android/microdroid/test/device/MicrodroidDeviceTestBase.java
+++ b/tests/helper/src/java/com/android/microdroid/test/device/MicrodroidDeviceTestBase.java
@@ -70,9 +70,8 @@
     private final String MAX_PERFORMANCE_TASK_PROFILE = "CPUSET_SP_TOP_APP";
 
     protected static final String KERNEL_VERSION = SystemProperties.get("ro.kernel.version");
-    protected static final Set<String> SUPPORTED_OSES =
-            Collections.unmodifiableSet(
-                    new HashSet<>(Arrays.asList("microdroid", "microdroid_gki-android15-6.6")));
+    protected static final Set<String> SUPPORTED_GKI_VERSIONS =
+            Collections.unmodifiableSet(new HashSet(Arrays.asList("android15-6.6")));
 
     public static boolean isCuttlefish() {
         return getDeviceProperties().isCuttlefish();
@@ -133,7 +132,7 @@
 
     private final Context mCtx = ApplicationProvider.getApplicationContext();
     private boolean mProtectedVm;
-    private String mOs;
+    private String mGki;
 
     protected Context getContext() {
         return mCtx;
@@ -162,7 +161,7 @@
     }
 
     protected final String os() {
-        return mOs;
+        return mGki != null ? "microdroid_gki-" + mGki : "microdroid";
     }
 
     /**
@@ -191,11 +190,11 @@
         }
     }
 
-    public void prepareTestSetup(boolean protectedVm, String os) {
+    public void prepareTestSetup(boolean protectedVm, String gki) {
         assumeFeatureVirtualizationFramework();
 
         mProtectedVm = protectedVm;
-        mOs = os;
+        mGki = gki;
 
         int capabilities = getVirtualMachineManager().getCapabilities();
         if (protectedVm) {
diff --git a/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java b/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
index 53fc819..c09f033 100644
--- a/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
+++ b/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
@@ -129,13 +129,15 @@
 
     @Rule public Timeout globalTimeout = Timeout.seconds(300);
 
-    @Parameterized.Parameters(name = "protectedVm={0},os={1}")
+    @Parameterized.Parameters(name = "protectedVm={0},gki={1}")
     public static Collection<Object[]> params() {
         List<Object[]> ret = new ArrayList<>();
+        ret.add(new Object[] {true /* protectedVm */, null /* use microdroid kernel */});
+        ret.add(new Object[] {false /* protectedVm */, null /* use microdroid kernel */});
         // TODO(b/302465542): run only the latest GKI on presubmit to reduce running time
-        for (String os : SUPPORTED_OSES) {
-            ret.add(new Object[] {true /* protectedVm */, os});
-            ret.add(new Object[] {false /* protectedVm */, os});
+        for (String gki : SUPPORTED_GKI_VERSIONS) {
+            ret.add(new Object[] {true /* protectedVm */, gki});
+            ret.add(new Object[] {false /* protectedVm */, gki});
         }
         return ret;
     }
@@ -144,12 +146,12 @@
     public boolean mProtectedVm;
 
     @Parameterized.Parameter(1)
-    public String mOs;
+    public String mGki;
 
     @Before
     public void setup() {
-        prepareTestSetup(mProtectedVm, mOs);
-        if (mOs != "microdroid") {
+        prepareTestSetup(mProtectedVm, mGki);
+        if (mGki != null) {
             // Using a non-default VM always needs the custom permission.
             grantPermission(VirtualMachine.USE_CUSTOM_VIRTUAL_MACHINE_PERMISSION);
         } else {
@@ -1955,7 +1957,7 @@
     @Test
     public void testConsoleInputSupported() throws Exception {
         assumeSupportedDevice();
-        assumeFalse("Not supported on GKI kernels", mOs.startsWith("microdroid_gki-"));
+        assumeTrue("Not supported on GKI kernels", mGki == null);
 
         VirtualMachineConfig config =
                 newVmConfigBuilderWithPayloadBinary("MicrodroidTestNativeLib.so")
diff --git a/tests/vm_attestation/src/java/com/android/virt/rkpd/vm_attestation/testapp/RkpdVmAttestationTest.java b/tests/vm_attestation/src/java/com/android/virt/rkpd/vm_attestation/testapp/RkpdVmAttestationTest.java
index 340de72..b41323f 100644
--- a/tests/vm_attestation/src/java/com/android/virt/rkpd/vm_attestation/testapp/RkpdVmAttestationTest.java
+++ b/tests/vm_attestation/src/java/com/android/virt/rkpd/vm_attestation/testapp/RkpdVmAttestationTest.java
@@ -70,13 +70,14 @@
             "com.android.virt.rkpd.vm_attestation.testapp";
 
     @Parameterized.Parameter(0)
-    public String mOs;
+    public String mGki;
 
-    @Parameterized.Parameters(name = "os={0}")
+    @Parameterized.Parameters(name = "gki={0}")
     public static Collection<Object[]> params() {
         List<Object[]> ret = new ArrayList<>();
-        for (String os : SUPPORTED_OSES) {
-            ret.add(new Object[] {os});
+        ret.add(new Object[] {null /* use microdroid kernel */});
+        for (String gki : SUPPORTED_GKI_VERSIONS) {
+            ret.add(new Object[] {gki});
         }
         return ret;
     }
@@ -91,16 +92,16 @@
                 .that(getVirtualMachineManager().isRemoteAttestationSupported())
                 .isTrue();
 
-        if (mOs == "microdroid") {
+        if (mGki == null) {
             // We don't need this permission to use the microdroid kernel.
             revokePermission(VirtualMachine.USE_CUSTOM_VIRTUAL_MACHINE_PERMISSION);
         } else {
-            // The permission is needed to use non-default os.
+            // The permission is needed to use the GKI kernel.
             // Granting the permission is needed as the microdroid kernel test setup
             // can revoke the permission before the GKI kernel test.
             grantPermission(VirtualMachine.USE_CUSTOM_VIRTUAL_MACHINE_PERMISSION);
         }
-        prepareTestSetup(true /* protectedVm */, mOs);
+        prepareTestSetup(true /* protectedVm */, mGki);
         setMaxPerformanceTaskProfile();
     }
 
diff --git a/tests/vm_attestation/src/java/com/android/virt/vm_attestation/testapp/VmAttestationTests.java b/tests/vm_attestation/src/java/com/android/virt/vm_attestation/testapp/VmAttestationTests.java
index 01478b5..43a4c66 100644
--- a/tests/vm_attestation/src/java/com/android/virt/vm_attestation/testapp/VmAttestationTests.java
+++ b/tests/vm_attestation/src/java/com/android/virt/vm_attestation/testapp/VmAttestationTests.java
@@ -45,13 +45,14 @@
     private static final String VM_PAYLOAD_PATH = "libvm_attestation_test_payload.so";
 
     @Parameterized.Parameter(0)
-    public String mOs;
+    public String mGki;
 
-    @Parameterized.Parameters(name = "os={0}")
+    @Parameterized.Parameters(name = "gki={0}")
     public static Collection<Object[]> params() {
         List<Object[]> ret = new ArrayList<>();
-        for (String os : SUPPORTED_OSES) {
-            ret.add(new Object[] {os});
+        ret.add(new Object[] {null /* use microdroid kernel */});
+        for (String gki : SUPPORTED_GKI_VERSIONS) {
+            ret.add(new Object[] {gki});
         }
         return ret;
     }
@@ -60,7 +61,7 @@
     public void setup() throws IOException {
         grantPermission(VirtualMachine.MANAGE_VIRTUAL_MACHINE_PERMISSION);
         grantPermission(VirtualMachine.USE_CUSTOM_VIRTUAL_MACHINE_PERMISSION);
-        prepareTestSetup(true /* protectedVm */, mOs);
+        prepareTestSetup(true /* protectedVm */, mGki);
         setMaxPerformanceTaskProfile();
     }
 
