diff --git a/test/jdk/ProblemList-Virtual.txt b/test/jdk/ProblemList-Virtual.txt
index c427fdee79a..6d4ff898551 100644
--- a/test/jdk/ProblemList-Virtual.txt
+++ b/test/jdk/ProblemList-Virtual.txt
@@ -44,7 +44,9 @@ javax/management/remote/mandatory/loading/RMIDownloadTest.java 8308366 windows-x
 
 java/lang/instrument/NativeMethodPrefixAgent.java 8307169 generic-all
 
-java/lang/ScopedValue/StressStackOverflow.java#default 8309646 linux-all
+java/lang/ScopedValue/StressStackOverflow.java#default 8309646 generic-all
+java/lang/ScopedValue/StressStackOverflow.java#no-TieredCompilation 8309646 generic-all
+java/lang/ScopedValue/StressStackOverflow.java#TieredStopAtLevel1 8309646 generic-all
 
 javax/management/remote/mandatory/connection/DeadLockTest.java 8309069 windows-x64
 
diff --git a/test/jdk/java/lang/ScopedValue/StressStackOverflow.java b/test/jdk/java/lang/ScopedValue/StressStackOverflow.java
index 0c2f9c4e08e..a1254c7fef7 100644
--- a/test/jdk/java/lang/ScopedValue/StressStackOverflow.java
+++ b/test/jdk/java/lang/ScopedValue/StressStackOverflow.java
@@ -23,11 +23,21 @@
 
 /*
  * @test id=default
- * @summary StressStackOverflow the recovery path for ScopedValue
+ * @summary Stress ScopedValue stack overflow recovery path
+ * @enablePreview
+ * @run main/othervm/timeout=300 StressStackOverflow
+ */
+
+/*
+ * @test id=no-TieredCompilation
  * @enablePreview
  * @run main/othervm/timeout=300 -XX:-TieredCompilation StressStackOverflow
+ */
+
+/*
+ * @test id=TieredStopAtLevel1
+ * @enablePreview
  * @run main/othervm/timeout=300 -XX:TieredStopAtLevel=1 StressStackOverflow
- * @run main/othervm/timeout=300 StressStackOverflow
  */
 
 /*
@@ -37,6 +47,7 @@
  * @run main/othervm/timeout=300 -XX:+UnlockExperimentalVMOptions -XX:-VMContinuations StressStackOverflow
  */
 
+import java.time.Duration;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.StructureViolationException;
@@ -55,7 +66,7 @@ public class StressStackOverflow {
         TestFailureException(String s) { super(s); }
     }
 
-    static final long MINUTES = 60 * 1_000_000_000L; // 60 * 10**9 ns
+    static final long DURATION_IN_NANOS = Duration.ofMinutes(2).toNanos();
 
     // Test the ScopedValue recovery mechanism for stack overflows. We implement both Callable
     // and Runnable interfaces. Which one gets tested depends on the constructor argument.
@@ -78,7 +89,7 @@ public class StressStackOverflow {
         public void run() {
             final var last = el.get();
             while (ITERS-- > 0) {
-                if (System.nanoTime() - startTime > 3 * MINUTES) { // 3 minutes is long enough
+                if (System.nanoTime() - startTime > DURATION_IN_NANOS) {
                     return;
                 }
 
@@ -232,7 +243,7 @@ public class StressStackOverflow {
     public static void main(String[] args) {
         var torture = new StressStackOverflow();
         while (torture.ITERS > 0
-                && System.nanoTime() - startTime <= 3 * MINUTES) { // 3 minutes is long enough
+                && System.nanoTime() - startTime <= DURATION_IN_NANOS) {
             try {
                 torture.run();
                 if (inheritedValue.isBound()) {