* [RFC PATCH -next] Fix printk_once build errors due to __read_mostly @ 2013-10-30 10:18 James Hogan 2013-10-30 13:46 ` Joe Perches ` (2 more replies) 0 siblings, 3 replies; 13+ messages in thread From: James Hogan @ 2013-10-30 10:18 UTC (permalink / raw) To: Joe Perches, Andrew Morton Cc: linux-kernel, linux-next, James Hogan, linux-metag Commit 3e39c1ab04ba (printk: mark printk_once test variable __read_mostly) added __read_mostly to the __print_once bool in the printk_once() macro, but __read_mostly is defined in <linux/cache.h> which isn't included from <linux/printk.h>. This results in build errors like this: arch/metag/mm/l2cache.c: In function 'meta_l2c_setup': arch/metag/mm/l2cache.c:56: error: '__read_mostly' undeclared This is fixed by adding an include of <linux/cache.h> from <linux/printk.h> since I don't think printk_once() users should need to include <linux/cache.h> for it to work. Note that this actually adds a recursive include, since <linux/cache.h> includes <linux/kernel.h>, which includes <linux/printk.h>. The actual dependencies are all in macros so it doesn't actually seem to result in any build failures, but it's clearly less than ideal. Signed-off-by: James Hogan <james.hogan@imgtec.com> Cc: Joe Perches <joe@perches.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: linux-metag@vger.kernel.org --- This build failure was caught in today's linux-next. I'm not too keen on this due to the recursive include. Is it better to just workaround the problem by including <linux/cache.h> from the .c file that fails to build, or should the original patch be removed instead? include/linux/printk.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/linux/printk.h b/include/linux/printk.h index abd42dd..b13d00e 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -2,6 +2,7 @@ #define __KERNEL_PRINTK__ #include <stdarg.h> +#include <linux/cache.h> #include <linux/init.h> #include <linux/kern_levels.h> #include <linux/linkage.h> -- 1.8.1.2 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [RFC PATCH -next] Fix printk_once build errors due to __read_mostly 2013-10-30 10:18 [RFC PATCH -next] Fix printk_once build errors due to __read_mostly James Hogan @ 2013-10-30 13:46 ` Joe Perches 2013-10-30 17:02 ` Joe Perches 2013-10-30 20:48 ` Andrew Morton 2 siblings, 0 replies; 13+ messages in thread From: Joe Perches @ 2013-10-30 13:46 UTC (permalink / raw) To: James Hogan; +Cc: Andrew Morton, linux-kernel, linux-next, linux-metag On Wed, 2013-10-30 at 10:18 +0000, James Hogan wrote: > Commit 3e39c1ab04ba (printk: mark printk_once test variable > __read_mostly) added __read_mostly to the __print_once bool in the > printk_once() macro, but __read_mostly is defined in <linux/cache.h> > which isn't included from <linux/printk.h>. This results in build errors > like this: > > arch/metag/mm/l2cache.c: In function 'meta_l2c_setup': > arch/metag/mm/l2cache.c:56: error: '__read_mostly' undeclared > > This is fixed by adding an include of <linux/cache.h> from > <linux/printk.h> since I don't think printk_once() users should need to > include <linux/cache.h> for it to work. > > Note that this actually adds a recursive include, since <linux/cache.h> > includes <linux/kernel.h>, which includes <linux/printk.h>. The actual > dependencies are all in macros so it doesn't actually seem to result in > any build failures, but it's clearly less than ideal. Thanks James. Oh well. Pity about the recursive #include. It seems most every actual use of __read_mostly gets that cache.h include indirectly. Perhaps it's better just to remove the __read_mostly patch as the __read_mostly value is pretty low. Andrew, could you please remove my __read_mostly patch? I preferred that printk.h not be a file that could be independently used via #include. https://lkml.org/lkml/2011/5/25/331 https://lkml.org/lkml/2011/5/25/333 and that only kernel.h should be used. Maybe that's still a better approach. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC PATCH -next] Fix printk_once build errors due to __read_mostly 2013-10-30 10:18 [RFC PATCH -next] Fix printk_once build errors due to __read_mostly James Hogan 2013-10-30 13:46 ` Joe Perches @ 2013-10-30 17:02 ` Joe Perches 2013-10-30 20:48 ` Andrew Morton 2 siblings, 0 replies; 13+ messages in thread From: Joe Perches @ 2013-10-30 17:02 UTC (permalink / raw) To: James Hogan; +Cc: Andrew Morton, linux-kernel, linux-next, linux-metag On Wed, 2013-10-30 at 10:18 +0000, James Hogan wrote: > Commit 3e39c1ab04ba (printk: mark printk_once test variable > __read_mostly) added __read_mostly to the __print_once bool in the > printk_once() macro, but __read_mostly is defined in <linux/cache.h> > which isn't included from <linux/printk.h>. This results in build errors > like this: > > arch/metag/mm/l2cache.c: In function 'meta_l2c_setup': > arch/metag/mm/l2cache.c:56: error: '__read_mostly' undeclared > > This is fixed by adding an include of <linux/cache.h> from > <linux/printk.h> since I don't think printk_once() users should need to > include <linux/cache.h> for it to work. > > Note that this actually adds a recursive include, since <linux/cache.h> > includes <linux/kernel.h>, which includes <linux/printk.h>. The actual > dependencies are all in macros so it doesn't actually seem to result in > any build failures, but it's clearly less than ideal. [] > I'm not too keen on this due to the recursive include. Is it better to > just workaround the problem by including <linux/cache.h> from the .c > file that fails to build, or should the original patch be removed > instead? Maybe also using this would help avoid some of the circular dependency: --- include/linux/cache.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/linux/cache.h b/include/linux/cache.h index 4c57065..17e7e82 100644 --- a/include/linux/cache.h +++ b/include/linux/cache.h @@ -1,11 +1,11 @@ #ifndef __LINUX_CACHE_H #define __LINUX_CACHE_H -#include <linux/kernel.h> +#include <uapi/linux/kernel.h> #include <asm/cache.h> #ifndef L1_CACHE_ALIGN -#define L1_CACHE_ALIGN(x) ALIGN(x, L1_CACHE_BYTES) +#define L1_CACHE_ALIGN(x) __ALIGN_KERNEL(x, L1_CACHE_BYTES) #endif #ifndef SMP_CACHE_BYTES ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [RFC PATCH -next] Fix printk_once build errors due to __read_mostly 2013-10-30 10:18 [RFC PATCH -next] Fix printk_once build errors due to __read_mostly James Hogan 2013-10-30 13:46 ` Joe Perches 2013-10-30 17:02 ` Joe Perches @ 2013-10-30 20:48 ` Andrew Morton 2013-10-30 22:58 ` Joe Perches ` (3 more replies) 2 siblings, 4 replies; 13+ messages in thread From: Andrew Morton @ 2013-10-30 20:48 UTC (permalink / raw) To: James Hogan; +Cc: Joe Perches, linux-kernel, linux-next, linux-metag On Wed, 30 Oct 2013 10:18:21 +0000 James Hogan <james.hogan@imgtec.com> wrote: > Commit 3e39c1ab04ba (printk: mark printk_once test variable > __read_mostly) added __read_mostly to the __print_once bool in the > printk_once() macro, but __read_mostly is defined in <linux/cache.h> > which isn't included from <linux/printk.h>. This results in build errors > like this: > > arch/metag/mm/l2cache.c: In function 'meta_l2c_setup': > arch/metag/mm/l2cache.c:56: error: '__read_mostly' undeclared > > This is fixed by adding an include of <linux/cache.h> from > <linux/printk.h> since I don't think printk_once() users should need to > include <linux/cache.h> for it to work. > > Note that this actually adds a recursive include, since <linux/cache.h> > includes <linux/kernel.h>, which includes <linux/printk.h>. The actual > dependencies are all in macros so it doesn't actually seem to result in > any build failures, but it's clearly less than ideal. Yitch. > Signed-off-by: James Hogan <james.hogan@imgtec.com> > Cc: Joe Perches <joe@perches.com> > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: linux-metag@vger.kernel.org > --- > This build failure was caught in today's linux-next. > > I'm not too keen on this due to the recursive include. Is it better to > just workaround the problem by including <linux/cache.h> from the .c > file that fails to build, or should the original patch be removed > instead? Well, these patches make the kernel worse. We should make it better, not worse. One approach would be to add a new printk_once.h, which includes printk.h and cache.h. I can't immediately think of a nice solution so I guess for now I'll drop printk-mark-printk_once-test-variable-__read_mostly.patch. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC PATCH -next] Fix printk_once build errors due to __read_mostly 2013-10-30 20:48 ` Andrew Morton @ 2013-10-30 22:58 ` Joe Perches 2013-10-30 23:01 ` [PATCH V2] printk/cache: Mark printk_once test variable __read_mostly Joe Perches ` (2 subsequent siblings) 3 siblings, 0 replies; 13+ messages in thread From: Joe Perches @ 2013-10-30 22:58 UTC (permalink / raw) To: Andrew Morton; +Cc: James Hogan, linux-kernel, linux-next, linux-metag On Wed, 2013-10-30 at 13:48 -0700, Andrew Morton wrote: > On Wed, 30 Oct 2013 10:18:21 +0000 James Hogan <james.hogan@imgtec.com> wrote: [] > > Note that this actually adds a recursive include, since <linux/cache.h> > > includes <linux/kernel.h>, which includes <linux/printk.h>. The actual > > dependencies are all in macros so it doesn't actually seem to result in > > any build failures, but it's clearly less than ideal. > > Yitch. Yeah. There are about ~700 files in the tree that use __read_mostly. Only about ~25 of those actually #include <linux/cache.h> I did a script that adds the #include, but 700 files is a _lot_. For today's next: $ git grep -w --name-only __read_mostly | \ xargs grep -P -l "^\s*#\s*include\s+<linux/cache.h>" | wc -l 28 $ git grep -w --name-only __read_mostly | \ xargs grep -P -L "^\s*#\s*include\s+<linux/cache.h>" | wc -l 716 Untangling that crud is nasty. ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH V2] printk/cache: Mark printk_once test variable __read_mostly 2013-10-30 20:48 ` Andrew Morton 2013-10-30 22:58 ` Joe Perches @ 2013-10-30 23:01 ` Joe Perches 2013-10-31 13:35 ` James Hogan 2013-10-30 23:18 ` [RFC PATCH -next] Fix printk_once build errors due to __read_mostly Stephen Rothwell 2013-10-31 18:29 ` [PATCH V3] printk/cache: Mark printk_once test variable __read_mostly Joe Perches 3 siblings, 1 reply; 13+ messages in thread From: Joe Perches @ 2013-10-30 23:01 UTC (permalink / raw) To: Andrew Morton; +Cc: James Hogan, linux-kernel, linux-next, linux-metag Add #include <linux/cache.h> to define __read_mostly. Convert cache.h to use uapi/linux/kernel.h instead of linux/kernel.h to avoid recursive #includes. Convert the ALIGN macro to __KERNEL_ALIGN. printk_once only sets the bool variable tested once so mark it __read_mostly. Neaten the alignment so it matches the rest of the pr_<level>_once #defines too. Signed-off-by: Joe Perches <joe@perches.com> --- V2: Add cache.h which was nearly always used indirectly via #include <some_other_file.h>, generally module.h Update cache.h to avoid recursive #include include/linux/cache.h | 4 ++-- include/linux/printk.h | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/include/linux/cache.h b/include/linux/cache.h index 4c57065..63a1d97 100644 --- a/include/linux/cache.h +++ b/include/linux/cache.h @@ -1,11 +1,11 @@ #ifndef __LINUX_CACHE_H #define __LINUX_CACHE_H -#include <linux/kernel.h> +#include <uapi/linux/kernel.h> #include <asm/cache.h> #ifndef L1_CACHE_ALIGN -#define L1_CACHE_ALIGN(x) ALIGN(x, L1_CACHE_BYTES) +#define L1_CACHE_ALIGN(x) __KERNEL_ALIGN(x, L1_CACHE_BYTES) #endif #ifndef SMP_CACHE_BYTES diff --git a/include/linux/printk.h b/include/linux/printk.h index e6131a78..2449da9 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -5,6 +5,7 @@ #include <linux/init.h> #include <linux/kern_levels.h> #include <linux/linkage.h> +#include <linux/cache.h> extern const char linux_banner[]; extern const char linux_proc_banner[]; @@ -251,17 +252,17 @@ extern asmlinkage void dump_stack(void) __cold; */ #ifdef CONFIG_PRINTK -#define printk_once(fmt, ...) \ -({ \ - static bool __print_once; \ - \ - if (!__print_once) { \ - __print_once = true; \ - printk(fmt, ##__VA_ARGS__); \ - } \ +#define printk_once(fmt, ...) \ +({ \ + static bool __print_once __read_mostly; \ + \ + if (!__print_once) { \ + __print_once = true; \ + printk(fmt, ##__VA_ARGS__); \ + } \ }) #else -#define printk_once(fmt, ...) \ +#define printk_once(fmt, ...) \ no_printk(fmt, ##__VA_ARGS__) #endif ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH V2] printk/cache: Mark printk_once test variable __read_mostly 2013-10-30 23:01 ` [PATCH V2] printk/cache: Mark printk_once test variable __read_mostly Joe Perches @ 2013-10-31 13:35 ` James Hogan 0 siblings, 0 replies; 13+ messages in thread From: James Hogan @ 2013-10-31 13:35 UTC (permalink / raw) To: Joe Perches; +Cc: Andrew Morton, linux-kernel, linux-next, linux-metag On 30/10/13 23:01, Joe Perches wrote: > Add #include <linux/cache.h> to define __read_mostly. > > Convert cache.h to use uapi/linux/kernel.h instead > of linux/kernel.h to avoid recursive #includes. > > Convert the ALIGN macro to __KERNEL_ALIGN. > > printk_once only sets the bool variable tested > once so mark it __read_mostly. > > Neaten the alignment so it matches the rest of the > pr_<level>_once #defines too. > > Signed-off-by: Joe Perches <joe@perches.com> > --- > V2: Add cache.h which was nearly always used > indirectly via #include <some_other_file.h>, > generally module.h > Update cache.h to avoid recursive #include > > include/linux/cache.h | 4 ++-- > include/linux/printk.h | 19 ++++++++++--------- > 2 files changed, 12 insertions(+), 11 deletions(-) > > diff --git a/include/linux/cache.h b/include/linux/cache.h > index 4c57065..63a1d97 100644 > --- a/include/linux/cache.h > +++ b/include/linux/cache.h > @@ -1,11 +1,11 @@ > #ifndef __LINUX_CACHE_H > #define __LINUX_CACHE_H > > -#include <linux/kernel.h> > +#include <uapi/linux/kernel.h> > #include <asm/cache.h> > > #ifndef L1_CACHE_ALIGN > -#define L1_CACHE_ALIGN(x) ALIGN(x, L1_CACHE_BYTES) > +#define L1_CACHE_ALIGN(x) __KERNEL_ALIGN(x, L1_CACHE_BYTES) I think that should be __ALIGN_KERNEL (same applies to commit message). Otherwise this patch looks good to me and builds all Meta defconfigs fine. Reviewed-by: James Hogan <james.hogan@imgtec.com> Thanks James ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC PATCH -next] Fix printk_once build errors due to __read_mostly 2013-10-30 20:48 ` Andrew Morton 2013-10-30 22:58 ` Joe Perches 2013-10-30 23:01 ` [PATCH V2] printk/cache: Mark printk_once test variable __read_mostly Joe Perches @ 2013-10-30 23:18 ` Stephen Rothwell 2013-10-31 18:29 ` [PATCH V3] printk/cache: Mark printk_once test variable __read_mostly Joe Perches 3 siblings, 0 replies; 13+ messages in thread From: Stephen Rothwell @ 2013-10-30 23:18 UTC (permalink / raw) To: Andrew Morton Cc: James Hogan, Joe Perches, linux-kernel, linux-next, linux-metag [-- Attachment #1: Type: text/plain, Size: 370 bytes --] Hi Andrew, On Wed, 30 Oct 2013 13:48:39 -0700 Andrew Morton <akpm@linux-foundation.org> wrote: > > I can't immediately think of a nice solution so I guess for now I'll > drop printk-mark-printk_once-test-variable-__read_mostly.patch. I have removed that from my copy of the mmotm tree. -- Cheers, Stephen Rothwell sfr@canb.auug.org.au [-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH V3] printk/cache: Mark printk_once test variable __read_mostly 2013-10-30 20:48 ` Andrew Morton ` (2 preceding siblings ...) 2013-10-30 23:18 ` [RFC PATCH -next] Fix printk_once build errors due to __read_mostly Stephen Rothwell @ 2013-10-31 18:29 ` Joe Perches 2013-11-13 0:23 ` Tony Luck 3 siblings, 1 reply; 13+ messages in thread From: Joe Perches @ 2013-10-31 18:29 UTC (permalink / raw) To: Andrew Morton; +Cc: James Hogan, linux-kernel, linux-next, linux-metag Add #include <linux/cache.h> to define __read_mostly. Convert cache.h to use uapi/linux/kernel.h instead of linux/kernel.h to avoid recursive #includes. Convert the ALIGN macro to __ALIGN_KERNEL. printk_once only sets the bool variable tested once so mark it __read_mostly. Neaten the alignment so it matches the rest of the pr_<level>_once #defines too. Signed-off-by: Joe Perches <joe@perches.com> Reviewed-by: James Hogan <james.hogan@imgtec.com> --- V3: Fix cache.h conversion and actually compiled/built defconfig x86. V2: Add cache.h which was nearly always used indirectly via #include <some_other_file.h>, generally module.h Update cache.h to avoid recursive #include include/linux/cache.h | 4 ++-- include/linux/printk.h | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/include/linux/cache.h b/include/linux/cache.h index 4c57065..17e7e82 100644 --- a/include/linux/cache.h +++ b/include/linux/cache.h @@ -1,11 +1,11 @@ #ifndef __LINUX_CACHE_H #define __LINUX_CACHE_H -#include <linux/kernel.h> +#include <uapi/linux/kernel.h> #include <asm/cache.h> #ifndef L1_CACHE_ALIGN -#define L1_CACHE_ALIGN(x) ALIGN(x, L1_CACHE_BYTES) +#define L1_CACHE_ALIGN(x) __ALIGN_KERNEL(x, L1_CACHE_BYTES) #endif #ifndef SMP_CACHE_BYTES diff --git a/include/linux/printk.h b/include/linux/printk.h index e6131a78..2449da9 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -5,6 +5,7 @@ #include <linux/init.h> #include <linux/kern_levels.h> #include <linux/linkage.h> +#include <linux/cache.h> extern const char linux_banner[]; extern const char linux_proc_banner[]; @@ -251,17 +252,17 @@ extern asmlinkage void dump_stack(void) __cold; */ #ifdef CONFIG_PRINTK -#define printk_once(fmt, ...) \ -({ \ - static bool __print_once; \ - \ - if (!__print_once) { \ - __print_once = true; \ - printk(fmt, ##__VA_ARGS__); \ - } \ +#define printk_once(fmt, ...) \ +({ \ + static bool __print_once __read_mostly; \ + \ + if (!__print_once) { \ + __print_once = true; \ + printk(fmt, ##__VA_ARGS__); \ + } \ }) #else -#define printk_once(fmt, ...) \ +#define printk_once(fmt, ...) \ no_printk(fmt, ##__VA_ARGS__) #endif ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH V3] printk/cache: Mark printk_once test variable __read_mostly 2013-10-31 18:29 ` [PATCH V3] printk/cache: Mark printk_once test variable __read_mostly Joe Perches @ 2013-11-13 0:23 ` Tony Luck 2013-11-13 0:29 ` Joe Perches 0 siblings, 1 reply; 13+ messages in thread From: Tony Luck @ 2013-11-13 0:23 UTC (permalink / raw) To: Joe Perches Cc: Andrew Morton, James Hogan, Linux Kernel Mailing List, linux-next, linux-metag Trying this again with HTML disabled in gmail so mailing lists will see it ... On Thu, Oct 31, 2013 at 11:29 AM, Joe Perches <joe@perches.com> wrote: > diff --git a/include/linux/cache.h b/include/linux/cache.h > index 4c57065..17e7e82 100644 > --- a/include/linux/cache.h > +++ b/include/linux/cache.h > @@ -1,11 +1,11 @@ > #ifndef __LINUX_CACHE_H > #define __LINUX_CACHE_H > > -#include <linux/kernel.h> > +#include <uapi/linux/kernel.h> > #include <asm/cache.h> This bit seems to be responsible for breaking the ia64 build in today's linux-next (tag: next-20131112) Compiler barfs at: CC arch/ia64/kernel/patch.o In file included from arch/ia64/kernel/patch.c:12: /home/aegl/zx1-smp/arch/ia64/include/asm/processor.h: In function ‘ia64_get_irr’: /home/aegl/zx1-smp/arch/ia64/include/asm/processor.h:565: error: implicit declaration of function ‘test_bit’ In file included from include/linux/bitops.h:33, from include/linux/kernel.h:10, from include/asm-generic/bug.h:13, from /home/aegl/zx1-smp/arch/ia64/include/asm/bug.h:12, from include/linux/bug.h:4, from include/linux/thread_info.h:11, from include/asm-generic/preempt.h:4, from arch/ia64/include/generated/asm/preempt.h:1, from include/linux/preempt.h:18, from include/linux/uaccess.h:4, from /home/aegl/zx1-smp/arch/ia64/include/asm/sections.h:10, from arch/ia64/kernel/patch.c:13: /home/aegl/zx1-smp/arch/ia64/include/asm/bitops.h: At top level: /home/aegl/zx1-smp/arch/ia64/include/asm/bitops.h:339: error: static declaration of ‘test_bit’ follows non-static declaration /home/aegl/zx1-smp/arch/ia64/include/asm/processor.h:565: error: previous implicit declaration of ‘test_bit’ was here make[1]: *** [arch/ia64/kernel/patch.o] Error 1 make: *** [arch/ia64/kernel/patch.o] Error 2 Other files choke in the similar way because they no longer implicitly get <linux/kernel.h> (and all the other files that pulls in). Just backing out that one line of diff fixes it for me. But presumably is a problem someplace else given the "avoid recursive #includes" bit of the commit message. -Tony ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH V3] printk/cache: Mark printk_once test variable __read_mostly 2013-11-13 0:23 ` Tony Luck @ 2013-11-13 0:29 ` Joe Perches 2013-11-13 19:31 ` Tony Luck 0 siblings, 1 reply; 13+ messages in thread From: Joe Perches @ 2013-11-13 0:29 UTC (permalink / raw) To: Tony Luck Cc: Andrew Morton, James Hogan, Linux Kernel Mailing List, linux-next, linux-metag On Tue, 2013-11-12 at 16:23 -0800, Tony Luck wrote: > Trying this again with HTML disabled in gmail so mailing lists will see it ... try this: https://lkml.org/lkml/2013/10/30/604 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH V3] printk/cache: Mark printk_once test variable __read_mostly 2013-11-13 0:29 ` Joe Perches @ 2013-11-13 19:31 ` Tony Luck [not found] ` <CA+8MBbJKN174=ybMNE7Z+oT7KjNBzgdy9cvhb_kACvXAbTo9XA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 0 siblings, 1 reply; 13+ messages in thread From: Tony Luck @ 2013-11-13 19:31 UTC (permalink / raw) To: Joe Perches Cc: Andrew Morton, James Hogan, Linux Kernel Mailing List, linux-next, linux-metag On Tue, Nov 12, 2013 at 4:29 PM, Joe Perches <joe@perches.com> wrote: > try this: > > https://lkml.org/lkml/2013/10/30/604 > > How is that any different from what is in linux-next? It still has the same change to cache.h that reduces the nested #includes that currently make the build work. -#include <linux/kernel.h> +#include <uapi/linux/kernel.h> -Tony ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <CA+8MBbJKN174=ybMNE7Z+oT7KjNBzgdy9cvhb_kACvXAbTo9XA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: [PATCH V3] printk/cache: Mark printk_once test variable __read_mostly [not found] ` <CA+8MBbJKN174=ybMNE7Z+oT7KjNBzgdy9cvhb_kACvXAbTo9XA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> @ 2013-11-14 1:16 ` Joe Perches 0 siblings, 0 replies; 13+ messages in thread From: Joe Perches @ 2013-11-14 1:16 UTC (permalink / raw) To: Tony Luck Cc: Andrew Morton, James Hogan, Linux Kernel Mailing List, linux-next-u79uwXL29TY76Z2rM5mHXA, linux-metag-u79uwXL29TY76Z2rM5mHXA On Wed, 2013-11-13 at 11:31 -0800, Tony Luck wrote: > On Tue, Nov 12, 2013 at 4:29 PM, Joe Perches <joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org> wrote: > > try this: > > > > https://lkml.org/lkml/2013/10/30/604 > > > > > > How is that any different from what is in linux-next? It still > has the same change to cache.h that reduces the nested > #includes that currently make the build work. > > -#include <linux/kernel.h> > +#include <uapi/linux/kernel.h> > > -Tony I believe you were cc'd on this email as a reply to a kbuild test robot report: I don't have an ia64 cross compiler here but my presumption is this fixes the problem. I believe Andrew has picked it up for his mm series which is haphazardly merged into -next. ----------- On Thu, 2013-11-07 at 10:54 +0800, kbuild test robot wrote: > tree: git://git.cmpxchg.org/linux-mmotm.git master > head: 7610384ab26340452f06d673c46624927c3901b6 > commit: 7231446cc53d71e126acf3d0230239a6b3ad52bf [169/450] printk/cache: Mark printk_once test variable __read_mostly > config: make ARCH=ia64 alldefconfig > > All error/warnings: Hello Fengguang. > In file included from arch/ia64/kernel/patch.c:12:0: > arch/ia64/include/asm/processor.h: In function 'ia64_get_irr': > >> arch/ia64/include/asm/processor.h:565:2: error: implicit declaration of function 'test_bit' [-Werror=implicit-function-declaration] I'm a bit confused how the change I made could cause this error. Is this an existing warning that's now an error because bitops.h isn't explicitly #included in processor.h? (possible fix below) > In file included from include/linux/bitops.h:22:0, > from include/linux/kernel.h:10, > from include/asm-generic/bug.h:13, > from arch/ia64/include/asm/bug.h:12, > from include/linux/bug.h:4, > from include/linux/thread_info.h:11, > from include/linux/preempt.h:9, > from include/linux/uaccess.h:4, > from arch/ia64/include/asm/sections.h:10, > from arch/ia64/kernel/patch.c:13: > arch/ia64/include/asm/bitops.h: At top level: > >> arch/ia64/include/asm/bitops.h:339:1: error: static declaration of 'test_bit' follows non-static declaration > arch/ia64/include/asm/processor.h:565:9: note: previous implicit declaration of 'test_bit' was here > cc1: some warnings being treated as errors > > vim +/test_bit +565 arch/ia64/include/asm/processor.h > > 549 #define cpu_relax() ia64_hint(ia64_hint_pause) > 550 > 551 static inline int > 552 ia64_get_irr(unsigned int vector) > 553 { > 554 unsigned int reg = vector / 64; > 555 unsigned int bit = vector % 64; > 556 u64 irr; > 557 > 558 switch (reg) { > 559 case 0: irr = ia64_getreg(_IA64_REG_CR_IRR0); break; > 560 case 1: irr = ia64_getreg(_IA64_REG_CR_IRR1); break; > 561 case 2: irr = ia64_getreg(_IA64_REG_CR_IRR2); break; > 562 case 3: irr = ia64_getreg(_IA64_REG_CR_IRR3); break; > 563 } > 564 > > 565 return test_bit(bit, &irr); > 566 } > 567 > 568 static inline void > 569 ia64_set_lrr0 (unsigned long val) > 570 { > 571 ia64_setreg(_IA64_REG_CR_LRR0, val); > 572 ia64_srlz_d(); > 573 } > > --- > 0-DAY kernel build testing backend Open Source Technology Center > http://lists.01.org/mailman/listinfo/kbuild Intel Corporation Maybe this fixes it? --- arch/ia64/include/asm/processor.h | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/ia64/include/asm/processor.h b/arch/ia64/include/asm/processor.h index 5a84b3a..efd1b92 100644 --- a/arch/ia64/include/asm/processor.h +++ b/arch/ia64/include/asm/processor.h @@ -71,6 +71,7 @@ #include <linux/compiler.h> #include <linux/threads.h> #include <linux/types.h> +#include <linux/bitops.h> #include <asm/fpu.h> #include <asm/page.h> -- To unsubscribe from this list: send the line "unsubscribe linux-metag" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 13+ messages in thread
end of thread, other threads:[~2013-11-14 1:16 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2013-10-30 10:18 [RFC PATCH -next] Fix printk_once build errors due to __read_mostly James Hogan 2013-10-30 13:46 ` Joe Perches 2013-10-30 17:02 ` Joe Perches 2013-10-30 20:48 ` Andrew Morton 2013-10-30 22:58 ` Joe Perches 2013-10-30 23:01 ` [PATCH V2] printk/cache: Mark printk_once test variable __read_mostly Joe Perches 2013-10-31 13:35 ` James Hogan 2013-10-30 23:18 ` [RFC PATCH -next] Fix printk_once build errors due to __read_mostly Stephen Rothwell 2013-10-31 18:29 ` [PATCH V3] printk/cache: Mark printk_once test variable __read_mostly Joe Perches 2013-11-13 0:23 ` Tony Luck 2013-11-13 0:29 ` Joe Perches 2013-11-13 19:31 ` Tony Luck [not found] ` <CA+8MBbJKN174=ybMNE7Z+oT7KjNBzgdy9cvhb_kACvXAbTo9XA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2013-11-14 1:16 ` Joe Perches
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).