* [PATCH] kernel: clean up USE_GENERIC_SMP_HELPERS
@ 2010-11-29 6:06 Amerigo Wang
2010-12-22 13:08 ` Peter Zijlstra
0 siblings, 1 reply; 4+ messages in thread
From: Amerigo Wang @ 2010-11-29 6:06 UTC (permalink / raw)
To: linux-kernel
Cc: Amerigo Wang, David Howells, Koichi Yasutake, Thomas Gleixner,
Ingo Molnar, H. Peter Anvin, x86, Yinghai Lu, Tejun Heo,
Andrew Morton, Jens Axboe, Peter Zijlstra, Heiko Carstens,
Venkatesh Pallipadi, linux-am33-list
For arch which needs USE_GENERIC_SMP_HELPERS, it has to
select USE_GENERIC_SMP_HELPERS, rather than leaving a choice
to user, since they don't provide their own implementions.
Also, move on_each_cpu() to kernel/smp.c, it is strange
to put it in kernel/softirq.c.
For arch which doesn't use USE_GENERIC_SMP_HELPERS, e.g.
blackfin, only on_each_cpu() is compiled.
Signed-off-by: Amerigo Wang <amwang@redhat.com>
---
arch/mn10300/Kconfig | 6 +-----
arch/x86/Kconfig | 5 +----
kernel/Makefile | 2 +-
kernel/smp.c | 20 ++++++++++++++++++++
kernel/softirq.c | 19 -------------------
5 files changed, 23 insertions(+), 29 deletions(-)
diff --git a/arch/mn10300/Kconfig b/arch/mn10300/Kconfig
index 41ba385..8ed41cf 100644
--- a/arch/mn10300/Kconfig
+++ b/arch/mn10300/Kconfig
@@ -203,6 +203,7 @@ endmenu
config SMP
bool "Symmetric multi-processing support"
default y
+ select USE_GENERIC_SMP_HELPERS
depends on MN10300_PROC_MN2WS0038 || MN10300_PROC_MN2WS0050
---help---
This enables support for systems with more than one CPU. If you have
@@ -226,11 +227,6 @@ config NR_CPUS
depends on SMP
default "2"
-config USE_GENERIC_SMP_HELPERS
- bool
- depends on SMP
- default y
-
source "kernel/Kconfig.preempt"
config MN10300_CURRENT_IN_E2
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index e330da2..736beea 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -65,6 +65,7 @@ config X86
select HAVE_SPARSE_IRQ
select GENERIC_IRQ_PROBE
select GENERIC_PENDING_IRQ if SMP
+ select USE_GENERIC_SMP_HELPERS if SMP
config INSTRUCTION_DECODER
def_bool (KPROBES || PERF_EVENTS)
@@ -203,10 +204,6 @@ config HAVE_INTEL_TXT
def_bool y
depends on EXPERIMENTAL && DMAR && ACPI
-config USE_GENERIC_SMP_HELPERS
- def_bool y
- depends on SMP
-
config X86_32_SMP
def_bool y
depends on X86_32 && SMP
diff --git a/kernel/Makefile b/kernel/Makefile
index 0b5ff08..55f2f93 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -43,7 +43,7 @@ obj-$(CONFIG_RT_MUTEXES) += rtmutex.o
obj-$(CONFIG_DEBUG_RT_MUTEXES) += rtmutex-debug.o
obj-$(CONFIG_RT_MUTEX_TESTER) += rtmutex-tester.o
obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o
-obj-$(CONFIG_USE_GENERIC_SMP_HELPERS) += smp.o
+obj-$(CONFIG_SMP) += smp.o
ifneq ($(CONFIG_SMP),y)
obj-y += up.o
endif
diff --git a/kernel/smp.c b/kernel/smp.c
index 12ed8b0..708f248 100644
--- a/kernel/smp.c
+++ b/kernel/smp.c
@@ -13,6 +13,7 @@
#include <linux/smp.h>
#include <linux/cpu.h>
+#ifdef CONFIG_USE_GENERIC_SMP_HELPERS
static struct {
struct list_head queue;
raw_spinlock_t lock;
@@ -529,3 +530,22 @@ void ipi_call_unlock_irq(void)
{
raw_spin_unlock_irq(&call_function.lock);
}
+#endif /* USE_GENERIC_SMP_HELPERS */
+
+/*
+ * Call a function on all processors
+ */
+int on_each_cpu(void (*func) (void *info), void *info, int wait)
+{
+ int ret = 0;
+
+ preempt_disable();
+ ret = smp_call_function(func, info, wait);
+ local_irq_disable();
+ func(info);
+ local_irq_enable();
+ preempt_enable();
+ return ret;
+}
+EXPORT_SYMBOL(on_each_cpu);
+
diff --git a/kernel/softirq.c b/kernel/softirq.c
index 18f4be0..0ca9f48 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -883,25 +883,6 @@ static __init int spawn_ksoftirqd(void)
}
early_initcall(spawn_ksoftirqd);
-#ifdef CONFIG_SMP
-/*
- * Call a function on all processors
- */
-int on_each_cpu(void (*func) (void *info), void *info, int wait)
-{
- int ret = 0;
-
- preempt_disable();
- ret = smp_call_function(func, info, wait);
- local_irq_disable();
- func(info);
- local_irq_enable();
- preempt_enable();
- return ret;
-}
-EXPORT_SYMBOL(on_each_cpu);
-#endif
-
/*
* [ These __weak aliases are kept in a separate compilation unit, so that
* GCC does not inline them incorrectly. ]
--
1.7.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] kernel: clean up USE_GENERIC_SMP_HELPERS
2010-11-29 6:06 [PATCH] kernel: clean up USE_GENERIC_SMP_HELPERS Amerigo Wang
@ 2010-12-22 13:08 ` Peter Zijlstra
2010-12-23 10:02 ` Cong Wang
0 siblings, 1 reply; 4+ messages in thread
From: Peter Zijlstra @ 2010-12-22 13:08 UTC (permalink / raw)
To: Amerigo Wang
Cc: linux-kernel, David Howells, Koichi Yasutake, Thomas Gleixner,
Ingo Molnar, H. Peter Anvin, x86, Yinghai Lu, Tejun Heo,
Andrew Morton, Jens Axboe, Heiko Carstens, Venkatesh Pallipadi,
linux-am33-list
On Mon, 2010-11-29 at 14:06 +0800, Amerigo Wang wrote:
> For arch which needs USE_GENERIC_SMP_HELPERS, it has to
> select USE_GENERIC_SMP_HELPERS, rather than leaving a choice
> to user, since they don't provide their own implementions.
>
> config MN10300_CURRENT_IN_E2
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index e330da2..736beea 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -65,6 +65,7 @@ config X86
> select HAVE_SPARSE_IRQ
> select GENERIC_IRQ_PROBE
> select GENERIC_PENDING_IRQ if SMP
> + select USE_GENERIC_SMP_HELPERS if SMP
>
> config INSTRUCTION_DECODER
> def_bool (KPROBES || PERF_EVENTS)
> @@ -203,10 +204,6 @@ config HAVE_INTEL_TXT
> def_bool y
> depends on EXPERIMENTAL && DMAR && ACPI
>
> -config USE_GENERIC_SMP_HELPERS
> - def_bool y
> - depends on SMP
> -
> config X86_32_SMP
> def_bool y
> depends on X86_32 && SMP
That changelog and the patch don't match, the patch is a total NOP,
users never see that config option.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] kernel: clean up USE_GENERIC_SMP_HELPERS
2010-12-22 13:08 ` Peter Zijlstra
@ 2010-12-23 10:02 ` Cong Wang
2010-12-23 10:21 ` Peter Zijlstra
0 siblings, 1 reply; 4+ messages in thread
From: Cong Wang @ 2010-12-23 10:02 UTC (permalink / raw)
To: Peter Zijlstra
Cc: linux-kernel, David Howells, Koichi Yasutake, Thomas Gleixner,
Ingo Molnar, H. Peter Anvin, x86, Yinghai Lu, Tejun Heo,
Andrew Morton, Jens Axboe, Heiko Carstens, Venkatesh Pallipadi,
linux-am33-list
于 2010年12月22日 21:08, Peter Zijlstra 写道:
> On Mon, 2010-11-29 at 14:06 +0800, Amerigo Wang wrote:
>> For arch which needs USE_GENERIC_SMP_HELPERS, it has to
>> select USE_GENERIC_SMP_HELPERS, rather than leaving a choice
>> to user, since they don't provide their own implementions.
>>
>
>> config MN10300_CURRENT_IN_E2
>> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
>> index e330da2..736beea 100644
>> --- a/arch/x86/Kconfig
>> +++ b/arch/x86/Kconfig
>> @@ -65,6 +65,7 @@ config X86
>> select HAVE_SPARSE_IRQ
>> select GENERIC_IRQ_PROBE
>> select GENERIC_PENDING_IRQ if SMP
>> + select USE_GENERIC_SMP_HELPERS if SMP
>>
>> config INSTRUCTION_DECODER
>> def_bool (KPROBES || PERF_EVENTS)
>> @@ -203,10 +204,6 @@ config HAVE_INTEL_TXT
>> def_bool y
>> depends on EXPERIMENTAL&& DMAR&& ACPI
>>
>> -config USE_GENERIC_SMP_HELPERS
>> - def_bool y
>> - depends on SMP
>> -
>> config X86_32_SMP
>> def_bool y
>> depends on X86_32&& SMP
>
> That changelog and the patch don't match, the patch is a total NOP,
> users never see that config option.
Ok, but isn't 'select' is supposed to be better to express this here? :)
This patch also moves on_each_cpu() to kernel/smp.c, btw.
Thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] kernel: clean up USE_GENERIC_SMP_HELPERS
2010-12-23 10:02 ` Cong Wang
@ 2010-12-23 10:21 ` Peter Zijlstra
0 siblings, 0 replies; 4+ messages in thread
From: Peter Zijlstra @ 2010-12-23 10:21 UTC (permalink / raw)
To: Cong Wang
Cc: linux-kernel, David Howells, Koichi Yasutake, Thomas Gleixner,
Ingo Molnar, H. Peter Anvin, x86, Yinghai Lu, Tejun Heo,
Andrew Morton, Jens Axboe, Heiko Carstens, Venkatesh Pallipadi,
linux-am33-list
On Thu, 2010-12-23 at 18:02 +0800, Cong Wang wrote:
> 于 2010年12月22日 21:08, Peter Zijlstra 写道:
> > On Mon, 2010-11-29 at 14:06 +0800, Amerigo Wang wrote:
> >> For arch which needs USE_GENERIC_SMP_HELPERS, it has to
> >> select USE_GENERIC_SMP_HELPERS, rather than leaving a choice
> >> to user, since they don't provide their own implementions.
> >>
> >
> >> config MN10300_CURRENT_IN_E2
> >> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> >> index e330da2..736beea 100644
> >> --- a/arch/x86/Kconfig
> >> +++ b/arch/x86/Kconfig
> >> @@ -65,6 +65,7 @@ config X86
> >> select HAVE_SPARSE_IRQ
> >> select GENERIC_IRQ_PROBE
> >> select GENERIC_PENDING_IRQ if SMP
> >> + select USE_GENERIC_SMP_HELPERS if SMP
> >>
> >> config INSTRUCTION_DECODER
> >> def_bool (KPROBES || PERF_EVENTS)
> >> @@ -203,10 +204,6 @@ config HAVE_INTEL_TXT
> >> def_bool y
> >> depends on EXPERIMENTAL&& DMAR&& ACPI
> >>
> >> -config USE_GENERIC_SMP_HELPERS
> >> - def_bool y
> >> - depends on SMP
> >> -
> >> config X86_32_SMP
> >> def_bool y
> >> depends on X86_32&& SMP
> >
> > That changelog and the patch don't match, the patch is a total NOP,
> > users never see that config option.
>
> Ok, but isn't 'select' is supposed to be better to express this here? :)
It sure is shorter, so on that ground one can argue so indeed. Its just
that the discrepancy between the Changelog (describing an actual change
in semantics) and the patch (being a NOP) bothered me.
> This patch also moves on_each_cpu() to kernel/smp.c, btw.
Right, it does that, it would probably have been better if that were a
patch on its own, seeing as its a completely orthogonal change.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-12-23 10:21 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-29 6:06 [PATCH] kernel: clean up USE_GENERIC_SMP_HELPERS Amerigo Wang
2010-12-22 13:08 ` Peter Zijlstra
2010-12-23 10:02 ` Cong Wang
2010-12-23 10:21 ` Peter Zijlstra
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox