Signed-off-by: Karol Herbst <karolher...@gmail.com> --- drm/nouveau/nvkm/subdev/pmu/gt215.c | 39 +++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+)
diff --git a/drm/nouveau/nvkm/subdev/pmu/gt215.c b/drm/nouveau/nvkm/subdev/pmu/gt215.c index 6ffd3cba..3e3c910f 100644 --- a/drm/nouveau/nvkm/subdev/pmu/gt215.c +++ b/drm/nouveau/nvkm/subdev/pmu/gt215.c @@ -85,6 +85,44 @@ gt215_pmu_get_perf_data(struct nvkm_pmu *pmu, struct nvkm_pmu_load_data *data) return 0; } +static void +gt215_setup_pmu_counters(struct nvkm_pmu *pmu) +{ + struct nvkm_device *device = pmu->subdev.device; + u32 core_mask = 0; + u32 video_mask = 0; + u32 memory_mask = 0; + + if (nvkm_device_engine(device, NVKM_ENGINE_GR)) + core_mask |= 0x00000001; + if (nvkm_device_engine(device, NVKM_ENGINE_CE0)) + core_mask |= 0x00080000; + if (nvkm_device_engine(device, NVKM_ENGINE_CE1)) + core_mask |= 0x00100000; + if (nvkm_device_engine(device, NVKM_ENGINE_CE2)) + core_mask |= 0x00200000; + + if (nvkm_device_engine(device, NVKM_ENGINE_MSVLD)) + video_mask |= 0x00000010; + if (nvkm_device_engine(device, NVKM_ENGINE_MSPDEC)) + video_mask |= 0x00000020; + if (nvkm_device_engine(device, NVKM_ENGINE_MSPPP)) + video_mask |= 0x00000040; + if (nvkm_device_engine(device, NVKM_ENGINE_NVENC0)) + video_mask |= 0x00020000; + + if (device->chipset < 0xc0) + memory_mask = 0x100; + else + memory_mask = 0x80; + + nvkm_pmu_send(pmu, NULL, PROC_PERF, PERF_MSG_SET_SLOT, NVKM_PMU_COUNTER_SLOT_CORE, core_mask); + nvkm_pmu_send(pmu, NULL, PROC_PERF, PERF_MSG_SET_SLOT, NVKM_PMU_COUNTER_SLOT_VIDEO, video_mask); + nvkm_pmu_send(pmu, NULL, PROC_PERF, PERF_MSG_SET_SLOT, NVKM_PMU_COUNTER_SLOT_MEMORY, memory_mask); + if (NVKM_PMU_COUNTER_SLOT_PCIE <= pmu->func->counter_slots) + nvkm_pmu_send(pmu, NULL, PROC_PERF, PERF_MSG_SET_SLOT, NVKM_PMU_COUNTER_SLOT_PCIE, 0x20000000); +} + int gt215_pmu_send(struct nvkm_pmu *pmu, u32 reply[2], u32 process, u32 message, u32 data0, u32 data1) @@ -294,6 +332,7 @@ gt215_pmu_init(struct nvkm_pmu *pmu) pmu->recv.size = nvkm_rd32(device, 0x10a4dc) >> 16; nvkm_wr32(device, 0x10a010, 0x000000e0); + gt215_setup_pmu_counters(pmu); return 0; } -- 2.12.2 _______________________________________________ Nouveau mailing list Nouveau@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/nouveau