From: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
To: igt-dev@lists.freedesktop.org,
Lionel G Landwerlin <lionel.g.landwerlin@intel.com>,
Ashutosh Dixit <ashutosh.dixit@intel.com>
Subject: [igt-dev] [PATCH 3/3] tools: Allow user to set poll delay in i915 perf recorder
Date: Wed, 25 Mar 2020 14:50:05 -0700 [thread overview]
Message-ID: <20200325215005.5489-4-umesh.nerlige.ramappa@intel.com> (raw)
In-Reply-To: <20200325215005.5489-1-umesh.nerlige.ramappa@intel.com>
Add poll delay parameter to the i915-perf-recorder tool so that the user
can set the frequency of the poll timer that checks for available
reports in the OA buffer.
v2:
- Change poll period parameter type to match kernel interface (Lionel)
- Update to use poll period in the code (Ashutosh)
v3:
- Change command line paramter to poll-period (Ashutosh)
- Fix the version check for the feature (Ashutosh)
Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
---
tools/i915-perf/i915_perf_recorder.c | 38 +++++++++++++++++++++++++---
1 file changed, 35 insertions(+), 3 deletions(-)
diff --git a/tools/i915-perf/i915_perf_recorder.c b/tools/i915-perf/i915_perf_recorder.c
index 6bbc451e..4d729b0e 100644
--- a/tools/i915-perf/i915_perf_recorder.c
+++ b/tools/i915-perf/i915_perf_recorder.c
@@ -353,14 +353,31 @@ struct recording_context {
const char *command_fifo;
int command_fifo_fd;
+
+ uint64_t poll_period;
};
+static int
+perf_revision(int drm_fd)
+{
+ drm_i915_getparam_t gp;
+ int value = 1;
+
+ gp.param = I915_PARAM_PERF_REVISION;
+ gp.value = &value;
+ perf_ioctl(drm_fd, DRM_IOCTL_I915_GETPARAM, &gp);
+
+ return value;
+}
+
static int
perf_open(struct recording_context *ctx)
{
uint64_t properties[DRM_I915_PERF_PROP_MAX * 2];
struct drm_i915_perf_open_param param;
- int p = 0, stream_fd;
+ int p = 0, stream_fd, revision;
+
+ revision = perf_revision(ctx->drm_fd);
properties[p++] = DRM_I915_PERF_PROP_SAMPLE_OA;
properties[p++] = true;
@@ -374,6 +391,11 @@ perf_open(struct recording_context *ctx)
properties[p++] = DRM_I915_PERF_PROP_OA_EXPONENT;
properties[p++] = ctx->oa_exponent;
+ if (revision >= 5) {
+ properties[p++] = DRM_I915_PERF_PROP_POLL_OA_PERIOD;
+ properties[p++] = ctx->poll_period;
+ }
+
memset(¶m, 0, sizeof(param));
param.flags = 0;
param.flags |= I915_PERF_FLAG_FD_CLOEXEC | I915_PERF_FLAG_FD_NONBLOCK;
@@ -720,7 +742,10 @@ usage(const char *name)
" (To use with i915-perf-control)\n"
" --output, -o <path> Output file (default = i915_perf.record)\n"
" --cpu-clock, -k <path> Cpu clock to use for correlations\n"
- " Values: boot, mono, mono_raw (default = mono)\n",
+ " Values: boot, mono, mono_raw (default = mono)\n"
+ " --poll-period -P <value> Polling interval in microseconds used by a timer in the driver to query\n"
+ " for OA reports periodically\n"
+ " (default = 5000), Minimum = 100.\n",
name);
}
@@ -762,6 +787,7 @@ main(int argc, char *argv[])
{"size", required_argument, 0, 's'},
{"command-fifo", required_argument, 0, 'f'},
{"cpu-clock", required_argument, 0, 'k'},
+ {"poll-period", required_argument, 0, 'P'},
{0, 0, 0, 0}
};
const struct {
@@ -788,9 +814,12 @@ main(int argc, char *argv[])
.command_fifo = I915_PERF_RECORD_FIFO_PATH,
.command_fifo_fd = -1,
+
+ /* 5 ms poll period */
+ .poll_period = 5 * 1000 * 1000,
};
- while ((opt = getopt_long(argc, argv, "hc:p:m:Co:s:f:k:", long_options, NULL)) != -1) {
+ while ((opt = getopt_long(argc, argv, "hc:p:m:Co:s:f:k:P:", long_options, NULL)) != -1) {
switch (opt) {
case 'h':
usage(argv[0]);
@@ -832,6 +861,9 @@ main(int argc, char *argv[])
}
break;
}
+ case 'P':
+ ctx.poll_period = MAX(100, atol(optarg)) * 1000;
+ break;
default:
fprintf(stderr, "Internal error: "
"unexpected getopt value: %d\n", opt);
--
2.20.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
next prev parent reply other threads:[~2020-03-25 21:50 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-25 21:50 [igt-dev] [PATCH i-g-t 0/3] Test configurable poll delay in perf OA Umesh Nerlige Ramappa
2020-03-25 21:50 ` [igt-dev] [PATCH 1/3] include/drm-uapi: Update i915_drm.h for perf OA APIs Umesh Nerlige Ramappa
2020-03-25 21:58 ` Dixit, Ashutosh
2020-03-25 21:50 ` [igt-dev] [PATCH 2/3] tests/perf: new tests for parameterized OA buffer polling Umesh Nerlige Ramappa
2020-03-25 21:50 ` Umesh Nerlige Ramappa [this message]
2020-03-26 17:48 ` [igt-dev] [PATCH 3/3] tools: Allow user to set poll delay in i915 perf recorder Dixit, Ashutosh
2020-03-25 23:10 ` [igt-dev] ✓ Fi.CI.BAT: success for Test configurable poll delay in perf OA (rev4) Patchwork
2020-03-26 2:58 ` [igt-dev] ✗ Fi.CI.IGT: failure " 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=20200325215005.5489-4-umesh.nerlige.ramappa@intel.com \
--to=umesh.nerlige.ramappa@intel.com \
--cc=ashutosh.dixit@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=lionel.g.landwerlin@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.