Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b4c69d45 authored by Ingo Molnar's avatar Ingo Molnar
Browse files

Merge branch 'urgent' of...

Merge branch 'urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into perf/urgent
parents 68d3f1d8 269f45c2
Loading
Loading
Loading
Loading
+17 −5
Original line number Diff line number Diff line
@@ -568,8 +568,13 @@ static int __init init_sysfs(void)
	int error;

	error = sysdev_class_register(&oprofile_sysclass);
	if (!error)
	if (error)
		return error;

	error = sysdev_register(&device_oprofile);
	if (error)
		sysdev_class_unregister(&oprofile_sysclass);

	return error;
}

@@ -580,8 +585,10 @@ static void exit_sysfs(void)
}

#else
#define init_sysfs() do { } while (0)
#define exit_sysfs() do { } while (0)

static inline int  init_sysfs(void) { return 0; }
static inline void exit_sysfs(void) { }

#endif /* CONFIG_PM */

static int __init p4_init(char **cpu_type)
@@ -695,6 +702,8 @@ int __init op_nmi_init(struct oprofile_operations *ops)
	char *cpu_type = NULL;
	int ret = 0;

	using_nmi = 0;

	if (!cpu_has_apic)
		return -ENODEV;

@@ -774,7 +783,10 @@ int __init op_nmi_init(struct oprofile_operations *ops)

	mux_init(ops);

	init_sysfs();
	ret = init_sysfs();
	if (ret)
		return ret;

	using_nmi = 1;
	printk(KERN_INFO "oprofile: using NMI interrupt.\n");
	return 0;
+14 −13
Original line number Diff line number Diff line
@@ -141,16 +141,6 @@ static struct notifier_block module_load_nb = {
	.notifier_call = module_load_notify,
};


static void end_sync(void)
{
	end_cpu_work();
	/* make sure we don't leak task structs */
	process_task_mortuary();
	process_task_mortuary();
}


int sync_start(void)
{
	int err;
@@ -158,7 +148,7 @@ int sync_start(void)
	if (!zalloc_cpumask_var(&marked_cpus, GFP_KERNEL))
		return -ENOMEM;

	start_cpu_work();
	mutex_lock(&buffer_mutex);

	err = task_handoff_register(&task_free_nb);
	if (err)
@@ -173,7 +163,10 @@ int sync_start(void)
	if (err)
		goto out4;

	start_cpu_work();

out:
	mutex_unlock(&buffer_mutex);
	return err;
out4:
	profile_event_unregister(PROFILE_MUNMAP, &munmap_nb);
@@ -182,7 +175,6 @@ out3:
out2:
	task_handoff_unregister(&task_free_nb);
out1:
	end_sync();
	free_cpumask_var(marked_cpus);
	goto out;
}
@@ -190,11 +182,20 @@ out1:

void sync_stop(void)
{
	/* flush buffers */
	mutex_lock(&buffer_mutex);
	end_cpu_work();
	unregister_module_notifier(&module_load_nb);
	profile_event_unregister(PROFILE_MUNMAP, &munmap_nb);
	profile_event_unregister(PROFILE_TASK_EXIT, &task_exit_nb);
	task_handoff_unregister(&task_free_nb);
	end_sync();
	mutex_unlock(&buffer_mutex);
	flush_scheduled_work();

	/* make sure we don't leak task structs */
	process_task_mortuary();
	process_task_mortuary();

	free_cpumask_var(marked_cpus);
}

+0 −2
Original line number Diff line number Diff line
@@ -120,8 +120,6 @@ void end_cpu_work(void)

		cancel_delayed_work(&b->work);
	}

	flush_scheduled_work();
}

/*