From 543a904e630dfe78b193803ad04d2bd12380c2b0 Mon Sep 17 00:00:00 2001 From: Debarshi Dutta Date: Thu, 9 May 2019 11:33:35 +0530 Subject: gpu: nvgpu: fecs ctxsw trace for gm20b Register gk20a non-arch-specific functions for gm20b gpu_ops.fecs_trace, Register nvgpu_os_linux_ops.fecs_trace.init_debugfs gp10b_fecs_trace_flush is now replaced by gm20b_fecs_trace_flush in fecs_trace_gm20b.* and the fecs_trace_gp10b.* files are removed. Bug 2052906 Change-Id: I245c91ae8e6015b87bafeb3ec023b98fe4c57501 Signed-off-by: Debarshi Dutta Reviewed-on: https://git-master.nvidia.com/r/2115247 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/Makefile | 2 +- drivers/gpu/nvgpu/Makefile.sources | 2 +- drivers/gpu/nvgpu/gm20b/fecs_trace_gm20b.c | 56 ++++++++++++++++++++++++++++++ drivers/gpu/nvgpu/gm20b/fecs_trace_gm20b.h | 32 +++++++++++++++++ drivers/gpu/nvgpu/gm20b/hal_gm20b.c | 21 +++++++++++ drivers/gpu/nvgpu/gp106/hal_gp106.c | 4 +-- drivers/gpu/nvgpu/gp10b/fecs_trace_gp10b.c | 56 ------------------------------ drivers/gpu/nvgpu/gp10b/fecs_trace_gp10b.h | 32 ----------------- drivers/gpu/nvgpu/gp10b/hal_gp10b.c | 4 +-- drivers/gpu/nvgpu/gv100/hal_gv100.c | 2 +- drivers/gpu/nvgpu/gv11b/hal_gv11b.c | 2 +- drivers/gpu/nvgpu/os/linux/os_ops_gm20b.c | 8 +++++ 12 files changed, 125 insertions(+), 96 deletions(-) create mode 100644 drivers/gpu/nvgpu/gm20b/fecs_trace_gm20b.c create mode 100644 drivers/gpu/nvgpu/gm20b/fecs_trace_gm20b.h delete mode 100644 drivers/gpu/nvgpu/gp10b/fecs_trace_gp10b.c delete mode 100644 drivers/gpu/nvgpu/gp10b/fecs_trace_gp10b.h diff --git a/drivers/gpu/nvgpu/Makefile b/drivers/gpu/nvgpu/Makefile index 819be617..827d7df5 100644 --- a/drivers/gpu/nvgpu/Makefile +++ b/drivers/gpu/nvgpu/Makefile @@ -256,6 +256,7 @@ nvgpu-y += \ gm20b/pmu_gm20b.o \ gm20b/mm_gm20b.o \ gm20b/regops_gm20b.o \ + gm20b/fecs_trace_gm20b.o \ boardobj/boardobj.o \ boardobj/boardobjgrp.o \ boardobj/boardobjgrpmask.o \ @@ -302,7 +303,6 @@ nvgpu-y += \ gp10b/pmu_gp10b.o \ gp10b/hal_gp10b.o \ gp10b/regops_gp10b.o \ - gp10b/fecs_trace_gp10b.o \ gp10b/gp10b.o \ gp10b/ecc_gp10b.o \ gp106/hal_gp106.o \ diff --git a/drivers/gpu/nvgpu/Makefile.sources b/drivers/gpu/nvgpu/Makefile.sources index 6ba8555d..183da6a5 100644 --- a/drivers/gpu/nvgpu/Makefile.sources +++ b/drivers/gpu/nvgpu/Makefile.sources @@ -172,6 +172,7 @@ srcs := os/posix/nvgpu.c \ gm20b/pmu_gm20b.c \ gm20b/mm_gm20b.c \ gm20b/regops_gm20b.c \ + gm20b/fecs_trace_gm20b.c \ gp10b/gr_gp10b.c \ gp10b/gr_ctx_gp10b.c \ gp10b/ce_gp10b.c \ @@ -181,7 +182,6 @@ srcs := os/posix/nvgpu.c \ gp10b/hal_gp10b.c \ gp10b/regops_gp10b.c \ gp10b/clk_arb_gp10b.c \ - gp10b/fecs_trace_gp10b.c \ gp10b/gp10b.c \ gp10b/ecc_gp10b.c \ gv11b/gv11b.c \ diff --git a/drivers/gpu/nvgpu/gm20b/fecs_trace_gm20b.c b/drivers/gpu/nvgpu/gm20b/fecs_trace_gm20b.c new file mode 100644 index 00000000..84772af5 --- /dev/null +++ b/drivers/gpu/nvgpu/gm20b/fecs_trace_gm20b.c @@ -0,0 +1,56 @@ +/* + * GP10B GPU FECS traces + * + * Copyright (c) 2016-2018, 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 "gk20a/fecs_trace_gk20a.h" + +#include "fecs_trace_gm20b.h" + +#include +#include + +#ifdef CONFIG_GK20A_CTXSW_TRACE +int gm20b_fecs_trace_flush(struct gk20a *g) +{ + struct fecs_method_op_gk20a op = { + .mailbox = { .id = 0, .data = 0, + .clr = ~0, .ok = 0, .fail = 0}, + .method.addr = gr_fecs_method_push_adr_write_timestamp_record_v(), + .method.data = 0, + .cond.ok = GR_IS_UCODE_OP_NOT_EQUAL, + .cond.fail = GR_IS_UCODE_OP_SKIP, + }; + int err; + + nvgpu_log(g, gpu_dbg_fn|gpu_dbg_ctxsw, " "); + + err = gr_gk20a_elpg_protected_call(g, + gr_gk20a_submit_fecs_method_op(g, op, false)); + if (err) + nvgpu_err(g, "write timestamp record failed"); + + return err; +} +#endif /* CONFIG_GK20A_CTXSW_TRACE */ diff --git a/drivers/gpu/nvgpu/gm20b/fecs_trace_gm20b.h b/drivers/gpu/nvgpu/gm20b/fecs_trace_gm20b.h new file mode 100644 index 00000000..dd98e7c4 --- /dev/null +++ b/drivers/gpu/nvgpu/gm20b/fecs_trace_gm20b.h @@ -0,0 +1,32 @@ +/* + * GM20B GPU FECS traces + * + * Copyright (c) 2016-2018, 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 NVGPU_FECS_TRACE_GM20B_H +#define NVGPU_FECS_TRACE_GM20B_H + +struct gk20a; + +int gm20b_fecs_trace_flush(struct gk20a *g); + +#endif /* NVGPU_FECS_TRACE_GM20B_H */ diff --git a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c index c5bf4ff5..6de1dad5 100644 --- a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c @@ -29,6 +29,7 @@ #include #include #include +#include #include "common/clock_gating/gm20b_gating_reglist.h" #include "common/bus/bus_gm20b.h" @@ -51,6 +52,8 @@ #include "gk20a/regops_gk20a.h" #include "gk20a/pmu_gk20a.h" #include "gk20a/gr_gk20a.h" +#include "gk20a/fecs_trace_gk20a.h" +#include "gm20b/fecs_trace_gm20b.h" #include "gr_gm20b.h" #include "fifo_gm20b.h" @@ -484,6 +487,24 @@ static const struct gpu_ops gm20b_ops = { .get_netlist_name = gr_gm20b_get_netlist_name, .is_fw_defined = gr_gm20b_is_firmware_defined, }, +#ifdef CONFIG_GK20A_CTXSW_TRACE + .fecs_trace = { + .alloc_user_buffer = gk20a_ctxsw_dev_ring_alloc, + .free_user_buffer = gk20a_ctxsw_dev_ring_free, + .mmap_user_buffer = gk20a_ctxsw_dev_mmap_buffer, + .init = gk20a_fecs_trace_init, + .deinit = gk20a_fecs_trace_deinit, + .enable = gk20a_fecs_trace_enable, + .disable = gk20a_fecs_trace_disable, + .is_enabled = gk20a_fecs_trace_is_enabled, + .reset = gk20a_fecs_trace_reset, + .flush = gm20b_fecs_trace_flush, + .poll = gk20a_fecs_trace_poll, + .bind_channel = gk20a_fecs_trace_bind_channel, + .unbind_channel = gk20a_fecs_trace_unbind_channel, + .max_entries = gk20a_gr_max_entries, + }, +#endif /* CONFIG_GK20A_CTXSW_TRACE */ .mm = { .support_sparse = gm20b_mm_support_sparse, .gmmu_map = gk20a_locked_gmmu_map, diff --git a/drivers/gpu/nvgpu/gp106/hal_gp106.c b/drivers/gpu/nvgpu/gp106/hal_gp106.c index fea2ffa0..86a133d5 100644 --- a/drivers/gpu/nvgpu/gp106/hal_gp106.c +++ b/drivers/gpu/nvgpu/gp106/hal_gp106.c @@ -54,7 +54,6 @@ #include "gk20a/gr_gk20a.h" #include "gp10b/gr_gp10b.h" -#include "gp10b/fecs_trace_gp10b.h" #include "gp10b/mm_gp10b.h" #include "gp10b/ce_gp10b.h" #include "gp10b/regops_gp10b.h" @@ -71,6 +70,7 @@ #include "gm20b/pmu_gm20b.h" #include "gm20b/acr_gm20b.h" #include "gm20b/gr_gm20b.h" +#include "gm20b/fecs_trace_gm20b.h" #include "gp106/acr_gp106.h" #include "gp106/sec2_gp106.h" @@ -570,7 +570,7 @@ static const struct gpu_ops gp106_ops = { .disable = gk20a_fecs_trace_disable, .is_enabled = gk20a_fecs_trace_is_enabled, .reset = gk20a_fecs_trace_reset, - .flush = gp10b_fecs_trace_flush, + .flush = gm20b_fecs_trace_flush, .poll = gk20a_fecs_trace_poll, .bind_channel = gk20a_fecs_trace_bind_channel, .unbind_channel = gk20a_fecs_trace_unbind_channel, diff --git a/drivers/gpu/nvgpu/gp10b/fecs_trace_gp10b.c b/drivers/gpu/nvgpu/gp10b/fecs_trace_gp10b.c deleted file mode 100644 index 3dc672ff..00000000 --- a/drivers/gpu/nvgpu/gp10b/fecs_trace_gp10b.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * GP10B GPU FECS traces - * - * Copyright (c) 2016-2018, 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 "gk20a/fecs_trace_gk20a.h" - -#include "fecs_trace_gp10b.h" - -#include -#include - -#ifdef CONFIG_GK20A_CTXSW_TRACE -int gp10b_fecs_trace_flush(struct gk20a *g) -{ - struct fecs_method_op_gk20a op = { - .mailbox = { .id = 0, .data = 0, - .clr = ~0, .ok = 0, .fail = 0}, - .method.addr = gr_fecs_method_push_adr_write_timestamp_record_v(), - .method.data = 0, - .cond.ok = GR_IS_UCODE_OP_NOT_EQUAL, - .cond.fail = GR_IS_UCODE_OP_SKIP, - }; - int err; - - nvgpu_log(g, gpu_dbg_fn|gpu_dbg_ctxsw, " "); - - err = gr_gk20a_elpg_protected_call(g, - gr_gk20a_submit_fecs_method_op(g, op, false)); - if (err) - nvgpu_err(g, "write timestamp record failed"); - - return err; -} -#endif /* CONFIG_GK20A_CTXSW_TRACE */ diff --git a/drivers/gpu/nvgpu/gp10b/fecs_trace_gp10b.h b/drivers/gpu/nvgpu/gp10b/fecs_trace_gp10b.h deleted file mode 100644 index 0eda975b..00000000 --- a/drivers/gpu/nvgpu/gp10b/fecs_trace_gp10b.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * GP10B GPU FECS traces - * - * Copyright (c) 2016-2018, 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 NVGPU_FECS_TRACE_GP10B_H -#define NVGPU_FECS_TRACE_GP10B_H - -struct gk20a; - -int gp10b_fecs_trace_flush(struct gk20a *g); - -#endif /* NVGPU_FECS_TRACE_GP10B_H */ diff --git a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c index 5fcfb32f..0723fa0e 100644 --- a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c @@ -60,7 +60,6 @@ #include "gk20a/gr_gk20a.h" #include "gp10b/gr_gp10b.h" -#include "gp10b/fecs_trace_gp10b.h" #include "gp10b/mm_gp10b.h" #include "gp10b/ce_gp10b.h" #include "gp10b/pmu_gp10b.h" @@ -76,6 +75,7 @@ #include "gm20b/pmu_gm20b.h" #include "gm20b/clk_gm20b.h" #include "gm20b/mm_gm20b.h" +#include "gm20b/fecs_trace_gm20b.h" #include "gp10b.h" #include "hal_gp10b.h" @@ -537,7 +537,7 @@ static const struct gpu_ops gp10b_ops = { .disable = gk20a_fecs_trace_disable, .is_enabled = gk20a_fecs_trace_is_enabled, .reset = gk20a_fecs_trace_reset, - .flush = gp10b_fecs_trace_flush, + .flush = gm20b_fecs_trace_flush, .poll = gk20a_fecs_trace_poll, .bind_channel = gk20a_fecs_trace_bind_channel, .unbind_channel = gk20a_fecs_trace_unbind_channel, diff --git a/drivers/gpu/nvgpu/gv100/hal_gv100.c b/drivers/gpu/nvgpu/gv100/hal_gv100.c index c8849631..457ae64c 100644 --- a/drivers/gpu/nvgpu/gv100/hal_gv100.c +++ b/drivers/gpu/nvgpu/gv100/hal_gv100.c @@ -66,6 +66,7 @@ #include "gm20b/mm_gm20b.h" #include "gm20b/pmu_gm20b.h" #include "gm20b/acr_gm20b.h" +#include "gm20b/fecs_trace_gm20b.h" #include "gp106/clk_arb_gp106.h" #include "gp106/pmu_gp106.h" @@ -77,7 +78,6 @@ #include "gp10b/gr_gp10b.h" #include "gp10b/ce_gp10b.h" #include "gp10b/fifo_gp10b.h" -#include "gp10b/fecs_trace_gp10b.h" #include "gp10b/mm_gp10b.h" #include "gp10b/pmu_gp10b.h" diff --git a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c index 718b6f93..6b4eeb88 100644 --- a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c @@ -60,10 +60,10 @@ #include "gm20b/mm_gm20b.h" #include "gm20b/acr_gm20b.h" #include "gm20b/pmu_gm20b.h" +#include "gm20b/fecs_trace_gm20b.h" #include "gp10b/ce_gp10b.h" #include "gp10b/fifo_gp10b.h" -#include "gp10b/fecs_trace_gp10b.h" #include "gp10b/mm_gp10b.h" #include "gp10b/pmu_gp10b.h" #include "gp10b/gr_gp10b.h" diff --git a/drivers/gpu/nvgpu/os/linux/os_ops_gm20b.c b/drivers/gpu/nvgpu/os/linux/os_ops_gm20b.c index 9024ce22..77aee395 100644 --- a/drivers/gpu/nvgpu/os/linux/os_ops_gm20b.c +++ b/drivers/gpu/nvgpu/os/linux/os_ops_gm20b.c @@ -18,6 +18,8 @@ #include "cde_gm20b.h" #include "debug_clk_gm20b.h" +#include "debug_fecs_trace.h" + static struct nvgpu_os_linux_ops gm20b_os_linux_ops = { #ifdef CONFIG_NVGPU_SUPPORT_CDE @@ -28,6 +30,10 @@ static struct nvgpu_os_linux_ops gm20b_os_linux_ops = { .clk = { .init_debugfs = gm20b_clk_init_debugfs, }, + + .fecs_trace = { + .init_debugfs = nvgpu_fecs_trace_init_debugfs, + }, }; void nvgpu_gm20b_init_os_ops(struct nvgpu_os_linux *l) @@ -36,4 +42,6 @@ void nvgpu_gm20b_init_os_ops(struct nvgpu_os_linux *l) l->ops.cde = gm20b_os_linux_ops.cde; #endif l->ops.clk = gm20b_os_linux_ops.clk; + + l->ops.fecs_trace = gm20b_os_linux_ops.fecs_trace; } -- cgit v1.2.2