lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1486578863-8903-1-git-send-email-mingo@kernel.org>
Date:   Wed,  8 Feb 2017 19:34:13 +0100
From:   Ingo Molnar <mingo@...nel.org>
To:     linux-kernel@...r.kernel.org
Cc:     Andrew Morton <akpm@...ux-foundation.org>,
        Linus Torvalds <torvalds@...ux-foundation.org>,
        Mike Galbraith <efault@....de>,
        Oleg Nesterov <oleg@...hat.com>,
        Peter Zijlstra <peterz@...radead.org>,
        Thomas Gleixner <tglx@...utronix.de>
Subject: [PATCH 00/10] sched.h modernization -v2, phase #1: "Pre-splitup cleanups"

This is the second version of the sched.h modernization series I posted two days
ago:

  https://lkml.org/lkml/2017/2/6/468

The point of the series is to significantly reduce the <linux/sched.h> footprint,
to speed up the kernel build and to have a cleaner header structure. The new
<linux/sched.h>'s typical preprocessed size goes down from ~0.68 MB (~22K lines)
to ~0.45 MB (~15K lines) and is around 40% faster to build on typical configs.

The Git tree can be found at:

     git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git WIP.sched/core

Changes in -v2:

As per the suggestions from Linus, -v2 has a reworked patch split-up structure
that should be easier to review, validate, test and bisect. I've further
split up the patches into 148 component patches and reordered them into the
following five groups/phases:

  phase #1: "Pre-splitup cleanups":               # 0721da143d99~1..582c7529a1bd,   10 patches

  phase #2: "Prepare header dependencies":        # 9017f600c534~1..d1eb6f0b580d,   48 patches
  phase #3: "Move definitions between headers":   # 3d01f4b6e32d~1..fd88c1773dd6,   53 patches
  phase #4: "Remove header dependencies":         # 2d246f83c5d3~1..2205323e0ca1,   35 patches

  phase #5: "Post-splitup cleanups":              # 55cf8bfb3af4~1..bcc6be9d66b2,    2 patches

The "pre-splitup cleanups" phase does a handful of preparatory changes that make
the subsequent sched.h restructuring easier. Some of these patches have (mostly
minor) semantic side-effects.

The middle phases are structured in a way to make it relatively easy to review
and verify that they have no semantic side-effects:

  "Prepare header dependencies":

  - These patches just add trivial placeholder headers and update various .c and .h
    files with the expected future dependencies. These patches increase the header
    dependency graph of the kernel monotonically.

  "Move definitions between headers":

  - These are the meat of the code movement, but they don't actually change the header
    dependency graph: all code movement is between pre-existing headers.

  "Remove header dependencies":

  - These remove header #include lines and remove prototypes and thus shrink the
    header dependency graph monotonically to the desired end result. These are
    small patches but most breakage will likely bisect to these, so their
    finegrained split-up is useful as well.

The "post-splitup cleanups" do cleanups on top of the finished split-up header
structure. It's two patches for now, more cleanups will be done later.

I've done a bisection step by step build test of all 148 steps on x86-defconfig,
and have performed a fair amount of all[yes|mod|no]config tests, cross-build tests
and boot tests on the final tree. Fixes to any bugs will be merged back into the
series to preserve bisectability.

As a first step the "pre-splitup" patches are sent a reply to this 0/10 email.

I'll send the other phases in separate email threads, to make them easier to
review.

As usual, any feedback is welcome!

Thanks,

	Ingo

Ingo Molnar (10):
  sched/headers: Make all include/linux/sched/*.h headers build standalone
  sched/core: Convert ___assert_task_state() link time assert to BUILD_BUG_ON()
  sched/headers: Make task_struct::wake_q an opaque pointer
  sched/core: Move the get_preempt_disable_ip() inline to sched/core.c
  sched/core: Remove the tsk_cpus_allowed() wrapper
  sched/core: Remove the tsk_nr_cpus_allowed() wrapper
  rcu: Separate the RCU synchronization types and APIs into <linux/rcupdate_wait.h>
  sched/headers, cgroups: Remove the threadgroup_change_*() wrappery
  mm/vmacache, sched/headers: Introduce 'struct vmacache' and move it from <linux/sched.h> to <linux/mm_types>
  kasan, sched/headers: Uninline kasan_enable/disable_current()

 arch/powerpc/kernel/smp.c                  |  2 +-
 arch/powerpc/platforms/cell/spufs/sched.c  |  2 +-
 arch/sparc/kernel/sysfs.c                  |  2 +-
 drivers/cpufreq/sparc-us2e-cpufreq.c       |  4 ++--
 drivers/cpufreq/sparc-us3-cpufreq.c        |  4 ++--
 drivers/infiniband/hw/hfi1/affinity.c      |  2 +-
 drivers/infiniband/hw/hfi1/sdma.c          |  2 +-
 fs/autofs4/autofs_i.h                      |  1 +
 fs/exec.c                                  |  6 ++---
 include/linux/cgroup-defs.h                | 13 ++++++-----
 include/linux/dcache.h                     |  1 +
 include/linux/kasan.h                      | 10 ++-------
 include/linux/mm_types.h                   | 12 ++++++++++
 include/linux/rcupdate.h                   | 40 ---------------------------------
 include/linux/rcupdate_wait.h              | 50 +++++++++++++++++++++++++++++++++++++++++
 include/linux/rcutiny.h                    | 11 ++-------
 include/linux/sched.h                      | 61 +++++---------------------------------------------
 include/linux/sched/deadline.h             |  8 ++++---
 include/linux/sched/prio.h                 |  6 ++---
 include/linux/sched/rt.h                   | 10 +++++----
 include/linux/sched/sysctl.h               | 10 ++++++---
 include/linux/vmacache.h                   |  2 +-
 kernel/cgroup_pids.c                       |  2 +-
 kernel/debug/debug_core.c                  |  4 ++--
 kernel/fork.c                              |  8 +++----
 kernel/rcu/srcu.c                          |  2 +-
 kernel/rcu/tiny.c                          | 14 +++++++++++-
 kernel/rcu/tree.c                          |  2 +-
 kernel/rcu/update.c                        |  1 +
 kernel/sched/core.c                        | 41 +++++++++++++++++++++------------
 kernel/sched/cpudeadline.c                 |  4 ++--
 kernel/sched/cpupri.c                      |  4 ++--
 kernel/sched/deadline.c                    | 35 ++++++++++++++---------------
 kernel/sched/fair.c                        | 25 ++++++++++-----------
 kernel/sched/rt.c                          | 29 ++++++++++++------------
 kernel/signal.c                            |  6 ++---
 lib/sbitmap.c                              |  1 +
 lib/smp_processor_id.c                     |  2 +-
 mm/kasan/kasan.c                           | 10 +++++++++
 mm/nommu.c                                 |  2 +-
 mm/vmacache.c                              | 10 ++++-----
 samples/trace_events/trace-events-sample.c |  2 +-
 42 files changed, 234 insertions(+), 229 deletions(-)
 create mode 100644 include/linux/rcupdate_wait.h

-- 
2.7.4

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ