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 0e59a01..ceebb52 100644
--- a/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
+++ b/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
@@ -94,14 +94,12 @@
     private static final String MICRODROID_IMG_PREFIX = "microdroid_";
     private static final String MICRODROID_IMG_SUFFIX = ".img";
 
-    @Parameterized.Parameters(name = "protectedVm={0},gki={1}")
+    @Parameterized.Parameters(name = "protectedVm={0},os={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 */});
-        for (String gki : SUPPORTED_GKI_VERSIONS) {
-            ret.add(new Object[] {true /* protectedVm */, gki});
-            ret.add(new Object[] {false /* protectedVm */, gki});
+        for (String os : SUPPORTED_OSES) {
+            ret.add(new Object[] {true /* protectedVm */, os});
+            ret.add(new Object[] {false /* protectedVm */, os});
         }
         return ret;
     }
@@ -110,7 +108,7 @@
     public boolean mProtectedVm;
 
     @Parameterized.Parameter(1)
-    public String mGki;
+    public String mOs;
 
     private final MetricsProcessor mMetricsProcessor = new MetricsProcessor(METRIC_NAME_PREFIX);
 
@@ -143,7 +141,7 @@
     public void setup() throws IOException {
         grantPermission(VirtualMachine.MANAGE_VIRTUAL_MACHINE_PERMISSION);
         grantPermission(VirtualMachine.USE_CUSTOM_VIRTUAL_MACHINE_PERMISSION);
-        prepareTestSetup(mProtectedVm, mGki);
+        prepareTestSetup(mProtectedVm, mOs);
         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 135d947..72e5c75 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,8 +70,9 @@
     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_GKI_VERSIONS =
-            Collections.unmodifiableSet(new HashSet(Arrays.asList("android15-6.6")));
+    protected static final Set<String> SUPPORTED_OSES =
+            Collections.unmodifiableSet(
+                    new HashSet<>(Arrays.asList("microdroid", "microdroid_gki-android15-6.6")));
 
     public static boolean isCuttlefish() {
         return getDeviceProperties().isCuttlefish();
@@ -132,7 +133,7 @@
 
     private final Context mCtx = ApplicationProvider.getApplicationContext();
     private boolean mProtectedVm;
-    private String mGki;
+    private String mOs;
 
     protected Context getContext() {
         return mCtx;
@@ -161,7 +162,7 @@
     }
 
     protected final String os() {
-        return mGki != null ? "microdroid_gki-" + mGki : "microdroid";
+        return mOs;
     }
 
     /**
@@ -190,11 +191,11 @@
         }
     }
 
-    public void prepareTestSetup(boolean protectedVm, String gki) {
+    public void prepareTestSetup(boolean protectedVm, String os) {
         assumeFeatureVirtualizationFramework();
 
         mProtectedVm = protectedVm;
-        mGki = gki;
+        mOs = os;
 
         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 c09f033..53fc819 100644
--- a/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
+++ b/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
@@ -129,15 +129,13 @@
 
     @Rule public Timeout globalTimeout = Timeout.seconds(300);
 
-    @Parameterized.Parameters(name = "protectedVm={0},gki={1}")
+    @Parameterized.Parameters(name = "protectedVm={0},os={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 gki : SUPPORTED_GKI_VERSIONS) {
-            ret.add(new Object[] {true /* protectedVm */, gki});
-            ret.add(new Object[] {false /* protectedVm */, gki});
+        for (String os : SUPPORTED_OSES) {
+            ret.add(new Object[] {true /* protectedVm */, os});
+            ret.add(new Object[] {false /* protectedVm */, os});
         }
         return ret;
     }
@@ -146,12 +144,12 @@
     public boolean mProtectedVm;
 
     @Parameterized.Parameter(1)
-    public String mGki;
+    public String mOs;
 
     @Before
     public void setup() {
-        prepareTestSetup(mProtectedVm, mGki);
-        if (mGki != null) {
+        prepareTestSetup(mProtectedVm, mOs);
+        if (mOs != "microdroid") {
             // Using a non-default VM always needs the custom permission.
             grantPermission(VirtualMachine.USE_CUSTOM_VIRTUAL_MACHINE_PERMISSION);
         } else {
@@ -1957,7 +1955,7 @@
     @Test
     public void testConsoleInputSupported() throws Exception {
         assumeSupportedDevice();
-        assumeTrue("Not supported on GKI kernels", mGki == null);
+        assumeFalse("Not supported on GKI kernels", mOs.startsWith("microdroid_gki-"));
 
         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 b41323f..340de72 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,14 +70,13 @@
             "com.android.virt.rkpd.vm_attestation.testapp";
 
     @Parameterized.Parameter(0)
-    public String mGki;
+    public String mOs;
 
-    @Parameterized.Parameters(name = "gki={0}")
+    @Parameterized.Parameters(name = "os={0}")
     public static Collection<Object[]> params() {
         List<Object[]> ret = new ArrayList<>();
-        ret.add(new Object[] {null /* use microdroid kernel */});
-        for (String gki : SUPPORTED_GKI_VERSIONS) {
-            ret.add(new Object[] {gki});
+        for (String os : SUPPORTED_OSES) {
+            ret.add(new Object[] {os});
         }
         return ret;
     }
@@ -92,16 +91,16 @@
                 .that(getVirtualMachineManager().isRemoteAttestationSupported())
                 .isTrue();
 
-        if (mGki == null) {
+        if (mOs == "microdroid") {
             // 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 the GKI kernel.
+            // The permission is needed to use non-default os.
             // 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 */, mGki);
+        prepareTestSetup(true /* protectedVm */, mOs);
         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 43a4c66..01478b5 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,14 +45,13 @@
     private static final String VM_PAYLOAD_PATH = "libvm_attestation_test_payload.so";
 
     @Parameterized.Parameter(0)
-    public String mGki;
+    public String mOs;
 
-    @Parameterized.Parameters(name = "gki={0}")
+    @Parameterized.Parameters(name = "os={0}")
     public static Collection<Object[]> params() {
         List<Object[]> ret = new ArrayList<>();
-        ret.add(new Object[] {null /* use microdroid kernel */});
-        for (String gki : SUPPORTED_GKI_VERSIONS) {
-            ret.add(new Object[] {gki});
+        for (String os : SUPPORTED_OSES) {
+            ret.add(new Object[] {os});
         }
         return ret;
     }
@@ -61,7 +60,7 @@
     public void setup() throws IOException {
         grantPermission(VirtualMachine.MANAGE_VIRTUAL_MACHINE_PERMISSION);
         grantPermission(VirtualMachine.USE_CUSTOM_VIRTUAL_MACHINE_PERMISSION);
-        prepareTestSetup(true /* protectedVm */, mGki);
+        prepareTestSetup(true /* protectedVm */, mOs);
         setMaxPerformanceTaskProfile();
     }
 
