Re: [sparc64] enabling CONFIG_PROVE_LOCKING makes kernel unable to build

From: Anatoly Pugachev
Date: Mon Aug 10 2020 - 05:24:04 EST


On Tue, Aug 4, 2020 at 4:34 PM <peterz@xxxxxxxxxxxxx> wrote:
>
> On Tue, Aug 04, 2020 at 04:17:16PM +0300, Anatoly Pugachev wrote:
> > Hello!
> >
> > Linus git master sources:
> >
> > $ git desc
> > v5.8-2483-gc0842fbc1b18
> >
>
> Ooh, it looks like that series wasn't cut back far enough :/
>
> 859247d39fb0 ("seqlock: lockdep assert non-preemptibility on seqcount_t
> write") does indeed also introduce problems.
>
> I've been working on untangling the header mess for the full series and
> the below patch is what I currently have.
>
> ---
> Subject: seqlock,headers: Untangle the spaghetti monster
> From: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Date: Thu Jul 30 13:20:47 CEST 2020
>
> By using lockdep_assert_*() from seqlock.h, the spaghetti monster
> attacked.

Thanks Peter!

It doesn't apply cleanly over master git, but it least makes kernel
compilable / bootable on sparc64:

linux-2.6$ git desc
v5.8-11991-gfc80c51fd4b2

linux-2.6$ patch -p1 < ~/headers.patch
patching file arch/ia64/include/asm/smp.h
patching file arch/ia64/include/asm/xtp.h
patching file arch/ia64/kernel/iosapic.c
patching file arch/ia64/kernel/irq.c
patching file arch/ia64/kernel/process.c
Hunk #1 succeeded at 47 (offset -1 lines).
patching file arch/ia64/kernel/sal.c
patching file arch/ia64/kernel/setup.c
patching file arch/ia64/kernel/smp.c
Hunk #1 succeeded at 45 (offset -1 lines).
patching file arch/parisc/include/asm/timex.h
patching file arch/sh/include/asm/io.h
patching file arch/sh/kernel/machvec.c
patching file arch/sparc/include/asm/timer_64.h
patching file arch/sparc/include/asm/vvar.h
patching file arch/sparc/kernel/vdso.c
patching file arch/x86/include/asm/fixmap.h
patching file arch/x86/kernel/apic/apic_noop.c
patching file arch/x86/kernel/apic/hw_nmi.c
patching file arch/x86/kernel/apic/probe_64.c
patching file arch/x86/kernel/cpu/amd.c
patching file arch/x86/kernel/cpu/common.c
patching file arch/x86/kernel/cpu/hygon.c
patching file arch/x86/kernel/cpu/intel.c
patching file arch/x86/kernel/jailhouse.c
patching file arch/x86/kernel/tsc_msr.c
patching file arch/x86/mm/init_32.c
patching file arch/x86/xen/apic.c
patching file arch/x86/xen/smp_hvm.c
patching file arch/x86/xen/suspend_pv.c
patching file include/linux/dynamic_queue_limits.h
patching file include/linux/hrtimer.h
patching file include/linux/ktime.h
patching file include/linux/lockdep.h
patching file include/linux/mutex.h
patching file include/linux/sched.h
patching file include/linux/seqlock.h
Hunk #1 FAILED at 19.
1 out of 1 hunk FAILED -- saving rejects to file include/linux/seqlock.h.rej
patching file include/linux/time.h
patching file include/linux/videodev2.h
patching file include/linux/ww_mutex.h
mator@ttip:~/linux-2.6$ make -j arch/sparc
UPD include/config/kernel.release
UPD include/generated/utsrelease.h
CALL scripts/atomic/check-atomics.sh
CC arch/sparc/kernel/asm-offsets.s
CALL scripts/checksyscalls.sh
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
CC arch/sparc/math-emu/math_64.o
CC arch/sparc/net/bpf_jit_comp_64.o
CC arch/sparc/mm/tlb.o
CC arch/sparc/mm/tsb.o
CC arch/sparc/vdso/vclock_gettime.o
CC arch/sparc/mm/fault_64.o
CC arch/sparc/mm/init_64.o
CC arch/sparc/mm/hugetlbpage.o
CC arch/sparc/vdso/vma.o
CC arch/sparc/vdso/vdso32/vclock_gettime.o
CC arch/sparc/crypto/aes_glue.o
CC arch/sparc/crypto/des_glue.o
CC arch/sparc/crypto/camellia_glue.o
CC [M] arch/sparc/crypto/sha1_glue.o
CC [M] arch/sparc/crypto/sha256_glue.o
CC [M] arch/sparc/crypto/sha512_glue.o
CC [M] arch/sparc/crypto/md5_glue.o
CC [M] arch/sparc/crypto/crc32c_glue.o
VDSO arch/sparc/vdso/vdso64.so.dbg
CC arch/sparc/kernel/traps_64.o
CC arch/sparc/kernel/irq_64.o
CC arch/sparc/kernel/process_64.o
CC arch/sparc/kernel/process.o
CC arch/sparc/kernel/signal_64.o
CC arch/sparc/kernel/sigutil_64.o
OBJCOPY arch/sparc/vdso/vdso64.so
CC arch/sparc/kernel/setup_64.o
CC arch/sparc/kernel/idprom.o
CC arch/sparc/kernel/sys_sparc_64.o
VDSO2C arch/sparc/vdso/vdso-image-64.c
CC arch/sparc/kernel/time_64.o
CC arch/sparc/kernel/cpu.o
CC arch/sparc/kernel/vdso.o
CC arch/sparc/vdso/vdso-image-64.o
CC arch/sparc/kernel/ptrace_64.o
CC arch/sparc/kernel/unaligned_64.o
CC arch/sparc/kernel/prom_common.o
CC arch/sparc/kernel/prom_64.o
CC arch/sparc/kernel/of_device_common.o
CC arch/sparc/kernel/of_device_64.o
CC arch/sparc/kernel/prom_irqtrans.o
CC arch/sparc/kernel/reboot.o
CC arch/sparc/kernel/sysfs.o
CC arch/sparc/kernel/iommu.o
CC arch/sparc/kernel/iommu-common.o
CC arch/sparc/kernel/central.o
CC arch/sparc/kernel/starfire.o
CC arch/sparc/kernel/power.o
CC arch/sparc/kernel/sbus.o
CC arch/sparc/kernel/ebus.o
CC arch/sparc/kernel/visemul.o
CC arch/sparc/kernel/hvapi.o
CC arch/sparc/kernel/sstate.o
CC arch/sparc/kernel/mdesc.o
CC arch/sparc/kernel/adi_64.o
CC arch/sparc/kernel/pcr.o
VDSO arch/sparc/vdso/vdso32.so.dbg
CC arch/sparc/kernel/nmi.o
CC arch/sparc/kernel/cpumap.o
CC arch/sparc/kernel/smp_64.o
CC arch/sparc/kernel/auxio_64.o
CC arch/sparc/kernel/module.o
OBJCOPY arch/sparc/vdso/vdso32.so
CC arch/sparc/kernel/kgdb_64.o
CC arch/sparc/kernel/ftrace.o
VDSO2C arch/sparc/vdso/vdso-image-32.c
CC arch/sparc/kernel/btext.o
CC arch/sparc/kernel/stacktrace.o
CC arch/sparc/vdso/vdso-image-32.o
CC arch/sparc/kernel/sys_sparc32.o
CC arch/sparc/kernel/signal32.o
CC arch/sparc/kernel/kprobes.o
CC arch/sparc/kernel/ldc.o
CC arch/sparc/kernel/vio.o
CC arch/sparc/kernel/viohs.o
CC arch/sparc/kernel/ds.o
CC arch/sparc/kernel/audit.o
CC arch/sparc/kernel/compat_audit.o
CC arch/sparc/kernel/perf_event.o
CC arch/sparc/kernel/jump_label.o
CC [M] arch/sparc/kernel/chmc.o
AR arch/sparc/vdso/built-in.a
LD [M] arch/sparc/crypto/sha1-sparc64.o
LD [M] arch/sparc/crypto/md5-sparc64.o
LD [M] arch/sparc/crypto/sha256-sparc64.o
LD [M] arch/sparc/crypto/crc32c-sparc64.o
LD [M] arch/sparc/crypto/sha512-sparc64.o
AR arch/sparc/crypto/built-in.a
AR arch/sparc/net/built-in.a
AR arch/sparc/kernel/built-in.a
AR arch/sparc/mm/built-in.a
AR arch/sparc/math-emu/built-in.a
AR arch/sparc/built-in.a

...
$ reboot
...
$ uname -a
Linux ttip 5.8.0-11991-gfc80c51fd4b2-dirty #23 SMP Mon Aug 10 12:17:12
MSK 2020 sparc64 GNU/Linux