From 3af391e862bd580b9748b383c808d5ed63d52c1b Mon Sep 17 00:00:00 2001 From: mpoojary Date: Tue, 28 Sep 2021 11:56:36 +0000 Subject: gpu: nvgpu: adds support for ACR dbg/prod. ACR ucode is encrypted using different keys for prod/dbg boards. This change adds a check to select ACR ucode based on board type. Note: This support is added for t18x. In the sub-sequent CL, support for T210 will be added and since ACR binaries are different for gp10b and gm20b, a new ACR init function is created for gp10b to accept new ACR prod/dbg binaries. Bug 2672836 dev-main reference patch: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2471590 Change-Id: Ib0a01bce4f3a3187aa15a669649f8510c88dfd0a Signed-off-by: mpoojary Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2601970 Tested-by: mobile promotions Reviewed-by: Mahantesh Kumbar Reviewed-by: Deepak Nibade Reviewed-by: mobile promotions GVS: Gerrit_Virtual_Submit --- drivers/gpu/nvgpu/Makefile | 1 + drivers/gpu/nvgpu/Makefile.sources | 3 +- drivers/gpu/nvgpu/gp10b/acr_gp10b.c | 52 +++++++++++++++++++++++++++ drivers/gpu/nvgpu/gp10b/acr_gp10b.h | 28 +++++++++++++++ drivers/gpu/nvgpu/gp10b/hal_gp10b.c | 5 +-- drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c | 5 +-- 6 files changed, 89 insertions(+), 5 deletions(-) create mode 100644 drivers/gpu/nvgpu/gp10b/acr_gp10b.c create mode 100644 drivers/gpu/nvgpu/gp10b/acr_gp10b.h (limited to 'drivers/gpu/nvgpu') diff --git a/drivers/gpu/nvgpu/Makefile b/drivers/gpu/nvgpu/Makefile index d5ceecb6..8c5b92e1 100644 --- a/drivers/gpu/nvgpu/Makefile +++ b/drivers/gpu/nvgpu/Makefile @@ -298,6 +298,7 @@ nvgpu-$(CONFIG_GK20A_CYCLE_STATS) += \ gk20a/css_gr_gk20a.o nvgpu-y += \ + gp10b/acr_gp10b.o \ gp10b/gr_gp10b.o \ gp10b/clk_arb_gp10b.o \ gp10b/gr_ctx_gp10b.o \ diff --git a/drivers/gpu/nvgpu/Makefile.sources b/drivers/gpu/nvgpu/Makefile.sources index 99f3b69b..56cb3455 100644 --- a/drivers/gpu/nvgpu/Makefile.sources +++ b/drivers/gpu/nvgpu/Makefile.sources @@ -1,6 +1,6 @@ # -*- mode: makefile -*- # -# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. +# Copyright (c) 2018-2021, 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"), @@ -174,6 +174,7 @@ srcs := os/posix/nvgpu.c \ gm20b/mm_gm20b.c \ gm20b/regops_gm20b.c \ gm20b/fecs_trace_gm20b.c \ + gp10b/acr_gp10b.c \ gp10b/gr_gp10b.c \ gp10b/gr_ctx_gp10b.c \ gp10b/ce_gp10b.c \ diff --git a/drivers/gpu/nvgpu/gp10b/acr_gp10b.c b/drivers/gpu/nvgpu/gp10b/acr_gp10b.c new file mode 100644 index 00000000..d113c458 --- /dev/null +++ b/drivers/gpu/nvgpu/gp10b/acr_gp10b.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2021, 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"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include +#include + +#include "gm20b/acr_gm20b.h" +#include "acr_gp10b.h" + +static void gp10b_acr_default_sw_init(struct gk20a *g, struct hs_acr *hs_acr) +{ + nvgpu_log_fn(g, " "); + + /* ACR HS ucode type & f/w name*/ + hs_acr->acr_type = ACR_DEFAULT; + + if (!g->ops.pmu.is_debug_mode_enabled(g)) { + hs_acr->acr_fw_name = HSBIN_ACR_PROD_UCODE; + } else { + hs_acr->acr_fw_name = HSBIN_ACR_DBG_UCODE; + } +} + +void nvgpu_gp10b_acr_sw_init(struct gk20a *g, struct nvgpu_acr *acr) +{ + nvgpu_log_fn(g, " "); + + /* inherit the gm20b config data */ + nvgpu_gm20b_acr_sw_init(g, acr); + gp10b_acr_default_sw_init(g, &acr->acr); +} \ No newline at end of file diff --git a/drivers/gpu/nvgpu/gp10b/acr_gp10b.h b/drivers/gpu/nvgpu/gp10b/acr_gp10b.h new file mode 100644 index 00000000..7e1261ca --- /dev/null +++ b/drivers/gpu/nvgpu/gp10b/acr_gp10b.h @@ -0,0 +1,28 @@ +/* +* Copyright (c) 2021, 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"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +*/ + +#ifndef ACR_SW_GP10B_H +#define ACR_SW_GP10B_H +struct gk20a; +struct nvgpu_acr; +void nvgpu_gp10b_acr_sw_init(struct gk20a *g, struct nvgpu_acr *acr); +#endif /* ACR_SW_GP10B_H */ \ No newline at end of file diff --git a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c index 6498f8c9..c6f3c3d9 100644 --- a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c @@ -1,7 +1,7 @@ /* * GP10B Tegra HAL interface * - * Copyright (c) 2014-2020, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2014-2021, 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"), @@ -72,6 +72,7 @@ #include "gm20b/gr_gm20b.h" #include "gm20b/fifo_gm20b.h" #include "gm20b/acr_gm20b.h" +#include "gp10b/acr_gp10b.h" #include "gm20b/pmu_gm20b.h" #include "gm20b/clk_gm20b.h" #include "gm20b/mm_gm20b.h" @@ -734,7 +735,7 @@ static const struct gpu_ops gp10b_ops = { .read_vin_cal_gain_offset_fuse = NULL, }, .acr = { - .acr_sw_init = nvgpu_gm20b_acr_sw_init, + .acr_sw_init = nvgpu_gp10b_acr_sw_init, }, .chip_init_gpu_characteristics = gp10b_init_gpu_characteristics, .get_litter_value = gp10b_get_litter_value, diff --git a/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c b/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c index a13b8681..3f87a629 100644 --- a/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c +++ b/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2020, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2015-2021, 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"), @@ -53,6 +53,7 @@ #include "gk20a/dbg_gpu_gk20a.h" #include "gk20a/pmu_gk20a.h" +#include "gp10b/acr_gp10b.h" #include "gp10b/mm_gp10b.h" #include "gp10b/ce_gp10b.h" #include "gp10b/pmu_gp10b.h" @@ -568,7 +569,7 @@ static const struct gpu_ops vgpu_gp10b_ops = { .read_vin_cal_gain_offset_fuse = NULL, }, .acr = { - .acr_sw_init = nvgpu_gm20b_acr_sw_init, + .acr_sw_init = nvgpu_gp10b_acr_sw_init, }, .chip_init_gpu_characteristics = vgpu_init_gpu_characteristics, .get_litter_value = gp10b_get_litter_value, -- cgit v1.2.2