From: John Blackwood <john.blackwood@ccur.com>
To: Ingo Molnar <mingo@elte.hu>,
Rusty Russell <rusty@rustcorp.com.au>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: [RFC][PATCH] Setting /proc/irq/[n]/smp_affinity failure on 8 cpu systems
Date: Wed, 2 Dec 2009 10:19:35 -0600 [thread overview]
Message-ID: <4B169397.5020609@ccur.com> (raw)
Hi,
I would like to mention an irq set affinity issue occurs on an
older Dell PowerEdge 6650 system:
- 8 cpus (4 are hyper-threaded),
- uses the struct apic 'apic_default' support
- 32 bit (x86) kernel
This issue is that once you change the irq smp_affinity of an irq
to be less than all cpus in the system, you can never change really the
irq smp_affinity back to be all cpus in the system (0xff) again,
even though no error status is returned on the "/bin/echo ff >
/proc/irq/[n]/smp_affinity" operation.
This is due to that fact that BAD_APICID has the same value as
all cpus (0xff) on 32bit kernels, and thus the value returned from
set_desc_affinity() via the cpu_mask_to_apicid_and() function is treated
as a failure in set_ioapic_affinity_irq_desc(), and no affinity changes
are made.
It seems like changing the BAD_APICID value from 0xFF to 0xFFFF for
CONFIG_X86_32 might be one possible solution, and it seems to function
properly for this Dell PowerEdge 6650 system.
Thank you for your time.
Signed-off-by: John Blackwood <john.blackwood@ccur.com>
diff -rup linux-2.6.32-rc8/arch/x86/include/asm/apicdef.h new/arch/x86/include/asm/apicdef.h
--- linux-2.6.32-rc8/arch/x86/include/asm/apicdef.h 2009-11-19 16:32:38.000000000 -0600
+++ new/arch/x86/include/asm/apicdef.h 2009-12-01 15:15:34.000000000 -0600
@@ -413,9 +413,6 @@ struct local_apic {
#undef u32
-#ifdef CONFIG_X86_32
- #define BAD_APICID 0xFFu
-#else
- #define BAD_APICID 0xFFFFu
-#endif
+#define BAD_APICID 0xFFFFu
+
#endif /* _ASM_X86_APICDEF_H */
diff -rup linux-2.6.32-rc8/arch/x86/include/asm/apic.h new/arch/x86/include/asm/apic.h
--- linux-2.6.32-rc8/arch/x86/include/asm/apic.h 2009-11-19 16:32:38.000000000 -0600
+++ new/arch/x86/include/asm/apic.h 2009-12-01 15:15:34.000000000 -0600
@@ -591,7 +591,7 @@ static inline physid_mask_t default_apic
#endif /* CONFIG_X86_LOCAL_APIC */
#ifdef CONFIG_X86_32
-extern u8 cpu_2_logical_apicid[NR_CPUS];
+extern u16 cpu_2_logical_apicid[NR_CPUS];
#endif
#endif /* _ASM_X86_APIC_H */
diff -rup linux-2.6.32-rc8/arch/x86/kernel/smpboot.c new/arch/x86/kernel/smpboot.c
--- linux-2.6.32-rc8/arch/x86/kernel/smpboot.c 2009-11-19 16:32:38.000000000 -0600
+++ new/arch/x86/kernel/smpboot.c 2009-12-01 15:15:34.000000000 -0600
@@ -146,7 +146,7 @@ static void unmap_cpu_to_node(int cpu)
#ifdef CONFIG_X86_32
static int boot_cpu_logical_apicid;
-u8 cpu_2_logical_apicid[NR_CPUS] __read_mostly =
+u16 cpu_2_logical_apicid[NR_CPUS] __read_mostly =
{ [0 ... NR_CPUS-1] = BAD_APICID };
static void map_cpu_to_logical_apicid(void)
next reply other threads:[~2009-12-02 16:23 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-02 16:19 John Blackwood [this message]
2009-12-03 1:13 ` [RFC][PATCH] Setting /proc/irq/[n]/smp_affinity failure on 8 cpu systems Suresh Siddha
-- strict thread matches above, loose matches on Subject: below --
2009-12-03 13:30 John Blackwood
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B169397.5020609@ccur.com \
--to=john.blackwood@ccur.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rusty@rustcorp.com.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.