1. 08 10月, 2016 32 次提交
    • V
      mm, compaction: use proper alloc_flags in __compaction_suitable() · 984fdba6
      Vlastimil Babka 提交于
      The __compaction_suitable() function checks the low watermark plus a
      compact_gap() gap to decide if there's enough free memory to perform
      compaction.  This check uses direct compactor's alloc_flags, but that's
      wrong, since these flags are not applicable for freepage isolation.
      
      For example, alloc_flags may indicate access to memory reserves, making
      compaction proceed, and then fail watermark check during the isolation.
      
      A similar problem exists for ALLOC_CMA, which may be part of
      alloc_flags, but not during freepage isolation.  In this case however it
      makes sense to use ALLOC_CMA both in __compaction_suitable() and
      __isolate_free_page(), since there's actually nothing preventing the
      freepage scanner to isolate from CMA pageblocks, with the assumption
      that a page that could be migrated once by compaction can be migrated
      also later by CMA allocation.  Thus we should count pages in CMA
      pageblocks when considering compaction suitability and when isolating
      freepages.
      
      To sum up, this patch should remove some false positives from
      __compaction_suitable(), and allow compaction to proceed when free pages
      required for compaction reside in the CMA pageblocks.
      
      Link: http://lkml.kernel.org/r/20160810091226.6709-10-vbabka@suse.czSigned-off-by: NVlastimil Babka <vbabka@suse.cz>
      Tested-by: NLorenzo Stoakes <lstoakes@gmail.com>
      Cc: Michal Hocko <mhocko@kernel.org>
      Cc: Mel Gorman <mgorman@techsingularity.net>
      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Rik van Riel <riel@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      984fdba6
    • V
      mm, compaction: create compact_gap wrapper · 9861a62c
      Vlastimil Babka 提交于
      Compaction uses a watermark gap of (2UL << order) pages at various
      places and it's not immediately obvious why.  Abstract it through a
      compact_gap() wrapper to create a single place with a thorough
      explanation.
      
      [vbabka@suse.cz: clarify the comment of compact_gap()]
       Link: http://lkml.kernel.org/r/7b6aed1f-fdf8-2063-9ff4-bbe4de712d37@suse.cz
      Link: http://lkml.kernel.org/r/20160810091226.6709-9-vbabka@suse.czSigned-off-by: NVlastimil Babka <vbabka@suse.cz>
      Tested-by: NLorenzo Stoakes <lstoakes@gmail.com>
      Acked-by: NMichal Hocko <mhocko@suse.com>
      Cc: Mel Gorman <mgorman@techsingularity.net>
      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Rik van Riel <riel@redhat.com>
      Signed-off-by: NVlastimil Babka <vbabka@suse.cz>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      9861a62c
    • V
      mm, compaction: use correct watermark when checking compaction success · f2b8228c
      Vlastimil Babka 提交于
      The __compact_finished() function uses low watermark in a check that has
      to pass if the direct compaction is to finish and allocation should
      succeed.  This is too pessimistic, as the allocation will typically use
      min watermark.  It may happen that during compaction, we drop below the
      low watermark (due to parallel activity), but still form the target
      high-order page.  By checking against low watermark, we might needlessly
      continue compaction.
      
      Similarly, __compaction_suitable() uses low watermark in a check whether
      allocation can succeed without compaction.  Again, this is unnecessarily
      pessimistic.
      
      After this patch, these check will use direct compactor's alloc_flags to
      determine the watermark, which is effectively the min watermark.
      
      Link: http://lkml.kernel.org/r/20160810091226.6709-8-vbabka@suse.czSigned-off-by: NVlastimil Babka <vbabka@suse.cz>
      Tested-by: NLorenzo Stoakes <lstoakes@gmail.com>
      Acked-by: NMichal Hocko <mhocko@suse.com>
      Cc: Mel Gorman <mgorman@techsingularity.net>
      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Rik van Riel <riel@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f2b8228c
    • V
      mm, compaction: add the ultimate direct compaction priority · a8e025e5
      Vlastimil Babka 提交于
      During reclaim/compaction loop, it's desirable to get a final answer
      from unsuccessful compaction so we can either fail the allocation or
      invoke the OOM killer.  However, heuristics such as deferred compaction
      or pageblock skip bits can cause compaction to skip parts or whole zones
      and lead to premature OOM's, failures or excessive reclaim/compaction
      retries.
      
      To remedy this, we introduce a new direct compaction priority called
      COMPACT_PRIO_SYNC_FULL, which instructs direct compaction to:
      
       - ignore deferred compaction status for a zone
       - ignore pageblock skip hints
       - ignore cached scanner positions and scan the whole zone
      
      The new priority should get eventually picked up by
      should_compact_retry() and this should improve success rates for costly
      allocations using __GFP_REPEAT, such as hugetlbfs allocations, and
      reduce some corner-case OOM's for non-costly allocations.
      
      Link: http://lkml.kernel.org/r/20160810091226.6709-6-vbabka@suse.cz
      [vbabka@suse.cz: use the MIN_COMPACT_PRIORITY alias]
        Link: http://lkml.kernel.org/r/d443b884-87e7-1c93-8684-3a3a35759fb1@suse.czSigned-off-by: NVlastimil Babka <vbabka@suse.cz>
      Tested-by: NLorenzo Stoakes <lstoakes@gmail.com>
      Acked-by: NMichal Hocko <mhocko@suse.com>
      Cc: Mel Gorman <mgorman@techsingularity.net>
      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Rik van Riel <riel@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a8e025e5
    • V
      mm, compaction: don't recheck watermarks after COMPACT_SUCCESS · 7ceb009a
      Vlastimil Babka 提交于
      Joonsoo has reminded me that in a later patch changing watermark checks
      throughout compaction I forgot to update checks in
      try_to_compact_pages() and compactd_do_work().  Closer inspection
      however shows that they are redundant now in the success case, because
      compact_zone() now reliably reports this with COMPACT_SUCCESS.  So
      effectively the checks just repeat (a subset) of checks that have just
      passed.  So instead of checking watermarks again, just test the return
      value.
      
      Note it's also possible that compaction would declare failure e.g.
      because its find_suitable_fallback() is more strict than simple
      watermark check, and then the watermark check we are removing would then
      still succeed.  After this patch this is not possible and it's arguably
      better, because for long-term fragmentation avoidance we should rather
      try a different zone than allocate with the unsuitable fallback.  If
      compaction of all zones fail and the allocation is important enough, it
      will retry and succeed anyway.
      
      Also remove the stray "bool success" variable from kcompactd_do_work().
      
      Link: http://lkml.kernel.org/r/20160810091226.6709-5-vbabka@suse.czSigned-off-by: NVlastimil Babka <vbabka@suse.cz>
      Reported-by: NJoonsoo Kim <iamjoonsoo.kim@lge.com>
      Tested-by: NLorenzo Stoakes <lstoakes@gmail.com>
      Acked-by: NMichal Hocko <mhocko@kernel.org>
      Cc: Mel Gorman <mgorman@techsingularity.net>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Rik van Riel <riel@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      7ceb009a
    • V
      mm, compaction: rename COMPACT_PARTIAL to COMPACT_SUCCESS · cf378319
      Vlastimil Babka 提交于
      COMPACT_PARTIAL has historically meant that compaction returned after
      doing some work without fully compacting a zone.  It however didn't
      distinguish if compaction terminated because it succeeded in creating
      the requested high-order page.  This has changed recently and now we
      only return COMPACT_PARTIAL when compaction thinks it succeeded, or the
      high-order watermark check in compaction_suitable() passes and no
      compaction needs to be done.
      
      So at this point we can make the return value clearer by renaming it to
      COMPACT_SUCCESS.  The next patch will remove some redundant tests for
      success where compaction just returned COMPACT_SUCCESS.
      
      Link: http://lkml.kernel.org/r/20160810091226.6709-4-vbabka@suse.czSigned-off-by: NVlastimil Babka <vbabka@suse.cz>
      Tested-by: NLorenzo Stoakes <lstoakes@gmail.com>
      Acked-by: NMichal Hocko <mhocko@suse.com>
      Cc: Mel Gorman <mgorman@techsingularity.net>
      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Rik van Riel <riel@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      cf378319
    • V
      mm, compaction: cleanup unused functions · 791cae96
      Vlastimil Babka 提交于
      Since kswapd compaction moved to kcompactd, compact_pgdat() is not
      called anymore, so we remove it.  The only caller of __compact_pgdat()
      is compact_node(), so we merge them and remove code that was only
      reachable from kswapd.
      
      Link: http://lkml.kernel.org/r/20160810091226.6709-3-vbabka@suse.czSigned-off-by: NVlastimil Babka <vbabka@suse.cz>
      Tested-by: NLorenzo Stoakes <lstoakes@gmail.com>
      Acked-by: NMichal Hocko <mhocko@suse.com>
      Cc: Mel Gorman <mgorman@techsingularity.net>
      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Rik van Riel <riel@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      791cae96
    • V
      mm, compaction: make whole_zone flag ignore cached scanner positions · 06ed2998
      Vlastimil Babka 提交于
      Patch series "make direct compaction more deterministic")
      
      This is mostly a followup to Michal's oom detection rework, which
      highlighted the need for direct compaction to provide better feedback in
      reclaim/compaction loop, so that it can reliably recognize when
      compaction cannot make further progress, and allocation should invoke
      OOM killer or fail.  We've discussed this at LSF/MM [1] where I proposed
      expanding the async/sync migration mode used in compaction to more
      general "priorities".  This patchset adds one new priority that just
      overrides all the heuristics and makes compaction fully scan all zones.
      I don't currently think that we need more fine-grained priorities, but
      we'll see.  Other than that there's some smaller fixes and cleanups,
      mainly related to the THP-specific hacks.
      
      I've tested this with stress-highalloc in GFP_KERNEL order-4 and
      THP-like order-9 scenarios.  There's some improvement for compaction
      stats for the order-4, which is likely due to the better watermarks
      handling.  In the previous version I reported mostly noise wrt
      compaction stats, and decreased direct reclaim - now the reclaim is
      without difference.  I believe this is due to the less aggressive
      compaction priority increase in patch 6.
      
      "before" is a mmotm tree prior to 4.7 release plus the first part of the
      series that was sent and merged separately
      
                                          before        after
      order-4:
      
      Compaction stalls                    27216       30759
      Compaction success                   19598       25475
      Compaction failures                   7617        5283
      Page migrate success                370510      464919
      Page migrate failure                 25712       27987
      Compaction pages isolated           849601     1041581
      Compaction migrate scanned       143146541   101084990
      Compaction free scanned          208355124   144863510
      Compaction cost                       1403        1210
      
      order-9:
      
      Compaction stalls                     7311        7401
      Compaction success                    1634        1683
      Compaction failures                   5677        5718
      Page migrate success                194657      183988
      Page migrate failure                  4753        4170
      Compaction pages isolated           498790      456130
      Compaction migrate scanned          565371      524174
      Compaction free scanned            4230296     4250744
      Compaction cost                        215         203
      
      [1] https://lwn.net/Articles/684611/
      
      This patch (of 11):
      
      A recent patch has added whole_zone flag that compaction sets when
      scanning starts from the zone boundary, in order to report that zone has
      been fully scanned in one attempt.  For allocations that want to try
      really hard or cannot fail, we will want to introduce a mode where
      scanning whole zone is guaranteed regardless of the cached positions.
      
      This patch reuses the whole_zone flag in a way that if it's already
      passed true to compaction, the cached scanner positions are ignored.
      Employing this flag during reclaim/compaction loop will be done in the
      next patch.  This patch however converts compaction invoked from
      userspace via procfs to use this flag.  Before this patch, the cached
      positions were first reset to zone boundaries and then read back from
      struct zone, so there was a window where a parallel compaction could
      replace the reset values, making the manual compaction less effective.
      Using the flag instead of performing reset is more robust.
      
      [akpm@linux-foundation.org: coding-style fixes]
      Link: http://lkml.kernel.org/r/20160810091226.6709-2-vbabka@suse.czSigned-off-by: NVlastimil Babka <vbabka@suse.cz>
      Tested-by: NLorenzo Stoakes <lstoakes@gmail.com>
      Acked-by: NMichal Hocko <mhocko@suse.com>
      Cc: Mel Gorman <mgorman@techsingularity.net>
      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Rik van Riel <riel@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      06ed2998
    • M
      mm/oom_kill.c: fix task_will_free_mem() comment · 5870c2e1
      Michal Hocko 提交于
      Attempt to demystify the task_will_free_mem() loop.
      
      Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      5870c2e1
    • V
    • Z
      mm/vmalloc.c: fix align value calculation error · 252e5c6e
      zijun_hu 提交于
      It causes double align requirement for __get_vm_area_node() if parameter
      size is power of 2 and VM_IOREMAP is set in parameter flags, for example
      size=0x10000 -> fls_long(0x10000)=17 -> align=0x20000
      
      get_count_order_long() is implemented and can be used instead of
      fls_long() for fixing the bug, for example size=0x10000 ->
      get_count_order_long(0x10000)=16 -> align=0x10000
      
      [akpm@linux-foundation.org: s/get_order_long()/get_count_order_long()/]
      [zijun_hu@zoho.com: fixes]
       Link: http://lkml.kernel.org/r/57AABC8B.1040409@zoho.com
      [akpm@linux-foundation.org: locate get_count_order_long() next to get_count_order()]
      [akpm@linux-foundation.org: move get_count_order[_long] definitions to pick up fls_long()]
      [zijun_hu@htc.com: move out get_count_order[_long]() from __KERNEL__ scope]
       Link: http://lkml.kernel.org/r/57B2C4CE.80303@zoho.com
      Link: http://lkml.kernel.org/r/fc045ecf-20fa-0722-b3ac-9a6140488fad@zoho.comSigned-off-by: Nzijun_hu <zijun_hu@htc.com>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: Nzijun_hu <zijun_hu@htc.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      252e5c6e
    • V
      mm: oom: deduplicate victim selection code for memcg and global oom · 7c5f64f8
      Vladimir Davydov 提交于
      When selecting an oom victim, we use the same heuristic for both memory
      cgroup and global oom.  The only difference is the scope of tasks to
      select the victim from.  So we could just export an iterator over all
      memcg tasks and keep all oom related logic in oom_kill.c, but instead we
      duplicate pieces of it in memcontrol.c reusing some initially private
      functions of oom_kill.c in order to not duplicate all of it.  That looks
      ugly and error prone, because any modification of select_bad_process
      should also be propagated to mem_cgroup_out_of_memory.
      
      Let's rework this as follows: keep all oom heuristic related code private
      to oom_kill.c and make oom_kill.c use exported memcg functions when it's
      really necessary (like in case of iterating over memcg tasks).
      
      Link: http://lkml.kernel.org/r/1470056933-7505-1-git-send-email-vdavydov@virtuozzo.comSigned-off-by: NVladimir Davydov <vdavydov@virtuozzo.com>
      Acked-by: NJohannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@kernel.org>
      Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      7c5f64f8
    • J
      ocfs2: fix undefined struct variable in inode.h · 48e509ec
      Joseph Qi 提交于
      The extern struct variable ocfs2_inode_cache is not defined. It meant to
      use ocfs2_inode_cachep defined in super.c, I think. Fortunately it is
      not used anywhere now, so no impact actually. Clean it up to fix this
      mistake.
      
      Link: http://lkml.kernel.org/r/57E1E49D.8050503@huawei.comSigned-off-by: NJoseph Qi <joseph.qi@huawei.com>
      Reviewed-by: NEric 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: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      48e509ec
    • B
      fs/ocfs2/dlm: remove deprecated create_singlethread_workqueue() · 055fdcff
      Bhaktipriya Shridhar 提交于
      The workqueue "dlm_worker" queues a single work item &dlm->dispatched_work
      and thus it doesn't require execution ordering.  Hence, alloc_workqueue
      has been used to replace the deprecated create_singlethread_workqueue
      instance.
      
      The WQ_MEM_RECLAIM flag has been set to ensure forward progress under
      memory pressure.
      
      Since there are fixed number of work items, explicit concurrency
      limit is unnecessary here.
      
      Link: http://lkml.kernel.org/r/2b5ad8d6688effe1a9ddb2bc2082d26fbbe00302.1472590094.git.bhaktipriya96@gmail.comSigned-off-by: NBhaktipriya Shridhar <bhaktipriya96@gmail.com>
      Acked-by: NTejun Heo <tj@kernel.org>
      Cc: Mark Fasheh <mfasheh@suse.de>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Junxiao Bi <junxiao.bi@oracle.com>
      Cc: Joseph Qi <joseph.qi@huawei.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      055fdcff
    • B
      fs/ocfs2/super: remove deprecated create_singlethread_workqueue() · 44be9756
      Bhaktipriya Shridhar 提交于
      The workqueue "ocfs2_wq" queues multiple work items viz
      &osb->la_enable_wq, &journal->j_recovery_work, &os->os_orphan_scan_work,
      &osb->osb_truncate_log_wq which require strict execution ordering.  Hence,
      an ordered dedicated workqueue has been used.
      
      WQ_MEM_RECLAIM has been set to ensure forward progress under memory
      pressure because the workqueue is being used on a memory reclaim path.
      
      Link: http://lkml.kernel.org/r/66279de510a7f4cfc6e386d99b7e04b3f65fb11b.1472590094.git.bhaktipriya96@gmail.comSigned-off-by: NBhaktipriya Shridhar <bhaktipriya96@gmail.com>
      Acked-by: NTejun Heo <tj@kernel.org>
      Cc: Mark Fasheh <mfasheh@suse.de>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Junxiao Bi <junxiao.bi@oracle.com>
      Cc: Joseph Qi <joseph.qi@huawei.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      44be9756
    • B
      fs/ocfs2/cluster: remove deprecated create_singlethread_workqueue() · bf940776
      Bhaktipriya Shridhar 提交于
      The workqueue "o2net_wq" queues multiple work items viz
      &old_sc->sc_shutdown_work, &sc->sc_rx_work, &sc->sc_connect_work which
      require strict execution ordering.  Hence, an ordered dedicated
      workqueue has been used.
      
      WQ_MEM_RECLAIM has been set to ensure forward progress under memory
      pressure.
      
      Link: http://lkml.kernel.org/r/ddc12e5766c79ba26f8a00d98049107f8a1d4866.1472590094.git.bhaktipriya96@gmail.comSigned-off-by: NBhaktipriya Shridhar <bhaktipriya96@gmail.com>
      Acked-by: NTejun Heo <tj@kernel.org>
      Cc: Mark Fasheh <mfasheh@suse.de>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Junxiao Bi <junxiao.bi@oracle.com>
      Cc: Joseph Qi <joseph.qi@huawei.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      bf940776
    • B
      fs/ocfs2/dlmfs: remove deprecated create_singlethread_workqueue() · 0b41be07
      Bhaktipriya Shridhar 提交于
      The workqueue "user_dlm_worker" queues a single work item
      &lockres->l_work per user_lock_res instance and so it doesn't require
      execution ordering.  Hence, alloc_workqueue has been used to replace the
      deprecated create_singlethread_workqueue instance.
      
      The WQ_MEM_RECLAIM flag has been set to ensure forward progress under
      memory pressure.
      
      Since there are fixed number of work items, explicit concurrency
      limit is unnecessary here.
      
      Link: http://lkml.kernel.org/r/9748136d3a3b18138ad1d6ba708367aa1fe9f98c.1472590094.git.bhaktipriya96@gmail.comSigned-off-by: NBhaktipriya Shridhar <bhaktipriya96@gmail.com>
      Acked-by: NTejun Heo <tj@kernel.org>
      Cc: Mark Fasheh <mfasheh@suse.de>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Junxiao Bi <junxiao.bi@oracle.com>
      Cc: Joseph Qi <joseph.qi@huawei.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0b41be07
    • J
      jiffies: add time comparison functions for 64 bit jiffies · 3740dcdf
      Jason A. Donenfeld 提交于
      Though the time_before and time_after family of functions were nicely
      extended to support jiffies64, so that the interface would be consistent,
      it was forgotten to also extend the before/after jiffies functions to
      support jiffies64.  This commit brings the interface to parity between
      jiffies and jiffies64, which is quite convenient.
      
      Link: http://lkml.kernel.org/r/20160929033319.12188-1-Jason@zx2c4.comSigned-off-by: NJason A. Donenfeld <Jason@zx2c4.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: John Stultz <john.stultz@linaro.org
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      3740dcdf
    • J
      fsnotify: clean up spinlock assertions · ed272640
      Jan Kara 提交于
      Use assert_spin_locked() macro instead of hand-made BUG_ON statements.
      
      Link: http://lkml.kernel.org/r/1474537439-18919-1-git-send-email-jack@suse.czSigned-off-by: NJan Kara <jack@suse.cz>
      Suggested-by: NHeiner Kallweit <hkallweit1@gmail.com>
      Reviewed-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      ed272640
    • J
      fanotify: fix possible false warning when freeing events · 0b1b8652
      Jan Kara 提交于
      When freeing permission events by fsnotify_destroy_event(), the warning
      WARN_ON(!list_empty(&event->list)); may falsely hit.
      
      This is because although fanotify_get_response() saw event->response
      set, there is nothing to make sure the current CPU also sees the removal
      of the event from the list.  Add proper locking around the WARN_ON() to
      avoid the false warning.
      
      Link: http://lkml.kernel.org/r/1473797711-14111-7-git-send-email-jack@suse.czReported-by: NMiklos Szeredi <mszeredi@redhat.com>
      Signed-off-by: NJan Kara <jack@suse.cz>
      Reviewed-by: NLino Sanfilippo <LinoSanfilippo@gmx.de>
      Cc: Eric Paris <eparis@redhat.com>
      Cc: Al Viro <viro@ZenIV.linux.org.uk>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0b1b8652
    • J
      fanotify: use notification_lock instead of access_lock · 073f6552
      Jan Kara 提交于
      Fanotify code has its own lock (access_lock) to protect a list of events
      waiting for a response from userspace.
      
      However this is somewhat awkward as the same list_head in the event is
      protected by notification_lock if it is part of the notification queue
      and by access_lock if it is part of the fanotify private queue which
      makes it difficult for any reliable checks in the generic code.  So make
      fanotify use the same lock - notification_lock - for protecting its
      private event list.
      
      Link: http://lkml.kernel.org/r/1473797711-14111-6-git-send-email-jack@suse.czSigned-off-by: NJan Kara <jack@suse.cz>
      Reviewed-by: NLino Sanfilippo <LinoSanfilippo@gmx.de>
      Cc: Miklos Szeredi <mszeredi@redhat.com>
      Cc: Eric Paris <eparis@redhat.com>
      Cc: Al Viro <viro@ZenIV.linux.org.uk>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      073f6552
    • J
      fsnotify: convert notification_mutex to a spinlock · c21dbe20
      Jan Kara 提交于
      notification_mutex is used to protect the list of pending events.  As such
      there's no reason to use a sleeping lock for it.  Convert it to a
      spinlock.
      
      [jack@suse.cz: fixed version]
        Link: http://lkml.kernel.org/r/1474031567-1831-1-git-send-email-jack@suse.cz
      Link: http://lkml.kernel.org/r/1473797711-14111-5-git-send-email-jack@suse.czSigned-off-by: NJan Kara <jack@suse.cz>
      Reviewed-by: NLino Sanfilippo <LinoSanfilippo@gmx.de>
      Tested-by: NGuenter Roeck <linux@roeck-us.net>
      Cc: Miklos Szeredi <mszeredi@redhat.com>
      Cc: Eric Paris <eparis@redhat.com>
      Cc: Al Viro <viro@ZenIV.linux.org.uk>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      c21dbe20
    • J
      fsnotify: drop notification_mutex before destroying event · 1404ff3c
      Jan Kara 提交于
      fsnotify_flush_notify() and fanotify_release() destroy notification
      event while holding notification_mutex.
      
      The destruction of fanotify event includes a path_put() call which may
      end up calling into a filesystem to delete an inode if we happen to be
      the last holders of dentry reference which happens to be the last holder
      of inode reference.
      
      That in turn may violate lock ordering for some filesystems since
      notification_mutex is also acquired e. g. during write when generating
      fanotify event.
      
      Also this is the only thing that forces notification_mutex to be a
      sleeping lock.  So drop notification_mutex before destroying a
      notification event.
      
      Link: http://lkml.kernel.org/r/1473797711-14111-4-git-send-email-jack@suse.czSigned-off-by: NJan Kara <jack@suse.cz>
      Cc: Miklos Szeredi <mszeredi@redhat.com>
      Cc: Lino Sanfilippo <LinoSanfilippo@gmx.de>
      Cc: Eric Paris <eparis@redhat.com>
      Cc: Al Viro <viro@ZenIV.linux.org.uk>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      1404ff3c
    • L
      Merge branch 'i2c/for-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · 87840a2b
      Linus Torvalds 提交于
      Pull i2c updates from Wolfram Sang:
       "Here is the 4.9 pull request from I2C including:
      
         - centralized error messages when registering to the core
         - improved lockdep annotations to prevent false positives
         - DT support for muxes, gates, and arbitrators
         - bus speeds can now be obtained from ACPI
         - i2c-octeon got refactored and now supports ThunderX SoCs, too
         - i2c-tegra and i2c-designware got a bigger bunch of updates
         - a couple of standard driver fixes and improvements"
      
      * 'i2c/for-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (71 commits)
        i2c: axxia: disable clks in case of failure in probe
        i2c: octeon: thunderx: Limit register access retries
        i2c: uniphier-f: fix misdetection of incomplete STOP condition
        gpio: pca953x: variable 'id' was used twice
        i2c: i801: Add support for Kaby Lake PCH-H
        gpio: pca953x: fix an incorrect lockdep warning
        i2c: add a warning to i2c_adapter_depth()
        lockdep: make MAX_LOCKDEP_SUBCLASSES unconditionally visible
        i2c: export i2c_adapter_depth()
        i2c: rk3x: Fix variable 'min_total_ns' unused warning
        i2c: rk3x: Fix sparse warning
        i2c / ACPI: Do not touch an I2C device if it belongs to another adapter
        i2c: octeon: Fix high-level controller status check
        i2c: octeon: Avoid sending STOP during recovery
        i2c: octeon: Fix set SCL recovery function
        i2c: rcar: add support for r8a7796 (R-Car M3-W)
        i2c: imx: make bus recovery through pinctrl optional
        i2c: meson: add gxbb compatible string
        i2c: uniphier-f: set the adapter to master mode when probing
        i2c: uniphier-f: avoid WARN_ON() of clk_disable() in failure path
        ...
      87840a2b
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial · 2ab704a4
      Linus Torvalds 提交于
      Pull trivial updates from Jiri Kosina:
       "The usual rocket science from the trivial tree"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial:
        tracing/syscalls: fix multiline in error message text
        lib/Kconfig.debug: fix DEBUG_SECTION_MISMATCH description
        doc: vfs: fix fadvise() sycall name
        x86/entry: spell EBX register correctly in documentation
        securityfs: fix securityfs_create_dir comment
        irq: Fix typo in tracepoint.xml
      2ab704a4
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching · ddc4e6d2
      Linus Torvalds 提交于
      Pull livepatching updates from Jiri Kosina:
      
       - fix for patching modules that contain .altinstructions or
         .parainstructions sections, from Jessica Yu
      
       - make TAINT_LIVEPATCH a per-module flag (so that it's immediately
         clear which module caused the taint), from Josh Poimboeuf
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching:
        livepatch/module: make TAINT_LIVEPATCH module-specific
        Documentation: livepatch: add section about arch-specific code
        livepatch/x86: apply alternatives and paravirt patches after relocations
        livepatch: use arch_klp_init_object_loaded() to finish arch-specific tasks
      ddc4e6d2
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid · bc75450c
      Linus Torvalds 提交于
      Pull HID updates from Jiri Kosina:
      
       - Integrated Sensor Hub support (Cherrytrail+) from Srinivas Pandruvada
      
       - Big cleanup of Wacom driver; namely it's now using devres, and the
         standardized LED API so that libinput doesn't need to have root
         access any more, with substantial amount of other cleanups
         piggy-backing on top. All this from Benjamin Tissoires
      
       - Report descriptor parsing would now ignore and out-of-range System
         controls in case of the application actually being System Control.
         This fixes quite some issues with several devices, and allows us to
         remove a few ->report_fixup callbacks. From Benjamin Tissoires
      
       - ... a lot of other assorted small fixes and device ID additions
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: (76 commits)
        HID: add missing \n to end of dev_warn messages
        HID: alps: fix multitouch cursor issue
        HID: hid-logitech: Documentation updates/corrections
        HID: hid-logitech: Improve Wingman Formula Force GP support
        HID: hid-logitech: Rewrite of descriptor for all DF wheels
        HID: hid-logitech: Compute combined pedals value
        HID: hid-logitech: Add combined pedal support Logitech wheels
        HID: hid-logitech: Introduce control for combined pedals feature
        HID: sony: Update copyright and add Dualshock 4 rate control note
        HID: sony: Defer the initial USB Sixaxis output report
        HID: sony: Relax duplicate checking for USB-only devices
        Revert "HID: microsoft: fix invalid rdesc for 3k kbd"
        HID: alps: fix error return code in alps_input_configured()
        HID: alps: fix stick device not working after resume
        HID: support for keyboard - Corsair STRAFE
        HID: alps: Fix memory leak
        HID: uclogic: Add support for UC-Logic TWHA60 v3
        HID: uclogic: Override constant descriptors
        HID: uclogic: Support UGTizer GP0610 partially
        HID: uclogic: Add support for several more tablets
        ...
      bc75450c
    • L
      Merge tag 'pci-v4.9-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci · e6e3d8f8
      Linus Torvalds 提交于
      Pull PCI updates from Bjorn Helgaas:
       "Summary of PCI changes for the v4.9 merge window:
      
        Enumeration:
         - microblaze: Add multidomain support for procfs (Bharat Kumar Gogada)
      
        Resource management:
         - Ignore requested alignment for PROBE_ONLY and fixed resources (Yongji Xie)
         - Ignore requested alignment for VF BARs (Yongji Xie)
      
        PCI device hotplug:
         - Make core explicitly non-modular (Paul Gortmaker)
      
        PCIe native device hotplug:
         - Rename pcie_isr() locals for clarity (Bjorn Helgaas)
         - Return IRQ_NONE when we can't read interrupt status (Bjorn Helgaas)
         - Remove unnecessary guard (Bjorn Helgaas)
         - Clean up dmesg "Slot(%s)" messages (Bjorn Helgaas)
         - Remove useless pciehp_get_latch_status() calls (Bjorn Helgaas)
         - Clear attention LED on device add (Keith Busch)
         - Allow exclusive userspace control of indicators (Keith Busch)
         - Process all hotplug events before looking for new ones (Mayurkumar Patel)
         - Don't re-read Slot Status when queuing hotplug event (Mayurkumar Patel)
         - Don't re-read Slot Status when handling surprise event (Mayurkumar Patel)
         - Make explicitly non-modular (Paul Gortmaker)
      
        Power management:
         - Afford direct-complete to devices with non-standard PM (Lukas Wunner)
         - Query platform firmware for device power state (Lukas Wunner)
         - Recognize D3cold in pci_update_current_state() (Lukas Wunner)
         - Avoid unnecessary resume after direct-complete (Lukas Wunner)
         - Make explicitly non-modular (Paul Gortmaker)
      
        Virtualization:
         - Mark Atheros AR9580 to avoid bus reset (Maik Broemme)
         - Check for pci_setup_device() failure in pci_iov_add_virtfn() (Po Liu)
      
        MSI:
         - Enable PCI_MSI_IRQ_DOMAIN support for ARC (Joao Pinto)
      
        AER:
         - Remove aerdriver.nosourceid kernel parameter (Bjorn Helgaas)
         - Remove aerdriver.forceload kernel parameter (Bjorn Helgaas)
         - Fix aer_probe() kernel-doc comment (Cao jin)
         - Add bus flag to skip source ID matching (Jon Derrick)
         - Avoid memory allocation in interrupt handling path (Jon Derrick)
         - Cache capability position (Keith Busch)
         - Make explicitly non-modular (Paul Gortmaker)
         - Remove duplicate AER severity translation (Tyler Baicar)
         - Send correct severity to calculate AER severity (Tyler Baicar)
      
        Precision Time Measurement:
         - Add Precision Time Measurement (PTM) support (Jonathan Yong)
         - Add PTM clock granularity information (Bjorn Helgaas)
         - Add pci_enable_ptm() for drivers to enable PTM on endpoints (Bjorn Helgaas)
      
        Generic host bridge driver:
         - Fix pci_remap_iospace() failure path (Lorenzo Pieralisi)
         - Make explicitly non-modular (Paul Gortmaker)
      
        Altera host bridge driver:
         - Remove redundant platform_get_resource() return value check (Bjorn Helgaas)
         - Poll for link training status after retraining the link (Ley Foon Tan)
         - Rework config accessors for use without a struct pci_bus (Ley Foon Tan)
         - Move retrain from fixup to altera_pcie_host_init() (Ley Foon Tan)
         - Make MSI explicitly non-modular (Paul Gortmaker)
         - Make explicitly non-modular (Paul Gortmaker)
         - Relax device number checking to allow SR-IOV (Po Liu)
      
        ARM Versatile host bridge driver:
         - Fix pci_remap_iospace() failure path (Lorenzo Pieralisi)
      
        Axis ARTPEC-6 host bridge driver:
         - Drop __init from artpec6_add_pcie_port() (Niklas Cassel)
      
        Freescale i.MX6 host bridge driver:
         - Make explicitly non-modular (Paul Gortmaker)
      
        Intel VMD host bridge driver:
         - Add quirk for AER to ignore source ID (Jon Derrick)
         - Allocate IRQ lists with correct MSI-X count (Jon Derrick)
         - Convert to use pci_alloc_irq_vectors() API (Jon Derrick)
         - Eliminate vmd_vector member from list type (Jon Derrick)
         - Eliminate index member from IRQ list (Jon Derrick)
         - Synchronize with RCU freeing MSI IRQ descs (Keith Busch)
         - Request userspace control of PCIe hotplug indicators (Keith Busch)
         - Move VMD driver to drivers/pci/host (Keith Busch)
      
        Marvell Aardvark host bridge driver:
         - Fix pci_remap_iospace() failure path (Lorenzo Pieralisi)
         - Remove redundant dev_err call in advk_pcie_probe() (Wei Yongjun)
      
        Microsoft Hyper-V host bridge driver:
         - Use zero-length array in struct pci_packet (Dexuan Cui)
         - Use pci_function_description[0] in struct definitions (Dexuan Cui)
         - Remove the unused 'wrk' in struct hv_pcibus_device (Dexuan Cui)
         - Handle vmbus_sendpacket() failure in hv_compose_msi_msg() (Dexuan Cui)
         - Handle hv_pci_generic_compl() error case (Dexuan Cui)
         - Use list_move_tail() instead of list_del() + list_add_tail() (Wei Yongjun)
      
        NVIDIA Tegra host bridge driver:
         - Fix pci_remap_iospace() failure path (Lorenzo Pieralisi)
         - Remove redundant _data suffix (Thierry Reding)
         - Use of_device_get_match_data() (Thierry Reding)
      
        Qualcomm host bridge driver:
         - Make explicitly non-modular (Paul Gortmaker)
      
        Renesas R-Car host bridge driver:
         - Consolidate register space lookup and ioremap (Bjorn Helgaas)
         - Don't disable/unprepare clocks on prepare/enable failure (Geert Uytterhoeven)
         - Add multi-MSI support (Grigory Kletsko)
         - Fix pci_remap_iospace() failure path (Lorenzo Pieralisi)
         - Fix some checkpatch warnings (Sergei Shtylyov)
         - Try increasing PCIe link speed to 5 GT/s at boot (Sergei Shtylyov)
      
        Rockchip host bridge driver:
         - Add DT bindings for Rockchip PCIe controller (Shawn Lin)
         - Add Rockchip PCIe controller support (Shawn Lin)
         - Improve the deassert sequence of four reset pins (Shawn Lin)
         - Fix wrong transmitted FTS count (Shawn Lin)
         - Increase the Max Credit update interval (Rajat Jain)
      
        Samsung Exynos host bridge driver:
         - Make explicitly non-modular (Paul Gortmaker)
      
        ST Microelectronics SPEAr13xx host bridge driver:
         - Make explicitly non-modular (Paul Gortmaker)
      
        Synopsys DesignWare host bridge driver:
         - Return data directly from dw_pcie_readl_rc() (Bjorn Helgaas)
         - Exchange viewport of `MEMORYs' and `CFGs/IOs' (Dong Bo)
         - Check LTSSM training bit before deciding link is up (Jisheng Zhang)
         - Move link wait definitions to .c file (Joao Pinto)
         - Wait for iATU enable (Joao Pinto)
         - Add iATU Unroll feature (Joao Pinto)
         - Fix pci_remap_iospace() failure path (Lorenzo Pieralisi)
         - Make explicitly non-modular (Paul Gortmaker)
         - Relax device number checking to allow SR-IOV (Po Liu)
         - Keep viewport fixed for IO transaction if num_viewport > 2 (Pratyush Anand)
         - Remove redundant platform_get_resource() return value check (Wei Yongjun)
      
        TI DRA7xx host bridge driver:
         - Make explicitly non-modular (Paul Gortmaker)
      
        TI Keystone host bridge driver:
         - Propagate request_irq() failure (Wei Yongjun)
      
        Xilinx AXI host bridge driver:
         - Keep both legacy and MSI interrupt domain references (Bharat Kumar Gogada)
         - Clear interrupt register for invalid interrupt (Bharat Kumar Gogada)
         - Clear correct MSI set bit (Bharat Kumar Gogada)
         - Dispose of MSI virtual IRQ (Bharat Kumar Gogada)
         - Make explicitly non-modular (Paul Gortmaker)
         - Relax device number checking to allow SR-IOV (Po Liu)
      
        Xilinx NWL host bridge driver:
         - Expand error logging (Bharat Kumar Gogada)
         - Enable all MSI interrupts using MSI mask (Bharat Kumar Gogada)
         - Make explicitly non-modular (Paul Gortmaker)
      
        Miscellaneous:
         - Drop CONFIG_KEXEC_CORE ifdeffery (Lukas Wunner)
         - portdrv: Make explicitly non-modular (Paul Gortmaker)
         - Make DPC explicitly non-modular (Paul Gortmaker)"
      
      * tag 'pci-v4.9-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (105 commits)
        x86/PCI: VMD: Move VMD driver to drivers/pci/host
        PCI: rockchip: Fix wrong transmitted FTS count
        PCI: rockchip: Improve the deassert sequence of four reset pins
        PCI: rockchip: Increase the Max Credit update interval
        PCI: rcar: Try increasing PCIe link speed to 5 GT/s at boot
        PCI/AER: Fix aer_probe() kernel-doc comment
        PCI: Ignore requested alignment for VF BARs
        PCI: Ignore requested alignment for PROBE_ONLY and fixed resources
        PCI: Avoid unnecessary resume after direct-complete
        PCI: Recognize D3cold in pci_update_current_state()
        PCI: Query platform firmware for device power state
        PCI: Afford direct-complete to devices with non-standard PM
        PCI/AER: Cache capability position
        PCI/AER: Avoid memory allocation in interrupt handling path
        x86/PCI: VMD: Request userspace control of PCIe hotplug indicators
        PCI: pciehp: Allow exclusive userspace control of indicators
        ACPI / APEI: Send correct severity to calculate AER severity
        PCI/AER: Remove duplicate AER severity translation
        x86/PCI: VMD: Synchronize with RCU freeing MSI IRQ descs
        x86/PCI: VMD: Eliminate index member from IRQ list
        ...
      e6e3d8f8
    • L
      Merge tag 'vfio-v4.9-rc1' of git://github.com/awilliam/linux-vfio · fbbea389
      Linus Torvalds 提交于
      Pull VFIO updates from Alex Williamson:
       - comment fixes (Wei Jiangang)
       - static symbols (Baoyou Xie)
       - FLR virtualization (Alex Williamson)
       - catching INTx enabling after MSI/X teardown (Alex Williamson)
       - update to pci_alloc_irq_vectors helpers (Christoph Hellwig)
      
      * tag 'vfio-v4.9-rc1' of git://github.com/awilliam/linux-vfio:
        vfio_pci: use pci_alloc_irq_vectors
        vfio-pci: Disable INTx after MSI/X teardown
        vfio-pci: Virtualize PCIe & AF FLR
        vfio: platform: mark symbols static where possible
        vfio/pci: Fix typos in comments
      fbbea389
    • L
      Merge tag 'md/4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md · c23112e0
      Linus Torvalds 提交于
      Pull MD updates from Shaohua Li:
       "This update includes:
      
         - new AVX512 instruction based raid6 gen/recovery algorithm
      
         - a couple of md-cluster related bug fixes
      
         - fix a potential deadlock
      
         - set nonrotational bit for raid array with SSD
      
         - set correct max_hw_sectors for raid5/6, which hopefuly can improve
           performance a little bit
      
         - other minor fixes"
      
      * tag 'md/4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md:
        md: set rotational bit
        raid6/test/test.c: bug fix: Specify aligned(alignment) attributes to the char arrays
        raid5: handle register_shrinker failure
        raid5: fix to detect failure of register_shrinker
        md: fix a potential deadlock
        md/bitmap: fix wrong cleanup
        raid5: allow arbitrary max_hw_sectors
        lib/raid6: Add AVX512 optimized xor_syndrome functions
        lib/raid6/test/Makefile: Add avx512 gen_syndrome and recovery functions
        lib/raid6: Add AVX512 optimized recovery functions
        lib/raid6: Add AVX512 optimized gen_syndrome functions
        md-cluster: make resync lock also could be interruptted
        md-cluster: introduce dlm_lock_sync_interruptible to fix tasks hang
        md-cluster: convert the completion to wait queue
        md-cluster: protect md_find_rdev_nr_rcu with rcu lock
        md-cluster: clean related infos of cluster
        md: changes for MD_STILL_CLOSED flag
        md-cluster: remove some unnecessary dlm_unlock_sync
        md-cluster: use FORCEUNLOCK in lockres_free
        md-cluster: call md_kick_rdev_from_array once ack failed
      c23112e0
    • L
      Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · 4dfddf50
      Linus Torvalds 提交于
      Pull SCSI updates from James Bottomley:
       "This update includes the usual round of major driver updates (hpsa,
        be2iscsi, hisi_sas, zfcp, cxlflash). There's a new incarnation of hpsa
        called smartpqi for which a driver is added, there's some cleanup work
        of the ibm vscsi target and updates to libfc, plus a whole host of
        minor fixes and updates and finally the removal of several ISA drivers
        which seem not to have been used for years"
      
      * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (173 commits)
        scsi: mvsas: Mark symbols static where possible
        scsi: pm8001: Mark symbols static where possible
        scsi: arcmsr: Simplify user_len checking
        scsi: fcoe: fix off by one in eth2fc_speed()
        scsi: dtc: remove from tree
        scsi: t128: remove from tree
        scsi: pas16: remove from tree
        scsi: u14-34f: remove from tree
        scsi: ultrastor: remove from tree
        scsi: in2000: remove from tree
        scsi: wd7000: remove from tree
        scsi: scsi_dh_alua: Fix memory leak in alua_rtpg()
        scsi: lpfc: Mark symbols static where possible
        scsi: hpsa: correct call to hpsa_do_reset
        scsi: ufs: Get a TM service response from the correct offset
        scsi: ibmvfc: Fix I/O hang when port is not mapped
        scsi: megaraid_sas: clean function declarations in megaraid_sas_base.c up
        scsi: ipr: Remove redundant messages at adapter init time
        scsi: ipr: Don't log unnecessary 9084 error details
        scsi: smartpqi: raid bypass lba calculation fix
        ...
      4dfddf50
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · d4e65476
      Linus Torvalds 提交于
      Pull input subsystem updates from Dmitry Torokhov:
       "You will get
      
         - a new driver for Elan eKTF2127 touchscreen controllers
      
         - a new "gpio-decoder" driver to read and report state of several
           GPIO lines
      
         - an ADC resistor ladder driver
      
         - the ft6326 driver is removed because edt-ft5x06 handles the same
           devices just fine.
      
        .. plus the regular slew of driver fixes/enhancements"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (26 commits)
        Input: elan_i2c - fix return tests of i2c_smbus_read_block_data()
        Input: ektf2127 - mark PM functions as __maybe_unused
        Input: snvs_pwrkey - drop input_free_device call if input_register_device fails
        Input: add support for Elan eKTF2127 touchscreen controller
        Input: serio - add hangup support
        Input: tps65218-pwrbutton - add support for tps65217 variant
        Input: jornada720_ts - get rid of mach/irqs.h and mach/hardware.h includes
        Input: jornada720_kbd - remove unneeded mach/hardware.h include
        Input: focaltech - mark focaltech_set_resolution() static
        Input: wdt87xx_i2c - fix the flash erase issue
        Input: gpio-keys-polled - don't use unit-address with button nodes
        Input: add generic input driver to read encoded GPIO lines
        Input: add ADC resistor ladder driver
        Input: pegasus_notetaker - directly include workqueue header
        Input: elants_i2c - get product id on recovery mode for FW update
        Input: wm97xx - remove deprecated create_singletheread_workqueue
        Input: mc13783_ts - remove deprecated create_singletheread_workqueue
        Input: psmouse - remove deprecated create_singletheread_workqueue
        Input: jornada720_kbd - switch to using dev_dbg
        Input: jornada720_kbd - get rid of mach/irqs.h include
        ...
      d4e65476
  2. 07 10月, 2016 8 次提交
    • L
      Merge tag 'mfd-for-linus-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd · d0423808
      Linus Torvalds 提交于
      Pull MFD updates from Lee Jones:
       "Core framework:
         - Add the MFD bindings doc to MAINTAINERS
      
        New drivers:
         - X-Powers AC100 Audio CODEC and RTC
         - TI LP873x PMIC
         - Rockchip RK808 PMIC
         - Samsung Exynos Low Power Audio
      
        New device support:
         - Add support for STMPE1600 variant to stmpe
         - Add support for PM8018 PMIC to pm8921-core
         - Add support for AXP806 PMIC in axp20x
         - Add support for AXP209 GPIO in axp20x
      
        New functionality:
         - Add support for Reset to all STMPE variants
         - Add support for MKBP event support to cros_ec
         - Add support for USB to intel_soc_pmic_bxtwc
         - Add support for IRQs and Power Button to tps65217
      
        Fix-ups:
         - Clean-up defunct author emails (da9063, max14577)
         - Kconfig fixups (wm8350-i2c, as37220
         - Constify (altera-a10sr, sm501)
         - Supply PCI IDs (intel-lpss-pci)
         - Improve clocking (qcom_rpm)
         - Fix IRQ probing (ucb1x00-core)
         - Ensure fault log is cleared (da9052)
         - Remove NO_IRQ check (ucb1x00-core)
         - Supply I2C properties (intel-lpss-acpi, intel-lpss-pci)
         - Non standard declaration (tps65217, max8997-irq)
         - Remove unused code (lp873x, db8500-prcmu, ab8500-debugfs,
           cros_ec_spi)
         - Make non-modular (altera-a10sr, intel_msic, smsc-ece1099,
           sun6i-prcm, twl-core)
         - OF bindings (ac100, stmpe, qcom-pm8xxx, qcom-rpm, rk808, axp20x,
           lp873x, exynos5433-lpass, act8945a, aspeed-scu, twl6040, arizona)
      
        Bugfixes:
         - Release OF pointer (qcom_rpm)
         - Avoid double shifting in suspend/resume (88pm80x)
         - Fix 'defined but not used' error (exynos-lpass)
         - Fix 'sleeping whilst attomic' (atmel-hlcdc)"
      
      * tag 'mfd-for-linus-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (69 commits)
        mfd: arizona: Handle probe deferral for reset GPIO
        mfd: arizona: Remove arizona_of_get_named_gpio helper function
        mfd: arizona: Add DT options for max_channels_clocked and PDM speaker config
        mfd: twl6040: Register child device for twl6040-pdmclk
        mfd: cros_ec_spi: Remove unused variable 'request'
        mfd: omap-usb-host: Return value is not 'const int'
        mfd: ab8500-debugfs: Remove 'weak' function suspend_test_wake_cause_interrupt_is_mine()
        mfd: ab8500-debugfs: Remove ab8500_dump_all_banks_to_mem()
        mfd: db8500-prcmu: Remove unused *prcmu_set_ddr_opp() calls
        mfd: ab8500-debugfs: Prevent initialised field from being over-written
        mfd: max8997-irq: 'inline' should be at the beginning of the declaration
        mfd: rk808: Fix RK818_IRQ_DISCHG_ILIM initializer
        mfd: tps65217: Fix nonstandard declaration
        mfd: lp873x: Remove unused mutex lock from struct lp873x
        mfd: atmel-hlcdc: Do not sleep in atomic context
        mfd: exynos-lpass: Mark PM functions as __maybe_unused
        mfd: intel-lpss: Add default I2C device properties for Apollo Lake
        mfd: twl-core: Make it explicitly non-modular
        mfd: sun6i-prcm: Make it explicitly non-modular
        mfd: smsc-ece1099: Make it explicitly non-modular
        ...
      d0423808
    • J
      Merge branches 'for-4.8/upstream-fixes', 'for-4.9/alps', 'for-4.9/hid-input',... · 179023e6
      Jiri Kosina 提交于
      Merge branches 'for-4.8/upstream-fixes', 'for-4.9/alps', 'for-4.9/hid-input', 'for-4.9/intel-ish', 'for-4.9/kye-uclogic-waltop-fixes', 'for-4.9/logitech', 'for-4.9/sony', 'for-4.9/upstream' and 'for-4.9/wacom' into for-linus
      179023e6
    • L
      Merge tag 'backlight-for-linus-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight · 3477d168
      Linus Torvalds 提交于
      Pull backlight updates from Lee Jones:
       "Fix-ups:
      
         - Remove unused .owner assignment; tosa_bl
         - Enable GPIO sleeping; pwm_bl"
      
      * tag 'backlight-for-linus-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight:
        backlight: pwm_bl: Handle gpio that can sleep
        backlight-tosa: Delete unnecessary assignment for the field "owner"
      3477d168
    • L
      Merge tag 'hsi-for-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi · 9a687aea
      Linus Torvalds 提交于
      Pull HSI fix from Sebastian Reichel:
       "Fix hsi userspace header"
      
      * tag 'hsi-for-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi:
        HSI: hsi_char.h: use __u32 from linux/types.h
      9a687aea
    • L
      Merge tag 'for-v4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply · 021723e6
      Linus Torvalds 提交于
      Pull power supply and reset updates from Sebastian Reichel:
       - move power supply drivers to drivers/power/supply
       - unify location of power supply DT documentation
       - tps65217-charger: IRQ support
       - act8945a-charger: misc. cleanups & improvements
       - sbs-battery cleanup
       - fix users of deprecated create_singlethread_workqueue()
       - misc fixes.
      
      * tag 'for-v4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: (46 commits)
        power: supply: bq27xxx_battery: allow kernel poll_interval parameter runtime update
        power: supply: sbs-battery: Cleanup removal of chip->pdata
        power: reset: st: Remove obsolete platforms from dt doc
        power: reset: st-poweroff: Remove obsolete platforms.
        power: reset: zx-reboot: Unmap region obtained by of_iomap
        power: reset: xgene-reboot: Unmap region obtained by of_iomap
        power: supply: ab8500: cleanup with list_first_entry_or_null()
        power: reset: add in missing white space in error message text
        sbs-battery: make writes to ManufacturerAccess optional
        power: bq24257: Fix use of uninitialized pointer bq->charger
        power: supply: sbs-battery: simplify DT parsing
        power: supply: bq24735-charger: Request status GPIO with initial input setup
        power: supply: sbs-battery: Use gpio_desc and sleeping calls for battery detect
        power: supply: act8945a_charger: Add max current property
        power: supply: act8945a_charger: Add capacity level property
        doc: bindings: power: act8945a-charger: Update properties.
        power: supply: act8945a_charger: Fix the power supply type
        power: supply: act8945a_charger: Add status change update support
        power: supply: act8945a_charger: Improve state handling
        power: supply: act8945a_charger: Remove "battery_temperature"
        ...
      021723e6
    • L
      Merge branch 'mailbox-for-next' of git://git.linaro.org/landing-teams/working/fujitsu/integration · c6594fc6
      Linus Torvalds 提交于
      Pull mailbox updates from Jussi Brar:
       "New driver and DT bindings for MHU controller integrated on Amlogic
        Meson platform"
      
      * 'mailbox-for-next' of git://git.linaro.org/landing-teams/working/fujitsu/integration:
        dt-bindings: mailbox: Add Amlogic Meson MHU Bindings
        mailbox: Add Platform Message-Handling-Unit variant driver
      c6594fc6
    • L
      Merge tag 'dmaengine-4.9-rc1' of git://git.infradead.org/users/vkoul/slave-dma · 553911c6
      Linus Torvalds 提交于
      Pull dmaengine updates from Vinod Koul:
       "This is bit large pile of code which bring in some nice additions:
      
         - Error reporting: we have added a new mechanism for users of
           dmaenegine to register a callback_result which tells them the
           result of the dma transaction. Right now only one user (ntb) is
           using it.
      
         - As we discussed on KS mailing list and pointed out NO_IRQ has no
           place in kernel, this also remove NO_IRQ from dmaengine subsystem
           (both arm and ppc users)
      
         - Support for IOMMU slave transfers and its implementation for arm.
      
         - To get better build coverage, enable COMPILE_TEST for bunch of
           driver, and fix the warning and sparse complaints on these.
      
         - Apart from above, usual updates spread across drivers"
      
      * tag 'dmaengine-4.9-rc1' of git://git.infradead.org/users/vkoul/slave-dma: (169 commits)
        async_pq_val: fix DMA memory leak
        dmaengine: virt-dma: move function declarations
        dmaengine: omap-dma: Enable burst and data pack for SG
        DT: dmaengine: rcar-dmac: document R8A7743/5 support
        dmaengine: fsldma: Unmap region obtained by of_iomap
        dmaengine: jz4780: fix resource leaks on error exit return
        dma-debug: fix ia64 build, use PHYS_PFN
        dmaengine: coh901318: fix integer overflow when shifting more than 32 places
        dmaengine: edma: avoid uninitialized variable use
        dma-mapping: fix m32r build warning
        dma-mapping: fix ia64 build, use PHYS_PFN
        dmaengine: ti-dma-crossbar: enable COMPILE_TEST
        dmaengine: omap-dma: enable COMPILE_TEST
        dmaengine: edma: enable COMPILE_TEST
        dmaengine: ti-dma-crossbar: Fix of_device_id data parameter usage
        dmaengine: ti-dma-crossbar: Correct type for of_find_property() third parameter
        dmaengine/ARM: omap-dma: Fix the DMAengine compile test on non OMAP configs
        dmaengine: edma: Rename set_bits and remove unused clear_bits helper
        dmaengine: edma: Use correct type for of_find_property() third parameter
        dmaengine: edma: Fix of_device_id data parameter usage (legacy vs TPCC)
        ...
      553911c6
    • L
      Merge tag 'rpmsg-v4.9' of git://github.com/andersson/remoteproc · 521f3970
      Linus Torvalds 提交于
      Pull rpmsg updates from Bjorn Andersson:
       "The bulk of these patches involve splitting the rpmsg implementation
        into a framework/API part and a virtio specific backend part. It then
        adds the Qualcomm Shared Memory Device (SMD) as an additional
        supported wire format.
      
        Also included is a set of code style cleanups that have been lingering
        for a while"
      
      * tag 'rpmsg-v4.9' of git://github.com/andersson/remoteproc: (26 commits)
        rpmsg: smd: fix dependency on QCOM_SMD=n
        rpmsg: Introduce Qualcomm SMD backend
        rpmsg: Allow callback to return errors
        rpmsg: Move virtio specifics from public header
        rpmsg: virtio: Hide vrp pointer from the public API
        rpmsg: Hide rpmsg indirection tables
        rpmsg: Split rpmsg core and virtio backend
        rpmsg: Split off generic tail of create_channel()
        rpmsg: Move helper for finding rpmsg devices to core
        rpmsg: Move endpoint related interface to rpmsg core
        rpmsg: Indirection table for rpmsg_endpoint operations
        rpmsg: Move rpmsg_device API to new file
        rpmsg: Introduce indirection table for rpmsg_device operations
        rpmsg: Clean up rpmsg device vs channel naming
        rpmsg: Make rpmsg_create_ept() take channel_info struct
        rpmsg: rpmsg_send() operations takes rpmsg_endpoint
        rpmsg: Name rpmsg devices based on channel id
        rpmsg: Enable matching devices with drivers based on DT
        rpmsg: Drop prototypes for non-existing functions
        samples/rpmsg: add support for multiple instances
        ...
      521f3970