Commit 09bda443 authored by Ingo Molnar's avatar Ingo Molnar
Browse files

Merge branch 'tip/perf/core' of...

Merge branch 'tip/perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace into perf/core
parents d1e169da 47b0edcb
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -226,6 +226,13 @@ Here is the list of current tracers that may be configured.
	Traces and records the max latency that it takes for
	Traces and records the max latency that it takes for
	the highest priority task to get scheduled after
	the highest priority task to get scheduled after
	it has been woken up.
	it has been woken up.
        Traces all tasks as an average developer would expect.

  "wakeup_rt"

        Traces and records the max latency that it takes for just
        RT tasks (as the current "wakeup" does). This is useful
        for those interested in wake up timings of RT tasks.


  "hw-branch-tracer"
  "hw-branch-tracer"


+12 −12
Original line number Original line Diff line number Diff line
@@ -377,8 +377,8 @@ static inline int hlt_use_halt(void)
void default_idle(void)
void default_idle(void)
{
{
	if (hlt_use_halt()) {
	if (hlt_use_halt()) {
		trace_power_start(POWER_CSTATE, 1, smp_processor_id());
		trace_power_start_rcuidle(POWER_CSTATE, 1, smp_processor_id());
		trace_cpu_idle(1, smp_processor_id());
		trace_cpu_idle_rcuidle(1, smp_processor_id());
		current_thread_info()->status &= ~TS_POLLING;
		current_thread_info()->status &= ~TS_POLLING;
		/*
		/*
		 * TS_POLLING-cleared state must be visible before we
		 * TS_POLLING-cleared state must be visible before we
@@ -391,8 +391,8 @@ void default_idle(void)
		else
		else
			local_irq_enable();
			local_irq_enable();
		current_thread_info()->status |= TS_POLLING;
		current_thread_info()->status |= TS_POLLING;
		trace_power_end(smp_processor_id());
		trace_power_end_rcuidle(smp_processor_id());
		trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
		trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
	} else {
	} else {
		local_irq_enable();
		local_irq_enable();
		/* loop is done by the caller */
		/* loop is done by the caller */
@@ -450,8 +450,8 @@ EXPORT_SYMBOL_GPL(cpu_idle_wait);
static void mwait_idle(void)
static void mwait_idle(void)
{
{
	if (!need_resched()) {
	if (!need_resched()) {
		trace_power_start(POWER_CSTATE, 1, smp_processor_id());
		trace_power_start_rcuidle(POWER_CSTATE, 1, smp_processor_id());
		trace_cpu_idle(1, smp_processor_id());
		trace_cpu_idle_rcuidle(1, smp_processor_id());
		if (this_cpu_has(X86_FEATURE_CLFLUSH_MONITOR))
		if (this_cpu_has(X86_FEATURE_CLFLUSH_MONITOR))
			clflush((void *)&current_thread_info()->flags);
			clflush((void *)&current_thread_info()->flags);


@@ -461,8 +461,8 @@ static void mwait_idle(void)
			__sti_mwait(0, 0);
			__sti_mwait(0, 0);
		else
		else
			local_irq_enable();
			local_irq_enable();
		trace_power_end(smp_processor_id());
		trace_power_end_rcuidle(smp_processor_id());
		trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
		trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
	} else
	} else
		local_irq_enable();
		local_irq_enable();
}
}
@@ -474,13 +474,13 @@ static void mwait_idle(void)
 */
 */
static void poll_idle(void)
static void poll_idle(void)
{
{
	trace_power_start(POWER_CSTATE, 0, smp_processor_id());
	trace_power_start_rcuidle(POWER_CSTATE, 0, smp_processor_id());
	trace_cpu_idle(0, smp_processor_id());
	trace_cpu_idle_rcuidle(0, smp_processor_id());
	local_irq_enable();
	local_irq_enable();
	while (!need_resched())
	while (!need_resched())
		cpu_relax();
		cpu_relax();
	trace_power_end(smp_processor_id());
	trace_power_end_rcuidle(smp_processor_id());
	trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
	trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
}
}


/*
/*
+4 −4
Original line number Original line Diff line number Diff line
@@ -94,13 +94,13 @@ int cpuidle_idle_call(void)


	target_state = &drv->states[next_state];
	target_state = &drv->states[next_state];


	trace_power_start(POWER_CSTATE, next_state, dev->cpu);
	trace_power_start_rcuidle(POWER_CSTATE, next_state, dev->cpu);
	trace_cpu_idle(next_state, dev->cpu);
	trace_cpu_idle_rcuidle(next_state, dev->cpu);


	entered_state = target_state->enter(dev, drv, next_state);
	entered_state = target_state->enter(dev, drv, next_state);


	trace_power_end(dev->cpu);
	trace_power_end_rcuidle(dev->cpu);
	trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu);
	trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);


	if (entered_state >= 0) {
	if (entered_state >= 0) {
		/* Update cpuidle counters */
		/* Update cpuidle counters */
+2 −2
Original line number Original line Diff line number Diff line
@@ -178,9 +178,9 @@ struct dyn_ftrace {
};
};


int ftrace_force_update(void);
int ftrace_force_update(void);
void ftrace_set_filter(struct ftrace_ops *ops, unsigned char *buf,
int ftrace_set_filter(struct ftrace_ops *ops, unsigned char *buf,
		       int len, int reset);
		       int len, int reset);
void ftrace_set_notrace(struct ftrace_ops *ops, unsigned char *buf,
int ftrace_set_notrace(struct ftrace_ops *ops, unsigned char *buf,
			int len, int reset);
			int len, int reset);
void ftrace_set_global_filter(unsigned char *buf, int len, int reset);
void ftrace_set_global_filter(unsigned char *buf, int len, int reset);
void ftrace_set_global_notrace(unsigned char *buf, int len, int reset);
void ftrace_set_global_notrace(unsigned char *buf, int len, int reset);
+1 −6
Original line number Original line Diff line number Diff line
@@ -20,7 +20,6 @@
#include <linux/atomic.h>
#include <linux/atomic.h>
#include <asm/ptrace.h>
#include <asm/ptrace.h>
#include <asm/system.h>
#include <asm/system.h>
#include <trace/events/irq.h>


/*
/*
 * These correspond to the IORESOURCE_IRQ_* defines in
 * These correspond to the IORESOURCE_IRQ_* defines in
@@ -456,11 +455,7 @@ asmlinkage void do_softirq(void);
asmlinkage void __do_softirq(void);
asmlinkage void __do_softirq(void);
extern void open_softirq(int nr, void (*action)(struct softirq_action *));
extern void open_softirq(int nr, void (*action)(struct softirq_action *));
extern void softirq_init(void);
extern void softirq_init(void);
static inline void __raise_softirq_irqoff(unsigned int nr)
extern void __raise_softirq_irqoff(unsigned int nr);
{
	trace_softirq_raise(nr);
	or_softirq_pending(1UL << nr);
}


extern void raise_softirq_irqoff(unsigned int nr);
extern void raise_softirq_irqoff(unsigned int nr);
extern void raise_softirq(unsigned int nr);
extern void raise_softirq(unsigned int nr);
Loading