summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormpoojary <mpoojary@nvidia.com>2021-09-28 07:56:36 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2021-10-07 09:56:10 -0400
commit3af391e862bd580b9748b383c808d5ed63d52c1b (patch)
treec6d04f5c134cc0916cb9e369fbd5d87c45ad5dfc
parentd87030e73048073d4bf1dd52a461b1efc1f04867 (diff)
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 <mpoojary@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2601970 Tested-by: mobile promotions <svcmobile_promotions@nvidia.com> Reviewed-by: Mahantesh Kumbar <mkumbar@nvidia.com> Reviewed-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> GVS: Gerrit_Virtual_Submit
-rw-r--r--drivers/gpu/nvgpu/Makefile1
-rw-r--r--drivers/gpu/nvgpu/Makefile.sources3
-rw-r--r--drivers/gpu/nvgpu/gp10b/acr_gp10b.c52
-rw-r--r--drivers/gpu/nvgpu/gp10b/acr_gp10b.h28
-rw-r--r--drivers/gpu/nvgpu/gp10b/hal_gp10b.c5
-rw-r--r--drivers/gpu/nvgpu/vgpu/gp10b/vgpu_hal_gp10b.c5
6 files changed, 89 insertions, 5 deletions
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) += \
298 gk20a/css_gr_gk20a.o 298 gk20a/css_gr_gk20a.o
299 299
300nvgpu-y += \ 300nvgpu-y += \
301 gp10b/acr_gp10b.o \
301 gp10b/gr_gp10b.o \ 302 gp10b/gr_gp10b.o \
302 gp10b/clk_arb_gp10b.o \ 303 gp10b/clk_arb_gp10b.o \
303 gp10b/gr_ctx_gp10b.o \ 304 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 @@
1# -*- mode: makefile -*- 1# -*- mode: makefile -*-
2# 2#
3# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. 3# Copyright (c) 2018-2021, NVIDIA CORPORATION. All rights reserved.
4# 4#
5# Permission is hereby granted, free of charge, to any person obtaining a 5# Permission is hereby granted, free of charge, to any person obtaining a
6# copy of this software and associated documentation files (the "Software"), 6# copy of this software and associated documentation files (the "Software"),
@@ -174,6 +174,7 @@ srcs := os/posix/nvgpu.c \
174 gm20b/mm_gm20b.c \ 174 gm20b/mm_gm20b.c \
175 gm20b/regops_gm20b.c \ 175 gm20b/regops_gm20b.c \
176 gm20b/fecs_trace_gm20b.c \ 176 gm20b/fecs_trace_gm20b.c \
177 gp10b/acr_gp10b.c \
177 gp10b/gr_gp10b.c \ 178 gp10b/gr_gp10b.c \
178 gp10b/gr_ctx_gp10b.c \ 179 gp10b/gr_ctx_gp10b.c \
179 gp10b/ce_gp10b.c \ 180 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 @@
1/*
2 * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20 * DEALINGS IN THE SOFTWARE.
21 */
22
23#include <nvgpu/types.h>
24#include <nvgpu/gk20a.h>
25#include <nvgpu/pmu.h>
26#include <nvgpu/acr/nvgpu_acr.h>
27
28#include "gm20b/acr_gm20b.h"
29#include "acr_gp10b.h"
30
31static void gp10b_acr_default_sw_init(struct gk20a *g, struct hs_acr *hs_acr)
32{
33 nvgpu_log_fn(g, " ");
34
35 /* ACR HS ucode type & f/w name*/
36 hs_acr->acr_type = ACR_DEFAULT;
37
38 if (!g->ops.pmu.is_debug_mode_enabled(g)) {
39 hs_acr->acr_fw_name = HSBIN_ACR_PROD_UCODE;
40 } else {
41 hs_acr->acr_fw_name = HSBIN_ACR_DBG_UCODE;
42 }
43}
44
45void nvgpu_gp10b_acr_sw_init(struct gk20a *g, struct nvgpu_acr *acr)
46{
47 nvgpu_log_fn(g, " ");
48
49 /* inherit the gm20b config data */
50 nvgpu_gm20b_acr_sw_init(g, acr);
51 gp10b_acr_default_sw_init(g, &acr->acr);
52} \ 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 @@
1/*
2* Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
3*
4* Permission is hereby granted, free of charge, to any person obtaining a
5* copy of this software and associated documentation files (the "Software"),
6* to deal in the Software without restriction, including without limitation
7* the rights to use, copy, modify, merge, publish, distribute, sublicense,
8* and/or sell copies of the Software, and to permit persons to whom the
9* Software is furnished to do so, subject to the following conditions:
10*
11* The above copyright notice and this permission notice shall be included in
12* all copies or substantial portions of the Software.
13*
14* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20* DEALINGS IN THE SOFTWARE.
21*/
22
23#ifndef ACR_SW_GP10B_H
24#define ACR_SW_GP10B_H
25struct gk20a;
26struct nvgpu_acr;
27void nvgpu_gp10b_acr_sw_init(struct gk20a *g, struct nvgpu_acr *acr);
28#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 @@
1/* 1/*
2 * GP10B Tegra HAL interface 2 * GP10B Tegra HAL interface
3 * 3 *
4 * Copyright (c) 2014-2020, NVIDIA CORPORATION. All rights reserved. 4 * Copyright (c) 2014-2021, NVIDIA CORPORATION. All rights reserved.
5 * 5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a 6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"), 7 * copy of this software and associated documentation files (the "Software"),
@@ -72,6 +72,7 @@
72#include "gm20b/gr_gm20b.h" 72#include "gm20b/gr_gm20b.h"
73#include "gm20b/fifo_gm20b.h" 73#include "gm20b/fifo_gm20b.h"
74#include "gm20b/acr_gm20b.h" 74#include "gm20b/acr_gm20b.h"
75#include "gp10b/acr_gp10b.h"
75#include "gm20b/pmu_gm20b.h" 76#include "gm20b/pmu_gm20b.h"
76#include "gm20b/clk_gm20b.h" 77#include "gm20b/clk_gm20b.h"
77#include "gm20b/mm_gm20b.h" 78#include "gm20b/mm_gm20b.h"
@@ -734,7 +735,7 @@ static const struct gpu_ops gp10b_ops = {
734 .read_vin_cal_gain_offset_fuse = NULL, 735 .read_vin_cal_gain_offset_fuse = NULL,
735 }, 736 },
736 .acr = { 737 .acr = {
737 .acr_sw_init = nvgpu_gm20b_acr_sw_init, 738 .acr_sw_init = nvgpu_gp10b_acr_sw_init,
738 }, 739 },
739 .chip_init_gpu_characteristics = gp10b_init_gpu_characteristics, 740 .chip_init_gpu_characteristics = gp10b_init_gpu_characteristics,
740 .get_litter_value = gp10b_get_litter_value, 741 .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 @@
1/* 1/*
2 * Copyright (c) 2015-2020, NVIDIA CORPORATION. All rights reserved. 2 * Copyright (c) 2015-2021, NVIDIA CORPORATION. All rights reserved.
3 * 3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a 4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"), 5 * copy of this software and associated documentation files (the "Software"),
@@ -53,6 +53,7 @@
53#include "gk20a/dbg_gpu_gk20a.h" 53#include "gk20a/dbg_gpu_gk20a.h"
54#include "gk20a/pmu_gk20a.h" 54#include "gk20a/pmu_gk20a.h"
55 55
56#include "gp10b/acr_gp10b.h"
56#include "gp10b/mm_gp10b.h" 57#include "gp10b/mm_gp10b.h"
57#include "gp10b/ce_gp10b.h" 58#include "gp10b/ce_gp10b.h"
58#include "gp10b/pmu_gp10b.h" 59#include "gp10b/pmu_gp10b.h"
@@ -568,7 +569,7 @@ static const struct gpu_ops vgpu_gp10b_ops = {
568 .read_vin_cal_gain_offset_fuse = NULL, 569 .read_vin_cal_gain_offset_fuse = NULL,
569 }, 570 },
570 .acr = { 571 .acr = {
571 .acr_sw_init = nvgpu_gm20b_acr_sw_init, 572 .acr_sw_init = nvgpu_gp10b_acr_sw_init,
572 }, 573 },
573 .chip_init_gpu_characteristics = vgpu_init_gpu_characteristics, 574 .chip_init_gpu_characteristics = vgpu_init_gpu_characteristics,
574 .get_litter_value = gp10b_get_litter_value, 575 .get_litter_value = gp10b_get_litter_value,