Re: [Intel-gfx] [PATCH 2/2] drm/i915/gt: Move power management debugfs files into gt

2019-12-09 Thread Andi Shyti
> > +int intel_gt_pm_debugfs_register(struct intel_gt *gt)
> > +{
> > +   struct drm_minor *minor = gt->i915->drm.primary;
> > +
> > +   return drm_debugfs_create_files(i915_gt_pm_debugfs_list,
> > +   ARRAY_SIZE(i915_gt_pm_debugfs_list),
> > +   minor->debugfs_root, minor);
> 
> You missed a vital trick to pass the gt as our private. Hint don't use
> drm_debugfs_create_files() per se.

I knew this comment would come, but, after some thoughts, it felt
like this was the less drastic approach (because at the end
nothing really changes :) ).

I will improve it in v2, along with the renaming in patch 1.

Thanks Chris,
Andi
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 2/2] drm/i915/gt: Move power management debugfs files into gt

2019-12-09 Thread Andi Shyti
From: Andi Shyti 

rc6, rps and llc debugfs files are gt related, move them into the
gt directory.

Signed-off-by: Andi Shyti 
---
 drivers/gpu/drm/i915/Makefile |   1 +
 drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c | 593 ++
 drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.h |  14 +
 drivers/gpu/drm/i915/i915_debugfs.c   | 585 +
 drivers/gpu/drm/i915/i915_debugfs.h   |   9 +
 5 files changed, 626 insertions(+), 576 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c
 create mode 100644 drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.h

diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index e0fd10c0cfb8..6d5306e8312c 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -85,6 +85,7 @@ gt-y += \
gt/intel_gt.o \
gt/intel_gt_irq.o \
gt/intel_gt_pm.o \
+   gt/intel_gt_pm_debugfs.o \
gt/intel_gt_pm_irq.o \
gt/intel_gt_requests.o \
gt/intel_llc.o \
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c 
b/drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c
new file mode 100644
index ..112a0e777d0e
--- /dev/null
+++ b/drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c
@@ -0,0 +1,593 @@
+/*
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright © 2019 Intel Corporation
+ */
+
+#include "i915_debugfs.h"
+#include "i915_trace.h"
+#include "intel_gt_pm_debugfs.h"
+#include "intel_rc6.h"
+#include "intel_rps.h"
+#include "intel_sideband.h"
+
+static int i915_frequency_info(struct seq_file *m, void *unused)
+{
+   struct drm_i915_private *i915 = node_to_i915(m->private);
+   struct intel_uncore *uncore = >uncore;
+   struct intel_rps *rps = >gt.rps;
+   intel_wakeref_t wakeref;
+
+   wakeref = intel_runtime_pm_get(>runtime_pm);
+
+   if (IS_GEN(i915, 5)) {
+   u16 rgvswctl = intel_uncore_read16(uncore, MEMSWCTL);
+   u16 rgvstat = intel_uncore_read16(uncore, MEMSTAT_ILK);
+
+   seq_printf(m, "Requested P-state: %d\n", (rgvswctl >> 8) & 0xf);
+   seq_printf(m, "Requested VID: %d\n", rgvswctl & 0x3f);
+   seq_printf(m, "Current VID: %d\n", (rgvstat & MEMSTAT_VID_MASK) 
>>
+  MEMSTAT_VID_SHIFT);
+   seq_printf(m, "Current P-state: %d\n",
+  (rgvstat & MEMSTAT_PSTATE_MASK) >> 
MEMSTAT_PSTATE_SHIFT);
+   } else if (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) {
+   u32 rpmodectl, freq_sts;
+
+   rpmodectl = intel_uncore_read(uncore, GEN6_RP_CONTROL);
+   seq_printf(m, "Video Turbo Mode: %s\n",
+  yesno(rpmodectl & GEN6_RP_MEDIA_TURBO));
+   seq_printf(m, "HW control enabled: %s\n",
+  yesno(rpmodectl & GEN6_RP_ENABLE));
+   seq_printf(m, "SW control enabled: %s\n",
+  yesno((rpmodectl & GEN6_RP_MEDIA_MODE_MASK) ==
+ GEN6_RP_MEDIA_SW_MODE));
+
+   vlv_punit_get(i915);
+   freq_sts = vlv_punit_read(i915, PUNIT_REG_GPU_FREQ_STS);
+   vlv_punit_put(i915);
+
+   seq_printf(m, "PUNIT_REG_GPU_FREQ_STS: 0x%08x\n", freq_sts);
+   seq_printf(m, "DDR freq: %d MHz\n", i915->mem_freq);
+
+   seq_printf(m, "actual GPU freq: %d MHz\n",
+  intel_gpu_freq(rps, (freq_sts >> 8) & 0xff));
+
+   seq_printf(m, "current GPU freq: %d MHz\n",
+  intel_gpu_freq(rps, rps->cur_freq));
+
+   seq_printf(m, "max GPU freq: %d MHz\n",
+  intel_gpu_freq(rps, rps->max_freq));
+
+   seq_printf(m, "min GPU freq: %d MHz\n",
+  intel_gpu_freq(rps, rps->min_freq));
+
+   seq_printf(m, "idle GPU freq: %d MHz\n",
+  intel_gpu_freq(rps, rps->idle_freq));
+
+   seq_printf(m, "efficient (RPe) frequency: %d MHz\n",
+  intel_gpu_freq(rps, rps->efficient_freq));
+   } else if (INTEL_GEN(i915) >= 6) {
+   u32 rp_state_limits;
+   u32 gt_perf_status;
+   u32 rp_state_cap;
+   u32 rpmodectl, rpinclimit, rpdeclimit;
+   u32 rpstat, cagf, reqf;
+   u32 rpupei, rpcurup, rpprevup;
+   u32 rpdownei, rpcurdown, rpprevdown;
+   u32 pm_ier, pm_imr, pm_isr, pm_iir, pm_mask;
+   int max_freq;
+
+   rp_state_limits = intel_uncore_read(uncore, 
GEN6_RP_STATE_LIMITS);
+   if (IS_GEN9_LP(i915)) {
+   rp_state_cap = intel_uncore_read(uncore, 
BXT_RP_STATE_CAP);
+   gt_perf_status = intel_uncore_read(uncore, 
BXT_GT_PERF_STATUS);
+   } else {
+   rp_state_cap = intel_uncore_read(uncore, 
GEN6_RP_STATE_CAP);
+   

Re: [Intel-gfx] [PATCH 2/2] drm/i915/gt: Move power management debugfs files into gt

2019-12-09 Thread Chris Wilson
Quoting Andi Shyti (2019-12-09 22:35:56)
> +int intel_gt_pm_debugfs_register(struct intel_gt *gt)
> +{
> +   struct drm_minor *minor = gt->i915->drm.primary;
> +
> +   return drm_debugfs_create_files(i915_gt_pm_debugfs_list,
> +   ARRAY_SIZE(i915_gt_pm_debugfs_list),
> +   minor->debugfs_root, minor);

You missed a vital trick to pass the gt as our private. Hint don't use
drm_debugfs_create_files() per se.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx