projects
/
GitHub
/
mt8127
/
android_kernel_alcatel_ttab.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'v3.10.56' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git]
/
arch
/
arm
/
kernel
/
irq.c
diff --git
a/arch/arm/kernel/irq.c
b/arch/arm/kernel/irq.c
index 9723d17b8f38552212b8540aaadc10dd4442fc2b..0875608ee078f57ec100e50563dd9a63ea2f074c 100644
(file)
--- a/
arch/arm/kernel/irq.c
+++ b/
arch/arm/kernel/irq.c
@@
-42,6
+42,7
@@
#include <asm/mach/irq.h>
#include <asm/mach/time.h>
#include <asm/mach/irq.h>
#include <asm/mach/time.h>
+#include <linux/mt_sched_mon.h>
unsigned long irq_err_count;
int arch_show_interrupts(struct seq_file *p, int prec)
unsigned long irq_err_count;
int arch_show_interrupts(struct seq_file *p, int prec)
@@
-56,6
+57,10
@@
int arch_show_interrupts(struct seq_file *p, int prec)
return 0;
}
return 0;
}
+#ifdef CONFIG_MTK_SCHED_TRACERS
+#include <trace/events/mtk_events.h>
+#endif
+
/*
* handle_IRQ handles all hardware IRQ's. Decoded IRQs should
* not come via this function. Instead, they should provide their
/*
* handle_IRQ handles all hardware IRQ's. Decoded IRQs should
* not come via this function. Instead, they should provide their
@@
-65,8
+70,17
@@
int arch_show_interrupts(struct seq_file *p, int prec)
void handle_IRQ(unsigned int irq, struct pt_regs *regs)
{
struct pt_regs *old_regs = set_irq_regs(regs);
void handle_IRQ(unsigned int irq, struct pt_regs *regs)
{
struct pt_regs *old_regs = set_irq_regs(regs);
+#ifdef CONFIG_MTK_SCHED_TRACERS
+ struct irq_desc *desc;
+#endif
irq_enter();
irq_enter();
+ mt_trace_ISR_start(irq);
+#ifdef CONFIG_MTK_SCHED_TRACERS
+ desc = irq_to_desc(irq);
+ trace_irq_entry(irq,
+ (desc && desc->action && desc->action->name) ? desc->action->name : "-");
+#endif
/*
* Some hardware gives randomly wrong interrupts. Rather
/*
* Some hardware gives randomly wrong interrupts. Rather
@@
-79,7
+93,10
@@
void handle_IRQ(unsigned int irq, struct pt_regs *regs)
} else {
generic_handle_irq(irq);
}
} else {
generic_handle_irq(irq);
}
-
+#ifdef CONFIG_MTK_SCHED_TRACERS
+ trace_irq_exit(irq);
+#endif
+ mt_trace_ISR_end(irq);
irq_exit();
set_irq_regs(old_regs);
}
irq_exit();
set_irq_regs(old_regs);
}
@@
-163,7
+180,7
@@
static bool migrate_one_irq(struct irq_desc *desc)
c = irq_data_get_irq_chip(d);
if (!c->irq_set_affinity)
pr_debug("IRQ%u: unable to set affinity\n", d->irq);
c = irq_data_get_irq_chip(d);
if (!c->irq_set_affinity)
pr_debug("IRQ%u: unable to set affinity\n", d->irq);
- else if (c->irq_set_affinity(d, affinity,
tru
e) == IRQ_SET_MASK_OK && ret)
+ else if (c->irq_set_affinity(d, affinity,
fals
e) == IRQ_SET_MASK_OK && ret)
cpumask_copy(d->affinity, affinity);
return ret;
cpumask_copy(d->affinity, affinity);
return ret;