diff options
author | Thomas Fleury <tfleury@nvidia.com> | 2019-08-27 10:09:51 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2020-01-30 02:42:46 -0500 |
commit | e41fd090315ff37fa09314a8cfde6d384385e17a (patch) | |
tree | 8d96902ff2749cd94f0630202af56a577a780a01 /drivers/gpu/nvgpu/include | |
parent | e0587aaf4d8f803004365eef2b08c0becd1042cb (diff) |
gpu: nvgpu: use refcnt for ch mmu_debug_mode
Replaced ch->mmu_debug_mode_enabled with ch->mmu_debug_mode_refcnt.
If channel is enabled multiple times by userspace, then ref count is
updated accordingly. There is an expectation that enable/disable
calls are balanced for setting channel's mmu debug mode.
When unbinding the channel, decrease refcnt for the channel until it
reaches 0.
Also, removed tsg parameter from nvgpu_tsg_set_mmu_debug_mode as it
can be retrieved from ch.
Bug 2515097
Bug 2713590
Change-Id: If334e374a55bd14ae219edbfd3b1fce5ff25c226
Signed-off-by: Thomas Fleury <tfleury@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2184702
(cherry picked from commit f422aee39387a5aa337de69cc21a67f16697ae0e)
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2208772
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Kajetan Dutka <kdutka@nvidia.com>
Reviewed-by: Alex Waterman <alexw@nvidia.com>
Reviewed-by: Winnie Hsu <whsu@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: Kajetan Dutka <kdutka@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'drivers/gpu/nvgpu/include')
-rw-r--r-- | drivers/gpu/nvgpu/include/nvgpu/channel.h | 6 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/include/nvgpu/tsg.h | 3 |
2 files changed, 6 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/include/nvgpu/channel.h b/drivers/gpu/nvgpu/include/nvgpu/channel.h index e98af09b..764d047c 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/channel.h +++ b/drivers/gpu/nvgpu/include/nvgpu/channel.h | |||
@@ -328,7 +328,11 @@ struct channel_gk20a { | |||
328 | bool has_os_fence_framework_support; | 328 | bool has_os_fence_framework_support; |
329 | 329 | ||
330 | bool is_privileged_channel; | 330 | bool is_privileged_channel; |
331 | bool mmu_debug_mode_enabled; | 331 | |
332 | /** | ||
333 | * MMU Debugger Mode is enabled for this channel if refcnt > 0 | ||
334 | */ | ||
335 | u32 mmu_debug_mode_refcnt; | ||
332 | }; | 336 | }; |
333 | 337 | ||
334 | static inline struct channel_gk20a * | 338 | static inline struct channel_gk20a * |
diff --git a/drivers/gpu/nvgpu/include/nvgpu/tsg.h b/drivers/gpu/nvgpu/include/nvgpu/tsg.h index b43a6b98..7cd97c97 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/tsg.h +++ b/drivers/gpu/nvgpu/include/nvgpu/tsg.h | |||
@@ -127,7 +127,6 @@ gk20a_event_id_data_from_event_id_node(struct nvgpu_list_node *node) | |||
127 | ((uintptr_t)node - offsetof(struct gk20a_event_id_data, event_id_node)); | 127 | ((uintptr_t)node - offsetof(struct gk20a_event_id_data, event_id_node)); |
128 | }; | 128 | }; |
129 | 129 | ||
130 | int nvgpu_tsg_set_mmu_debug_mode(struct tsg_gk20a *tsg, | 130 | int nvgpu_tsg_set_mmu_debug_mode(struct channel_gk20a *ch, bool enable); |
131 | struct channel_gk20a *ch, bool enable); | ||
132 | 131 | ||
133 | #endif /* TSG_GK20A_H */ | 132 | #endif /* TSG_GK20A_H */ |