[igt-dev] [PATCH i-g-t 30/31] tools/perf: Choose the right card
Umesh Nerlige Ramappa
umesh.nerlige.ramappa at intel.com
Fri Mar 3 01:17:29 UTC 2023
On Thu, Feb 16, 2023 at 01:27:00PM -0800, Umesh Nerlige Ramappa wrote:
>On Thu, Feb 16, 2023 at 08:39:12PM +0100, Kamil Konieczny wrote:
>>Hi Umesh,
>>
>>On 2023-02-14 at 16:46:47 -0800, Umesh Nerlige Ramappa wrote:
>>>Choose the right dri card to open for perf recorder.
>>>
>>>Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa at intel.com>
>>>---
>>> tools/i915-perf/i915_perf_recorder.c | 18 ++++++++----------
>>> 1 file changed, 8 insertions(+), 10 deletions(-)
>>>
>>>diff --git a/tools/i915-perf/i915_perf_recorder.c b/tools/i915-perf/i915_perf_recorder.c
>>>index ee8a288d..9337da12 100644
>>>--- a/tools/i915-perf/i915_perf_recorder.c
>>>+++ b/tools/i915-perf/i915_perf_recorder.c
>>>@@ -241,10 +241,10 @@ read_device_param(const char *stem, int id, const char *param)
>>> }
>>>
>>> static int
>>>-find_intel_render_node(void)
>>>+find_intel_card_node(void)
>>> {
>>>- for (int i = 128; i < (128 + 16); i++) {
>>>- if (read_device_param("renderD", i, "vendor") == 0x8086)
>>>+ for (int i = 0; i < 128; i++) {
>>>+ if (read_device_param("card", i, "vendor") == 0x8086)
>>
>>These looks like a fix. Btw why do we stick to first card only ?
>>May you instroduce params for a tool and use N-th card ?
>>Is OA useable for only one card at a moment ?
>
>That's a bug. The tool already supports cards/device, but I don't seem
>to be passing the device/card number to find_intel_card_node().
>
>I think I have lost track of the original patch (not authored by me),
>so I am missing a few changes. Will fix this.
Hmm, Looking at it again, it's not a bug. This function is only called
if the user of the tool does not pass the card/device parameter (card <
0 below). It picks what's available. If the user passes the device
number, then the specific card is opened for streaming perf reports.
Umesh
>
>Thanks,
>Umesh
>>
>>Regards,
>>Kamil
>>
>>> return i;
>>> }
>>>
>>>@@ -273,20 +273,18 @@ open_render_node(uint32_t *devid, int card)
>>> char *name;
>>> int ret;
>>> int fd;
>>>- int render;
>>>
>>> if (card < 0) {
>>>- render = find_intel_render_node();
>>>- if (render < 0)
>>>+ card = find_intel_card_node();
>>>+
>>>+ if (card < 0)
>>> return -1;
>>>- } else {
>>>- render = 128 + card;
>>> }
>>>
>>>- ret = asprintf(&name, "/dev/dri/renderD%u", render);
>>>+ ret = asprintf(&name, "/dev/dri/card%u", card);
>>> assert(ret != -1);
>>>
>>>- *devid = read_device_param("renderD", render, "device");
>>>+ *devid = read_device_param("card", card, "device");
>>>
>>> fd = open(name, O_RDWR);
>>> free(name);
>>>--
>>>2.36.1
>>>
More information about the igt-dev
mailing list