• Peter Zijlstra's avatar
    locking/seqlock, headers: Untangle the spaghetti monster · 0cd39f46
    Peter Zijlstra authored
    By using lockdep_assert_*() from seqlock.h, the spaghetti monster
    attacked.
    
    Attack back by reducing seqlock.h dependencies from two key high level headers:
    
     - <linux/seqlock.h>:               -Remove <linux/ww_mutex.h>
     - <linux/time.h>:                  -Remove <linux/seqlock.h>
     - <linux/sched.h>:                 +Add    <linux/seqlock.h>
    
    The price was to add it to sched.h ...
    
    Core header fallout, we add direct header dependencies instead of gaining them
    parasitically from higher level headers:
    
     - <linux/dynamic_queue_limits.h>:  +Add <asm/bug.h>
     - <linux/hrtimer.h>:               +Add <linux/seqlock.h>
     - <linux/ktime.h>:                 +Add <asm/bug.h>
     - <linux/lockdep.h>:               +Add <linux/smp.h>
     - <linux/sched.h>:                 +Add <linux/seqlock.h>
     - <linux/videodev2.h>:             +Add <linux/kernel.h>
    
    Arch headers fallout:
    
     - PARISC: <asm/timex.h>:           +Add <asm/special_insns.h>
     - SH:     <asm/io.h>:              +Add <asm/page.h>
     - SPARC:  <asm/timer_64.h>:        +Add <uapi/asm/asi.h>
     - SPARC:  <asm/vvar.h>:            +Add <asm/processor.h>, <asm/barrier.h>
                                        -Remove <linux/seqlock.h>
     - X86:    <asm/fixmap.h>:          +Add <asm/pgtable_types.h>
                                        -Remove <asm/acpi.h>
    
    There's also a bunch of parasitic header dependency fallout in .c files, not listed
    separately.
    
    [ mingo: Extended the changelog, split up & fixed the original patch. ]
    Co-developed-by: default avatarIngo Molnar <mingo@kernel.org>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    Link: https://lore.kernel.org/r/20200804133438.GK2674@hirez.programming.kicks-ass.net
    0cd39f46
init_32.c 23 KB