summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorseshendra Gadagottu <sgadagottu@nvidia.com>2018-03-06 16:25:11 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2018-03-12 13:40:17 -0400
commit3df619f68afa6b23a33d7da072315755de38a30b (patch)
treedf397177061e6c1f04ecba6959299504cbb9597c
parent7a5a2fb75a7c4990939593437af72febf01b732d (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>
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c5
-rw-r--r--drivers/gpu/nvgpu/gk20a/fifo_gk20a.c5
-rw-r--r--drivers/gpu/nvgpu/gk20a/fifo_gk20a.h1
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.h1
-rw-r--r--drivers/gpu/nvgpu/gm20b/hal_gm20b.c2
-rw-r--r--drivers/gpu/nvgpu/gp106/hal_gp106.c2
-rw-r--r--drivers/gpu/nvgpu/gp10b/hal_gp10b.c2
-rw-r--r--drivers/gpu/nvgpu/gv100/hal_gv100.c2
-rw-r--r--drivers/gpu/nvgpu/gv11b/fifo_gv11b.c5
-rw-r--r--drivers/gpu/nvgpu/gv11b/fifo_gv11b.h1
-rw-r--r--drivers/gpu/nvgpu/gv11b/hal_gv11b.c2
-rw-r--r--drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c2
-rw-r--r--drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c2
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
4002u32 gk20a_fifo_get_syncpt_incr_per_release(void)
4003{
4004 return 2;
4005}
4006
4002void gk20a_fifo_add_syncpt_incr_cmd(struct gk20a *g, 4007void 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);
408u32 gk20a_fifo_get_syncpt_wait_cmd_size(void); 408u32 gk20a_fifo_get_syncpt_wait_cmd_size(void);
409u32 gk20a_fifo_get_syncpt_incr_per_release(void);
409void gk20a_fifo_add_syncpt_incr_cmd(struct gk20a *g, 410void 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
1782u32 gv11b_fifo_get_syncpt_incr_per_release(void)
1783{
1784 return 1;
1785}
1786
1782void gv11b_fifo_add_syncpt_incr_cmd(struct gk20a *g, 1787void 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);
110u32 gv11b_fifo_get_syncpt_wait_cmd_size(void); 110u32 gv11b_fifo_get_syncpt_wait_cmd_size(void);
111u32 gv11b_fifo_get_syncpt_incr_per_release(void);
111void gv11b_fifo_add_syncpt_incr_cmd(struct gk20a *g, 112void 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,