Skip to contentSkip to conversation

drm/radeon: add tracepoint for setting mode clocks.

PATCH New Dave Airlie 1 participant 2 messages Sep 19, 2011

Subsystems (2)
lore
Share & tools
lore

Dave Airlie

author maintainer
#0 lore raw

PATCH 1/2 drm/radeon: add tracepoint for setting mode clocks.

From: Dave Airlie <[email protected]>

This just adds a tracepoint that can be caught in perf for when the clocks change.

---
 drivers/gpu/drm/radeon/radeon_pm.c    |    3 +++
 drivers/gpu/drm/radeon/radeon_trace.h |   18 ++++++++++++++++++
 2 files changed, 21 insertions(+), 0 deletions(-)
drivers/gpu/drm/radeon/radeon_pm.c +3 -0
index 6fabe89..2a44332 100644
@@ -30,6 +30,7 @@
 #include <linux/power_supply.h>
 #include <linux/hwmon.h>
 #include <linux/hwmon-sysfs.h>
+#include "radeon_trace.h"
 
 #define RADEON_IDLE_LOOP_MS 100
 #define RADEON_RECLOCK_DELAY_MS 200
@@ -165,6 +166,8 @@ static void radeon_set_power_state(struct radeon_device *rdev)
 	    (rdev->pm.requested_power_state_index == rdev->pm.current_power_state_index))
 		return;
 
+	trace_radeon_set_power_state(rdev);
+
 	if (radeon_gui_idle(rdev)) {
 		sclk = rdev->pm.power_state[rdev->pm.requested_power_state_index].
 			clock_info[rdev->pm.requested_clock_mode_index].sclk;
drivers/gpu/drm/radeon/radeon_trace.h +18 -0
index eafd816..ef0fd05 100644
@@ -27,6 +27,24 @@ TRACE_EVENT(radeon_bo_create,
 	    TP_printk("bo=%p, pages=%u", __entry->bo, __entry->pages)
 );
 
+TRACE_EVENT(radeon_set_power_state,
+            TP_PROTO(struct radeon_device *rdev),
+            TP_ARGS(rdev),
+	    TP_STRUCT__entry(
+			     __field(int, requested_clock_mode)
+			     __field(int, current_clock_mode)
+			     __field(int, requested_power_state)
+			     __field(int, current_power_state)
+	    ),
+	    TP_fast_assign(
+			   __entry->requested_clock_mode = rdev->pm.requested_clock_mode_index;
+			   __entry->current_clock_mode = rdev->pm.current_clock_mode_index;
+			   __entry->requested_power_state = rdev->pm.requested_power_state_index;
+			   __entry->current_power_state = rdev->pm.current_power_state_index;
+			  ),
+	    TP_printk("clock %d->%d, power %d->%d", __entry->current_clock_mode, __entry->requested_clock_mode, __entry->current_power_state, __entry->requested_power_state)
+);
+
 DECLARE_EVENT_CLASS(radeon_fence_request,
 
 	    TP_PROTO(struct drm_device *dev, u32 seqno),
Signature · 1 line
1.7.6
author maintainer
#1 lore raw

PATCH 2/2 drm/radeon: make pm method file show default + option.

From: Dave Airlie <[email protected]>

If we add more options in the future this will need rework.

this is modelled after the example in /sys/power/disk.

---
 drivers/gpu/drm/radeon/radeon_pm.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)
drivers/gpu/drm/radeon/radeon_pm.c +6 -2
index 2a44332..25bc75e 100644
@@ -390,9 +390,13 @@ static ssize_t radeon_get_pm_method(struct device *dev,
 	struct drm_device *ddev = pci_get_drvdata(to_pci_dev(dev));
 	struct radeon_device *rdev = ddev->dev_private;
 	int pm = rdev->pm.pm_method;
+	char *start = buf;
 
-	return snprintf(buf, PAGE_SIZE, "%s\n",
-			(pm == PM_METHOD_DYNPM) ? "dynpm" : "profile");
+	if (pm == PM_METHOD_DYNPM)
+		buf += snprintf(buf, PAGE_SIZE, "[dynpm] profile\n");
+	else
+		buf += snprintf(buf, PAGE_SIZE, "dynpm [profile]\n");
+	return buf - start;
 }
 
 static ssize_t radeon_set_pm_method(struct device *dev,
Signature · 1 line
1.7.6