Make it possible to access the sub-GPU component load value from
user space with the perfmon infrastructure.

Signed-off-by: Christian Gmeiner <christian.gmei...@gmail.com>
---
 drivers/gpu/drm/etnaviv/etnaviv_perfmon.c | 79 +++++++++++++++++++++++
 1 file changed, 79 insertions(+)

diff --git a/drivers/gpu/drm/etnaviv/etnaviv_perfmon.c 
b/drivers/gpu/drm/etnaviv/etnaviv_perfmon.c
index 75f9db8f7bec..614d86e2802d 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_perfmon.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_perfmon.c
@@ -98,6 +98,19 @@ static u32 hi_total_idle_cycle_read(struct etnaviv_gpu *gpu,
        return gpu_read(gpu, reg);
 }
 
+static u32 load_read(struct etnaviv_gpu *gpu,
+       const struct etnaviv_pm_domain *domain,
+       const struct etnaviv_pm_signal *signal)
+{
+       u32 load;
+
+       spin_lock_bh(&gpu->loadavg_spinlock);
+       load = gpu->loadavg_percentage[signal->data];
+       spin_unlock_bh(&gpu->loadavg_spinlock);
+
+       return load;
+}
+
 static const struct etnaviv_pm_domain doms_3d[] = {
        {
                .name = "HI",
@@ -387,6 +400,72 @@ static const struct etnaviv_pm_domain doms_3d[] = {
                                &perf_reg_read
                        }
                }
+       },
+       {
+               .name = "LOAD",
+               .nr_signals = 12,
+               .signal = (const struct etnaviv_pm_signal[]) {
+                       {
+                               "FE",
+                               0,
+                               &load_read
+                       },
+                       {
+                               "DE",
+                               1,
+                               &load_read
+                       },
+                       {
+                               "PE",
+                               2,
+                               &load_read
+                       },
+                       {
+                               "SH",
+                               3,
+                               &load_read
+                       },
+                       {
+                               "PA",
+                               4,
+                               &load_read
+                       },
+                       {
+                               "SE",
+                               5,
+                               &load_read
+                       },
+                       {
+                               "RA",
+                               6,
+                               &load_read
+                       },
+                       {
+                               "TX",
+                               7,
+                               &load_read
+                       },
+                       {
+                               "VG",
+                               8,
+                               &load_read
+                       },
+                       {
+                               "IM",
+                               9,
+                               &load_read
+                       },
+                       {
+                               "FP",
+                               10,
+                               &load_read
+                       },
+                       {
+                               "TS",
+                               11,
+                               &load_read
+                       }
+               }
        }
 };
 
-- 
2.26.2

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to