diff options
author | Peter Zijlstra <peterz@infradead.org> | 2020-06-18 22:28:37 +0200 |
---|---|---|
committer | Peter Zijlstra <peterz@infradead.org> | 2020-11-24 16:47:49 +0100 |
commit | 2914b0ba61a9d253535e51af16c7122a8148995d (patch) | |
tree | 1964cfeb5a14ef00bbc04fa237427f54caa32c74 /include/linux/irqflags.h | |
parent | 545b8c8df41f9ecbaf806332d4095bc4bc7c14e8 (diff) | |
download | lwn-2914b0ba61a9d253535e51af16c7122a8148995d.tar.gz lwn-2914b0ba61a9d253535e51af16c7122a8148995d.zip |
irq_work: Optimize irq_work_single()
Trade one atomic op for a full memory barrier.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
Diffstat (limited to 'include/linux/irqflags.h')
-rw-r--r-- | include/linux/irqflags.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h index fef2d43a7a1d..8de0e1373de7 100644 --- a/include/linux/irqflags.h +++ b/include/linux/irqflags.h @@ -107,14 +107,14 @@ do { \ current->irq_config = 0; \ } while (0) -# define lockdep_irq_work_enter(__work) \ +# define lockdep_irq_work_enter(_flags) \ do { \ - if (!(atomic_read(&__work->node.a_flags) & IRQ_WORK_HARD_IRQ))\ + if (!((_flags) & IRQ_WORK_HARD_IRQ)) \ current->irq_config = 1; \ } while (0) -# define lockdep_irq_work_exit(__work) \ +# define lockdep_irq_work_exit(_flags) \ do { \ - if (!(atomic_read(&__work->node.a_flags) & IRQ_WORK_HARD_IRQ))\ + if (!((_flags) & IRQ_WORK_HARD_IRQ)) \ current->irq_config = 0; \ } while (0) |