From: Robert Bragg <robert@sixbynine.org>
To: intel-gfx@lists.freedesktop.org
Cc: David Airlie <airlied@linux.ie>,
dri-devel@lists.freedesktop.org,
Sourab Gupta <sourab.gupta@intel.com>,
Deepak S <deepak.s@intel.com>,
Daniel Vetter <daniel.vetter@intel.com>
Subject: [PATCH 8/9] drm/i915: add oa_event_min_timer_exponent sysctl
Date: Wed, 20 Apr 2016 15:23:13 +0100 [thread overview]
Message-ID: <1461162194-1424-9-git-send-email-robert@sixbynine.org> (raw)
In-Reply-To: <1461162194-1424-1-git-send-email-robert@sixbynine.org>
The minimal sampling period is now configurable via a
dev.i915.oa_min_timer_exponent sysctl parameter.
Following the precedent set by perf, the default is the minimum that
won't (on its own) exceed the default kernel.perf_event_max_sample_rate
default of 100000 samples/s.
Signed-off-by: Robert Bragg <robert@sixbynine.org>
---
drivers/gpu/drm/i915/i915_perf.c | 42 ++++++++++++++++++++++++++++------------
1 file changed, 30 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
index c2ba16a..cc1cd52 100644
--- a/drivers/gpu/drm/i915/i915_perf.c
+++ b/drivers/gpu/drm/i915/i915_perf.c
@@ -71,6 +71,23 @@ static u32 i915_perf_stream_paranoid = true;
*/
#define OA_EXPONENT_MAX 31
+/* for sysctl proc_dointvec_minmax of i915_oa_min_timer_exponent */
+static int zero;
+static int oa_exponent_max = OA_EXPONENT_MAX;
+
+/* Theoretically we can program the OA unit to sample every 160ns but don't
+ * allow that by default unless root...
+ *
+ * The period is derived from the exponent as:
+ *
+ * period = 80ns * 2^(exponent + 1)
+ *
+ * Referring to perf's kernel.perf_event_max_sample_rate for a precedent
+ * (100000 by default); with an OA exponent of 6 we get a period of 10.240
+ * microseconds - just under 100000Hz
+ */
+static u32 i915_oa_min_timer_exponent = 6;
+
/* XXX: beware if future OA HW adds new report formats that the current
* code assumes all reports have a power-of-two size and ~(size - 1) can
* be used as a mask to align the OA tail pointer.
@@ -1250,21 +1267,13 @@ static int read_properties_unlocked(struct drm_i915_private *dev_priv,
return -EINVAL;
}
- /* NB: The exponent represents a period as follows:
- *
- * 80ns * 2^(period_exponent + 1)
- *
- * Theoretically we can program the OA unit to sample
+ /* Theoretically we can program the OA unit to sample
* every 160ns but don't allow that by default unless
* root.
- *
- * Referring to perf's
- * kernel.perf_event_max_sample_rate for a precedent
- * (100000 by default); with an OA exponent of 6 we get
- * a period of 10.240 microseconds -just under 100000Hz
*/
- if (value < 6 && !capable(CAP_SYS_ADMIN)) {
- DRM_ERROR("Sampling period too high without root privileges\n");
+ if (value < i915_oa_min_timer_exponent &&
+ !capable(CAP_SYS_ADMIN)) {
+ DRM_ERROR("OA timer exponent too low without root privileges\n");
return -EACCES;
}
@@ -1326,6 +1335,15 @@ static struct ctl_table oa_table[] = {
.mode = 0644,
.proc_handler = proc_dointvec,
},
+ {
+ .procname = "oa_min_timer_exponent",
+ .data = &i915_oa_min_timer_exponent,
+ .maxlen = sizeof(i915_oa_min_timer_exponent),
+ .mode = 0644,
+ .proc_handler = proc_dointvec_minmax,
+ .extra1 = &zero,
+ .extra2 = &oa_exponent_max,
+ },
{}
};
--
2.7.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2016-04-20 14:23 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-20 14:23 [PATCH 0/9] Enable Gen 7 Observation Architecture Robert Bragg
2016-04-20 14:23 ` [PATCH 1/9] drm/i915: Add i915 perf infrastructure Robert Bragg
2016-04-20 22:41 ` Chris Wilson
2016-04-20 14:23 ` [PATCH 2/9] drm/i915: rename OACONTROL GEN7_OACONTROL Robert Bragg
2016-04-20 14:23 ` [PATCH 3/9] drm/i915: don't whitelist oacontrol in cmd parser Robert Bragg
2016-04-20 14:23 ` [PATCH 4/9] drm/i915: Add 'render basic' Haswell OA unit config Robert Bragg
2016-04-20 14:23 ` [PATCH 5/9] drm/i915: Enable i915 perf stream for Haswell OA unit Robert Bragg
2016-04-20 16:16 ` kbuild test robot
2016-04-20 20:30 ` [Intel-gfx] " kbuild test robot
2016-04-20 21:11 ` Chris Wilson
2016-04-21 16:15 ` Robert Bragg
2016-04-23 8:48 ` Chris Wilson
2016-04-20 22:15 ` Chris Wilson
2016-04-20 22:46 ` Chris Wilson
2016-04-22 11:04 ` Robert Bragg
2016-04-22 11:18 ` Chris Wilson
2016-04-20 22:52 ` Chris Wilson
2016-04-21 15:43 ` Robert Bragg
2016-04-21 16:21 ` Chris Wilson
2016-04-20 23:09 ` Chris Wilson
2016-04-21 15:18 ` Robert Bragg
2016-04-22 1:10 ` Robert Bragg
2016-04-20 23:16 ` Chris Wilson
2016-04-21 15:01 ` Robert Bragg
2016-04-23 10:34 ` Martin Peres
2016-05-03 19:34 ` Robert Bragg
2016-05-03 20:03 ` Robert Bragg
2016-05-04 9:09 ` Martin Peres
2016-05-04 9:49 ` Robert Bragg
2016-05-04 12:24 ` Daniel Vetter
2016-05-04 13:24 ` Robert Bragg
2016-05-04 13:33 ` Robert Bragg
2016-05-04 13:51 ` Daniel Vetter
2016-05-04 9:04 ` [Intel-gfx] " Martin Peres
2016-05-04 11:15 ` Robert Bragg
2016-04-20 14:23 ` [PATCH 6/9] drm/i915: advertise available metrics via sysfs Robert Bragg
2016-04-20 14:23 ` [PATCH 7/9] drm/i915: Add dev.i915.perf_event_paranoid sysctl option Robert Bragg
2016-04-20 14:23 ` Robert Bragg [this message]
2016-04-20 14:23 ` [PATCH 9/9] drm/i915: Add more Haswell OA metric sets Robert Bragg
2016-04-20 14:56 ` [PATCH 0/9] Enable Gen 7 Observation Architecture Robert Bragg
2016-04-21 7:46 ` ✓ Fi.CI.BAT: success for Enable Gen 7 Observation Architecture (rev3) Patchwork
2016-04-21 12:41 ` ✗ Fi.CI.BAT: failure " Patchwork
2016-04-23 8:31 ` ✗ Fi.CI.BAT: warning " Patchwork
2016-04-24 17:23 ` ✓ Fi.CI.BAT: success " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1461162194-1424-9-git-send-email-robert@sixbynine.org \
--to=robert@sixbynine.org \
--cc=airlied@linux.ie \
--cc=daniel.vetter@intel.com \
--cc=deepak.s@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=sourab.gupta@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox