diff --git a/drivers/gpu/nvgpu/Makefile b/drivers/gpu/nvgpu/Makefile index 819be6172..827d7df50 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 6ba8555d2..183da6a5d 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/gp10b/fecs_trace_gp10b.c b/drivers/gpu/nvgpu/gm20b/fecs_trace_gm20b.c similarity index 91% rename from drivers/gpu/nvgpu/gp10b/fecs_trace_gp10b.c rename to drivers/gpu/nvgpu/gm20b/fecs_trace_gm20b.c index 3dc672ff2..84772af58 100644 --- a/drivers/gpu/nvgpu/gp10b/fecs_trace_gp10b.c +++ b/drivers/gpu/nvgpu/gm20b/fecs_trace_gm20b.c @@ -26,13 +26,13 @@ #include "gk20a/fecs_trace_gk20a.h" -#include "fecs_trace_gp10b.h" +#include "fecs_trace_gm20b.h" -#include -#include +#include +#include #ifdef CONFIG_GK20A_CTXSW_TRACE -int gp10b_fecs_trace_flush(struct gk20a *g) +int gm20b_fecs_trace_flush(struct gk20a *g) { struct fecs_method_op_gk20a op = { .mailbox = { .id = 0, .data = 0, diff --git a/drivers/gpu/nvgpu/gp10b/fecs_trace_gp10b.h b/drivers/gpu/nvgpu/gm20b/fecs_trace_gm20b.h similarity index 87% rename from drivers/gpu/nvgpu/gp10b/fecs_trace_gp10b.h rename to drivers/gpu/nvgpu/gm20b/fecs_trace_gm20b.h index 0eda975b4..dd98e7c49 100644 --- a/drivers/gpu/nvgpu/gp10b/fecs_trace_gp10b.h +++ b/drivers/gpu/nvgpu/gm20b/fecs_trace_gm20b.h @@ -1,5 +1,5 @@ /* - * GP10B GPU FECS traces + * GM20B GPU FECS traces * * Copyright (c) 2016-2018, NVIDIA CORPORATION. All rights reserved. * @@ -22,11 +22,11 @@ * DEALINGS IN THE SOFTWARE. */ -#ifndef NVGPU_FECS_TRACE_GP10B_H -#define NVGPU_FECS_TRACE_GP10B_H +#ifndef NVGPU_FECS_TRACE_GM20B_H +#define NVGPU_FECS_TRACE_GM20B_H struct gk20a; -int gp10b_fecs_trace_flush(struct gk20a *g); +int gm20b_fecs_trace_flush(struct gk20a *g); -#endif /* NVGPU_FECS_TRACE_GP10B_H */ +#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 c5bf4ff54..6de1dad58 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 fea2ffa07..86a133d5a 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/hal_gp10b.c b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c index 5fcfb32f5..0723fa0ed 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 c88496316..457ae64cd 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 718b6f936..6b4eeb88a 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 9024ce224..77aee3952 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; }