diff options
author | Alex Waterman <alexw@nvidia.com> | 2018-08-21 13:35:06 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-09-27 18:04:38 -0400 |
commit | 8789cafcfb0d1e16ad0b2c61b047d275f2d684b4 (patch) | |
tree | 34092ee2fcedbfbe719c9984c5f5f06807632158 /drivers/gpu/nvgpu/os/linux/nvhost.c | |
parent | c6eae929fd74f11ab13d469a38bffd4e8ba50fb5 (diff) |
gpu: nvgpu: Standardize HAS_SYNCPOINTs check
Nvgpu uses many ways to check if sync points are enabled. The four
ways used to be:
platform->has_syncpoints
g->has_syncpoints
nvgpu_is_enabled(g, NVPGU_HAS_SYNCPOINTS)
gk20a_platform_has_syncpoints()
This patch standardizes all usage to now be nvgpu_has_syncpoints()
which is based on gk20a_platform_has_syncpoints() - just renamed to
be general to nvgpu.
All usage of the other forms have now been consolidated. However,
under the hood nvgpu_has_syncpoints() does check the is_enabled
flag. This flag is now set where g->has_syncpoints used to be set
based on the platform data.
The basic dependency chain is this:
nvgpu_has_syncpoints -> NVGPU_HAS_SYNCPOINTS ->
platform->has_syncpoints
However, note: there are several places where syncpoints can be
disabled if some other driver initialization fails (for ex. host1x).
Also note that nvgpu_has_syncpoints() also considers a disable
variable set by debugfs.
Bug 2327574
Change-Id: Ia2375a80f5f2e27285e6175568dd13e6bb25fd33
Signed-off-by: Alex Waterman <alexw@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1803975
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/os/linux/nvhost.c')
-rw-r--r-- | drivers/gpu/nvgpu/os/linux/nvhost.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/gpu/nvgpu/os/linux/nvhost.c b/drivers/gpu/nvgpu/os/linux/nvhost.c index ccb830cc..2becae54 100644 --- a/drivers/gpu/nvgpu/os/linux/nvhost.c +++ b/drivers/gpu/nvgpu/os/linux/nvhost.c | |||
@@ -21,6 +21,7 @@ | |||
21 | 21 | ||
22 | #include <nvgpu/gk20a.h> | 22 | #include <nvgpu/gk20a.h> |
23 | #include <nvgpu/nvhost.h> | 23 | #include <nvgpu/nvhost.h> |
24 | #include <nvgpu/enabled.h> | ||
24 | 25 | ||
25 | #include "nvhost_priv.h" | 26 | #include "nvhost_priv.h" |
26 | 27 | ||
@@ -45,9 +46,9 @@ int nvgpu_get_nvhost_dev(struct gk20a *g) | |||
45 | } | 46 | } |
46 | 47 | ||
47 | } else { | 48 | } else { |
48 | if (g->has_syncpoints) { | 49 | if (nvgpu_has_syncpoints(g)) { |
49 | nvgpu_warn(g, "host1x reference not found. assuming no syncpoints support"); | 50 | nvgpu_warn(g, "host1x reference not found. assuming no syncpoints support"); |
50 | g->has_syncpoints = false; | 51 | __nvgpu_set_enabled(g, NVGPU_HAS_SYNCPOINTS, false); |
51 | } | 52 | } |
52 | return 0; | 53 | return 0; |
53 | } | 54 | } |
@@ -263,13 +264,13 @@ int nvgpu_nvhost_syncpt_init(struct gk20a *g) | |||
263 | { | 264 | { |
264 | int err = 0; | 265 | int err = 0; |
265 | 266 | ||
266 | if (!g->has_syncpoints) | 267 | if (!nvgpu_has_syncpoints(g)) |
267 | return -ENOSYS; | 268 | return -ENOSYS; |
268 | 269 | ||
269 | err = nvgpu_get_nvhost_dev(g); | 270 | err = nvgpu_get_nvhost_dev(g); |
270 | if (err) { | 271 | if (err) { |
271 | nvgpu_err(g, "host1x device not available"); | 272 | nvgpu_err(g, "host1x device not available"); |
272 | g->has_syncpoints = false; | 273 | __nvgpu_set_enabled(g, NVGPU_HAS_SYNCPOINTS, false); |
273 | return -ENOSYS; | 274 | return -ENOSYS; |
274 | } | 275 | } |
275 | 276 | ||
@@ -279,7 +280,7 @@ int nvgpu_nvhost_syncpt_init(struct gk20a *g) | |||
279 | &g->syncpt_unit_size); | 280 | &g->syncpt_unit_size); |
280 | if (err) { | 281 | if (err) { |
281 | nvgpu_err(g, "Failed to get syncpt interface"); | 282 | nvgpu_err(g, "Failed to get syncpt interface"); |
282 | g->has_syncpoints = false; | 283 | __nvgpu_set_enabled(g, NVGPU_HAS_SYNCPOINTS, false); |
283 | return -ENOSYS; | 284 | return -ENOSYS; |
284 | } | 285 | } |
285 | 286 | ||