Re: [patch 1/3] performance counters: core code

From: Paul Mackerras
Date: Fri Dec 05 2008 - 05:55:39 EST


Thomas Gleixner writes:

> +static void
> +perf_install_in_context(struct perf_counter_context *ctx,
> + struct perf_counter *counter,
> + int cpu)
> +{
> + struct task_struct *task = ctx->task;
> +

[...]

> + if (task) {
> + task_oncpu_function_call(task, __perf_install_in_context,
> + counter);
> + } else {
> + smp_call_function_single(cpu, __perf_install_in_context,
> + counter, 1);
> + }

What happens if we send an IPI to the cpu where the task is running,
but by the time the IPI arrives, the task has been migrated to another
cpu and is now running there? Do you chase after it and send another
IPI to its new cpu, or is there some reason why it can't migrate?
If it's the former, where is that code? I haven't seen it so far (at
least, task_oncpu_function_call doesn't seem to do it).

Paul.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/