diff --git a/core/host/stack_trace.c b/core/host/stack_trace.c index 67ceac5891..2d63efd625 100644 --- a/core/host/stack_trace.c +++ b/core/host/stack_trace.c @@ -84,7 +84,6 @@ static void __attribute__((noinline)) _task_dump_trace_dispatch(int sig) pthread_kill(task_get_thread(running), SIGNAL_TRACE_DUMP); } else { _task_dump_trace_impl(SIGNAL_TRACE_OFFSET); - udelay(100 * MSEC); /* Leave time for stderr to flush */ exit(1); } } diff --git a/core/host/timer.c b/core/host/timer.c index ff17ddf068..124f17c14f 100644 --- a/core/host/timer.c +++ b/core/host/timer.c @@ -15,14 +15,25 @@ #include "util.h" /* - * For test that need to test for longer than 10 seconds, adjust - * its time scale in test/build.mk by specifying + * For test that need to test for longer than the default time limit, + * adjust its time scale in test/build.mk by specifying * -scale=. */ #ifndef TEST_TIME_SCALE #define TEST_TIME_SCALE 1 #endif +/* + * To increase the stability of timing sensitive unit tests, slow + * down the time by 10x. This only affects active run time (including + * udelay() calls). To an unit test, the only effect is increased code + * execution speed. However, this comes at the cost of prolonged test + * run time for tests that use udelay(). Fortunately, most of our tests + * use usleep/msleep, and for tests that use udelay(), we can scale + * the time as mentioned above. + */ +#define TEST_TIME_SLOW_DOWN 10 + static timestamp_t boot_time; static int time_set; @@ -45,7 +56,7 @@ timestamp_t _get_time(void) timestamp_t ret; clock_gettime(CLOCK_MONOTONIC, &ts); ret.val = (1000000000 * (uint64_t)ts.tv_sec + ts.tv_nsec) * - TEST_TIME_SCALE / 1000; + TEST_TIME_SCALE / 1000 / TEST_TIME_SLOW_DOWN; return ret; } diff --git a/test/build.mk b/test/build.mk index a2094ba112..f503188410 100644 --- a/test/build.mk +++ b/test/build.mk @@ -44,6 +44,7 @@ hooks-y=hooks.o host_command-y=host_command.o inductive_charging-y=inductive_charging.o interrupt-y=interrupt.o +interrupt-scale=10 kb_8042-y=kb_8042.o kb_mkbp-y=kb_mkbp.o kb_scan-y=kb_scan.o