Revert "perf: stop deadlock if attempt to bring cpu up fails"

This reverts 'commit 5f71e693df ("perf: stop deadlock if attempt
to bring cpu up fails")' as this change is not needed.

Change-Id: I17e6f7c1b648a5f2559eeea786efafc9be32a9e9
Signed-off-by: Imran Khan <kimran@codeaurora.org>
This commit is contained in:
Imran Khan 2017-07-31 14:37:18 +05:30
parent 1e931d0f3f
commit 9f4e8a6c46
3 changed files with 41 additions and 1 deletions

View file

@ -552,6 +552,7 @@ static void armpmu_init(struct arm_pmu *armpmu)
.stop = armpmu_stop,
.read = armpmu_read,
.filter_match = armpmu_filter_match,
.events_across_hotplug = 1,
};
}

View file

@ -1693,6 +1693,32 @@ static int __perf_remove_from_context(void *info)
return 0;
}
#ifdef CONFIG_SMP
static void perf_retry_remove(struct perf_event *event,
struct remove_event *rep)
{
int up_ret;
/*
* CPU was offline. Bring it online so we can
* gracefully exit a perf context.
*/
up_ret = cpu_up(event->cpu);
if (!up_ret)
/* Try the remove call once again. */
cpu_function_call(event->cpu, __perf_remove_from_context,
rep);
else
pr_err("Failed to bring up CPU: %d, ret: %d\n",
event->cpu, up_ret);
}
#else
static void perf_retry_remove(struct perf_event *event,
struct remove_event *rep)
{
}
#endif
/*
* Remove the event from a task's (or a CPU's) list of events.
*
@ -1728,6 +1754,9 @@ static void __ref perf_remove_from_context(struct perf_event *event,
*/
ret = cpu_function_call(event->cpu, __perf_remove_from_context,
&re);
if (ret == -ENXIO)
perf_retry_remove(event, &re);
return;
}
@ -7109,6 +7138,8 @@ static struct pmu perf_swevent = {
.start = perf_swevent_start,
.stop = perf_swevent_stop,
.read = perf_swevent_read,
.events_across_hotplug = 1,
};
#ifdef CONFIG_EVENT_TRACING
@ -7230,6 +7261,8 @@ static struct pmu perf_tracepoint = {
.start = perf_swevent_start,
.stop = perf_swevent_stop,
.read = perf_swevent_read,
.events_across_hotplug = 1,
};
static inline void perf_tp_register(void)
@ -7517,6 +7550,8 @@ static struct pmu perf_cpu_clock = {
.start = cpu_clock_event_start,
.stop = cpu_clock_event_stop,
.read = cpu_clock_event_read,
.events_across_hotplug = 1,
};
/*
@ -7598,6 +7633,8 @@ static struct pmu perf_task_clock = {
.start = task_clock_event_start,
.stop = task_clock_event_stop,
.read = task_clock_event_read,
.events_across_hotplug = 1,
};
static void perf_pmu_nop_void(struct pmu *pmu)

View file

@ -614,6 +614,8 @@ static struct pmu perf_breakpoint = {
.start = hw_breakpoint_start,
.stop = hw_breakpoint_stop,
.read = hw_breakpoint_pmu_read,
.events_across_hotplug = 1,
};
int __init init_hw_breakpoint(void)