Commit f6cd2477 authored by Eric Dumazet's avatar Eric Dumazet Committed by Thomas Gleixner

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: default avatarEric Dumazet <eric.dumazet@gmail.com>
Reviewed-by: default avatarAndi Kleen <andi@firstfloor.org>
Cc: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <1288865628.2659.69.camel@edumazet-laptop>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 814ce252
...@@ -114,15 +114,15 @@ typedef irqreturn_t (*irq_handler_t)(int, void *); ...@@ -114,15 +114,15 @@ typedef irqreturn_t (*irq_handler_t)(int, void *);
struct irqaction { struct irqaction {
irq_handler_t handler; irq_handler_t handler;
unsigned long flags; unsigned long flags;
const char *name;
void *dev_id; void *dev_id;
struct irqaction *next; struct irqaction *next;
int irq; int irq;
struct proc_dir_entry *dir;
irq_handler_t thread_fn; irq_handler_t thread_fn;
struct task_struct *thread; struct task_struct *thread;
unsigned long thread_flags; 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); extern irqreturn_t no_action(int cpl, void *dev_id);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment