- if (!perf_field->hp_enable)
- return NOTIFY_OK;
-
- switch (action) {
- case CPU_ONLINE:
- case CPU_ONLINE_FROZEN:
- pevent = wrapper_perf_event_create_kernel_counter(attr,
- cpu, NULL, overflow_callback);
- if (!pevent || IS_ERR(pevent))
- return NOTIFY_BAD;
- if (pevent->state == PERF_EVENT_STATE_ERROR) {
- perf_event_release_kernel(pevent);
- return NOTIFY_BAD;
- }
- barrier(); /* Create perf counter before setting event */
- events[cpu] = pevent;
- break;
- case CPU_UP_CANCELED:
- case CPU_UP_CANCELED_FROZEN:
- case CPU_DEAD:
- case CPU_DEAD_FROZEN:
- pevent = events[cpu];
- events[cpu] = NULL;
- barrier(); /* NULLify event before perf counter teardown */
+ pevent = perf_event_create_kernel_counter(attr,
+ cpu, NULL, overflow_callback, NULL);
+ if (!pevent || IS_ERR(pevent))
+ return -EINVAL;
+ if (pevent->state == PERF_EVENT_STATE_ERROR) {