2011-02-17 15:53:38

by Jan Beulich

[permalink] [raw]
Subject: [PATCH, resend #2] x86: eliminate pointless adjustment attempts in fixup_irqs()

Not only when an IRQ's affinity equals cpu_online_mask is there no
need to actually try to adjust the affinity, but also when it's a
subset thereof. This particularly avoids adjustment attempts during
system shutdown to any IRQs bound to CPU#0.

Signed-off-by: Jan Beulich <[email protected]>

---
arch/x86/kernel/irq.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- 2.6.38-rc5/arch/x86/kernel/irq.c
+++ 2.6.38-rc5-x86-reduce-fixup-irqs/arch/x86/kernel/irq.c
@@ -310,7 +310,7 @@ void fixup_irqs(void)
data = &desc->irq_data;
affinity = data->affinity;
if (!irq_has_action(irq) ||
- cpumask_equal(affinity, cpu_online_mask)) {
+ cpumask_subset(affinity, cpu_online_mask)) {
raw_spin_unlock(&desc->lock);
continue;
}



2011-02-18 10:41:22

by Jan Beulich

[permalink] [raw]
Subject: [tip:x86/irq] x86: Eliminate pointless adjustment attempts in fixup_irqs()

Commit-ID: 58bff947e2d164c7e5cbf7f485e4b3d4884befeb
Gitweb: http://git.kernel.org/tip/58bff947e2d164c7e5cbf7f485e4b3d4884befeb
Author: Jan Beulich <[email protected]>
AuthorDate: Thu, 17 Feb 2011 15:54:26 +0000
Committer: Ingo Molnar <[email protected]>
CommitDate: Fri, 18 Feb 2011 08:58:00 +0100

x86: Eliminate pointless adjustment attempts in fixup_irqs()

Not only when an IRQ's affinity equals cpu_online_mask is there
no need to actually try to adjust the affinity, but also when
it's a subset thereof. This particularly avoids adjustment
attempts during system shutdown to any IRQs bound to CPU#0.

Signed-off-by: Jan Beulich <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Eric W. Biederman <[email protected]>
Cc: Suresh Siddha <[email protected]>
Cc: Gary Hade <[email protected]>
LKML-Reference: <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
---
arch/x86/kernel/irq.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
index 387b6a0..78793ef 100644
--- a/arch/x86/kernel/irq.c
+++ b/arch/x86/kernel/irq.c
@@ -310,7 +310,7 @@ void fixup_irqs(void)
data = &desc->irq_data;
affinity = data->affinity;
if (!irq_has_action(irq) ||
- cpumask_equal(affinity, cpu_online_mask)) {
+ cpumask_subset(affinity, cpu_online_mask)) {
raw_spin_unlock(&desc->lock);
continue;
}