From b25d5d86caa049201ddcea77cf1a733a85090698 Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Wed, 29 Aug 2018 09:42:41 -0700 Subject: gpu: nvgpu: Use debug sig for NVDEC if on dbg SKU Debug fused chips do not have production signature. Use debug signature for memory unlock binary. Requires also exporting a HAL for checking debug mode from PMU. Bug 200445202 Change-Id: I7f88ed6db2fe1c614fe9d4074dbf974c3817f453 Signed-off-by: Terje Bergstrom Reviewed-on: https://git-master.nvidia.com/r/1809225 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/fb/fb_gv100.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'drivers/gpu/nvgpu/common/fb/fb_gv100.c') diff --git a/drivers/gpu/nvgpu/common/fb/fb_gv100.c b/drivers/gpu/nvgpu/common/fb/fb_gv100.c index ce51a2c6..848d6efb 100644 --- a/drivers/gpu/nvgpu/common/fb/fb_gv100.c +++ b/drivers/gpu/nvgpu/common/fb/fb_gv100.c @@ -104,11 +104,20 @@ void gv100_fb_disable_hub_intr(struct gk20a *g) * @brief Patch signatures into ucode image */ static int gv100_fb_acr_ucode_patch_sig(struct gk20a *g, - unsigned int *p_img, - unsigned int *p_sig, - unsigned int *p_patch_loc, - unsigned int *p_patch_ind) + u32 *p_img, + u32 *p_prod_sig, + u32 *p_dbg_sig, + u32 *p_patch_loc, + u32 *p_patch_ind) { + u32 *p_sig; + + if (!g->ops.pmu.is_debug_mode_enabled(g)) { + p_sig = p_prod_sig; + } else { + p_sig = p_dbg_sig; + } + /* Patching logic. We have just one location to patch. */ p_img[(*p_patch_loc>>2)] = p_sig[(*p_patch_ind<<2)]; p_img[(*p_patch_loc>>2)+1U] = p_sig[(*p_patch_ind<<2)+1U]; @@ -158,9 +167,10 @@ int gv100_fb_memory_unlock(struct gk20a *g) mem_unlock_ucode = (u32 *)(mem_unlock_fw->data + hsbin_hdr->data_offset); - /* Patch Ucode singnatures */ + /* Patch Ucode signatures */ if (gv100_fb_acr_ucode_patch_sig(g, mem_unlock_ucode, (u32 *)(mem_unlock_fw->data + fw_hdr->sig_prod_offset), + (u32 *)(mem_unlock_fw->data + fw_hdr->sig_dbg_offset), (u32 *)(mem_unlock_fw->data + fw_hdr->patch_loc), (u32 *)(mem_unlock_fw->data + fw_hdr->patch_sig)) < 0) { nvgpu_err(g, "mem unlock patch signatures fail"); -- cgit v1.2.2