int prof_on __read_mostly;
 EXPORT_SYMBOL_GPL(prof_on);
 
-static cpumask_var_t prof_cpu_mask;
 #if defined(CONFIG_SMP) && defined(CONFIG_PROC_FS)
 static DEFINE_PER_CPU(struct profile_hit *[2], cpu_profile_hits);
 static DEFINE_PER_CPU(int, cpu_profile_flip);
 
        buffer_bytes = prof_len*sizeof(atomic_t);
 
-       if (!alloc_cpumask_var(&prof_cpu_mask, GFP_KERNEL))
-               return -ENOMEM;
-
-       cpumask_copy(prof_cpu_mask, cpu_possible_mask);
-
        prof_buffer = kzalloc(buffer_bytes, GFP_KERNEL|__GFP_NOWARN);
        if (prof_buffer)
                return 0;
        if (prof_buffer)
                return 0;
 
-       free_cpumask_var(prof_cpu_mask);
        return -ENOMEM;
 }
 
        struct page *page;
        int i;
 
-       if (cpumask_available(prof_cpu_mask))
-               cpumask_clear_cpu(cpu, prof_cpu_mask);
-
        for (i = 0; i < 2; i++) {
                if (per_cpu(cpu_profile_hits, cpu)[i]) {
                        page = virt_to_page(per_cpu(cpu_profile_hits, cpu)[i]);
        return 0;
 }
 
-static int profile_online_cpu(unsigned int cpu)
-{
-       if (cpumask_available(prof_cpu_mask))
-               cpumask_set_cpu(cpu, prof_cpu_mask);
-
-       return 0;
-}
-
 #else /* !CONFIG_SMP */
 #define profile_flip_buffers()         do { } while (0)
 #define profile_discard_flip_buffers() do { } while (0)
 {
        struct pt_regs *regs = get_irq_regs();
 
-       if (!user_mode(regs) && cpumask_available(prof_cpu_mask) &&
-           cpumask_test_cpu(smp_processor_id(), prof_cpu_mask))
+       /* This is the old kernel-only legacy profiling */
+       if (!user_mode(regs))
                profile_hit(type, (void *)profile_pc(regs));
 }
 
 int __ref create_proc_profile(void)
 {
        struct proc_dir_entry *entry;
-#ifdef CONFIG_SMP
-       enum cpuhp_state online_state;
-#endif
-
        int err = 0;
 
        if (!prof_on)
                                profile_prepare_cpu, profile_dead_cpu);
        if (err)
                return err;
-
-       err = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "AP_PROFILE_ONLINE",
-                               profile_online_cpu, NULL);
-       if (err < 0)
-               goto err_state_prep;
-       online_state = err;
-       err = 0;
 #endif
        entry = proc_create("profile", S_IWUSR | S_IRUGO,
                            NULL, &profile_proc_ops);
-       if (!entry)
-               goto err_state_onl;
-       proc_set_size(entry, (1 + prof_len) * sizeof(atomic_t));
-
-       return err;
-err_state_onl:
+       if (entry)
+               proc_set_size(entry, (1 + prof_len) * sizeof(atomic_t));
 #ifdef CONFIG_SMP
-       cpuhp_remove_state(online_state);
-err_state_prep:
-       cpuhp_remove_state(CPUHP_PROFILE_PREPARE);
+       else
+               cpuhp_remove_state(CPUHP_PROFILE_PREPARE);
 #endif
        return err;
 }