public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [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