From 26ce83862f33dfb91b6a8348c94402de48f70db6 Mon Sep 17 00:00:00 2001 From: smadhavan Date: Mon, 30 Dec 2019 15:35:33 +0530 Subject: [PATCH] gpu: nvgpu: unit: Add ACR DBG/PROD bins. This patch adds acr_ucode_dbg/prod.bin The two new bin files are copies of the TOT acr_ucode.bin. They will act as placeholders till acr ucode with UCODE encryption gets production signed. This change also adds a check to select ACR ucode based on board type. Note: This support is added only for t19x. P4CL 27814148 Bug 2672836 Change-Id: Ib2f9fc2b23a8c50480a07baa130851c94533f345 Signed-off-by: smadhavan Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2270657 Reviewed-by: Vaibhav Kachore Reviewed-by: mobile promotions Tested-by: mobile promotions GVS: Gerrit_Virtual_Submit --- userspace/Makefile.tmk | 12 ++++++++---- userspace/firmware/acr_ucode_dbg.bin | Bin 0 -> 20992 bytes userspace/firmware/acr_ucode_prod.bin | Bin 0 -> 20992 bytes userspace/units/falcon/falcon_tests/falcon.c | 16 ++++++++++++---- 4 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 userspace/firmware/acr_ucode_dbg.bin create mode 100644 userspace/firmware/acr_ucode_prod.bin diff --git a/userspace/Makefile.tmk b/userspace/Makefile.tmk index f47239762..c848ede93 100644 --- a/userspace/Makefile.tmk +++ b/userspace/Makefile.tmk @@ -1,6 +1,6 @@ ################################### tell Emacs this is a -*- makefile-gmake -*- # -# Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved. +# Copyright (c) 2018-2020, NVIDIA CORPORATION. All rights reserved. # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), @@ -67,7 +67,8 @@ NV_FECS_IMG=fecs.bin NV_FECS_SIG_IMG=fecs_sig.bin NV_GPCCS_IMG=gpccs.bin NV_GPCCS_SIG_IMG=gpccs_sig.bin -NV_ACR_UCODE_IMG=acr_ucode.bin +NV_ACR_UCODE_PROD_IMG=acr_ucode_prod.bin +NV_ACR_UCODE_DBG_IMG=acr_ucode_dbg.bin NV_PMU_BL_IMG=pmu_bl.bin NV_COMPONENT_SYSTEMIMAGE_DIR := $(NV_SYSTEMIMAGE_TEST_EXECUTABLE_DIR)/nvgpu_unit NV_UNIT_REQ_FIRMWARE_DIR := $(NV_COMPONENT_SYSTEMIMAGE_DIR)/firmware @@ -80,7 +81,8 @@ systemimage:: $(NV_COMPONENT_SYSTEMIMAGE_DIR) $(NV_COMPONENT_SYSTEMIMAGE_DIR)/$( $(NV_UNIT_REQ_FIRMWARE_DIR)/$(NV_FECS_SIG_IMG) \ $(NV_UNIT_REQ_FIRMWARE_DIR)/$(NV_GPCCS_IMG) \ $(NV_UNIT_REQ_FIRMWARE_DIR)/$(NV_GPCCS_SIG_IMG) \ - $(NV_UNIT_REQ_FIRMWARE_DIR)/$(NV_ACR_UCODE_IMG) \ + $(NV_UNIT_REQ_FIRMWARE_DIR)/$(NV_ACR_UCODE_PROD_IMG) \ + $(NV_UNIT_REQ_FIRMWARE_DIR)/$(NV_ACR_UCODE_DBG_IMG) \ $(NV_UNIT_REQ_FIRMWARE_DIR)/$(NV_PMU_BL_IMG) #make the output directory @@ -109,7 +111,9 @@ $(NV_UNIT_REQ_FIRMWARE_DIR)/$(NV_GPCCS_IMG) : $(NV_COMPONENT_DIR)/firmware/$(NV_ $(CP) $< $@ $(NV_UNIT_REQ_FIRMWARE_DIR)/$(NV_GPCCS_SIG_IMG) : $(NV_COMPONENT_DIR)/firmware/$(NV_GPCCS_SIG_IMG) $(NV_UNIT_REQ_FIRMWARE_DIR) $(CP) $< $@ -$(NV_UNIT_REQ_FIRMWARE_DIR)/$(NV_ACR_UCODE_IMG) : $(NV_COMPONENT_DIR)/firmware/$(NV_ACR_UCODE_IMG) $(NV_UNIT_REQ_FIRMWARE_DIR) +$(NV_UNIT_REQ_FIRMWARE_DIR)/$(NV_ACR_UCODE_PROD_IMG) : $(NV_COMPONENT_DIR)/firmware/$(NV_ACR_UCODE_PROD_IMG) $(NV_UNIT_REQ_FIRMWARE_DIR) + $(CP) $< $@ +$(NV_UNIT_REQ_FIRMWARE_DIR)/$(NV_ACR_UCODE_DBG_IMG) : $(NV_COMPONENT_DIR)/firmware/$(NV_ACR_UCODE_DBG_IMG) $(NV_UNIT_REQ_FIRMWARE_DIR) $(CP) $< $@ $(NV_UNIT_REQ_FIRMWARE_DIR)/$(NV_PMU_BL_IMG) : $(NV_COMPONENT_DIR)/firmware/$(NV_PMU_BL_IMG) $(NV_UNIT_REQ_FIRMWARE_DIR) $(CP) $< $@ diff --git a/userspace/firmware/acr_ucode_dbg.bin b/userspace/firmware/acr_ucode_dbg.bin new file mode 100644 index 0000000000000000000000000000000000000000..ffbdb1ce18afbbd8a426693c2a4b366adea0e087 GIT binary patch literal 20992 zcmeIuF#!Mo0K%a4Pi+c6h(KY$fB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* K1`HT5@EjOY00031 literal 0 HcmV?d00001 diff --git a/userspace/firmware/acr_ucode_prod.bin b/userspace/firmware/acr_ucode_prod.bin new file mode 100644 index 0000000000000000000000000000000000000000..ffbdb1ce18afbbd8a426693c2a4b366adea0e087 GIT binary patch literal 20992 zcmeIuF#!Mo0K%a4Pi+c6h(KY$fB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* K1`HT5@EjOY00031 literal 0 HcmV?d00001 diff --git a/userspace/units/falcon/falcon_tests/falcon.c b/userspace/units/falcon/falcon_tests/falcon.c index 6c9354169..1175887af 100644 --- a/userspace/units/falcon/falcon_tests/falcon.c +++ b/userspace/units/falcon/falcon_tests/falcon.c @@ -1183,10 +1183,18 @@ int test_falcon_bootstrap(struct unit_module *m, struct gk20a *g, void *__args) } #endif - acr_fw = nvgpu_request_firmware(g, HSBIN_ACR_UCODE_IMAGE, 0); - if (acr_fw == NULL) { - unit_return_fail(m, "%s ucode get fail for %s", - HSBIN_ACR_UCODE_IMAGE, g->name); + if (!g->ops.pmu.is_debug_mode_enabled(g)) { + acr_fw = nvgpu_request_firmware(g, HSBIN_ACR_PROD_UCODE, 0); + if (acr_fw == NULL) { + unit_return_fail(m, "%s ucode get fail for %s", + HSBIN_ACR_PROD_UCODE, g->name); + } + } else { + acr_fw = nvgpu_request_firmware(g, HSBIN_ACR_DBG_UCODE, 0); + if (acr_fw == NULL) { + unit_return_fail(m, "%s ucode get fail for %s", + HSBIN_ACR_DBG_UCODE, g->name); + } } hs_bin_hdr = (struct bin_hdr *)(void *)acr_fw->data;