* 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).