Re: [Intel-gfx] [PATCH v4] drm/i915/gt: make a gt sysfs group and move power management files

2020-02-19 Thread Andi Shyti
>  drivers/gpu/drm/i915/Makefile|4 +-
>  drivers/gpu/drm/i915/gt/intel_gt.c   |3 +
>  drivers/gpu/drm/i915/gt/intel_gt_types.h |1 +
>  drivers/gpu/drm/i915/gt/sysfs_gt.c   |   79 ++
>  drivers/gpu/drm/i915/gt/sysfs_gt.h   |   22 +
>  drivers/gpu/drm/i915/gt/sysfs_gt_pm.c|  432 +
>  drivers/gpu/drm/i915/gt/sysfs_gt_pm.h|   17 +
>  drivers/gpu/drm/i915/i915_sysfs.c|  375 +--
>  drivers/gpu/drm/i915/i915_sysfs.h|3 +
>  vvv  | 1127 ++
   ^^^
ops

fortunately nothing compromising in it :)

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


[Intel-gfx] [PATCH v4] drm/i915/gt: make a gt sysfs group and move power management files

2020-02-19 Thread Andi Shyti
The GT has its own properties and in sysfs they should be grouped
in the 'gt/' directory.

Create the 'gt/' directory in sysfs and move the power management
related files.

The new interfaces are:

gt/gt_act_freq_mhz
gt/gt_boost_freq_mhz
gt/gt_cur_freq_mhz
gt/gt_info
gt/gt_max_freq_mhz
gt/gt_min_freq_mhz
gt/gt_RP0_freq_mhz
gt/gt_RP1_freq_mhz
gt/gt_RPn_freq_mhz
gt/rc6_enable
gt/rc6_residency_ms

The once in the root directory will be marked as deprecated, if
accessed a warning message is printed.

Signed-off-by: Andi Shyti 
---
v3 -> v4:
  - fixed Tvrtko's comments:
- some renaming
- some clumsy unbalanced kobject_put/get
- the warning print is more descriptive and printed with
  limited rate
- TODO: drm_print doesn't have a drm_warn_unlimited, to
  be added
v2 -> v3:
  - fix some cleanups that I forgot in the previous patch
  - fix reference pointers to the gt structure
  - and many other small changes here and there.
v1 -> v2:
  - keep the existing files as they are
  - use "intel_gt_*" as prefix instead of "sysfs_*"

 drivers/gpu/drm/i915/Makefile|4 +-
 drivers/gpu/drm/i915/gt/intel_gt.c   |3 +
 drivers/gpu/drm/i915/gt/intel_gt_types.h |1 +
 drivers/gpu/drm/i915/gt/sysfs_gt.c   |   79 ++
 drivers/gpu/drm/i915/gt/sysfs_gt.h   |   22 +
 drivers/gpu/drm/i915/gt/sysfs_gt_pm.c|  432 +
 drivers/gpu/drm/i915/gt/sysfs_gt_pm.h|   17 +
 drivers/gpu/drm/i915/i915_sysfs.c|  375 +--
 drivers/gpu/drm/i915/i915_sysfs.h|3 +
 vvv  | 1127 ++
 10 files changed, 1688 insertions(+), 375 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/gt/sysfs_gt.c
 create mode 100644 drivers/gpu/drm/i915/gt/sysfs_gt.h
 create mode 100644 drivers/gpu/drm/i915/gt/sysfs_gt_pm.c
 create mode 100644 drivers/gpu/drm/i915/gt/sysfs_gt_pm.h
 create mode 100644 vvv

diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index b314d44ded5e..ff9e17c97dc2 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -107,7 +107,9 @@ gt-y += \
gt/intel_rps.o \
gt/intel_sseu.o \
gt/intel_timeline.o \
-   gt/intel_workarounds.o
+   gt/intel_workarounds.o \
+   gt/sysfs_gt.o \
+   gt/sysfs_gt_pm.o
 # autogenerated null render state
 gt-y += \
gt/gen6_renderstate.o \
diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c 
b/drivers/gpu/drm/i915/gt/intel_gt.c
index f1f1b306e0af..e794d05d69a1 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt.c
@@ -15,6 +15,7 @@
 #include "intel_rps.h"
 #include "intel_uncore.h"
 #include "intel_pm.h"
+#include "sysfs_gt.h"
 
 void intel_gt_init_early(struct intel_gt *gt, struct drm_i915_private *i915)
 {
@@ -321,6 +322,7 @@ void intel_gt_driver_register(struct intel_gt *gt)
intel_rps_driver_register(>rps);
 
debugfs_gt_register(gt);
+   intel_gt_sysfs_register(gt);
 }
 
 static int intel_gt_init_scratch(struct intel_gt *gt, unsigned int size)
@@ -641,6 +643,7 @@ void intel_gt_driver_remove(struct intel_gt *gt)
 
 void intel_gt_driver_unregister(struct intel_gt *gt)
 {
+   intel_gt_sysfs_unregister(gt);
intel_rps_driver_unregister(>rps);
 }
 
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_types.h 
b/drivers/gpu/drm/i915/gt/intel_gt_types.h
index 96890dd12b5f..7f0b4f8d9e28 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_gt_types.h
@@ -32,6 +32,7 @@ struct intel_gt {
struct drm_i915_private *i915;
struct intel_uncore *uncore;
struct i915_ggtt *ggtt;
+   struct kobject sysfs_root;
 
struct intel_uc uc;
 
diff --git a/drivers/gpu/drm/i915/gt/sysfs_gt.c 
b/drivers/gpu/drm/i915/gt/sysfs_gt.c
new file mode 100644
index ..9335a92d5248
--- /dev/null
+++ b/drivers/gpu/drm/i915/gt/sysfs_gt.c
@@ -0,0 +1,79 @@
+// SPDX-License-Identifier: MIT
+
+/*
+ * Copyright © 2019 Intel Corporation
+ */
+
+#include 
+#include 
+#include 
+#include 
+
+#include "../i915_drv.h"
+#include "intel_gt.h"
+#include "intel_gt_types.h"
+#include "intel_rc6.h"
+
+#include "sysfs_gt.h"
+#include "sysfs_gt_pm.h"
+
+static inline struct kobject *gt_get_parent_obj(struct intel_gt *gt)
+{
+   return >i915->drm.primary->kdev->kobj;
+}
+
+static ssize_t gt_info_show(struct device *dev,
+   struct device_attribute *attr,
+   char *buff)
+{
+   return snprintf(buff, PAGE_SIZE, "0\n");
+}
+
+static DEVICE_ATTR_RO(gt_info);
+
+static struct kobj_type sysfs_gt_ktype = {
+   .sysfs_ops = _sysfs_ops,
+};
+
+void intel_gt_sysfs_register(struct intel_gt *gt)
+{
+   struct kobject *parent = kobject_get(gt_get_parent_obj(gt));
+   int ret;
+
+   ret = kobject_init_and_add(>sysfs_root,
+  _gt_ktype,
+  parent, "gt");
+   if