diff options
author | sujeet baranwal <sbaranwal@nvidia.com> | 2015-09-22 11:56:13 -0400 |
---|---|---|
committer | Terje Bergstrom <tbergstrom@nvidia.com> | 2015-09-24 10:53:43 -0400 |
commit | 6ceef08d52daabdf4911f28086e082b1dd2559f1 (patch) | |
tree | abe98d12cf6d0b94a8f5af8d4d267d8eea7c7cc4 /drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |
parent | 977acd877b68b51eb2f48a999077939378968c66 (diff) |
gpu: nvgpu: Add CDE bits in FECS header
In case of CDE channel, T1 (Tex) unit needs to be promoted to 128B
aligned, otherwise causes a HW deadlock. Gpu driver makes changes in
FECS header which FECS uses to configure the T1 promotions to aligned
128B accesses.
Bug 200096226
Change-Id: Ic006b2c7035bbeabe1081aeed968a6c6d11f9995
Signed-off-by: sujeet baranwal <sbaranwal@nvidia.com>
Reviewed-on: http://git-master/r/802327
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index 0ae44c6f..24ee8876 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |||
@@ -1612,7 +1612,7 @@ int gr_gk20a_load_golden_ctx_image(struct gk20a *g, | |||
1612 | struct channel_ctx_gk20a *ch_ctx = &c->ch_ctx; | 1612 | struct channel_ctx_gk20a *ch_ctx = &c->ch_ctx; |
1613 | u32 virt_addr_lo; | 1613 | u32 virt_addr_lo; |
1614 | u32 virt_addr_hi; | 1614 | u32 virt_addr_hi; |
1615 | u32 i, v, data; | 1615 | u32 i, v, data, cde_v; |
1616 | int ret = 0; | 1616 | int ret = 0; |
1617 | void *ctx_ptr = NULL; | 1617 | void *ctx_ptr = NULL; |
1618 | 1618 | ||
@@ -1631,6 +1631,15 @@ int gr_gk20a_load_golden_ctx_image(struct gk20a *g, | |||
1631 | if (!ctx_ptr) | 1631 | if (!ctx_ptr) |
1632 | return -ENOMEM; | 1632 | return -ENOMEM; |
1633 | 1633 | ||
1634 | /* Enable CDE in FECS header. Default cde = 0, is disabled, | ||
1635 | * so no need to do anything in else {} | ||
1636 | */ | ||
1637 | if (c->cde) { | ||
1638 | cde_v = gk20a_mem_rd32(ctx_ptr + ctxsw_prog_main_image_ctl_o(), 0); | ||
1639 | cde_v |= ctxsw_prog_main_image_ctl_cde_enabled_f(); | ||
1640 | gk20a_mem_wr32(ctx_ptr + ctxsw_prog_main_image_ctl_o(), 0, cde_v); | ||
1641 | } | ||
1642 | |||
1634 | for (i = 0; i < gr->ctx_vars.golden_image_size / 4; i++) | 1643 | for (i = 0; i < gr->ctx_vars.golden_image_size / 4; i++) |
1635 | gk20a_mem_wr32(ctx_ptr, i, gr->ctx_vars.local_golden_image[i]); | 1644 | gk20a_mem_wr32(ctx_ptr, i, gr->ctx_vars.local_golden_image[i]); |
1636 | 1645 | ||