1. 26 Jul, 2016 30 commits
    • Thomas Garnier's avatar
      mm: SLUB freelist randomization · 210e7a43
      Thomas Garnier authored
      Implements freelist randomization for the SLUB allocator.  It was
      previous implemented for the SLAB allocator.  Both use the same
      configuration option (CONFIG_SLAB_FREELIST_RANDOM).
      
      The list is randomized during initialization of a new set of pages.  The
      order on different freelist sizes is pre-computed at boot for
      performance.  Each kmem_cache has its own randomized freelist.
      
      This security feature reduces the predictability of the kernel SLUB
      allocator against heap overflows rendering attacks much less stable.
      
      For example these attacks exploit the predictability of the heap:
       - Linux Kernel CAN SLUB overflow (https://goo.gl/oMNWkU)
       - Exploiting Linux Kernel Heap corruptions (http://goo.gl/EXLn95)
      
      Performance results:
      
      slab_test impact is between 3% to 4% on average for 100000 attempts
      without smp.  It is a very focused testing, kernbench show the overall
      impact on the system is way lower.
      
      Before:
      
        Single thread testing
        =====================
        1. Kmalloc: Repeatedly allocate then free test
        100000 times kmalloc(8) -> 49 cycles kfree -> 77 cycles
        100000 times kmalloc(16) -> 51 cycles kfree -> 79 cycles
        100000 times kmalloc(32) -> 53 cycles kfree -> 83 cycles
        100000 times kmalloc(64) -> 62 cycles kfree -> 90 cycles
        100000 times kmalloc(128) -> 81 cycles kfree -> 97 cycles
        100000 times kmalloc(256) -> 98 cycles kfree -> 121 cycles
        100000 times kmalloc(512) -> 95 cycles kfree -> 122 cycles
        100000 times kmalloc(1024) -> 96 cycles kfree -> 126 cycles
        100000 times kmalloc(2048) -> 115 cycles kfree -> 140 cycles
        100000 times kmalloc(4096) -> 149 cycles kfree -> 171 cycles
        2. Kmalloc: alloc/free test
        100000 times kmalloc(8)/kfree -> 70 cycles
        100000 times kmalloc(16)/kfree -> 70 cycles
        100000 times kmalloc(32)/kfree -> 70 cycles
        100000 times kmalloc(64)/kfree -> 70 cycles
        100000 times kmalloc(128)/kfree -> 70 cycles
        100000 times kmalloc(256)/kfree -> 69 cycles
        100000 times kmalloc(512)/kfree -> 70 cycles
        100000 times kmalloc(1024)/kfree -> 73 cycles
        100000 times kmalloc(2048)/kfree -> 72 cycles
        100000 times kmalloc(4096)/kfree -> 71 cycles
      
      After:
      
        Single thread testing
        =====================
        1. Kmalloc: Repeatedly allocate then free test
        100000 times kmalloc(8) -> 57 cycles kfree -> 78 cycles
        100000 times kmalloc(16) -> 61 cycles kfree -> 81 cycles
        100000 times kmalloc(32) -> 76 cycles kfree -> 93 cycles
        100000 times kmalloc(64) -> 83 cycles kfree -> 94 cycles
        100000 times kmalloc(128) -> 106 cycles kfree -> 107 cycles
        100000 times kmalloc(256) -> 118 cycles kfree -> 117 cycles
        100000 times kmalloc(512) -> 114 cycles kfree -> 116 cycles
        100000 times kmalloc(1024) -> 115 cycles kfree -> 118 cycles
        100000 times kmalloc(2048) -> 147 cycles kfree -> 131 cycles
        100000 times kmalloc(4096) -> 214 cycles kfree -> 161 cycles
        2. Kmalloc: alloc/free test
        100000 times kmalloc(8)/kfree -> 66 cycles
        100000 times kmalloc(16)/kfree -> 66 cycles
        100000 times kmalloc(32)/kfree -> 66 cycles
        100000 times kmalloc(64)/kfree -> 66 cycles
        100000 times kmalloc(128)/kfree -> 65 cycles
        100000 times kmalloc(256)/kfree -> 67 cycles
        100000 times kmalloc(512)/kfree -> 67 cycles
        100000 times kmalloc(1024)/kfree -> 64 cycles
        100000 times kmalloc(2048)/kfree -> 67 cycles
        100000 times kmalloc(4096)/kfree -> 67 cycles
      
      Kernbench, before:
      
        Average Optimal load -j 12 Run (std deviation):
        Elapsed Time 101.873 (1.16069)
        User Time 1045.22 (1.60447)
        System Time 88.969 (0.559195)
        Percent CPU 1112.9 (13.8279)
        Context Switches 189140 (2282.15)
        Sleeps 99008.6 (768.091)
      
      After:
      
        Average Optimal load -j 12 Run (std deviation):
        Elapsed Time 102.47 (0.562732)
        User Time 1045.3 (1.34263)
        System Time 88.311 (0.342554)
        Percent CPU 1105.8 (6.49444)
        Context Switches 189081 (2355.78)
        Sleeps 99231.5 (800.358)
      
      Link: http://lkml.kernel.org/r/1464295031-26375-3-git-send-email-thgarnie@google.comSigned-off-by: default avatarThomas Garnier <thgarnie@google.com>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Pekka Enberg <penberg@kernel.org>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      210e7a43
    • Thomas Garnier's avatar
      mm: reorganize SLAB freelist randomization · 7c00fce9
      Thomas Garnier authored
      The kernel heap allocators are using a sequential freelist making their
      allocation predictable.  This predictability makes kernel heap overflow
      easier to exploit.  An attacker can careful prepare the kernel heap to
      control the following chunk overflowed.
      
      For example these attacks exploit the predictability of the heap:
       - Linux Kernel CAN SLUB overflow (https://goo.gl/oMNWkU)
       - Exploiting Linux Kernel Heap corruptions (http://goo.gl/EXLn95)
      
      ***Problems that needed solving:
       - Randomize the Freelist (singled linked) used in the SLUB allocator.
       - Ensure good performance to encourage usage.
       - Get best entropy in early boot stage.
      
      ***Parts:
       - 01/02 Reorganize the SLAB Freelist randomization to share elements
         with the SLUB implementation.
       - 02/02 The SLUB Freelist randomization implementation. Similar approach
         than the SLAB but tailored to the singled freelist used in SLUB.
      
      ***Performance data:
      
      slab_test impact is between 3% to 4% on average for 100000 attempts
      without smp.  It is a very focused testing, kernbench show the overall
      impact on the system is way lower.
      
      Before:
      
        Single thread testing
        =====================
        1. Kmalloc: Repeatedly allocate then free test
        100000 times kmalloc(8) -> 49 cycles kfree -> 77 cycles
        100000 times kmalloc(16) -> 51 cycles kfree -> 79 cycles
        100000 times kmalloc(32) -> 53 cycles kfree -> 83 cycles
        100000 times kmalloc(64) -> 62 cycles kfree -> 90 cycles
        100000 times kmalloc(128) -> 81 cycles kfree -> 97 cycles
        100000 times kmalloc(256) -> 98 cycles kfree -> 121 cycles
        100000 times kmalloc(512) -> 95 cycles kfree -> 122 cycles
        100000 times kmalloc(1024) -> 96 cycles kfree -> 126 cycles
        100000 times kmalloc(2048) -> 115 cycles kfree -> 140 cycles
        100000 times kmalloc(4096) -> 149 cycles kfree -> 171 cycles
        2. Kmalloc: alloc/free test
        100000 times kmalloc(8)/kfree -> 70 cycles
        100000 times kmalloc(16)/kfree -> 70 cycles
        100000 times kmalloc(32)/kfree -> 70 cycles
        100000 times kmalloc(64)/kfree -> 70 cycles
        100000 times kmalloc(128)/kfree -> 70 cycles
        100000 times kmalloc(256)/kfree -> 69 cycles
        100000 times kmalloc(512)/kfree -> 70 cycles
        100000 times kmalloc(1024)/kfree -> 73 cycles
        100000 times kmalloc(2048)/kfree -> 72 cycles
        100000 times kmalloc(4096)/kfree -> 71 cycles
      
      After:
      
        Single thread testing
        =====================
        1. Kmalloc: Repeatedly allocate then free test
        100000 times kmalloc(8) -> 57 cycles kfree -> 78 cycles
        100000 times kmalloc(16) -> 61 cycles kfree -> 81 cycles
        100000 times kmalloc(32) -> 76 cycles kfree -> 93 cycles
        100000 times kmalloc(64) -> 83 cycles kfree -> 94 cycles
        100000 times kmalloc(128) -> 106 cycles kfree -> 107 cycles
        100000 times kmalloc(256) -> 118 cycles kfree -> 117 cycles
        100000 times kmalloc(512) -> 114 cycles kfree -> 116 cycles
        100000 times kmalloc(1024) -> 115 cycles kfree -> 118 cycles
        100000 times kmalloc(2048) -> 147 cycles kfree -> 131 cycles
        100000 times kmalloc(4096) -> 214 cycles kfree -> 161 cycles
        2. Kmalloc: alloc/free test
        100000 times kmalloc(8)/kfree -> 66 cycles
        100000 times kmalloc(16)/kfree -> 66 cycles
        100000 times kmalloc(32)/kfree -> 66 cycles
        100000 times kmalloc(64)/kfree -> 66 cycles
        100000 times kmalloc(128)/kfree -> 65 cycles
        100000 times kmalloc(256)/kfree -> 67 cycles
        100000 times kmalloc(512)/kfree -> 67 cycles
        100000 times kmalloc(1024)/kfree -> 64 cycles
        100000 times kmalloc(2048)/kfree -> 67 cycles
        100000 times kmalloc(4096)/kfree -> 67 cycles
      
      Kernbench, before:
      
        Average Optimal load -j 12 Run (std deviation):
        Elapsed Time 101.873 (1.16069)
        User Time 1045.22 (1.60447)
        System Time 88.969 (0.559195)
        Percent CPU 1112.9 (13.8279)
        Context Switches 189140 (2282.15)
        Sleeps 99008.6 (768.091)
      
      After:
      
        Average Optimal load -j 12 Run (std deviation):
        Elapsed Time 102.47 (0.562732)
        User Time 1045.3 (1.34263)
        System Time 88.311 (0.342554)
        Percent CPU 1105.8 (6.49444)
        Context Switches 189081 (2355.78)
        Sleeps 99231.5 (800.358)
      
      This patch (of 2):
      
      This commit reorganizes the previous SLAB freelist randomization to
      prepare for the SLUB implementation.  It moves functions that will be
      shared to slab_common.
      
      The entropy functions are changed to align with the SLUB implementation,
      now using get_random_(int|long) functions.  These functions were chosen
      because they provide a bit more entropy early on boot and better
      performance when specific arch instructions are not available.
      
      [akpm@linux-foundation.org: fix build]
      Link: http://lkml.kernel.org/r/1464295031-26375-2-git-send-email-thgarnie@google.comSigned-off-by: default avatarThomas Garnier <thgarnie@google.com>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Pekka Enberg <penberg@kernel.org>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7c00fce9
    • Brian Foster's avatar
      fs/fs-writeback.c: inode writeback list tracking tracepoints · 9a46b04f
      Brian Foster authored
      The per-sb inode writeback list tracks inodes currently under writeback
      to facilitate efficient sync processing.  In particular, it ensures that
      sync only needs to walk through a list of inodes that were cleaned by
      the sync.
      
      Add a couple tracepoints to help identify when inodes are added/removed
      to and from the writeback lists.  Piggyback off of the writeback
      lazytime tracepoint template as it already tracks the relevant inode
      information.
      
      Link: http://lkml.kernel.org/r/1466594593-6757-3-git-send-email-bfoster@redhat.comSigned-off-by: default avatarBrian Foster <bfoster@redhat.com>
      Reviewed-by: default avatarJan Kara <jack@suse.cz>
      Cc: Dave Chinner <dchinner@redhat.com>
      cc: Josef Bacik <jbacik@fb.com>
      Cc: Holger Hoffstätte <holger.hoffstaette@applied-asynchrony.com>
      Cc: Al Viro <viro@ZenIV.linux.org.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9a46b04f
    • Dave Chinner's avatar
      fs/fs-writeback.c: add a new writeback list for sync · 6c60d2b5
      Dave Chinner authored
      wait_sb_inodes() currently does a walk of all inodes in the filesystem
      to find dirty one to wait on during sync.  This is highly inefficient
      and wastes a lot of CPU when there are lots of clean cached inodes that
      we don't need to wait on.
      
      To avoid this "all inode" walk, we need to track inodes that are
      currently under writeback that we need to wait for.  We do this by
      adding inodes to a writeback list on the sb when the mapping is first
      tagged as having pages under writeback.  wait_sb_inodes() can then walk
      this list of "inodes under IO" and wait specifically just for the inodes
      that the current sync(2) needs to wait for.
      
      Define a couple helpers to add/remove an inode from the writeback list
      and call them when the overall mapping is tagged for or cleared from
      writeback.  Update wait_sb_inodes() to walk only the inodes under
      writeback due to the sync.
      
      With this change, filesystem sync times are significantly reduced for
      fs' with largely populated inode caches and otherwise no other work to
      do.  For example, on a 16xcpu 2GHz x86-64 server, 10TB XFS filesystem
      with a ~10m entry inode cache, sync times are reduced from ~7.3s to less
      than 0.1s when the filesystem is fully clean.
      
      Link: http://lkml.kernel.org/r/1466594593-6757-2-git-send-email-bfoster@redhat.comSigned-off-by: default avatarDave Chinner <dchinner@redhat.com>
      Signed-off-by: default avatarJosef Bacik <jbacik@fb.com>
      Signed-off-by: default avatarBrian Foster <bfoster@redhat.com>
      Reviewed-by: default avatarJan Kara <jack@suse.cz>
      Tested-by: default avatarHolger Hoffstätte <holger.hoffstaette@applied-asynchrony.com>
      Cc: Al Viro <viro@ZenIV.linux.org.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6c60d2b5
    • piaojun's avatar
      ocfs2/cluster: clean up unnecessary assignment for 'ret' · 7d65b274
      piaojun authored
      Clean up unnecessary assignment for 'ret'.
      
      Link: http://lkml.kernel.org/r/578C61F6.4080403@huawei.comSigned-off-by: default avatarJun Piao <piaojun@huawei.com>
      Reviewed-by: default avatarJoseph Qi <joseph.qi@huawei.com>
      Cc: Mark Fasheh <mfasheh@suse.de>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Junxiao Bi <junxiao.bi@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7d65b274
    • Joseph Qi's avatar
      ocfs2: remove obscure BUG_ON in dlmglue · e81f1c5c
      Joseph Qi authored
      These BUG_ON(!inode) are obscure because we have already used inode to
      get osb.  And actually we can guarantee here inode is valid in the
      context.  So we can safely remove them.
      
      Link: http://lkml.kernel.org/r/5776336A.6030104@huawei.comSigned-off-by: default avatarJoseph Qi <joseph.qi@huawei.com>
      Reviewed-by: default avatarEric Ren <zren@suse.com>
      Cc: Mark Fasheh <mfasheh@suse.de>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Junxiao Bi <junxiao.bi@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e81f1c5c
    • Joseph Qi's avatar
      ocfs2: cleanup implemented prototypes · 698d44b4
      Joseph Qi authored
      Several prototypes in inode.h are just defined but not actually
      implemented and used, so remove them.
      
      Link: http://lkml.kernel.org/r/57763787.4020706@huawei.comSigned-off-by: default avatarJoseph Qi <joseph.qi@huawei.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      698d44b4
    • Joseph Qi's avatar
      ocfs2/dlm: fix memory leak of dlm_debug_ctxt · 8ec7b17a
      Joseph Qi authored
      dlm_debug_ctxt->debug_refcnt is initialized to 1 and then increased to 2
      by dlm_debug_get in dlm_debug_init.  But dlm_debug_put is called only
      once in dlm_debug_shutdown during unregister dlm, which leads to
      dlm_debug_ctxt leaked.
      
      Link: http://lkml.kernel.org/r/577BB755.4030900@huawei.comSigned-off-by: default avatarJoseph Qi <joseph.qi@huawei.com>
      Reviewed-by: default avatarJiufei Xue <xuejiufei@huawei.com>
      Cc: Mark Fasheh <mfasheh@suse.de>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Junxiao Bi <junxiao.bi@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8ec7b17a
    • Joseph Qi's avatar
      ocfs2: cleanup unneeded goto in ocfs2_create_new_inode_locks · a8f24f1b
      Joseph Qi authored
      The last goto is unneeded, so remove it.
      
      Link: http://lkml.kernel.org/r/576213D3.6080002@huawei.comSigned-off-by: default avatarJoseph Qi <joseph.qi@huawei.com>
      Reviewed-by: default avatarMark Fasheh <mfasheh@suse.de>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Junxiao Bi <junxiao.bi@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a8f24f1b
    • Junxiao Bi's avatar
      ocfs2: improve recovery performance · 0b492f68
      Junxiao Bi authored
      Journal replay will be run when performing recovery for a dead node.  To
      avoid the stale cache impact, all blocks of dead node's journal inode
      were reloaded from disk.  This hurts the performance.  Check whether one
      block is cached before reloading it can improve performance a lot.  In
      my test env, the time doing recovery was improved from 120s to 1s.
      
      [akpm@linux-foundation.org: clean up the for loop p_blkno handling]
      Link: http://lkml.kernel.org/r/1466155682-24656-1-git-send-email-junxiao.bi@oracle.comSigned-off-by: default avatarJunxiao Bi <junxiao.bi@oracle.com>
      Reviewed-by: default avatarJoseph Qi <joseph.qi@huawei.com>
      Cc: "Gang He" <ghe@suse.com>
      Cc: Mark Fasheh <mfasheh@suse.de>
      Cc: Joel Becker <jlbec@evilplan.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0b492f68
    • Eric Ren's avatar
      ocfs2: fix a redundant re-initialization · 191df2b5
      Eric Ren authored
      Obviously, memset() has zeroed the whole struct locking_max_version.
      So, it's no need to zero its two fields individually.
      
      Link: http://lkml.kernel.org/r/1463970605-18354-1-git-send-email-zren@suse.comSigned-off-by: default avatarEric Ren <zren@suse.com>
      Reviewed-by: default avatarJoseph Qi <joseph.qi@huawei.com>
      Reviewed-by: default avatarGang He <ghe@suse.com>
      Cc: Mark Fasheh <mfasheh@suse.de>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Junxiao Bi <junxiao.bi@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      191df2b5
    • Randy Dunlap's avatar
      debugobjects.h: fix trivial kernel doc warning · 17359a80
      Randy Dunlap authored
      Add ':' to fix trivial kernel-doc warning in <linux/debugobjects.h>:
      
        ..//include/linux/debugobjects.h:63: warning: No description found for parameter 'is_static_object'
      
      Link: http://lkml.kernel.org/r/575B01B8.5060600@infradead.orgSigned-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      17359a80
    • Sudip Mukherjee's avatar
      m32r: add __ucmpdi2 to fix build failure · a44ce523
      Sudip Mukherjee authored
      We are having build failure with m32r and the error message being:
      
        ERROR: "__ucmpdi2" [lib/842/842_decompress.ko] undefined!
        ERROR: "__ucmpdi2" [fs/btrfs/btrfs.ko] undefined!
        ERROR: "__ucmpdi2" [drivers/scsi/sd_mod.ko] undefined!
        ERROR: "__ucmpdi2" [drivers/media/i2c/adv7842.ko] undefined!
        ERROR: "__ucmpdi2" [drivers/md/bcache/bcache.ko] undefined!
        ERROR: "__ucmpdi2" [drivers/iio/imu/inv_mpu6050/inv-mpu6050.ko] undefined!
      
      __ucmpdi2 is introduced to m32r architecture taking example from other
      architectures like h8300, microblaze, mips.
      
      Link: http://lkml.kernel.org/r/1465509213-4280-1-git-send-email-sudipm.mukherjee@gmail.comSigned-off-by: default avatarSudip Mukherjee <sudip.mukherjee@codethink.co.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a44ce523
    • Riku Voipio's avatar
      scripts/bloat-o-meter: fix percent on <1% changes · 8cde0daf
      Riku Voipio authored
      Python divisions are integer divisions unless at least one parameter is
      a float.  The current bloat-o-meter fails to print sub-percentage
      changes:
      
        Total: Before=10515408, After=10604060, chg 0.000000%
      
      Force float division by using one float and pretty the print to two
      significant decimals:
      
        Total: Before=10515408, After=10604060, chg +0.84%
      
      Link: http://lkml.kernel.org/r/1465980311-23814-1-git-send-email-riku.voipio@linaro.orgSigned-off-by: default avatarRiku Voipio <riku.voipio@linaro.org>
      Reviewed-by: default avatarJosh Triplett <josh@joshtriplett.org>
      Cc: Vineet Gupta <vgupta@synopsys.com>
      Cc: Michal Marek <mmarek@suse.cz>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8cde0daf
    • Kees Cook's avatar
      kbuild: abort build on bad stack protector flag · c965b105
      Kees Cook authored
      Before, the stack protector flag was sanity checked before .config had
      been reprocessed.  This meant the build couldn't be aborted early, and
      only a warning could be emitted followed later by the compiler blowing
      up with an unknown flag.  This has caused a lot of confusion over time,
      so this splits the flag selection from sanity checking and performs the
      sanity checking after the make has been restarted from a reprocessed
      .config, so builds can be aborted as early as possible now.
      
      Additionally moves the x86-specific sanity check to the same location,
      since it suffered from the same warn-then-wait-for-compiler-failure
      problem.
      
      Link: http://lkml.kernel.org/r/20160712223043.GA11664@www.outflux.netSigned-off-by: default avatarKees Cook <keescook@chromium.org>
      Cc: Michal Marek <mmarek@suse.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c965b105
    • Arnd Bergmann's avatar
      fbmon: remove unused function argument · 3bd96463
      Arnd Bergmann authored
      When building with "make W=1", we get a warning about an empty stub
      function that does nothing but reassign its one of its arguments:
      
        drivers/video/fbdev/core/fbmon.c: In function 'fb_edid_to_monspecs':
        drivers/video/fbdev/core/fbmon.c:1497:67: error: parameter 'specs' set but not used [-Werror=unused-but-set-parameter]
      
      We can simply make that function completely empty to avoid the warning.
      
      This prevents a warning which everyone will see after "CFLAGS: add
      -Wunused-but-set-parameter" is merged.
      
      Link: http://lkml.kernel.org/r/20160715203229.1771162-1-arnd@arndb.deSigned-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
      Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
      Cc: Alexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3bd96463
    • Stephen Boyd's avatar
      dma-debug: track bucket lock state for static checkers · d5dfc80f
      Stephen Boyd authored
      get_hash_bucket() and put_hash_bucket() acquire and release the same
      spinlock, but this confuses static checkers such as sparse
      
        lib/dma-debug.c:254:27: warning: context imbalance in 'get_hash_bucket' - wrong count at exit
        lib/dma-debug.c:268:13: warning: context imbalance in 'put_hash_bucket' - unexpected unlock
      
      Add the appropriate acquire and release statements so that checkers can
      properly track the lock state.
      
      Link: http://lkml.kernel.org/r/20160701191552.24295-1-sboyd@codeaurora.orgSigned-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d5dfc80f
    • Ross Zwisler's avatar
      dax: remote unused fault wrappers · 6b524995
      Ross Zwisler authored
      Remove the unused wrappers dax_fault() and dax_pmd_fault().  After this
      removal, rename __dax_fault() and __dax_pmd_fault() to dax_fault() and
      dax_pmd_fault() respectively, and update all callers.
      
      The dax_fault() and dax_pmd_fault() wrappers were initially intended to
      capture some filesystem independent functionality around page faults
      (calling sb_start_pagefault() & sb_end_pagefault(), updating file mtime
      and ctime).
      
      However, the following commits:
      
         5726b27b ("ext2: Add locking for DAX faults")
         ea3d7209 ("ext4: fix races between page faults and hole punching")
      
      added locking to the ext2 and ext4 filesystems after these common
      operations but before __dax_fault() and __dax_pmd_fault() were called.
      This means that these wrappers are no longer used, and are unlikely to
      be used in the future.
      
      XFS has had locking analogous to what was recently added to ext2 and
      ext4 since DAX support was initially introduced by:
      
         6b698ede ("xfs: add DAX file operations support")
      
      Link: http://lkml.kernel.org/r/20160714214049.20075-2-ross.zwisler@linux.intel.comSigned-off-by: default avatarRoss Zwisler <ross.zwisler@linux.intel.com>
      Cc: "Theodore Ts'o" <tytso@mit.edu>
      Cc: Alexander Viro <viro@zeniv.linux.org.uk>
      Cc: Andreas Dilger <adilger.kernel@dilger.ca>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Dave Chinner <david@fromorbit.com>
      Reviewed-by: default avatarJan Kara <jack@suse.cz>
      Cc: Jonathan Corbet <corbet@lwn.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6b524995
    • Ross Zwisler's avatar
      dax: some small updates to dax.txt documentation · 221c7dc8
      Ross Zwisler authored
      These are originally from Matthew Wilcox and were part of his huge
      "mm,fs,dax: Change ->pmd_fault to ->huge_fault" patch that was part of
      PUD support.
      
      I'm breaking these small changes out as they stand on their own and add
      useful information to Documentation/filesystems/dax.txt.
      
      Link: http://lkml.kernel.org/r/20160714214049.20075-1-ross.zwisler@linux.intel.comSigned-off-by: default avatarRoss Zwisler <ross.zwisler@linux.intel.com>
      Cc: "Theodore Ts'o" <tytso@mit.edu>
      Cc: Alexander Viro <viro@zeniv.linux.org.uk>
      Cc: Andreas Dilger <adilger.kernel@dilger.ca>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Dave Chinner <david@fromorbit.com>
      Cc: Jan Kara <jack@suse.com>
      Cc: Jonathan Corbet <corbet@lwn.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      221c7dc8
    • Michal Hocko's avatar
      arm: get rid of superfluous __GFP_REPEAT · 397b080b
      Michal Hocko authored
      __GFP_REPEAT has a rather weak semantic but since it has been introduced
      around 2.6.12 it has been ignored for low order allocations.
      
      PGALLOC_GFP uses __GFP_REPEAT but none of the allocation which uses this
      flag is for more than order-2.  This means that this flag has never been
      actually useful here because it has always been used only for
      PAGE_ALLOC_COSTLY requests.
      
      Link: http://lkml.kernel.org/r/1464599699-30131-5-git-send-email-mhocko@kernel.orgSigned-off-by: default avatarMichal Hocko <mhocko@suse.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      397b080b
    • Linus Torvalds's avatar
      Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e6580525
      Linus Torvalds authored
      Pull irq updates from Thomas Gleixner:
       "The irq department delivers:
      
         - new core infrastructure to allow better management of multi-queue
           devices (interrupt spreading, node aware descriptor allocation ...)
      
         - a new interrupt flow handler to support the new fangled Intel VMD
           devices.
      
         - yet another new interrupt controller driver.
      
         - a series of fixes which addresses sparse warnings, missing
           includes, missing static declarations etc from Ben Dooks.
      
         - a fix for the error handling in the hierarchical domain allocation
           code.
      
         - the usual pile of small updates to core and driver code"
      
      * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (46 commits)
        genirq: Fix missing irq allocation affinity hint
        irqdomain: Fix irq_domain_alloc_irqs_recursive() error handling
        irq/Documentation: Correct result of echnoing 5 to smp_affinity
        MAINTAINERS: Remove Jiang Liu from irq domains
        genirq/msi: Fix broken debug output
        genirq: Add a helper to spread an affinity mask for MSI/MSI-X vectors
        genirq/msi: Make use of affinity aware allocations
        genirq: Use affinity hint in irqdesc allocation
        genirq: Add affinity hint to irq allocation
        genirq: Introduce IRQD_AFFINITY_MANAGED flag
        genirq/msi: Remove unused MSI_FLAG_IDENTITY_MAP
        irqchip/s3c24xx: Fixup IO accessors for big endian
        irqchip/exynos-combiner: Fix usage of __raw IO
        irqdomain: Fix disposal of mappings for interrupt hierarchies
        irqchip/aspeed-vic: Add irq controller for Aspeed
        doc/devicetree: Add Aspeed VIC bindings
        x86/PCI/VMD: Use untracked irq handler
        genirq: Add untracked irq handler
        irqchip/mips-gic: Populate irq_domain names
        irqchip/gicv3-its: Implement two-level(indirect) device table support
        ...
      e6580525
    • Linus Torvalds's avatar
      Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 55392c4c
      Linus Torvalds authored
      Pull timer updates from Thomas Gleixner:
       "This update provides the following changes:
      
         - The rework of the timer wheel which addresses the shortcomings of
           the current wheel (cascading, slow search for next expiring timer,
           etc).  That's the first major change of the wheel in almost 20
           years since Finn implemted it.
      
         - A large overhaul of the clocksource drivers init functions to
           consolidate the Device Tree initialization
      
         - Some more Y2038 updates
      
         - A capability fix for timerfd
      
         - Yet another clock chip driver
      
         - The usual pile of updates, comment improvements all over the place"
      
      * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (130 commits)
        tick/nohz: Optimize nohz idle enter
        clockevents: Make clockevents_subsys static
        clocksource/drivers/time-armada-370-xp: Fix return value check
        timers: Implement optimization for same expiry time in mod_timer()
        timers: Split out index calculation
        timers: Only wake softirq if necessary
        timers: Forward the wheel clock whenever possible
        timers/nohz: Remove pointless tick_nohz_kick_tick() function
        timers: Optimize collect_expired_timers() for NOHZ
        timers: Move __run_timers() function
        timers: Remove set_timer_slack() leftovers
        timers: Switch to a non-cascading wheel
        timers: Reduce the CPU index space to 256k
        timers: Give a few structs and members proper names
        hlist: Add hlist_is_singular_node() helper
        signals: Use hrtimer for sigtimedwait()
        timers: Remove the deprecated mod_timer_pinned() API
        timers, net/ipv4/inet: Initialize connection request timers as pinned
        timers, drivers/tty/mips_ejtag: Initialize the poll timer as pinned
        timers, drivers/tty/metag_da: Initialize the poll timer as pinned
        ...
      55392c4c
    • Linus Torvalds's avatar
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · c410614c
      Linus Torvalds authored
      Pull x86 fix from Ingo Molnar:
       "Leftover fix from the v4.7 cycle: adds a reboot quirk"
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/reboot: Add Dell Optiplex 7450 AIO reboot quirk
      c410614c
    • Linus Torvalds's avatar
      Merge branch 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 5f22004b
      Linus Torvalds authored
      Pull x86 timer updates from Ingo Molnar:
       "The main change in this tree is the reworking, fixing and extension of
        the TSC frequency enumeration code (by Len Brown)"
      
      * 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/tsc: Remove the unused check_tsc_disabled()
        x86/tsc: Enumerate BXT tsc_khz via CPUID
        x86/tsc: Enumerate SKL cpu_khz and tsc_khz via CPUID
        x86/tsc_msr: Remove irqoff around MSR-based TSC enumeration
        x86/tsc_msr: Add Airmont reference clock values
        x86/tsc_msr: Correct Silvermont reference clock values
        x86/tsc_msr: Update comments, expand definitions
        x86/tsc_msr: Remove debugging messages
        x86/tsc_msr: Identify Intel-specific code
        Revert "x86/tsc: Add missing Cherrytrail frequency to the table"
      5f22004b
    • Linus Torvalds's avatar
      Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 8e466955
      Linus Torvalds authored
      Pull x86 platform updates from Ingo Molnar:
       "The main changes in this cycle were:
      
         - Intel-SoC enhancements (Andy Shevchenko)
      
         - Intel CPU symbolic model definition rework (Dave Hansen)
      
         - ... other misc changes"
      
      * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (25 commits)
        x86/sfi: Enable enumeration of SD devices
        x86/pci: Use MRFLD abbreviation for Merrifield
        x86/platform/intel-mid: Make vertical indentation consistent
        x86/platform/intel-mid: Mark regulators explicitly defined
        x86/platform/intel-mid: Rename mrfl.c to mrfld.c
        x86/platform/intel-mid: Enable spidev on Intel Edison boards
        x86/platform/intel-mid: Extend PWRMU to support Penwell
        x86/pci, x86/platform/intel_mid_pci: Remove duplicate power off code
        x86/platform/intel-mid: Add pinctrl for Intel Merrifield
        x86/platform/intel-mid: Enable GPIO expanders on Edison
        x86/platform/intel-mid: Add Power Management Unit driver
        x86/platform/atom/punit: Enable support for Merrifield
        x86/platform/intel_mid_pci: Rework IRQ0 workaround
        x86, thermal: Clean up and fix CPU model detection for intel_soc_dts_thermal
        x86, mmc: Use Intel family name macros for mmc driver
        x86/intel_telemetry: Use Intel family name macros for telemetry driver
        x86/acpi/lss: Use Intel family name macros for the acpi_lpss driver
        x86/cpufreq: Use Intel family name macros for the intel_pstate cpufreq driver
        x86/platform: Use new Intel model number macros
        x86/intel_idle: Use Intel family macros for intel_idle
        ...
      8e466955
    • Linus Torvalds's avatar
      Merge branch 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2d724ffd
      Linus Torvalds authored
      Pull x86 fpu updates from Ingo Molnar:
       "The main x86 FPU changes in this cycle were:
      
         - a large series of cleanups, fixes and enhancements to re-enable the
           XSAVES instruction on Intel CPUs - which is the most advanced
           instruction to do FPU context switches (Yu-cheng Yu, Fenghua Yu)
      
         - Add FPU tracepoints for the FPU state machine (Dave Hansen)"
      
      * 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/fpu: Do not BUG_ON() in early FPU code
        x86/fpu/xstate: Re-enable XSAVES
        x86/fpu/xstate: Fix fpstate_init() for XRSTORS
        x86/fpu/xstate: Return NULL for disabled xstate component address
        x86/fpu/xstate: Fix __fpu_restore_sig() for XSAVES
        x86/fpu/xstate: Fix xstate_offsets, xstate_sizes for non-extended xstates
        x86/fpu/xstate: Fix XSTATE component offset print out
        x86/fpu/xstate: Fix PTRACE frames for XSAVES
        x86/fpu/xstate: Fix supervisor xstate component offset
        x86/fpu/xstate: Align xstate components according to CPUID
        x86/fpu/xstate: Copy xstate registers directly to the signal frame when compacted format is in use
        x86/fpu/xstate: Keep init_fpstate.xsave.header.xfeatures as zero for init optimization
        x86/fpu/xstate: Rename 'xstate_size' to 'fpu_kernel_xstate_size', to distinguish it from 'fpu_user_xstate_size'
        x86/fpu/xstate: Define and use 'fpu_user_xstate_size'
        x86/fpu: Add tracepoints to dump FPU state at key points
      2d724ffd
    • Linus Torvalds's avatar
      Merge branch 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 36e635cb
      Linus Torvalds authored
      Pull x86 stackdump update from Ingo Molnar:
       "A number of stackdump enhancements"
      
      * 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/dumpstack: Add show_stack_regs() and use it
        printk: Make the printk*once() variants return a value
        x86/dumpstack: Honor supplied @regs arg
      36e635cb
    • Linus Torvalds's avatar
      Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · c265cc5c
      Linus Torvalds authored
      Pull x86 cleanups from Ingo Molnar:
       "Three small cleanups"
      
      * 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        lguest: Read offset of device_cap later
        lguest: Read length of device_cap later
        x86: Do away with ARCH_[WANT_OPTIONAL|REQUIRE]_GPIOLIB
      c265cc5c
    • Linus Torvalds's avatar
      Merge branch 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 80f09cf5
      Linus Torvalds authored
      Pull x86 build updates from Ingo Molnar:
       "A build system fix and a cleanup"
      
      * 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        kbuild: Remove stale asm-generic wrappers
        kbuild, x86: Track generated headers with generated-y
      80f09cf5
    • Linus Torvalds's avatar
      Merge branch 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 77cd3d0c
      Linus Torvalds authored
      Pull x86 boot updates from Ingo Molnar:
       "The main changes:
      
         - add initial commits to randomize kernel memory section virtual
           addresses, enabled via a new kernel option: RANDOMIZE_MEMORY
           (Thomas Garnier, Kees Cook, Baoquan He, Yinghai Lu)
      
         - enhance KASLR (RANDOMIZE_BASE) physical memory randomization (Kees
           Cook)
      
         - EBDA/BIOS region boot quirk cleanups (Andy Lutomirski, Ingo Molnar)
      
         - misc cleanups/fixes"
      
      * 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/boot: Simplify EBDA-vs-BIOS reservation logic
        x86/boot: Clarify what x86_legacy_features.reserve_bios_regions does
        x86/boot: Reorganize and clean up the BIOS area reservation code
        x86/mm: Do not reference phys addr beyond kernel
        x86/mm: Add memory hotplug support for KASLR memory randomization
        x86/mm: Enable KASLR for vmalloc memory regions
        x86/mm: Enable KASLR for physical mapping memory regions
        x86/mm: Implement ASLR for kernel memory regions
        x86/mm: Separate variable for trampoline PGD
        x86/mm: Add PUD VA support for physical mapping
        x86/mm: Update physical mapping variable names
        x86/mm: Refactor KASLR entropy functions
        x86/KASLR: Fix boot crash with certain memory configurations
        x86/boot/64: Add forgotten end of function marker
        x86/KASLR: Allow randomization below the load address
        x86/KASLR: Extend kernel image physical address randomization to addresses larger than 4G
        x86/KASLR: Randomize virtual address separately
        x86/KASLR: Clarify identity map interface
        x86/boot: Refuse to build with data relocations
        x86/KASLR, x86/power: Remove x86 hibernation restrictions
      77cd3d0c
  2. 25 Jul, 2016 10 commits
    • Linus Torvalds's avatar
      Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 0f657262
      Linus Torvalds authored
      Pull x86 mm updates from Ingo Molnar:
       "Various x86 low level modifications:
      
         - preparatory work to support virtually mapped kernel stacks (Andy
           Lutomirski)
      
         - support for 64-bit __get_user() on 32-bit kernels (Benjamin
           LaHaise)
      
         - (involved) workaround for Knights Landing CPU erratum (Dave Hansen)
      
         - MPX enhancements (Dave Hansen)
      
         - mremap() extension to allow remapping of the special VDSO vma, for
           purposes of user level context save/restore (Dmitry Safonov)
      
         - hweight and entry code cleanups (Borislav Petkov)
      
         - bitops code generation optimizations and cleanups with modern GCC
           (H. Peter Anvin)
      
         - syscall entry code optimizations (Paolo Bonzini)"
      
      * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (43 commits)
        x86/mm/cpa: Add missing comment in populate_pdg()
        x86/mm/cpa: Fix populate_pgd(): Stop trying to deallocate failed PUDs
        x86/syscalls: Add compat_sys_preadv64v2/compat_sys_pwritev64v2
        x86/smp: Remove unnecessary initialization of thread_info::cpu
        x86/smp: Remove stack_smp_processor_id()
        x86/uaccess: Move thread_info::addr_limit to thread_struct
        x86/dumpstack: Rename thread_struct::sig_on_uaccess_error to sig_on_uaccess_err
        x86/uaccess: Move thread_info::uaccess_err and thread_info::sig_on_uaccess_err to thread_struct
        x86/dumpstack: When OOPSing, rewind the stack before do_exit()
        x86/mm/64: In vmalloc_fault(), use CR3 instead of current->active_mm
        x86/dumpstack/64: Handle faults when printing the "Stack: " part of an OOPS
        x86/dumpstack: Try harder to get a call trace on stack overflow
        x86/mm: Remove kernel_unmap_pages_in_pgd() and efi_cleanup_page_tables()
        x86/mm/cpa: In populate_pgd(), don't set the PGD entry until it's populated
        x86/mm/hotplug: Don't remove PGD entries in remove_pagetable()
        x86/mm: Use pte_none() to test for empty PTE
        x86/mm: Disallow running with 32-bit PTEs to work around erratum
        x86/mm: Ignore A/D bits in pte/pmd/pud_none()
        x86/mm: Move swap offset/type up in PTE to work around erratum
        x86/entry: Inline enter_from_user_mode()
        ...
      0f657262
    • Linus Torvalds's avatar
      Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 425dbc6d
      Linus Torvalds authored
      Pull x86/apic updates from Ingo Molnar:
       "Misc cleanups and a small fix"
      
      * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/apic: Remove the unused struct apic::apic_id_mask field
        x86/apic: Fix misspelled APIC
        x86/ioapic: Simplify ioapic_setup_resources()
      425dbc6d
    • Linus Torvalds's avatar
      Merge branch 'timers-nohz-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 766fd5f6
      Linus Torvalds authored
      Pull NOHZ updates from Ingo Molnar:
      
       - fix system/idle cputime leaked on cputime accounting (all nohz
         configs) (Rik van Riel)
      
       - remove the messy, ad-hoc irqtime account on nohz-full and make it
         compatible with CONFIG_IRQ_TIME_ACCOUNTING=y instead (Rik van Riel)
      
       - cleanups (Frederic Weisbecker)
      
       - remove unecessary irq disablement in the irqtime code (Rik van Riel)
      
      * 'timers-nohz-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/cputime: Drop local_irq_save/restore from irqtime_account_irq()
        sched/cputime: Reorganize vtime native irqtime accounting headers
        sched/cputime: Clean up the old vtime gen irqtime accounting completely
        sched/cputime: Replace VTIME_GEN irq time code with IRQ_TIME_ACCOUNTING code
        sched/cputime: Count actually elapsed irq & softirq time
      766fd5f6
    • Linus Torvalds's avatar
      Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · cca08cd6
      Linus Torvalds authored
      Pull scheduler updates from Ingo Molnar:
      
       - introduce and use task_rcu_dereference()/try_get_task_struct() to fix
         and generalize task_struct handling (Oleg Nesterov)
      
       - do various per entity load tracking (PELT) fixes and optimizations
         (Peter Zijlstra)
      
       - cputime virt-steal time accounting enhancements/fixes (Wanpeng Li)
      
       - introduce consolidated cputime output file cpuacct.usage_all and
         related refactorings (Zhao Lei)
      
       - ... plus misc fixes and enhancements
      
      * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/core: Panic on scheduling while atomic bugs if kernel.panic_on_warn is set
        sched/cpuacct: Introduce cpuacct.usage_all to show all CPU stats together
        sched/cpuacct: Use loop to consolidate code in cpuacct_stats_show()
        sched/cpuacct: Merge cpuacct_usage_index and cpuacct_stat_index enums
        sched/fair: Rework throttle_count sync
        sched/core: Fix sched_getaffinity() return value kerneldoc comment
        sched/fair: Reorder cgroup creation code
        sched/fair: Apply more PELT fixes
        sched/fair: Fix PELT integrity for new tasks
        sched/cgroup: Fix cpu_cgroup_fork() handling
        sched/fair: Fix PELT integrity for new groups
        sched/fair: Fix and optimize the fork() path
        sched/cputime: Add steal time support to full dynticks CPU time accounting
        sched/cputime: Fix prev steal time accouting during CPU hotplug
        KVM: Fix steal clock warp during guest CPU hotplug
        sched/debug: Always show 'nr_migrations'
        sched/fair: Use task_rcu_dereference()
        sched/api: Introduce task_rcu_dereference() and try_get_task_struct()
        sched/idle: Optimize the generic idle loop
        sched/fair: Fix the wrong throttled clock time for cfs_rq_clock_task()
      cca08cd6
    • Linus Torvalds's avatar
      Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7e4dc77b
      Linus Torvalds authored
      Pull perf updates from Ingo Molnar:
       "With over 300 commits it's been a busy cycle - with most of the work
        concentrated on the tooling side (as it should).
      
        The main kernel side enhancements were:
      
         - Add per event callchain limit: Recently we introduced a sysctl to
           tune the max-stack for all events for which callchains were
           requested:
      
             $ sysctl kernel.perf_event_max_stack
             kernel.perf_event_max_stack = 127
      
           Now this patch introduces a way to configure this per event, i.e.
           this becomes possible:
      
             $ perf record -e sched:*/max-stack=2/ -e block:*/max-stack=10/ -a
      
           allowing finer tuning of how much buffer space callchains use.
      
           This uses an u16 from the reserved space at the end, leaving
           another u16 for future use.
      
           There has been interest in even finer tuning, namely to control the
           max stack for kernel and userspace callchains separately.  Further
           discussion is needed, we may for instance use the remaining u16 for
           that and when it is present, assume that the sample_max_stack
           introduced in this patch applies for the kernel, and the u16 left
           is used for limiting the userspace callchain (Arnaldo Carvalho de
           Melo)
      
         - Optimize AUX event (hardware assisted side-band event) delivery
           (Kan Liang)
      
         - Rework Intel family name macro usage (this is partially x86 arch
           work) (Dave Hansen)
      
         - Refine and fix Intel LBR support (David Carrillo-Cisneros)
      
         - Add support for Intel 'TopDown' events (Andi Kleen)
      
         - Intel uncore PMU driver fixes and enhancements (Kan Liang)
      
         - ... other misc changes.
      
        Here's an incomplete list of the tooling enhancements (but there's
        much more, see the shortlog and the git log for details):
      
         - Support cross unwinding, i.e.  collecting '--call-graph dwarf'
           perf.data files in one machine and then doing analysis in another
           machine of a different hardware architecture.  This enables, for
           instance, to do:
      
             $ perf record -a --call-graph dwarf
      
           on a x86-32 or aarch64 system and then do 'perf report' on it on a
           x86_64 workstation (He Kuang)
      
         - Allow reading from a backward ring buffer (one setup via
           sys_perf_event_open() with perf_event_attr.write_backward = 1)
           (Wang Nan)
      
         - Finish merging initial SDT (Statically Defined Traces) support, see
           cset comments for details about how it all works (Masami Hiramatsu)
      
         - Support attaching eBPF programs to tracepoints (Wang Nan)
      
         - Add demangling of symbols in programs written in the Rust language
           (David Tolnay)
      
         - Add support for tracepoints in the python binding, including an
           example, that sets up and parses sched:sched_switch events,
           tools/perf/python/tracepoint.py (Jiri Olsa)
      
         - Introduce --stdio-color to set up the color output mode selection
           in 'annotate' and 'report', allowing emit color escape sequences
           when redirecting the output of these tools (Arnaldo Carvalho de
           Melo)
      
         - Add 'callindent' option to 'perf script -F', to indent the Intel PT
           call stack, making this output more ftrace-like (Adrian Hunter,
           Andi Kleen)
      
         - Allow dumping the object files generated by llvm when processing
           eBPF scriptlet events (Wang Nan)
      
         - Add stackcollapse.py script to help generating flame graphs (Paolo
           Bonzini)
      
         - Add --ldlat option to 'perf mem' to specify load latency for loads
           event (e.g. cpu/mem-loads/ ) (Jiri Olsa)
      
         - Tooling support for Intel TopDown counters, recently added to the
           kernel (Andi Kleen)"
      
      * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (303 commits)
        perf tests: Add is_printable_array test
        perf tools: Make is_printable_array global
        perf script python: Fix string vs byte array resolving
        perf probe: Warn unmatched function filter correctly
        perf cpu_map: Add more helpers
        perf stat: Balance opening and reading events
        tools: Copy linux/{hash,poison}.h and check for drift
        perf tools: Remove include/linux/list.h from perf's MANIFEST
        tools: Copy the bitops files accessed from the kernel and check for drift
        Remove: kernel unistd*h files from perf's MANIFEST, not used
        perf tools: Remove tools/perf/util/include/linux/const.h
        perf tools: Remove tools/perf/util/include/asm/byteorder.h
        perf tools: Add missing linux/compiler.h include to perf-sys.h
        perf jit: Remove some no-op error handling
        perf jit: Add missing curly braces
        objtool: Initialize variable to silence old compiler
        objtool: Add -I$(srctree)/tools/arch/$(ARCH)/include/uapi
        perf record: Add --tail-synthesize option
        perf session: Don't warn about out of order event if write_backward is used
        perf tools: Enable overwrite settings
        ...
      7e4dc77b
    • Linus Torvalds's avatar
      Merge branch 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 89e7eb09
      Linus Torvalds authored
      Pull RAS updates from Ingo Molnar:
       "The biggest change in this cycle was an enhancement by Yazen Ghannam
        to reduce the number of MCE error injection related IPIs.
      
        The rest are smaller fixes"
      
      * 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mce: Fix mce_rdmsrl() warning message
        x86/RAS/AMD: Reduce the number of IPIs when prepping error injection
        x86/mce/AMD: Increase size of the bank_map type
        x86/mce: Do not use bank 1 for APEI generated error logs
      89e7eb09
    • Linus Torvalds's avatar
      Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · c86ad14d
      Linus Torvalds authored
      Pull locking updates from Ingo Molnar:
       "The locking tree was busier in this cycle than the usual pattern - a
        couple of major projects happened to coincide.
      
        The main changes are:
      
         - implement the atomic_fetch_{add,sub,and,or,xor}() API natively
           across all SMP architectures (Peter Zijlstra)
      
         - add atomic_fetch_{inc/dec}() as well, using the generic primitives
           (Davidlohr Bueso)
      
         - optimize various aspects of rwsems (Jason Low, Davidlohr Bueso,
           Waiman Long)
      
         - optimize smp_cond_load_acquire() on arm64 and implement LSE based
           atomic{,64}_fetch_{add,sub,and,andnot,or,xor}{,_relaxed,_acquire,_release}()
           on arm64 (Will Deacon)
      
         - introduce smp_acquire__after_ctrl_dep() and fix various barrier
           mis-uses and bugs (Peter Zijlstra)
      
         - after discovering ancient spin_unlock_wait() barrier bugs in its
           implementation and usage, strengthen its semantics and update/fix
           usage sites (Peter Zijlstra)
      
         - optimize mutex_trylock() fastpath (Peter Zijlstra)
      
         - ... misc fixes and cleanups"
      
      * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (67 commits)
        locking/atomic: Introduce inc/dec variants for the atomic_fetch_$op() API
        locking/barriers, arch/arm64: Implement LDXR+WFE based smp_cond_load_acquire()
        locking/static_keys: Fix non static symbol Sparse warning
        locking/qspinlock: Use __this_cpu_dec() instead of full-blown this_cpu_dec()
        locking/atomic, arch/tile: Fix tilepro build
        locking/atomic, arch/m68k: Remove comment
        locking/atomic, arch/arc: Fix build
        locking/Documentation: Clarify limited control-dependency scope
        locking/atomic, arch/rwsem: Employ atomic_long_fetch_add()
        locking/atomic, arch/qrwlock: Employ atomic_fetch_add_acquire()
        locking/atomic, arch/mips: Convert to _relaxed atomics
        locking/atomic, arch/alpha: Convert to _relaxed atomics
        locking/atomic: Remove the deprecated atomic_{set,clear}_mask() functions
        locking/atomic: Remove linux/atomic.h:atomic_fetch_or()
        locking/atomic: Implement atomic{,64,_long}_fetch_{add,sub,and,andnot,or,xor}{,_relaxed,_acquire,_release}()
        locking/atomic: Fix atomic64_relaxed() bits
        locking/atomic, arch/xtensa: Implement atomic_fetch_{add,sub,and,or,xor}()
        locking/atomic, arch/x86: Implement atomic{,64}_fetch_{add,sub,and,or,xor}()
        locking/atomic, arch/tile: Implement atomic{,64}_fetch_{add,sub,and,or,xor}()
        locking/atomic, arch/sparc: Implement atomic{,64}_fetch_{add,sub,and,or,xor}()
        ...
      c86ad14d
    • Linus Torvalds's avatar
      Merge branch 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · a2303849
      Linus Torvalds authored
      Pull EFI updates from Ingo Molnar:
       "The biggest change in this cycle were SGI/UV related changes that
        clean up and fix UV boot quirks and problems.
      
        There's also various smaller cleanups and refinements"
      
      * 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        efi: Reorganize the GUID table to make it easier to read
        x86/efi: Remove the unused efi_get_time() function
        x86/efi: Update efi_thunk() to use the the arch_efi_call_virt*() macros
        x86/uv: Update uv_bios_call() to use efi_call_virt_pointer()
        efi: Convert efi_call_virt() to efi_call_virt_pointer()
        x86/efi: Remove unused variable 'efi'
        efi: Document #define FOO_PROTOCOL_GUID layout
        efibc: Report more information in the error messages
      a2303849
    • Linus Torvalds's avatar
      Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · df00ccca
      Linus Torvalds authored
      Pull RCU updates from Ingo Molnar:
       "The main changes in this cycle were:
      
         - documentation updates
      
         - miscellaneous fixes
      
         - minor reorganization of code
      
         - torture-test updates"
      
      * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (30 commits)
        rcu: Correctly handle sparse possible cpus
        rcu: sysctl: Panic on RCU Stall
        rcu: Fix a typo in a comment
        rcu: Make call_rcu_tasks() tolerate first call with irqs disabled
        rcu: Disable TASKS_RCU for usermode Linux
        rcu: No ordering for rcu_assign_pointer() of NULL
        rcutorture: Fix error return code in rcu_perf_init()
        torture: Inflict default jitter
        rcuperf: Don't treat gp_exp mis-setting as a WARN
        rcutorture: Drop "-soundhw pcspkr" from x86 boot arguments
        rcutorture: Don't specify the cpu type of QEMU on PPC
        rcutorture: Make -soundhw a x86 specific option
        rcutorture: Use vmlinux as the fallback kernel image
        rcutorture/doc: Create initrd using dracut
        torture: Stop onoff task if there is only one cpu
        torture: Add starvation events to error summary
        torture:  Break online and offline functions out of torture_onoff()
        torture: Forgive lengthy trace dumps and preemption
        torture: Remove CONFIG_RCU_TORTURE_TEST_RUNNABLE, simplify code
        torture: Simplify code, eliminate RCU_PERF_TEST_RUNNABLE
        ...
      df00ccca
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-linus-v4.8' of... · dd950695
      Linus Torvalds authored
      Merge tag 'hwmon-for-linus-v4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull hwmon updates from Guenter Roeck:
      
       - New drivers for FTS BMC "Teutates", TI INA3221, and Sensirion SHT3x.
      
       - Added support for Microchip MCP9808 and TI TMP461.
      
       - Cleanup and minor fixes in various drivers.
      
      * tag 'hwmon-for-linus-v4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: (37 commits)
        Documentation: dtb: xgene: Add hwmon dts binding documentation
        hwmon: (ftsteutates) Remove unused including <linux/version.h>
        hwmon: (adt7411) set bit 3 in CFG1 register
        hwmon: Add driver for FTS BMC chip "Teutates"
        hwmon: (sht3x) add humidity heater element control
        hwmon: (jc42) Add support for generic JC-42.4 devicetree binding
        dt/bindings: Add bindings for JC-42.4 compatible temperature sensors
        hwmon: (tmp102) Convert to use regmap, and drop local cache
        hwmon: (tmp102) Rework chip configuration
        hwmon: (tmp102) Improve handling of initial read delay
        hwmon: (lm90) Drop unnecessary else statements
        hwmon: (lm90) Use bool for valid flag
        hwmon: (lm90) Read limit registers only once
        hwmon: (lm90) Simplify read functions
        hwmon: (lm90) Use devm_hwmon_device_register_with_groups
        hwmon: (lm90) Use devm_add_action for cleanup
        hwmon: (lm75) Convert to use regmap
        hwmon: (lm75) Add update_interval attribute
        hwmon: (lm75) Drop lm75_read_value and lm75_write_value
        hwmon: (lm75) Handle cleanup with devm_add_action
        ...
      dd950695