Message ID | 20220427195820.1716975-1-pcc@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v5,1/2] printk: stop including cache.h from printk.h | expand |
On Wed, Apr 27, 2022 at 12:58:19PM -0700, Peter Collingbourne wrote: > An inclusion of cache.h in printk.h was added in 2014 in > commit c28aa1f0a847 ("printk/cache: mark printk_once test variable > __read_mostly") in order to bring in the definition of __read_mostly. The > usage of __read_mostly was later removed in commit 3ec25826ae33 ("printk: > Tie printk_once / printk_deferred_once into .data.once for reset") > which made the inclusion of cache.h unnecessary, so remove it. > > We have a small amount of code that depended on the inclusion of cache.h > from printk.h; fix that code to include the appropriate header. > > This fixes a circular inclusion on arm64 (linux/printk.h -> linux/cache.h > -> asm/cache.h -> linux/kasan-enabled.h -> linux/static_key.h -> > linux/jump_label.h -> linux/bug.h -> asm/bug.h -> linux/printk.h) that > would otherwise be introduced by the next patch. > > Build tested using {allyesconfig,defconfig} x {arm64,x86_64}. But not powerpc:corenet64_smp_defconfig, where it results in lots of build errors such as powerpc64-linux-ld: fs/freevxfs/vxfs_fshead.o:(.bss+0x0): multiple definition of `____cacheline_aligned'; fs/freevxfs/vxfs_bmap.o:(.bss+0x0): first defined here Reverting this patch fixes the problem. Guenter --- # bad: [18ecd30af1a8402c162cca1bd58771c0e5be7815] Add linux-next specific files for 20220520 # good: [42226c989789d8da4af1de0c31070c96726d990c] Linux 5.18-rc7 git bisect start 'HEAD' 'v5.18-rc7' # good: [f9b63740b666dd9887eb0282d21b5f65bb0cadd0] Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git git bisect good f9b63740b666dd9887eb0282d21b5f65bb0cadd0 # good: [1f5eb3e76303572f0318e8c50da51c516580aa03] Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git git bisect good 1f5eb3e76303572f0318e8c50da51c516580aa03 # good: [4c1d9cc0363691893ef94fa0d798faca013e27d3] Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git git bisect good 4c1d9cc0363691893ef94fa0d798faca013e27d3 # good: [a3204ed0fc565fc76901c67dfc8e04c91a5c8ea4] Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock.git git bisect good a3204ed0fc565fc76901c67dfc8e04c91a5c8ea4 # bad: [ca228447682904bc749c0702695681543b5dc709] Merge branch 'mm-nonmm-unstable' into mm-everything git bisect bad ca228447682904bc749c0702695681543b5dc709 # bad: [c0eeeb02d9df878c71a457008900b650d94bd0d9] selftests/uffd: enable uffd-wp for shmem/hugetlbfs git bisect bad c0eeeb02d9df878c71a457008900b650d94bd0d9 # good: [0a7a0f6f7f3679c906fc55e3805c1d5e2c566f55] hugetlb: fix wrong use of nr_online_nodes git bisect good 0a7a0f6f7f3679c906fc55e3805c1d5e2c566f55 # good: [c9fe66560bf2dc7d109754414e309888cb8c9ba9] mm/mprotect: do not flush when not required architecturally git bisect good c9fe66560bf2dc7d109754414e309888cb8c9ba9 # bad: [97d482f4592fde2322c319f07bc54f3a0d37861c] mm/damon/sysfs: reuse damon_set_regions() for regions setting git bisect bad 97d482f4592fde2322c319f07bc54f3a0d37861c # good: [54205e9c5425049aef1bc7a812f890f00b5f79c7] mm: rmap: move the cache flushing to the correct place for hugetlb PMD sharing git bisect good 54205e9c5425049aef1bc7a812f890f00b5f79c7 # bad: [9994715333515e82865e533250e488496b9742f4] selftest/vm: test that mremap fails on non-existent vma git bisect bad 9994715333515e82865e533250e488496b9742f4 # bad: [d949a8155d139aa890795b802004a196b7f00598] mm: make minimum slab alignment a runtime property git bisect bad d949a8155d139aa890795b802004a196b7f00598 # bad: [534aa1dc975ac883ad89110534585a96630802a0] printk: stop including cache.h from printk.h git bisect bad 534aa1dc975ac883ad89110534585a96630802a0 # good: [dfc7ab57560da385f705b28e2bf50e3b90444a6b] mm: rmap: use flush_cache_range() to flush cache for hugetlb pages git bisect good dfc7ab57560da385f705b28e2bf50e3b90444a6b # first bad commit: [534aa1dc975ac883ad89110534585a96630802a0] printk: stop including cache.h from printk.h
diff --git a/arch/arm64/include/asm/mte-kasan.h b/arch/arm64/include/asm/mte-kasan.h index a857bcacf0fe..9f79425fc65a 100644 --- a/arch/arm64/include/asm/mte-kasan.h +++ b/arch/arm64/include/asm/mte-kasan.h @@ -6,6 +6,7 @@ #define __ASM_MTE_KASAN_H #include <asm/compiler.h> +#include <asm/cputype.h> #include <asm/mte-def.h> #ifndef __ASSEMBLY__ diff --git a/arch/arm64/include/asm/percpu.h b/arch/arm64/include/asm/percpu.h index 8f1661603b78..b9ba19dbdb69 100644 --- a/arch/arm64/include/asm/percpu.h +++ b/arch/arm64/include/asm/percpu.h @@ -10,6 +10,7 @@ #include <asm/alternative.h> #include <asm/cmpxchg.h> #include <asm/stack_pointer.h> +#include <asm/sysreg.h> static inline void set_my_cpu_offset(unsigned long off) { diff --git a/arch/csky/include/asm/processor.h b/arch/csky/include/asm/processor.h index 688c7548b559..9638206bc44f 100644 --- a/arch/csky/include/asm/processor.h +++ b/arch/csky/include/asm/processor.h @@ -4,9 +4,9 @@ #define __ASM_CSKY_PROCESSOR_H #include <linux/bitops.h> +#include <linux/cache.h> #include <asm/ptrace.h> #include <asm/current.h> -#include <asm/cache.h> #include <abi/reg_ops.h> #include <abi/regdef.h> #include <abi/switch_context.h> diff --git a/drivers/firmware/smccc/kvm_guest.c b/drivers/firmware/smccc/kvm_guest.c index 2d3e866decaa..89a68e7eeaa6 100644 --- a/drivers/firmware/smccc/kvm_guest.c +++ b/drivers/firmware/smccc/kvm_guest.c @@ -4,6 +4,7 @@ #include <linux/arm-smccc.h> #include <linux/bitmap.h> +#include <linux/cache.h> #include <linux/kernel.h> #include <linux/string.h> diff --git a/include/linux/printk.h b/include/linux/printk.h index 1522df223c0f..8e8d74edf121 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -6,7 +6,6 @@ #include <linux/init.h> #include <linux/kern_levels.h> #include <linux/linkage.h> -#include <linux/cache.h> #include <linux/ratelimit_types.h> #include <linux/once_lite.h> diff --git a/kernel/bpf/bpf_lru_list.h b/kernel/bpf/bpf_lru_list.h index 6b12f06ee18c..4ea227c9c1ad 100644 --- a/kernel/bpf/bpf_lru_list.h +++ b/kernel/bpf/bpf_lru_list.h @@ -4,6 +4,7 @@ #ifndef __BPF_LRU_LIST_H_ #define __BPF_LRU_LIST_H_ +#include <linux/cache.h> #include <linux/list.h> #include <linux/spinlock_types.h>
An inclusion of cache.h in printk.h was added in 2014 in commit c28aa1f0a847 ("printk/cache: mark printk_once test variable __read_mostly") in order to bring in the definition of __read_mostly. The usage of __read_mostly was later removed in commit 3ec25826ae33 ("printk: Tie printk_once / printk_deferred_once into .data.once for reset") which made the inclusion of cache.h unnecessary, so remove it. We have a small amount of code that depended on the inclusion of cache.h from printk.h; fix that code to include the appropriate header. This fixes a circular inclusion on arm64 (linux/printk.h -> linux/cache.h -> asm/cache.h -> linux/kasan-enabled.h -> linux/static_key.h -> linux/jump_label.h -> linux/bug.h -> asm/bug.h -> linux/printk.h) that would otherwise be introduced by the next patch. Build tested using {allyesconfig,defconfig} x {arm64,x86_64}. Link: https://linux-review.googlesource.com/id/I8fd51f72c9ef1f2d6afd3b2cbc875aa4792c1fba Signed-off-by: Peter Collingbourne <pcc@google.com> --- v5: - fixes for arm randconfig and (tentatively) csky arch/arm64/include/asm/mte-kasan.h | 1 + arch/arm64/include/asm/percpu.h | 1 + arch/csky/include/asm/processor.h | 2 +- drivers/firmware/smccc/kvm_guest.c | 1 + include/linux/printk.h | 1 - kernel/bpf/bpf_lru_list.h | 1 + 6 files changed, 5 insertions(+), 2 deletions(-)