diff --git a/userspace/units/fifo/runlist/gk20a/nvgpu-runlist-gk20a.c b/userspace/units/fifo/runlist/gk20a/nvgpu-runlist-gk20a.c index 49b68075f..54ba91621 100644 --- a/userspace/units/fifo/runlist/gk20a/nvgpu-runlist-gk20a.c +++ b/userspace/units/fifo/runlist/gk20a/nvgpu-runlist-gk20a.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -28,6 +28,7 @@ #include #include +#include #include #include @@ -159,10 +160,17 @@ int test_gk20a_runlist_wait_pending(struct unit_module *m, u32 runlist_id = nvgpu_engine_get_gr_runlist_id(g); u32 timeout = g->poll_timeout_default; int err; + struct nvgpu_posix_fault_inj *timer_fi = + nvgpu_timers_get_fault_injection(); (void)nvgpu_posix_register_io(g, &test_reg_callbacks); - /* nvgpu_timeout_init failure not covered yet */ + /* nvgpu_timeout_init failure */ + nvgpu_posix_enable_fault_injection(timer_fi, true, 0); + err = gk20a_runlist_wait_pending(g, runlist_id); + assert(err == -ETIMEDOUT); + nvgpu_posix_enable_fault_injection(timer_fi, false, 0); + g->poll_timeout_default = 10; /* ms */ ctx->m = m; diff --git a/userspace/units/fifo/runlist/gk20a/nvgpu-runlist-gk20a.h b/userspace/units/fifo/runlist/gk20a/nvgpu-runlist-gk20a.h index 037d1abda..eecd74f53 100644 --- a/userspace/units/fifo/runlist/gk20a/nvgpu-runlist-gk20a.h +++ b/userspace/units/fifo/runlist/gk20a/nvgpu-runlist-gk20a.h @@ -92,6 +92,7 @@ int test_gk20a_runlist_hw_submit(struct unit_module *m, * - Check case where polling times out: * - Set register to indicate that runlist is pending. * - Call gk20a_runlist_wait_pending. + * - Check case where nvgpu_timeout_init fails, using fault injection. * * Output: Returns PASS if all branches gave expected results. FAIL otherwise. */