summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2010-11-04 13:13:48 +0300
committerThomas Gleixner <tglx@linutronix.de>2010-11-10 12:21:22 +0300
commitf6cd24777513fcc673d432cc29ef59881d3e4df1 (patch)
tree93d08badf3a18e6bcdf2baf97532a8f54fec5a08 /include/linux
parent814ce2521121c2459e16cea8c7221e157edbeddd (diff)
downloadlinux-f6cd24777513fcc673d432cc29ef59881d3e4df1.tar.xz
irq: Better struct irqaction layout
We currently use kmalloc-96 slab for struct irqaction allocations on 64bit arches. This is unfortunate because of possible false sharing and two cache lines accesses. Move 'name' and 'dir' fields at the end of the structure, and force a suitable alignement. Hot path fields now use one cache line on x86_64. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Reviewed-by: Andi Kleen <andi@firstfloor.org> Cc: Peter Zijlstra <peterz@infradead.org> LKML-Reference: <1288865628.2659.69.camel@edumazet-laptop> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/interrupt.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index 79d0c4f6d071..55e0d4253e49 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -114,15 +114,15 @@ typedef irqreturn_t (*irq_handler_t)(int, void *);
struct irqaction {
irq_handler_t handler;
unsigned long flags;
- const char *name;
void *dev_id;
struct irqaction *next;
int irq;
- struct proc_dir_entry *dir;
irq_handler_t thread_fn;
struct task_struct *thread;
unsigned long thread_flags;
-};
+ const char *name;
+ struct proc_dir_entry *dir;
+} ____cacheline_internodealigned_in_smp;
extern irqreturn_t no_action(int cpl, void *dev_id);