From: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
To: igt-dev@lists.freedesktop.org
Subject: [igt-dev] [PATCH 16/29] tools/i915-perf-recorder: add ability to select device
Date: Tue, 25 Oct 2022 20:06:56 +0000 [thread overview]
Message-ID: <20221025200709.83314-17-umesh.nerlige.ramappa@intel.com> (raw)
In-Reply-To: <20221025200709.83314-1-umesh.nerlige.ramappa@intel.com>
From: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
We're starting to have system with multiple Intel GPUs.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
tools/i915-perf/i915_perf_recorder.c | 50 ++++++++++++++++++++++++----
1 file changed, 43 insertions(+), 7 deletions(-)
diff --git a/tools/i915-perf/i915_perf_recorder.c b/tools/i915-perf/i915_perf_recorder.c
index 00195290..7ced7b40 100644
--- a/tools/i915-perf/i915_perf_recorder.c
+++ b/tools/i915-perf/i915_perf_recorder.c
@@ -250,16 +250,37 @@ find_intel_render_node(void)
return -1;
}
+static void
+print_intel_devices(void)
+{
+ fprintf(stdout, "Available devices:\n");
+ for (int i = 0; i < 128; i++) {
+ if (read_device_param("card", i, "vendor") == 0x8086) {
+ uint32_t devid = read_device_param("card", i, "device");
+ const struct intel_device_info *devinfo =
+ intel_get_device_info(devid);
+ fprintf(stdout, " %i: %s (0x%04hx)\n", i,
+ devinfo ? devinfo->codename : "unknwon",
+ devid);
+ }
+ }
+}
+
static int
-open_render_node(uint32_t *devid)
+open_render_node(uint32_t *devid, int card)
{
char *name;
int ret;
int fd;
+ int render;
- int render = find_intel_render_node();
- if (render < 0)
- return -1;
+ if (card < 0) {
+ render = find_intel_render_node();
+ if (render < 0)
+ return -1;
+ } else {
+ render = 128 + card;
+ }
ret = asprintf(&name, "/dev/dri/renderD%u", render);
assert(ret != -1);
@@ -722,6 +743,9 @@ usage(const char *name)
"Recording tool for i915-perf.\n"
"\n"
" --help, -h Print this screen\n"
+ " --device, -d <value> Device to use\n"
+ " (value=list to list devices\n"
+ " value=1 to use /dev/dri/card1)\n"
" --correlation-period, -c <value> Time period of timestamp correlation in seconds\n"
" (default = 1.0)\n"
" --perf-period, -p <value> Time period of i915-perf reports in seconds\n"
@@ -772,6 +796,7 @@ main(int argc, char *argv[])
{
const struct option long_options[] = {
{"help", no_argument, 0, 'h'},
+ {"device", required_argument, 0, 'd'},
{"correlation-period", required_argument, 0, 'c'},
{"perf-period", required_argument, 0, 'p'},
{"metric", required_argument, 0, 'm'},
@@ -798,7 +823,7 @@ main(int argc, char *argv[])
struct timespec now;
uint64_t corr_period_ns, poll_time_ns;
uint32_t circular_size = 0;
- int opt;
+ int opt, dev_node_id = -1;
bool list_counters = false;
FILE *output = NULL;
struct recording_context ctx = {
@@ -812,7 +837,7 @@ main(int argc, char *argv[])
.poll_period = 5 * 1000 * 1000,
};
- while ((opt = getopt_long(argc, argv, "hc:p:m:Co:s:f:k:P:", long_options, NULL)) != -1) {
+ while ((opt = getopt_long(argc, argv, "hc:d:p:m:Co:s:f:k:P:", long_options, NULL)) != -1) {
switch (opt) {
case 'h':
usage(argv[0]);
@@ -820,6 +845,12 @@ main(int argc, char *argv[])
case 'c':
corr_period = atof(optarg);
break;
+ case 'd':
+ if (!strcmp(optarg, "list"))
+ dev_node_id = -2;
+ else
+ dev_node_id = atoi(optarg);
+ break;
case 'p':
perf_period = atof(optarg);
break;
@@ -865,7 +896,12 @@ main(int argc, char *argv[])
}
}
- ctx.drm_fd = open_render_node(&ctx.devid);
+ if (dev_node_id == -2) {
+ print_intel_devices();
+ return EXIT_SUCCESS;
+ }
+
+ ctx.drm_fd = open_render_node(&ctx.devid, dev_node_id);
if (ctx.drm_fd < 0) {
fprintf(stderr, "Unable to open device.\n");
return EXIT_FAILURE;
--
2.25.1
next prev parent reply other threads:[~2022-10-25 20:07 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-25 20:06 [igt-dev] [PATCH 00/29] Second part of DG2 OA tests Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 01/29] lib/i915/perf-config: Bump up the soversion Umesh Nerlige Ramappa
2022-10-25 22:05 ` Lionel Landwerlin
2022-10-25 20:06 ` [igt-dev] [PATCH 02/29] i915/perf: Check regularly if we are done reading reports Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 03/29] i915/perf: Fix OA short_reads test Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 04/29] i915/perf: Check return value from getparam Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 05/29] i915/perf: Limit sseu-config tests for gen11 Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 06/29] i915/perf: Account for OA sampling interval in polling test Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 07/29] i915/perf: Define OA report types and fix oa-formats test Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 08/29] i915/perf: Use ARRAY_SIZE consistently for num_properties Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 09/29] i915/perf: Use gt in perf tests and lib Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 10/29] i915/perf: Explicitly state rendercopy needs for a test Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 11/29] i915/perf: Skip tests that use rendercopy Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 12/29] i915/perf: Add OA formats for DG2 Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 13/29] i915/perf: Fix CS timestamp vs OA timstamp mismatch Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 14/29] i915/perf: Wait longer for rc6 residency in DG2 Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 15/29] lib/i915/perf: implement report accumulation for new format Umesh Nerlige Ramappa
2022-10-25 20:06 ` Umesh Nerlige Ramappa [this message]
2022-10-25 20:06 ` [igt-dev] [PATCH 17/29] lib/i915/perf: fixup report validity Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 18/29] lib/i915/perf: add a helper to read timestamps Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 19/29] lib/i915/perf: store bit shifting required for OA timestamps Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 20/29] lib/i915/perf: indentation fix Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 21/29] tools/i915-perf-recorder: capture OA & CS frequencies Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 22/29] tools/i915-perf: make timestamp range easier to compare Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 23/29] tools/i915-perf: printout CPU clock used Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 24/29] tools/i915-perf: record remaining perf data on exit Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 25/29] lib/i915/perf: add a raw timestamp utility Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 26/29] lib/i915/perf: add helper function to get report reason Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 27/29] tools/i915-perf: add option to printout reports data Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 28/29] lib/i915: add new ACM/DG2 format in codegen Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 29/29] lib/i915/perf: configure OA timestamp shift and mask for ACM Umesh Nerlige Ramappa
2022-10-25 20:48 ` [igt-dev] ✓ Fi.CI.BAT: success for Second part of DG2 OA tests Patchwork
2022-10-26 11:17 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2022-10-26 21:27 ` Umesh Nerlige Ramappa
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=20221025200709.83314-17-umesh.nerlige.ramappa@intel.com \
--to=umesh.nerlige.ramappa@intel.com \
--cc=igt-dev@lists.freedesktop.org \
/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.