linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH] ia64: Depend on non-static printk for cmpxchg debug
       [not found] <YCflN5zTvo5mxvKY@chrisdown.name>
@ 2021-02-26 12:47 ` Chris Down
  2021-02-26 13:00   ` Matthew Wilcox
  0 siblings, 1 reply; 5+ messages in thread
From: Chris Down @ 2021-02-26 12:47 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-mm, Tony Luck, Fenghua Yu, linux-ia64, linux-kernel, kernel-team

+ akpm, linux-mm

Hey folks,

Chris Down writes:
>With !CONFIG_PRINTK, printk() is static in the header, but ia64's
>cmpxchg.h with CONFIG_IA64_DEBUG_CMPXCHG doesn't take this into account
>before trying to use it as extern, resulting in a compiler error:
>
>    ./include/linux/printk.h:219:5: error: static declaration of 'printk' follows non-static declaration
>    219 | int printk(const char *s, ...)
>	|     ^~~~~~
>    ./arch/ia64/include/uapi/asm/cmpxchg.h:142:14: note: previous declaration of 'printk' was here
>    142 |   extern int printk(const char *fmt, ...);  \
>	|              ^~~~~~
>
>Make CONFIG_IA64_DEBUG_CMPXCHG dependent on CONFIG_PRINTK to avoid this.
>
>Signed-off-by: Chris Down <chris@chrisdown.name>
>Reported-by: kernel test robot <lkp@intel.com>
>Cc: Tony Luck <tony.luck@intel.com>
>Cc: Fenghua Yu <fenghua.yu@intel.com>
>Cc: linux-ia64@vger.kernel.org

I now see that last month ia64 was marked as orphaned, so I'm going to send 
this over to Andrew/-mm.

Andrew, any chance you can take this in your tree? It's causing spurious LKP 
noise for some recent work on printk and would be great to have in -next.

Thanks,

Chris

>---
> arch/ia64/Kconfig.debug | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/arch/ia64/Kconfig.debug b/arch/ia64/Kconfig.debug
>index 40ca23bd228d..2ce008e2d164 100644
>--- a/arch/ia64/Kconfig.debug
>+++ b/arch/ia64/Kconfig.debug
>@@ -39,7 +39,7 @@ config DISABLE_VHPT
>
> config IA64_DEBUG_CMPXCHG
> 	bool "Turn on compare-and-exchange bug checking (slow!)"
>-	depends on DEBUG_KERNEL
>+	depends on DEBUG_KERNEL && PRINTK
> 	help
> 	  Selecting this option turns on bug checking for the IA-64
> 	  compare-and-exchange instructions.  This is slow!  Itaniums
>-- 
>2.30.1
>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ia64: Depend on non-static printk for cmpxchg debug
  2021-02-26 12:47 ` [PATCH] ia64: Depend on non-static printk for cmpxchg debug Chris Down
@ 2021-02-26 13:00   ` Matthew Wilcox
  2021-02-26 13:14     ` Chris Down
  0 siblings, 1 reply; 5+ messages in thread
From: Matthew Wilcox @ 2021-02-26 13:00 UTC (permalink / raw)
  To: Chris Down
  Cc: Andrew Morton, linux-mm, Tony Luck, Fenghua Yu, linux-ia64,
	linux-kernel, kernel-team

On Fri, Feb 26, 2021 at 12:47:58PM +0000, Chris Down wrote:
> >    ./include/linux/printk.h:219:5: error: static declaration of 'printk' follows non-static declaration
> >    219 | int printk(const char *s, ...)
> > 	|     ^~~~~~
> >    ./arch/ia64/include/uapi/asm/cmpxchg.h:142:14: note: previous declaration of 'printk' was here
> >    142 |   extern int printk(const char *fmt, ...);  \
> > 	|              ^~~~~~
> > 
> > Make CONFIG_IA64_DEBUG_CMPXCHG dependent on CONFIG_PRINTK to avoid this.

Why not just fix it?

diff --git a/arch/ia64/include/uapi/asm/cmpxchg.h b/arch/ia64/include/uapi/asm/cmpxchg.h
index 5d90307fd6e0..d955a8e3ebde 100644
--- a/arch/ia64/include/uapi/asm/cmpxchg.h
+++ b/arch/ia64/include/uapi/asm/cmpxchg.h
@@ -139,7 +139,7 @@ extern long ia64_cmpxchg_called_with_bad_pointer(void);
 do {									\
 	if (_cmpxchg_bugcheck_count-- <= 0) {				\
 		void *ip;						\
-		extern int printk(const char *fmt, ...);		\
+		int printk(const char *fmt, ...);			\
 		ip = (void *) ia64_getreg(_IA64_REG_IP);		\
 		printk("CMPXCHG_BUGCHECK: stuck at %p on word %p\n", ip, (v));\
 		break;							\


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] ia64: Depend on non-static printk for cmpxchg debug
  2021-02-26 13:00   ` Matthew Wilcox
@ 2021-02-26 13:14     ` Chris Down
  2021-02-26 13:47       ` Chris Down
  0 siblings, 1 reply; 5+ messages in thread
From: Chris Down @ 2021-02-26 13:14 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: Andrew Morton, linux-mm, Tony Luck, Fenghua Yu, linux-ia64,
	linux-kernel, kernel-team

Matthew Wilcox writes:
>Why not just fix it?
>
>diff --git a/arch/ia64/include/uapi/asm/cmpxchg.h b/arch/ia64/include/uapi/asm/cmpxchg.h
>index 5d90307fd6e0..d955a8e3ebde 100644
>--- a/arch/ia64/include/uapi/asm/cmpxchg.h
>+++ b/arch/ia64/include/uapi/asm/cmpxchg.h
>@@ -139,7 +139,7 @@ extern long ia64_cmpxchg_called_with_bad_pointer(void);
> do {									\
> 	if (_cmpxchg_bugcheck_count-- <= 0) {				\
> 		void *ip;						\
>-		extern int printk(const char *fmt, ...);		\
>+		int printk(const char *fmt, ...);			\
> 		ip = (void *) ia64_getreg(_IA64_REG_IP);		\
> 		printk("CMPXCHG_BUGCHECK: stuck at %p on word %p\n", ip, (v));\
> 		break;							\

I must confess I have no idea of the history of why it was `extern int` in the 
first place -- my fear was somehow we use cmpxchg.h from a different context.  
Do you have any idea? :-)


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ia64: Depend on non-static printk for cmpxchg debug
  2021-02-26 13:14     ` Chris Down
@ 2021-02-26 13:47       ` Chris Down
  2021-02-26 13:50         ` Matthew Wilcox
  0 siblings, 1 reply; 5+ messages in thread
From: Chris Down @ 2021-02-26 13:47 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: Andrew Morton, linux-mm, Tony Luck, Fenghua Yu, linux-ia64,
	linux-kernel, kernel-team

Chris Down writes:
>I must confess I have no idea of the history of why it was `extern 
>int` in the first place -- my fear was somehow we use cmpxchg.h from a 
>different context.  Do you have any idea? :-)

Ok, found where it's introduced in the pre-git archives: "New file 
asm-ia64/intrinsics.h." from David Mosberger <davidm@tiger.hpl.hp.com>, Dec 9 
2002. No indication why it's extern, but it's been there since the dawn of 
ia64.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ia64: Depend on non-static printk for cmpxchg debug
  2021-02-26 13:47       ` Chris Down
@ 2021-02-26 13:50         ` Matthew Wilcox
  0 siblings, 0 replies; 5+ messages in thread
From: Matthew Wilcox @ 2021-02-26 13:50 UTC (permalink / raw)
  To: Chris Down
  Cc: Andrew Morton, linux-mm, Tony Luck, Fenghua Yu, linux-ia64,
	linux-kernel, kernel-team

On Fri, Feb 26, 2021 at 01:47:20PM +0000, Chris Down wrote:
> Chris Down writes:
> > I must confess I have no idea of the history of why it was `extern int`
> > in the first place -- my fear was somehow we use cmpxchg.h from a
> > different context.  Do you have any idea? :-)
> 
> Ok, found where it's introduced in the pre-git archives: "New file
> asm-ia64/intrinsics.h." from David Mosberger <davidm@tiger.hpl.hp.com>, Dec
> 9 2002. No indication why it's extern, but it's been there since the dawn of
> ia64.

It's just a quirk of C.  'extern' is only meaningful when applied to
variables.  In the context of functions,

extern int printk(char *fmt);
int printk(char *fmt);

are completely equivalent.  Unless (as you've seen) there's then a
static definition following the extern declaration.


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-02-26 13:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <YCflN5zTvo5mxvKY@chrisdown.name>
2021-02-26 12:47 ` [PATCH] ia64: Depend on non-static printk for cmpxchg debug Chris Down
2021-02-26 13:00   ` Matthew Wilcox
2021-02-26 13:14     ` Chris Down
2021-02-26 13:47       ` Chris Down
2021-02-26 13:50         ` Matthew Wilcox

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).