diff --git a/drivers/gpu/nvgpu/common/sync/channel_sync_priv.h b/drivers/gpu/nvgpu/common/sync/channel_sync_priv.h index 5235a2b65..9ac85952c 100644 --- a/drivers/gpu/nvgpu/common/sync/channel_sync_priv.h +++ b/drivers/gpu/nvgpu/common/sync/channel_sync_priv.h @@ -59,8 +59,9 @@ struct nvgpu_channel_sync { bool wfi, bool need_sync_fence, bool register_irq); -#endif + void (*set_min_eq_max)(struct nvgpu_channel_sync *s); +#endif void (*set_safe_state)(struct nvgpu_channel_sync *s); diff --git a/drivers/gpu/nvgpu/common/sync/channel_sync_syncpt.c b/drivers/gpu/nvgpu/common/sync/channel_sync_syncpt.c index debf07cfd..7f9eb0c43 100644 --- a/drivers/gpu/nvgpu/common/sync/channel_sync_syncpt.c +++ b/drivers/gpu/nvgpu/common/sync/channel_sync_syncpt.c @@ -299,8 +299,6 @@ int nvgpu_channel_sync_wait_syncpt(struct nvgpu_channel_sync_syncpt *s, return channel_sync_syncpt_wait_raw(s, id, thresh, entry); } -#endif /* CONFIG_NVGPU_KERNEL_MODE_SUBMIT */ - static void channel_sync_syncpt_set_min_eq_max(struct nvgpu_channel_sync *s) { struct nvgpu_channel_sync_syncpt *sp = @@ -308,6 +306,8 @@ static void channel_sync_syncpt_set_min_eq_max(struct nvgpu_channel_sync *s) nvgpu_nvhost_syncpt_set_min_eq_max_ext(sp->nvhost_dev, sp->id); } +#endif /* CONFIG_NVGPU_KERNEL_MODE_SUBMIT */ + static void channel_sync_syncpt_set_safe_state(struct nvgpu_channel_sync *s) { struct nvgpu_channel_sync_syncpt *sp = @@ -353,7 +353,7 @@ nvgpu_channel_sync_to_syncpt(struct nvgpu_channel_sync *sync) { struct nvgpu_channel_sync_syncpt *syncpt = NULL; - if (sync->set_min_eq_max == channel_sync_syncpt_set_min_eq_max) { + if (sync->set_safe_state == channel_sync_syncpt_set_safe_state) { syncpt = nvgpu_channel_sync_syncpt_from_ops(sync); } @@ -414,8 +414,8 @@ nvgpu_channel_sync_syncpt_create(struct nvgpu_channel *c, bool user_managed) sp->ops.wait_fence_fd = channel_sync_syncpt_wait_fd; sp->ops.incr = channel_sync_syncpt_incr; sp->ops.incr_user = channel_sync_syncpt_incr_user; -#endif sp->ops.set_min_eq_max = channel_sync_syncpt_set_min_eq_max; +#endif sp->ops.set_safe_state = channel_sync_syncpt_set_safe_state; sp->ops.destroy = channel_sync_syncpt_destroy; diff --git a/userspace/units/sync/nvgpu-sync.c b/userspace/units/sync/nvgpu-sync.c index 9714a924e..5cd2eeb92 100644 --- a/userspace/units/sync/nvgpu-sync.c +++ b/userspace/units/sync/nvgpu-sync.c @@ -211,7 +211,7 @@ int test_sync_create_destroy_sync(struct unit_module *m, struct gk20a *g, void * assert(syncpt_value < (UINT_MAX - SYNCPT_SAFE_STATE_INCR)); - if (branches == F_SYNC_DESTROY_SET_SAFE) { + if (branches == F_SYNC_DESTROY_LAST) { set_safe_state = false; } @@ -325,15 +325,17 @@ done: return ret; } -#define F_SYNC_SYNCPT_ALLOC_FAILED 0 -#define F_SYNC_USER_MANAGED 1 -#define F_SYNC_NVHOST_CLIENT_MANAGED_FAIL 2 -#define F_SYNC_RO_MAP_GPU_VA_MAP_FAIL 3 -#define F_SYNC_MEM_CREATE_PHYS_FAIL 4 -#define F_SYNC_BUF_MAP_FAIL 5 -#define F_SYNC_FAIL_LAST 6 +#define F_SYNC_GLOBAL_DISABLE_SYNCPT 0 +#define F_SYNC_SYNCPT_ALLOC_FAILED 1 +#define F_SYNC_USER_MANAGED 2 +#define F_SYNC_NVHOST_CLIENT_MANAGED_FAIL 3 +#define F_SYNC_RO_MAP_GPU_VA_MAP_FAIL 4 +#define F_SYNC_MEM_CREATE_PHYS_FAIL 5 +#define F_SYNC_BUF_MAP_FAIL 6 +#define F_SYNC_FAIL_LAST 7 static const char *f_syncpt_open[] = { + "global_disable_syncpt", "syncpt_alloc_failed", "syncpt_user_managed_false", "syncpt_get_client_managed_fail", @@ -346,6 +348,10 @@ static void clear_test_params(struct gk20a *g, bool *user_managed, bool *fault_injection_enabled, u32 branch, struct nvgpu_posix_fault_inj *kmem_fi) { + if (g->disable_syncpoints) { + g->disable_syncpoints = false; + } + if (!(*user_managed)) { *user_managed = true; } @@ -391,7 +397,9 @@ int test_sync_create_fail(struct unit_module *m, struct gk20a *g, void *args) */ g->nvhost_dev->syncpt_id = 0U; - if (branches == F_SYNC_SYNCPT_ALLOC_FAILED) { + if (branches == F_SYNC_GLOBAL_DISABLE_SYNCPT) { + g->disable_syncpoints = true; + } else if (branches == F_SYNC_SYNCPT_ALLOC_FAILED) { /* fail first kzalloc call */ nvgpu_posix_enable_fault_injection(kmem_fi, true, 0); fault_injection_enabled = true;