Re: [PATCH v2 4/4] perf arm-spe: Support hardware-based PID tracing
From: Leo Yan <hidden>
Date: 2021-11-11 07:42:01
Also in:
linux-arm-kernel, lkml
On Wed, Nov 10, 2021 at 11:28:48PM -0800, Namhyung Kim wrote: [...]
quoted
+static void arm_spe_set_pid_tid_cpu(struct arm_spe *spe, + struct auxtrace_queue *queue) +{ + struct arm_spe_queue *speq = queue->priv; + pid_t tid; + + tid = machine__get_current_tid(spe->machine, speq->cpu); + if (tid != -1) { + speq->tid = tid; + thread__zput(speq->thread); + } else + speq->tid = queue->tid; + + if ((!speq->thread) && (speq->tid != -1)) { + speq->thread = machine__find_thread(spe->machine, -1, + speq->tid); + } + + if (speq->thread) { + speq->pid = speq->thread->pid_; + if (queue->cpu == -1) + speq->cpu = speq->thread->cpu; + } +} + +static int arm_spe_set_tid(struct arm_spe_queue *speq, pid_t tid) +{ + struct arm_spe *spe = speq->spe; + int err = machine__set_current_tid(spe->machine, speq->cpu, tid, tid);I think we should pass -1 as pid as we don't know the real pid.
AFAICT, I observe one case for machine__set_current_tid() returning error is 'speq->cpu' is -1 (this is the case for per-thread tracing). In this case, if pass '-1' for pid/tid, it still will return failure. So here should return the error as it is. Am I missing anything? Thanks, Leo