diff --git a/drivers/gpu/nvgpu/include/nvgpu/posix/posix-fault-injection.h b/drivers/gpu/nvgpu/include/nvgpu/posix/posix-fault-injection.h index 39730b9b0..17f474e9c 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/posix/posix-fault-injection.h +++ b/drivers/gpu/nvgpu/include/nvgpu/posix/posix-fault-injection.h @@ -44,6 +44,7 @@ struct nvgpu_posix_fault_inj_container { struct nvgpu_posix_fault_inj nvgpu_fi; struct nvgpu_posix_fault_inj dma_fi; struct nvgpu_posix_fault_inj queue_out_fi; + struct nvgpu_posix_fault_inj timers_fi; /* qnx */ struct nvgpu_posix_fault_inj nvgpu_nvrmread_fi; diff --git a/drivers/gpu/nvgpu/include/nvgpu/posix/timers.h b/drivers/gpu/nvgpu/include/nvgpu/posix/timers.h index 6ffadbb9a..e489d71b8 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/posix/timers.h +++ b/drivers/gpu/nvgpu/include/nvgpu/posix/timers.h @@ -116,4 +116,8 @@ (int)ret_timeout; \ }) +#ifdef NVGPU_UNITTEST_FAULT_INJECTION_ENABLEMENT +struct nvgpu_posix_fault_inj *nvgpu_timers_get_fault_injection(void); +#endif /* NVGPU_UNITTEST_FAULT_INJECTION_ENABLEMENT */ + #endif diff --git a/drivers/gpu/nvgpu/os/posix/timers.c b/drivers/gpu/nvgpu/os/posix/timers.c index 97d9abd2f..2e0949855 100644 --- a/drivers/gpu/nvgpu/os/posix/timers.c +++ b/drivers/gpu/nvgpu/os/posix/timers.c @@ -34,6 +34,18 @@ #define NSEC_PER_MSEC 1000000 #define NSEC_PER_SEC 1000000000 +#ifdef NVGPU_UNITTEST_FAULT_INJECTION_ENABLEMENT +#include + +struct nvgpu_posix_fault_inj *nvgpu_timers_get_fault_injection(void) +{ + struct nvgpu_posix_fault_inj_container *c = + nvgpu_posix_fault_injection_get_container(); + + return &c->timers_fi; +} +#endif /* NVGPU_UNITTEST_FAULT_INJECTION_ENABLEMENT */ + s64 nvgpu_current_time_us(void) { struct timeval now; @@ -77,6 +89,13 @@ int nvgpu_timeout_init(struct gk20a *g, struct nvgpu_timeout *timeout, { s64 duration_ns; +#ifdef NVGPU_UNITTEST_FAULT_INJECTION_ENABLEMENT + if (nvgpu_posix_fault_injection_handle_call( + nvgpu_timers_get_fault_injection())) { + return -ETIMEDOUT; + } +#endif + if ((flags & ~NVGPU_TIMER_FLAG_MASK) != 0U) { return -EINVAL; }