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/792051
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
alloc_obj_ctx.class_num = required_class;
alloc_obj_ctx.flags = 0;
+ /* CDE enabled */
+ cde_ctx->ch->cde = 1;
+
err = gk20a_alloc_obj_ctx(cde_ctx->ch, &alloc_obj_ctx);
if (err) {
gk20a_warn(&cde_ctx->pdev->dev, "cde: failed to allocate ctx. err=%d",
bool bound;
bool first_init;
bool vpr;
+ bool cde;
pid_t pid;
struct mutex ioctl_lock;
struct channel_ctx_gk20a *ch_ctx = &c->ch_ctx;
u32 virt_addr_lo;
u32 virt_addr_hi;
- u32 i, v, data;
+ u32 i, v, data, cde_v;
int ret = 0;
void *ctx_ptr = NULL;
if (!ctx_ptr)
return -ENOMEM;
+ /* Enable CDE in FECS header. Default cde = 0, is disabled,
+ * so no need to do anythign in else {}
+ */
+ if (c->cde) {
+ cde_v = gk20a_mem_rd32(ctx_ptr + ctxsw_prog_main_image_ctl_o(), 0);
+ cde_v |= ctxsw_prog_main_image_ctl_cde_enabled_f();
+ gk20a_mem_wr32(ctx_ptr + ctxsw_prog_main_image_ctl_o(), 0, cde_v);
+ }
+
for (i = 0; i < gr->ctx_vars.golden_image_size / 4; i++)
gk20a_mem_wr32(ctx_ptr, i, gr->ctx_vars.local_golden_image[i]);
{
return 0x00000008;
}
+static inline u32 ctxsw_prog_main_image_ctl_o(void)
+{
+ return 0x0000000c;
+}
+static inline u32 ctxsw_prog_main_image_ctl_cde_v(u32 r)
+{
+ return (r >> 10) & 0x1;
+}
+static inline u32 ctxsw_prog_main_image_ctl_cde_enabled_f(void)
+{
+ return 0x400;
+}
+static inline u32 ctxsw_prog_main_image_ctl_cde_disabled_f(void)
+{
+ return 0x0;
+}
static inline u32 ctxsw_prog_main_image_patch_count_o(void)
{
return 0x00000010;
{
return 0x00000008;
}
+static inline u32 ctxsw_prog_main_image_ctl_o(void)
+{
+ return 0x0000000c;
+}
+static inline u32 ctxsw_prog_main_image_ctl_cde_v(u32 r)
+{
+ return (r >> 10) & 0x1;
+}
+static inline u32 ctxsw_prog_main_image_ctl_cde_enabled_f(void)
+{
+ return 0x400;
+}
+static inline u32 ctxsw_prog_main_image_ctl_cde_disabled_f(void)
+{
+ return 0x0;
+}
static inline u32 ctxsw_prog_main_image_patch_count_o(void)
{
return 0x00000010;