-#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) */
-
-#ifdef CONFIG_HOTPLUG_CPU
-
-/**
- * lttng_perf_counter_hp_callback - CPU hotplug callback
- * @nb: notifier block
- * @action: hotplug action to take
- * @hcpu: CPU number
- *
- * Returns the success/failure of the operation. (%NOTIFY_OK, %NOTIFY_BAD)
- *
- * We can setup perf counters when the cpu is online (up prepare seems to be too
- * soon).
- */
-static
-int lttng_perf_counter_cpu_hp_callback(struct notifier_block *nb,
- unsigned long action,
- void *hcpu)
-{
- unsigned int cpu = (unsigned long) hcpu;
- struct lttng_perf_counter_field *perf_field =
- container_of(nb, struct lttng_perf_counter_field, nb);
- struct perf_event **events = perf_field->e;
- struct perf_event_attr *attr = perf_field->attr;
- struct perf_event *pevent;
-
- 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 */
- perf_event_release_kernel(pevent);
- break;
- }
- return NOTIFY_OK;
-}
-
-#endif
-
-#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) */
-