diff --git a/testsuite/driver/testglobals.py b/testsuite/driver/testglobals.py
index 0cf89907fdcd2e2d72bf8b4dfb5e6aba358d15c8..9c2d59701dfde4fd885efbfcc67a70e164cfa2e8 100644
--- a/testsuite/driver/testglobals.py
+++ b/testsuite/driver/testglobals.py
@@ -448,6 +448,7 @@ class TestOptions:
        self.combined_output = False
 
        # How should the timeout be adjusted on this test?
+       self.pre_cmd_timeout_multiplier = 1.0
        self.compile_timeout_multiplier = 1.0
        self.run_timeout_multiplier = 1.0
 
diff --git a/testsuite/driver/testlib.py b/testsuite/driver/testlib.py
index a6a1276349045dd3d3a4bef654ff7a3369e88073..2af5590757133ae14c9b9935a7a2bae2258b7862 100644
--- a/testsuite/driver/testlib.py
+++ b/testsuite/driver/testlib.py
@@ -559,6 +559,12 @@ def signal_exit_code( val: int ):
 
 # -----
 
+def pre_cmd_timeout_multiplier( val: float ):
+    return lambda name, opts, v=val: _pre_cmd_timeout_multiplier(name, opts, v)
+
+def _pre_cmd_timeout_multiplier( name, opts, v ):
+    opts.pre_cmd_timeout_multiplier = v
+
 def compile_timeout_multiplier( val: float ):
     return lambda name, opts, v=val: _compile_timeout_multiplier(name, opts, v)
 
@@ -1469,7 +1475,9 @@ async def do_test(name: TestName,
         exit_code = await runCmd('cd "{0}" && {1}'.format(opts.testdir, override_options(opts.pre_cmd)),
                            stdout = stdout_path,
                            stderr = stderr_path,
-                           print_output = config.verbose >= 3)
+                           print_output = config.verbose >= 3,
+                           timeout_multiplier = opts.pre_cmd_timeout_multiplier,
+                           )
 
         # If user used expect_broken then don't record failures of pre_cmd
         if exit_code != 0 and opts.expect not in ['fail']:
diff --git a/testsuite/tests/driver/multipleHomeUnits/mhu-perf/all.T b/testsuite/tests/driver/multipleHomeUnits/mhu-perf/all.T
index cb0d049f580239adb800e13dcf444ca832a1b36e..099a89830dc32a73f64b258d9124f97604177fad 100644
--- a/testsuite/tests/driver/multipleHomeUnits/mhu-perf/all.T
+++ b/testsuite/tests/driver/multipleHomeUnits/mhu-perf/all.T
@@ -4,7 +4,8 @@ test('mhu-perf',
        pre_cmd('$MAKE -s --no-print-directory mhu-perf'),
        js_broken(22349),
        when(arch('wasm32'), skip), # wasm32 doesn't like running Setup/Makefile tests
-       compile_timeout_multiplier(5)
+       pre_cmd_timeout_multiplier(2),
+       compile_timeout_multiplier(5),
      ],
      multiunit_compile,
      [['unitTop1', 'unitTop2'], '-fhide-source-paths'])