diff options
author | seshendra Gadagottu <sgadagottu@nvidia.com> | 2018-03-06 16:25:11 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-03-12 13:40:17 -0400 |
commit | 3df619f68afa6b23a33d7da072315755de38a30b (patch) | |
tree | df397177061e6c1f04ecba6959299504cbb9597c /drivers/gpu/nvgpu | |
parent | 7a5a2fb75a7c4990939593437af72febf01b732d (diff) |
gpu: nvgpu: hal for syncpt_incr_per_release
Create hal to indicate syncpt increments per release.
Legacy chip uses 2 syncpt increments per release and gv1xx
onwards uses 1 syncpt increment per release.
Bug 2066025
Change-Id: I5d6d0a5368ef561f8150fbb7120181f49f6e338b
Signed-off-by: seshendra Gadagottu <sgadagottu@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1669817
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c | 5 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/fifo_gk20a.c | 5 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/fifo_gk20a.h | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/hal_gm20b.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp106/hal_gp106.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/hal_gp10b.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv100/hal_gv100.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/fifo_gv11b.c | 5 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/fifo_gv11b.h | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/hal_gv11b.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c | 2 |
13 files changed, 30 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c index 85c55955..45d9ae9c 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * GK20A Channel Synchronization Abstraction | 2 | * GK20A Channel Synchronization Abstraction |
3 | * | 3 | * |
4 | * Copyright (c) 2014-2017, NVIDIA CORPORATION. All rights reserved. | 4 | * Copyright (c) 2014-2018, NVIDIA CORPORATION. All rights reserved. |
5 | * | 5 | * |
6 | * Permission is hereby granted, free of charge, to any person obtaining a | 6 | * Permission is hereby granted, free of charge, to any person obtaining a |
7 | * copy of this software and associated documentation files (the "Software"), | 7 | * copy of this software and associated documentation files (the "Software"), |
@@ -194,7 +194,8 @@ static int __gk20a_channel_syncpt_incr(struct gk20a_channel_sync *s, | |||
194 | c->g->ops.fifo.add_syncpt_incr_cmd(c->g, wfi_cmd, | 194 | c->g->ops.fifo.add_syncpt_incr_cmd(c->g, wfi_cmd, |
195 | incr_cmd, sp->id, sp->syncpt_buf.gpu_va); | 195 | incr_cmd, sp->id, sp->syncpt_buf.gpu_va); |
196 | 196 | ||
197 | thresh = nvgpu_nvhost_syncpt_incr_max_ext(sp->nvhost_dev, sp->id, 2); | 197 | thresh = nvgpu_nvhost_syncpt_incr_max_ext(sp->nvhost_dev, sp->id, |
198 | c->g->ops.fifo.get_syncpt_incr_per_release()); | ||
198 | 199 | ||
199 | if (register_irq) { | 200 | if (register_irq) { |
200 | struct channel_gk20a *referenced = gk20a_channel_get(c); | 201 | struct channel_gk20a *referenced = gk20a_channel_get(c); |
diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c index 96317520..0def724d 100644 --- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c | |||
@@ -3999,6 +3999,11 @@ u32 gk20a_fifo_get_syncpt_wait_cmd_size(void) | |||
3999 | return 4; | 3999 | return 4; |
4000 | } | 4000 | } |
4001 | 4001 | ||
4002 | u32 gk20a_fifo_get_syncpt_incr_per_release(void) | ||
4003 | { | ||
4004 | return 2; | ||
4005 | } | ||
4006 | |||
4002 | void gk20a_fifo_add_syncpt_incr_cmd(struct gk20a *g, | 4007 | void gk20a_fifo_add_syncpt_incr_cmd(struct gk20a *g, |
4003 | bool wfi_cmd, struct priv_cmd_entry *cmd, | 4008 | bool wfi_cmd, struct priv_cmd_entry *cmd, |
4004 | u32 id, u64 gpu_va) | 4009 | u32 id, u64 gpu_va) |
diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.h b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.h index a925b1e2..8a3bd4b9 100644 --- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.h | |||
@@ -406,6 +406,7 @@ void gk20a_fifo_add_syncpt_wait_cmd(struct gk20a *g, | |||
406 | struct priv_cmd_entry *cmd, u32 off, | 406 | struct priv_cmd_entry *cmd, u32 off, |
407 | u32 id, u32 thresh, u64 gpu_va); | 407 | u32 id, u32 thresh, u64 gpu_va); |
408 | u32 gk20a_fifo_get_syncpt_wait_cmd_size(void); | 408 | u32 gk20a_fifo_get_syncpt_wait_cmd_size(void); |
409 | u32 gk20a_fifo_get_syncpt_incr_per_release(void); | ||
409 | void gk20a_fifo_add_syncpt_incr_cmd(struct gk20a *g, | 410 | void gk20a_fifo_add_syncpt_incr_cmd(struct gk20a *g, |
410 | bool wfi_cmd, struct priv_cmd_entry *cmd, | 411 | bool wfi_cmd, struct priv_cmd_entry *cmd, |
411 | u32 id, u64 gpu_va); | 412 | u32 id, u64 gpu_va); |
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 4ebdb6a4..ea55c664 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -631,6 +631,7 @@ struct gpu_ops { | |||
631 | u32 (*get_syncpt_incr_cmd_size)(bool wfi_cmd); | 631 | u32 (*get_syncpt_incr_cmd_size)(bool wfi_cmd); |
632 | int (*get_sync_ro_map)(struct vm_gk20a *vm, | 632 | int (*get_sync_ro_map)(struct vm_gk20a *vm, |
633 | u64 *base_gpuva, u32 *sync_size); | 633 | u64 *base_gpuva, u32 *sync_size); |
634 | u32 (*get_syncpt_incr_per_release)(void); | ||
634 | #endif | 635 | #endif |
635 | } fifo; | 636 | } fifo; |
636 | struct pmu_v { | 637 | struct pmu_v { |
diff --git a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c index ea087e92..dd0a50bc 100644 --- a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c | |||
@@ -437,6 +437,8 @@ static const struct gpu_ops gm20b_ops = { | |||
437 | .alloc_syncpt_buf = gk20a_fifo_alloc_syncpt_buf, | 437 | .alloc_syncpt_buf = gk20a_fifo_alloc_syncpt_buf, |
438 | .free_syncpt_buf = gk20a_fifo_free_syncpt_buf, | 438 | .free_syncpt_buf = gk20a_fifo_free_syncpt_buf, |
439 | .add_syncpt_wait_cmd = gk20a_fifo_add_syncpt_wait_cmd, | 439 | .add_syncpt_wait_cmd = gk20a_fifo_add_syncpt_wait_cmd, |
440 | .get_syncpt_incr_per_release = | ||
441 | gk20a_fifo_get_syncpt_incr_per_release, | ||
440 | .get_syncpt_wait_cmd_size = gk20a_fifo_get_syncpt_wait_cmd_size, | 442 | .get_syncpt_wait_cmd_size = gk20a_fifo_get_syncpt_wait_cmd_size, |
441 | .add_syncpt_incr_cmd = gk20a_fifo_add_syncpt_incr_cmd, | 443 | .add_syncpt_incr_cmd = gk20a_fifo_add_syncpt_incr_cmd, |
442 | .get_syncpt_incr_cmd_size = gk20a_fifo_get_syncpt_incr_cmd_size, | 444 | .get_syncpt_incr_cmd_size = gk20a_fifo_get_syncpt_incr_cmd_size, |
diff --git a/drivers/gpu/nvgpu/gp106/hal_gp106.c b/drivers/gpu/nvgpu/gp106/hal_gp106.c index b0eab947..af6cf9ed 100644 --- a/drivers/gpu/nvgpu/gp106/hal_gp106.c +++ b/drivers/gpu/nvgpu/gp106/hal_gp106.c | |||
@@ -498,6 +498,8 @@ static const struct gpu_ops gp106_ops = { | |||
498 | .free_syncpt_buf = gk20a_fifo_free_syncpt_buf, | 498 | .free_syncpt_buf = gk20a_fifo_free_syncpt_buf, |
499 | .add_syncpt_wait_cmd = gk20a_fifo_add_syncpt_wait_cmd, | 499 | .add_syncpt_wait_cmd = gk20a_fifo_add_syncpt_wait_cmd, |
500 | .get_syncpt_wait_cmd_size = gk20a_fifo_get_syncpt_wait_cmd_size, | 500 | .get_syncpt_wait_cmd_size = gk20a_fifo_get_syncpt_wait_cmd_size, |
501 | .get_syncpt_incr_per_release = | ||
502 | gk20a_fifo_get_syncpt_incr_per_release, | ||
501 | .add_syncpt_incr_cmd = gk20a_fifo_add_syncpt_incr_cmd, | 503 | .add_syncpt_incr_cmd = gk20a_fifo_add_syncpt_incr_cmd, |
502 | .get_syncpt_incr_cmd_size = gk20a_fifo_get_syncpt_incr_cmd_size, | 504 | .get_syncpt_incr_cmd_size = gk20a_fifo_get_syncpt_incr_cmd_size, |
503 | .get_sync_ro_map = NULL, | 505 | .get_sync_ro_map = NULL, |
diff --git a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c index dd914ed4..cce1ed4f 100644 --- a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c | |||
@@ -470,6 +470,8 @@ static const struct gpu_ops gp10b_ops = { | |||
470 | .alloc_syncpt_buf = gk20a_fifo_alloc_syncpt_buf, | 470 | .alloc_syncpt_buf = gk20a_fifo_alloc_syncpt_buf, |
471 | .free_syncpt_buf = gk20a_fifo_free_syncpt_buf, | 471 | .free_syncpt_buf = gk20a_fifo_free_syncpt_buf, |
472 | .add_syncpt_wait_cmd = gk20a_fifo_add_syncpt_wait_cmd, | 472 | .add_syncpt_wait_cmd = gk20a_fifo_add_syncpt_wait_cmd, |
473 | .get_syncpt_incr_per_release = | ||
474 | gk20a_fifo_get_syncpt_incr_per_release, | ||
473 | .get_syncpt_wait_cmd_size = gk20a_fifo_get_syncpt_wait_cmd_size, | 475 | .get_syncpt_wait_cmd_size = gk20a_fifo_get_syncpt_wait_cmd_size, |
474 | .add_syncpt_incr_cmd = gk20a_fifo_add_syncpt_incr_cmd, | 476 | .add_syncpt_incr_cmd = gk20a_fifo_add_syncpt_incr_cmd, |
475 | .get_syncpt_incr_cmd_size = gk20a_fifo_get_syncpt_incr_cmd_size, | 477 | .get_syncpt_incr_cmd_size = gk20a_fifo_get_syncpt_incr_cmd_size, |
diff --git a/drivers/gpu/nvgpu/gv100/hal_gv100.c b/drivers/gpu/nvgpu/gv100/hal_gv100.c index 70fceea9..3dbd1e01 100644 --- a/drivers/gpu/nvgpu/gv100/hal_gv100.c +++ b/drivers/gpu/nvgpu/gv100/hal_gv100.c | |||
@@ -515,6 +515,8 @@ static const struct gpu_ops gv100_ops = { | |||
515 | .get_syncpt_wait_cmd_size = gv11b_fifo_get_syncpt_wait_cmd_size, | 515 | .get_syncpt_wait_cmd_size = gv11b_fifo_get_syncpt_wait_cmd_size, |
516 | .add_syncpt_incr_cmd = gv11b_fifo_add_syncpt_incr_cmd, | 516 | .add_syncpt_incr_cmd = gv11b_fifo_add_syncpt_incr_cmd, |
517 | .get_syncpt_incr_cmd_size = gv11b_fifo_get_syncpt_incr_cmd_size, | 517 | .get_syncpt_incr_cmd_size = gv11b_fifo_get_syncpt_incr_cmd_size, |
518 | .get_syncpt_incr_per_release = | ||
519 | gv11b_fifo_get_syncpt_incr_per_release, | ||
518 | .get_sync_ro_map = gv11b_fifo_get_sync_ro_map, | 520 | .get_sync_ro_map = gv11b_fifo_get_sync_ro_map, |
519 | #endif | 521 | #endif |
520 | .resetup_ramfc = NULL, | 522 | .resetup_ramfc = NULL, |
diff --git a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c index ef76e76b..4050579e 100644 --- a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c | |||
@@ -1779,6 +1779,11 @@ u32 gv11b_fifo_get_syncpt_wait_cmd_size(void) | |||
1779 | return 8; | 1779 | return 8; |
1780 | } | 1780 | } |
1781 | 1781 | ||
1782 | u32 gv11b_fifo_get_syncpt_incr_per_release(void) | ||
1783 | { | ||
1784 | return 1; | ||
1785 | } | ||
1786 | |||
1782 | void gv11b_fifo_add_syncpt_incr_cmd(struct gk20a *g, | 1787 | void gv11b_fifo_add_syncpt_incr_cmd(struct gk20a *g, |
1783 | bool wfi_cmd, struct priv_cmd_entry *cmd, | 1788 | bool wfi_cmd, struct priv_cmd_entry *cmd, |
1784 | u32 id, u64 gpu_va) | 1789 | u32 id, u64 gpu_va) |
diff --git a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.h b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.h index c0e6e5cd..2bd82d5f 100644 --- a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.h +++ b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.h | |||
@@ -108,6 +108,7 @@ void gv11b_fifo_add_syncpt_wait_cmd(struct gk20a *g, | |||
108 | struct priv_cmd_entry *cmd, u32 off, | 108 | struct priv_cmd_entry *cmd, u32 off, |
109 | u32 id, u32 thresh, u64 gpu_va_base); | 109 | u32 id, u32 thresh, u64 gpu_va_base); |
110 | u32 gv11b_fifo_get_syncpt_wait_cmd_size(void); | 110 | u32 gv11b_fifo_get_syncpt_wait_cmd_size(void); |
111 | u32 gv11b_fifo_get_syncpt_incr_per_release(void); | ||
111 | void gv11b_fifo_add_syncpt_incr_cmd(struct gk20a *g, | 112 | void gv11b_fifo_add_syncpt_incr_cmd(struct gk20a *g, |
112 | bool wfi_cmd, struct priv_cmd_entry *cmd, | 113 | bool wfi_cmd, struct priv_cmd_entry *cmd, |
113 | u32 id, u64 gpu_va_base); | 114 | u32 id, u64 gpu_va_base); |
diff --git a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c index 86bdc884..1fe09827 100644 --- a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c | |||
@@ -531,6 +531,8 @@ static const struct gpu_ops gv11b_ops = { | |||
531 | .get_syncpt_wait_cmd_size = gv11b_fifo_get_syncpt_wait_cmd_size, | 531 | .get_syncpt_wait_cmd_size = gv11b_fifo_get_syncpt_wait_cmd_size, |
532 | .add_syncpt_incr_cmd = gv11b_fifo_add_syncpt_incr_cmd, | 532 | .add_syncpt_incr_cmd = gv11b_fifo_add_syncpt_incr_cmd, |
533 | .get_syncpt_incr_cmd_size = gv11b_fifo_get_syncpt_incr_cmd_size, | 533 | .get_syncpt_incr_cmd_size = gv11b_fifo_get_syncpt_incr_cmd_size, |
534 | .get_syncpt_incr_per_release = | ||
535 | gv11b_fifo_get_syncpt_incr_per_release, | ||
534 | .get_sync_ro_map = gv11b_fifo_get_sync_ro_map, | 536 | .get_sync_ro_map = gv11b_fifo_get_sync_ro_map, |
535 | #endif | 537 | #endif |
536 | .resetup_ramfc = NULL, | 538 | .resetup_ramfc = NULL, |
diff --git a/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c b/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c index 5d618649..18eee404 100644 --- a/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c +++ b/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c | |||
@@ -347,6 +347,8 @@ static const struct gpu_ops vgpu_gp10b_ops = { | |||
347 | .free_syncpt_buf = gk20a_fifo_free_syncpt_buf, | 347 | .free_syncpt_buf = gk20a_fifo_free_syncpt_buf, |
348 | .add_syncpt_wait_cmd = gk20a_fifo_add_syncpt_wait_cmd, | 348 | .add_syncpt_wait_cmd = gk20a_fifo_add_syncpt_wait_cmd, |
349 | .get_syncpt_wait_cmd_size = gk20a_fifo_get_syncpt_wait_cmd_size, | 349 | .get_syncpt_wait_cmd_size = gk20a_fifo_get_syncpt_wait_cmd_size, |
350 | .get_syncpt_incr_per_release = | ||
351 | gk20a_fifo_get_syncpt_incr_per_release, | ||
350 | .add_syncpt_incr_cmd = gk20a_fifo_add_syncpt_incr_cmd, | 352 | .add_syncpt_incr_cmd = gk20a_fifo_add_syncpt_incr_cmd, |
351 | .get_syncpt_incr_cmd_size = gk20a_fifo_get_syncpt_incr_cmd_size, | 353 | .get_syncpt_incr_cmd_size = gk20a_fifo_get_syncpt_incr_cmd_size, |
352 | .get_sync_ro_map = NULL, | 354 | .get_sync_ro_map = NULL, |
diff --git a/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c b/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c index 03cfab9f..465b57a5 100644 --- a/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c +++ b/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c | |||
@@ -390,6 +390,8 @@ static const struct gpu_ops vgpu_gv11b_ops = { | |||
390 | .free_syncpt_buf = gv11b_fifo_free_syncpt_buf, | 390 | .free_syncpt_buf = gv11b_fifo_free_syncpt_buf, |
391 | .add_syncpt_wait_cmd = gv11b_fifo_add_syncpt_wait_cmd, | 391 | .add_syncpt_wait_cmd = gv11b_fifo_add_syncpt_wait_cmd, |
392 | .get_syncpt_wait_cmd_size = gv11b_fifo_get_syncpt_wait_cmd_size, | 392 | .get_syncpt_wait_cmd_size = gv11b_fifo_get_syncpt_wait_cmd_size, |
393 | .get_syncpt_incr_per_release = | ||
394 | gv11b_fifo_get_syncpt_incr_per_release, | ||
393 | .add_syncpt_incr_cmd = gv11b_fifo_add_syncpt_incr_cmd, | 395 | .add_syncpt_incr_cmd = gv11b_fifo_add_syncpt_incr_cmd, |
394 | .get_syncpt_incr_cmd_size = gv11b_fifo_get_syncpt_incr_cmd_size, | 396 | .get_syncpt_incr_cmd_size = gv11b_fifo_get_syncpt_incr_cmd_size, |
395 | .get_sync_ro_map = vgpu_gv11b_fifo_get_sync_ro_map, | 397 | .get_sync_ro_map = vgpu_gv11b_fifo_get_sync_ro_map, |