1. 02 Aug, 2016 20 commits
    • Andrey Ryabinin's avatar
      mm/kasan: get rid of ->state in struct kasan_alloc_meta · b3cbd9bf
      Andrey Ryabinin authored
      The state of object currently tracked in two places - shadow memory, and
      the ->state field in struct kasan_alloc_meta.  We can get rid of the
      latter.  The will save us a little bit of memory.  Also, this allow us
      to move free stack into struct kasan_alloc_meta, without increasing
      memory consumption.  So now we should always know when the last time the
      object was freed.  This may be useful for long delayed use-after-free
      bugs.
      
      As a side effect this fixes following UBSAN warning:
      	UBSAN: Undefined behaviour in mm/kasan/quarantine.c:102:13
      	member access within misaligned address ffff88000d1efebc for type 'struct qlist_node'
      	which requires 8 byte alignment
      
      Link: http://lkml.kernel.org/r/1470062715-14077-5-git-send-email-aryabinin@virtuozzo.com
      
      Reported-by: default avatarkernel test robot <xiaolong.ye@intel.com>
      Signed-off-by: default avatarAndrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      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>
      b3cbd9bf
    • Andrey Ryabinin's avatar
      mm/kasan: get rid of ->alloc_size in struct kasan_alloc_meta · 47b5c2a0
      Andrey Ryabinin authored
      Size of slab object already stored in cache->object_size.
      
      Note, that kmalloc() internally rounds up size of allocation, so
      object_size may be not equal to alloc_size, but, usually we don't need
      to know the exact size of allocated object.  In case if we need that
      information, we still can figure it out from the report.  The dump of
      shadow memory allows to identify the end of allocated memory, and
      thereby the exact allocation size.
      
      Link: http://lkml.kernel.org/r/1470062715-14077-4-git-send-email-aryabinin@virtuozzo.com
      
      Signed-off-by: default avatarAndrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      47b5c2a0
    • Andrey Ryabinin's avatar
      mm/kasan, slub: don't disable interrupts when object leaves quarantine · f7376aed
      Andrey Ryabinin authored
      SLUB doesn't require disabled interrupts to call ___cache_free().
      
      Link: http://lkml.kernel.org/r/1470062715-14077-3-git-send-email-aryabinin@virtuozzo.com
      
      Signed-off-by: default avatarAndrey Ryabinin <aryabinin@virtuozzo.com>
      Acked-by: default avatarAlexander Potapenko <glider@google.com>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f7376aed
    • Andrey Ryabinin's avatar
      mm/kasan: don't reduce quarantine in atomic contexts · 4b3ec5a3
      Andrey Ryabinin authored
      Currently we call quarantine_reduce() for ___GFP_KSWAPD_RECLAIM (implied
      by __GFP_RECLAIM) allocation.  So, basically we call it on almost every
      allocation.  quarantine_reduce() sometimes is heavy operation, and
      calling it with disabled interrupts may trigger hard LOCKUP:
      
       NMI watchdog: Watchdog detected hard LOCKUP on cpu 2irq event stamp: 1411258
       Call Trace:
        <NMI>   dump_stack+0x68/0x96
         watchdog_overflow_callback+0x15b/0x190
         __perf_event_overflow+0x1b1/0x540
         perf_event_overflow+0x14/0x20
         intel_pmu_handle_irq+0x36a/0xad0
         perf_event_nmi_handler+0x2c/0x50
         nmi_handle+0x128/0x480
         default_do_nmi+0xb2/0x210
         do_nmi+0x1aa/0x220
         end_repeat_nmi+0x1a/0x1e
        <<EOE>>   __kernel_text_address+0x86/0xb0
         print_context_stack+0x7b/0x100
         dump_trace+0x12b/0x350
         save_stack_trace+0x2b/0x50
         set_track+0x83/0x140
         free_debug_processing+0x1aa/0x420
         __slab_free+0x1d6/0x2e0
         ___cache_free+0xb6/0xd0
         qlist_free_all+0x83/0x100
         quarantine_reduce+0x177/0x1b0
         kasan_kmalloc+0xf3/0x100
      
      Reduce the quarantine_reduce iff direct reclaim is allowed.
      
      Fixes: 55834c59("mm: kasan: initial memory quarantine implementation")
      Link: http://lkml.kernel.org/r/1470062715-14077-2-git-send-email-aryabinin@virtuozzo.com
      
      Signed-off-by: default avatarAndrey Ryabinin <aryabinin@virtuozzo.com>
      Reported-by: default avatarDave Jones <davej@codemonkey.org.uk>
      Acked-by: default avatarAlexander Potapenko <glider@google.com>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4b3ec5a3
    • Andrey Ryabinin's avatar
      mm/kasan: fix corruptions and false positive reports · 4a3d308d
      Andrey Ryabinin authored
      Once an object is put into quarantine, we no longer own it, i.e.  object
      could leave the quarantine and be reallocated.  So having set_track()
      call after the quarantine_put() may corrupt slab objects.
      
       BUG kmalloc-4096 (Not tainted): Poison overwritten
       -----------------------------------------------------------------------------
       Disabling lock debugging due to kernel taint
       INFO: 0xffff8804540de850-0xffff8804540de857. First byte 0xb5 instead of 0x6b
      ...
       INFO: Freed in qlist_free_all+0x42/0x100 age=75 cpu=3 pid=24492
        __slab_free+0x1d6/0x2e0
        ___cache_free+0xb6/0xd0
        qlist_free_all+0x83/0x100
        quarantine_reduce+0x177/0x1b0
        kasan_kmalloc+0xf3/0x100
        kasan_slab_alloc+0x12/0x20
        kmem_cache_alloc+0x109/0x3e0
        mmap_region+0x53e/0xe40
        do_mmap+0x70f/0xa50
        vm_mmap_pgoff+0x147/0x1b0
        SyS_mmap_pgoff+0x2c7/0x5b0
        SyS_mmap+0x1b/0x30
        do_syscall_64+0x1a0/0x4e0
        return_from_SYSCALL_64+0x0/0x7a
       INFO: Slab 0xffffea0011503600 objects=7 used=7 fp=0x          (null) flags=0x8000000000004080
       INFO: Object 0xffff8804540de848 @offset=26696 fp=0xffff8804540dc588
       Redzone ffff8804540de840: bb bb bb bb bb bb bb bb                          ........
       Object ffff8804540de848: 6b 6b 6b 6b 6b 6b 6b 6b b5 52 00 00 f2 01 60 cc  kkkkkkkk.R....`.
      
      Similarly, poisoning after the quarantine_put() leads to false positive
      use-after-free reports:
      
       BUG: KASAN: use-after-free in anon_vma_interval_tree_insert+0x304/0x430 at addr ffff880405c540a0
       Read of size 8 by task trinity-c0/3036
       CPU: 0 PID: 3036 Comm: trinity-c0 Not tainted 4.7.0-think+ #9
       Call Trace:
         dump_stack+0x68/0x96
         kasan_report_error+0x222/0x600
         __asan_report_load8_noabort+0x61/0x70
         anon_vma_interval_tree_insert+0x304/0x430
         anon_vma_chain_link+0x91/0xd0
         anon_vma_clone+0x136/0x3f0
         anon_vma_fork+0x81/0x4c0
         copy_process.part.47+0x2c43/0x5b20
         _do_fork+0x16d/0xbd0
         SyS_clone+0x19/0x20
         do_syscall_64+0x1a0/0x4e0
         entry_SYSCALL64_slow_path+0x25/0x25
      
      Fix this by putting an object in the quarantine after all other
      operations.
      
      Fixes: 80a9201a ("mm, kasan: switch SLUB to stackdepot, enable memory quarantine for SLUB")
      Link: http://lkml.kernel.org/r/1470062715-14077-1-git-send-email-aryabinin@virtuozzo.com
      
      Signed-off-by: default avatarAndrey Ryabinin <aryabinin@virtuozzo.com>
      Reported-by: default avatarDave Jones <davej@codemonkey.org.uk>
      Reported-by: default avatarVegard Nossum <vegard.nossum@oracle.com>
      Reported-by: default avatarSasha Levin <alexander.levin@verizon.com>
      Acked-by: default avatarAlexander Potapenko <glider@google.com>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4a3d308d
    • Michal Hocko's avatar
      memcg: put soft limit reclaim out of way if the excess tree is empty · d6507ff5
      Michal Hocko authored
      We've had a report about soft lockups caused by lock bouncing in the
      soft reclaim path:
      
        BUG: soft lockup - CPU#0 stuck for 22s! [kav4proxy-kavic:3128]
        RIP: 0010:[<ffffffff81469798>]  [<ffffffff81469798>] _raw_spin_lock+0x18/0x20
        Call Trace:
          mem_cgroup_soft_limit_reclaim+0x25a/0x280
          shrink_zones+0xed/0x200
          do_try_to_free_pages+0x74/0x320
          try_to_free_pages+0x112/0x180
          __alloc_pages_slowpath+0x3ff/0x820
          __alloc_pages_nodemask+0x1e9/0x200
          alloc_pages_vma+0xe1/0x290
          do_wp_page+0x19f/0x840
          handle_pte_fault+0x1cd/0x230
          do_page_fault+0x1fd/0x4c0
          page_fault+0x25/0x30
      
      There are no memcgs created so there cannot be any in the soft limit
      excess obviously:
      
        [...]
        memory  0       1       1
      
      so all this just seems to be mem_cgroup_largest_soft_limit_node trying
      to get spin_lock_irq(&mctz->lock) just to find out that the soft limit
      excess tree is empty.  This is just pointless wasting of cycles and
      cache line bouncing during heavy parallel reclaim on large machines.
      The particular machine wasn't very healthy and most probably suffering
      from a memory leak which just caused the memory reclaim to trash
      heavily.  But bouncing on the lock certainly didn't help...
      
      Fix this by optimistic lockless check and bail out early if the tree is
      empty.  This is theoretically racy but that shouldn't matter all that
      much.  First of all soft limit is a best effort feature and it is slowly
      getting deprecated and its usage should be really scarce.  Bouncing on a
      lock without a good reason is surely much bigger problem, especially on
      large CPU machines.
      
      Link: http://lkml.kernel.org/r/1470073277-1056-1-git-send-email-mhocko@kernel.org
      
      Signed-off-by: default avatarMichal Hocko <mhocko@suse.com>
      Acked-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d6507ff5
    • Michal Hocko's avatar
      mm, hugetlb: fix huge_pte_alloc BUG_ON · 4e666314
      Michal Hocko authored
      Zhong Jiang has reported a BUG_ON from huge_pte_alloc hitting when he
      runs his database load with memory online and offline running in
      parallel.  The reason is that huge_pmd_share might detect a shared pmd
      which is currently migrated and so it has migration pte which is
      !pte_huge.
      
      There doesn't seem to be any easy way to prevent from the race and in
      fact seeing the migration swap entry is not harmful.  Both callers of
      huge_pte_alloc are prepared to handle them.  copy_hugetlb_page_range
      will copy the swap entry and make it COW if needed.  hugetlb_fault will
      back off and so the page fault is retries if the page is still under
      migration and waits for its completion in hugetlb_fault.
      
      That means that the BUG_ON is wrong and we should update it.  Let's
      simply check that all present ptes are pte_huge instead.
      
      Link: http://lkml.kernel.org/r/20160721074340.GA26398@dhcp22.suse.cz
      
      Signed-off-by: default avatarMichal Hocko <mhocko@suse.com>
      Reported-by: default avatarzhongjiang <zhongjiang@huawei.com>
      Acked-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4e666314
    • Jia He's avatar
      mm/hugetlb: avoid soft lockup in set_max_huge_pages() · 649920c6
      Jia He authored
      In powerpc servers with large memory(32TB), we watched several soft
      lockups for hugepage under stress tests.
      
      The call traces are as follows:
      1.
      get_page_from_freelist+0x2d8/0xd50
      __alloc_pages_nodemask+0x180/0xc20
      alloc_fresh_huge_page+0xb0/0x190
      set_max_huge_pages+0x164/0x3b0
      
      2.
      prep_new_huge_page+0x5c/0x100
      alloc_fresh_huge_page+0xc8/0x190
      set_max_huge_pages+0x164/0x3b0
      
      This patch fixes such soft lockups.  It is safe to call cond_resched()
      there because it is out of spin_lock/unlock section.
      
      Link: http://lkml.kernel.org/r/1469674442-14848-1-git-send-email-hejianet@gmail.com
      
      Signed-off-by: default avatarJia He <hejianet@gmail.com>
      Reviewed-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Acked-by: default avatarMichal Hocko <mhocko@suse.com>
      Acked-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
      Cc: Mike Kravetz <mike.kravetz@oracle.com>
      Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
      Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      649920c6
    • Valdis Kletnieks's avatar
      tools/testing/radix-tree/linux/gfp.h: fix bitrotted value · 117dec97
      Valdis Kletnieks authored
      Apparently, the tools/testing version dates to a few flags ago, and
      we've sprouted 4 new ones since.  Keep in sync with the value in the
      main tree...
      
      Link: http://lkml.kernel.org/r/23400.1469702675@turing-police.cc.vt.edu
      
      Signed-off-by: default avatarValdis Kletnieks <valdis.kletnieks@vt.edu>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      117dec97
    • Minchan Kim's avatar
      mm: move swap-in anonymous page into active list · 1a8018fb
      Minchan Kim authored
      Every swap-in anonymous page starts from inactive lru list's head.  It
      should be activated unconditionally when VM decide to reclaim because
      page table entry for the page always usually has marked accessed bit.
      Thus, their window size for getting a new referece is 2 * NR_inactive +
      NR_active while others is NR_inactive + NR_active.
      
      It's not fair that it has more chance to be referenced compared to other
      newly allocated page which starts from active lru list's head.
      
      Johannes:
      
      : The page can still have a valid copy on the swap device, so prefering to
      : reclaim that page over a fresh one could make sense.  But as you point
      : out, having it start inactive instead of active actually ends up giving it
      : *more* LRU time, and that seems to be without justification.
      
      Rik:
      
      : The reason newly read in swap cache pages start on the inactive list is
      : that we do some amount of read-around, and do not know which pages will
      : get used.
      :
      : However, immediately activating the ones that DO get used, like your patch
      : does, is the right thing to do.
      
      Link: http://lkml.kernel.org/r/1469762740-17860-1-git-send-email-minchan@kernel.org
      
      Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Acked-by: default avatarRik van Riel <riel@redhat.com>
      Cc: Nadav Amit <nadav.amit@gmail.com>
      Cc: Mel Gorman <mgorman@techsingularity.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1a8018fb
    • Vegard Nossum's avatar
      mm: fail prefaulting if page table allocation fails · c5f88bd2
      Vegard Nossum authored
      I ran into this:
      
          BUG: sleeping function called from invalid context at mm/page_alloc.c:3784
          in_atomic(): 0, irqs_disabled(): 0, pid: 1434, name: trinity-c1
          2 locks held by trinity-c1/1434:
           #0:  (&mm->mmap_sem){......}, at: [<ffffffff810ce31e>] __do_page_fault+0x1ce/0x8f0
           #1:  (rcu_read_lock){......}, at: [<ffffffff81378f86>] filemap_map_pages+0xd6/0xdd0
      
          CPU: 0 PID: 1434 Comm: trinity-c1 Not tainted 4.7.0+ #58
          Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
          Call Trace:
            dump_stack+0x65/0x84
            panic+0x185/0x2dd
            ___might_sleep+0x51c/0x600
            __might_sleep+0x90/0x1a0
            __alloc_pages_nodemask+0x5b1/0x2160
            alloc_pages_current+0xcc/0x370
            pte_alloc_one+0x12/0x90
            __pte_alloc+0x1d/0x200
            alloc_set_pte+0xe3e/0x14a0
            filemap_map_pages+0x42b/0xdd0
            handle_mm_fault+0x17d5/0x28b0
            __do_page_fault+0x310/0x8f0
            trace_do_page_fault+0x18d/0x310
            do_async_page_fault+0x27/0xa0
            async_page_fault+0x28/0x30
      
      The important bits from the above is that filemap_map_pages() is calling
      into the page allocator while holding rcu_read_lock (sleeping is not
      allowed inside RCU read-side critical sections).
      
      According to Kirill Shutemov, the prefaulting code in do_fault_around()
      is supposed to take care of this, but missing error handling means that
      the allocation failure can go unnoticed.
      
      We don't need to return VM_FAULT_OOM (or any other error) here, since we
      can just let the normal fault path try again.
      
      Fixes: 7267ec00 ("mm: postpone page table allocation until we have page to map")
      Link: http://lkml.kernel.org/r/1469708107-11868-1-git-send-email-vegard.nossum@oracle.com
      
      Signed-off-by: default avatarVegard Nossum <vegard.nossum@oracle.com>
      Acked-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
      Cc: "Hillf Danton" <hillf.zj@alibaba-inc.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c5f88bd2
    • piaojun's avatar
      ocfs2/dlm: continue to purge recovery lockres when recovery master goes down · ee8f7fcb
      piaojun authored
      We found a dlm-blocked situation caused by continuous breakdown of
      recovery masters described below.  To solve this problem, we should
      purge recovery lock once detecting recovery master goes down.
      
      N3                      N2                   N1(reco master)
                              go down
                                                   pick up recovery lock and
                                                   begin recoverying for N2
      
                                                   go down
      
      pick up recovery
      lock failed, then
      purge it:
      dlm_purge_lockres
        ->DROPPING_REF is set
      
      send deref to N1 failed,
      recovery lock is not purged
      
      find N1 go down, begin
      recoverying for N1, but
      blocked in dlm_do_recovery
      as DROPPING_REF is set:
      dlm_do_recovery
        ->dlm_pick_recovery_master
          ->dlmlock
            ->dlm_get_lock_resource
              ->__dlm_wait_on_lockres_flags(tmpres,
      	  	DLM_LOCK_RES_DROPPING_REF);
      
      Fixes: 8c034396 ("ocfs2/dlm: clear DROPPING_REF flag when the master goes down")
      Link: http://lkml.kernel.org/r/578453AF.8030404@huawei.com
      
      Signed-off-by: default avatarJun Piao <piaojun@huawei.com>
      Reviewed-by: default avatarJoseph Qi <joseph.qi@huawei.com>
      Reviewed-by: default avatarJiufei Xue <xuejiufei@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>
      ee8f7fcb
    • piaojun's avatar
      ocfs2/dlm: solve a BUG when deref failed in dlm_drop_lockres_ref · 309e9191
      piaojun authored
      We found a BUG situation that lockres is migrated during deref described
      below.  To solve the BUG, we could purge lockres directly when other
      node says I did not have a ref.  Additionally, we'd better purge lockres
      if master goes down, as no one will response deref done.
      
      Node 1                  Node 2(old master)             Node3(new master)
      dlm_purge_lockres
      send deref to N2
      
                              leave domain
                              migrate lockres to N3
                                                             finish migration
                                                             send do assert
                                                             master to N1
      
      receive do assert msg
      form N3, but can not
      find lockres because
      DROPPING_REF is set,
      so the owner is still
      N2.
      
                              receive deref from N1
                              and response -EINVAL
                              because lockres is migrated
      
      BUG when receive -EINVAL
      in dlm_drop_lockres_ref
      
      Fixes: 842b90b6 ("ocfs2/dlm: return in progress if master can not clear the refmap bit right now")
      
      Link: http://lkml.kernel.org/r/57845103.3070406@huawei.com
      
      Signed-off-by: default avatarJun Piao <piaojun@huawei.com>
      Reviewed-by: default avatarJoseph Qi <joseph.qi@huawei.com>
      Reviewed-by: default avatarJiufei Xue <xuejiufei@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>
      309e9191
    • piaojun's avatar
      ocfs2/dlm: disable BUG_ON when DLM_LOCK_RES_DROPPING_REF is cleared before... · 86b652b9
      piaojun authored
      ocfs2/dlm: disable BUG_ON when DLM_LOCK_RES_DROPPING_REF is cleared before dlm_deref_lockres_done_handler
      
      We found a BUG situation in which DLM_LOCK_RES_DROPPING_REF is cleared
      unexpected that described below.  To solve the bug, we disable the
      BUG_ON and purge lockres in dlm_do_local_recovery_cleanup.
      
      Node 1                               Node 2(master)
      dlm_purge_lockres
                                           dlm_deref_lockres_handler
      
                                           DLM_LOCK_RES_SETREF_INPROG is set
                                           response DLM_DEREF_RESPONSE_INPROG
      
      receive DLM_DEREF_RESPONSE_INPROG
      stop puring in dlm_purge_lockres
      and wait for DLM_DEREF_RESPONSE_DONE
      
                                           dispatch dlm_deref_lockres_worker
                                           response DLM_DEREF_RESPONSE_DONE
      
      receive DLM_DEREF_RESPONSE_DONE and
      prepare to purge lockres
      
                                           Node 2 goes down
      
      find Node2 down and do local
      clean up for Node2:
      dlm_do_local_recovery_cleanup
        -> clear DLM_LOCK_RES_DROPPING_REF
      
      when purging lockres, BUG_ON happens
      because DLM_LOCK_RES_DROPPING_REF is clear:
      dlm_deref_lockres_done_handler
        ->BUG_ON(!(res->state & DLM_LOCK_RES_DROPPING_REF));
      
      [akpm@linux-foundation.org: fix duplicated write to `ret']
      Fixes: 60d663cb ("ocfs2/dlm: add DEREF_DONE message")
      Link: http://lkml.kernel.org/r/57845055.9080702@huawei.com
      
      Signed-off-by: default avatarJun Piao <piaojun@huawei.com>
      Reviewed-by: default avatarJoseph Qi <joseph.qi@huawei.com>
      Reviewed-by: default avatarJiufei Xue <xuejiufei@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>
      86b652b9
    • Eric Ren's avatar
      ocfs2: retry on ENOSPC if sufficient space in truncate log · 2070ad1a
      Eric Ren authored
      The testcase "mmaptruncate" in ocfs2 test suite always fails with ENOSPC
      error on small volume (say less than 10G).  This testcase repeatedly
      performs "extend" and "truncate" on a file.  Continuously, it truncates
      the file to 1/2 of the size, and then extends to 100% of the size.  The
      main bitmap will quickly run out of space because the "truncate" code
      prevent truncate log from being flushed by
      ocfs2_schedule_truncate_log_flush(osb, 1), while truncate log may have
      cached lots of clusters.
      
      So retry to allocate after flushing truncate log when ENOSPC is
      returned.  And we cannot reuse the deleted blocks before the transaction
      committed.  Fortunately, we already have a function to do this -
      ocfs2_try_to_free_truncate_log().  Just need to remove the "static"
      modifier and put it into the right place.
      
      The "unlock"/"lock" code isn't elegant, but there seems to be no better
      option.
      
      [zren@suse.com: locking fix]
        Link: http://lkml.kernel.org/r/1468031546-4797-1-git-send-email-zren@suse.com
      Link: http://lkml.kernel.org/r/1466586469-5541-1-git-send-email-zren@suse.com
      
      Signed-off-by: default avatarEric Ren <zren@suse.com>
      Reviewed-by: default avatarGang He <ghe@suse.com>
      Reviewed-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>
      2070ad1a
    • Gang He's avatar
      ocfs2: ensure that dlm lockspace is created by kernel module · 01a36b67
      Gang He authored
      We encountered a bug from the customer, the user did a fsck.ocfs2 on the
      file system and exited unusually, the lockspace (with LVB size = 32) was
      left in the kernel space, next, the user mounted this file system, the
      kernel module did not create a new lockspace (LVB size = 64) via calling
      dlm_new_lockspace() function in mounting stage, just used the existing
      lockspace, created by the user space tool, this would lead the user was
      not able to mount this file system from the other nodes, with the error
      message like:
      
        dlm: 032F5......: config mismatch: 64,0 nodeid 177127961: 32,0
        (mount.ocfs2,26981,46):ocfs2_dlm_init:2995 ERROR: status = -71
        ocfs2_mount_volume:1881 ERROR: status = -71
        ocfs2_fill_super:1236 ERROR: status = -71
      
      The user found it very difficult to find the root cause, then, we
      brought out this patch to relieve such problem.
      
      First, we add one more flag in calling dlm_new_lockspace() function, to
      make sure the lockspace is created by kernel module itself, and this
      change will not affect the backward compatibility.
      
      Second, the obvious error message is reported in the kernel log, let the
      user be more easy to find the root cause.
      
      This patch will be used to insure the dlm lockspace is created by kernel
      module when mounting a ocfs2 file system.  There are two ways to create
      a lockspace, from user space and kernel space, but the same name
      lockspaces probably have different lvblen lengths/flags.
      
      To avoid this mix using, we add one more flag DLM_LSFL_NEWEXCL, it will
      make sure the dlm lockspace is created by kernel module when mounting.
      Secondly, if a user space program (ocfs2-tools) is running on a file
      system, the user tries to mount this file system in the cluster, DLM
      module will return a -EEXIST or -EPROTO errno, we should give the user a
      obvious error message, then, the user can let that user space tool exit
      before mounting the file system again.
      
      Link: http://lkml.kernel.org/r/1463731940-13044-2-git-send-email-ghe@suse.com
      
      Signed-off-by: default avatarGang He <ghe@suse.com>
      Reviewed-by: default avatarGoldwyn Rodrigues <rgoldwyn@suse.com>
      Reviewed-by: default avatarMark 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: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      01a36b67
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · f7b32e4c
      Linus Torvalds authored
      Pull more s390 updates from Martin Schwidefsky:
      
       - some cleanup for the hugetlbfs pte/pmd conversion functions
      
       - the code to check for the minimum CPU type is converted from
         assembler to C and an informational message is added in case the CPU
         is not new enough to run the kernel
      
       - bug fixes
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
        s390/ftrace/jprobes: Fix conflict between jprobes and function graph tracing
        s390: Define AT_VECTOR_SIZE_ARCH for ARCH_DLINFO
        s390/zcrypt: fix possible memory leak in ap_module_init()
        s390/numa: only set possible nodes within node_possible_map
        s390/als: fix compile with gcov enabled
        s390/facilities: do not generate DWORDS define anymore
        s390/als: print missing facilities on facility mismatch
        s390/als: print machine type on facility mismatch
        s390/als: convert architecture level set code to C
        s390/sclp: move uninitialized data to data section
        s390/zcrypt: Fix zcrypt suspend/resume behavior
        s390/cio: fix premature wakeup during chp configure
        s390/cio: convert cfg_lock mutex to spinlock
        s390/mm: clean up pte/pmd encoding
      f7b32e4c
    • Linus Torvalds's avatar
      Merge tag 'drm-for-v4.8' of git://people.freedesktop.org/~airlied/linux · 731c7d3a
      Linus Torvalds authored
      Merge drm updates from Dave Airlie:
       "This is the main drm pull request for 4.8.
      
        I'm down with a cold at the moment so hopefully this isn't in too bad
        a state, I finished pulling stuff last week mostly (nouveau fixes just
        went in today), so only this message should be influenced by illness.
        Apologies to anyone who's major feature I missed :-)
      
        Core:
              Lockless GEM BO freeing
              Non-blocking atomic work
              Documentation changes (rst/sphinx)
              Prep for new fencing changes
              Simple display helpers
              Master/auth changes
              Register/unregister rework
              Loads of trivial patches/fixes.
      
        New stuff:
              ARM Mali display driver (not the 3D chip)
              sii902x RGB->HDMI bridge
      
        Panel:
              Support for new panels
              Improved backlight support
      
        Bridge:
              Convert ADV7511 to bridge driver
              ADV7533 support
              TC358767 (DSI/DPI to eDP) encoder chip support
      
        i915:
              BXT support enabled by default
              GVT-g infrastructure
              GuC command submission and fixes
              BXT workarounds
              SKL/BKL workarounds
              Demidlayering device registration
              Thundering herd fixes
              Missing pci ids
              Atomic updates
      
        amdgpu/radeon:
              ATPX improvements for better dGPU power control on PX systems
              New power features for CZ/BR/ST
              Pipelined BO moves and evictions in TTM
              GPU scheduler improvements
              GPU reset improvements
              Overclocking on dGPUs with amdgpu
              Polaris powermanagement enabled
      
        nouveau:
              GK20A/GM20B volt and clock improvements.
              Initial support for GP100/GP104 GPUs, GP104 will not yet support
              acceleration due to NVIDIA having not released firmware for them as of yet.
      
        exynos:
              Exynos5433 SoC with IOMMU support.
      
        vc4:
              Shader validation for branching
      
        imx-drm:
              Atomic mode setting conversion
              Reworked DMFC FIFO allocation
              External bridge support
      
        analogix-dp:
              RK3399 eDP support
              Lots of fixes.
      
        rockchip:
              Lots of small fixes.
      
        msm:
              DT bindings cleanups
              Shrinker and madvise support
              ASoC HDMI codec support
      
        tegra:
              Host1x driver cleanups
              SOR reworking for DP support
              Runtime PM support
      
        omapdrm:
              PLL enhancements
              Header refactoring
              Gamma table support
      
        arcgpu:
              Simulator support
      
        virtio-gpu:
              Atomic modesetting fixes.
      
        rcar-du:
              Misc fixes.
      
        mediatek:
              MT8173 HDMI support
      
        sti:
              ASOC HDMI codec support
              Minor fixes
      
        fsl-dcu:
              Suspend/resume support
              Bridge support
      
        amdkfd:
              Minor fixes.
      
        etnaviv:
              Enable GPU clock gating
      
        hisilicon:
              Vblank and other fixes"
      
      * tag 'drm-for-v4.8' of git://people.freedesktop.org/~airlied/linux: (1575 commits)
        drm/nouveau/gr/nv3x: fix instobj write offsets in gr setup
        drm/nouveau/acpi: fix lockup with PCIe runtime PM
        drm/nouveau/acpi: check for function 0x1B before using it
        drm/nouveau/acpi: return supported DSM functions
        drm/nouveau/acpi: ensure matching ACPI handle and supported functions
        drm/nouveau/fbcon: fix font width not divisible by 8
        drm/amd/powerplay: remove enable_clock_power_gatings_tasks from initialize and resume events
        drm/amd/powerplay: move clockgating to after ungating power in pp for uvd/vce
        drm/amdgpu: add query device id and revision id into system info entry at CGS
        drm/amdgpu: add new definition in bif header
        drm/amd/powerplay: rename smum header guards
        drm/amdgpu: enable UVD context buffer for older HW
        drm/amdgpu: fix default UVD context size
        drm/amdgpu: fix incorrect type of info_id
        drm/amdgpu: make amdgpu_cgs_call_acpi_method as static
        drm/amdgpu: comment out unused defaults_staturn_pro static const structure to fix the build
        drm/amdgpu: enable UVD VM only on polaris
        drm/amdgpu: increase timeout of IB test
        drm/amdgpu: add destroy session when generate VCE destroy msg.
        drm/amd: fix deadlock of job_list_lock V2
        ...
      731c7d3a
    • Stephen Rothwell's avatar
      clocksource/drivers/clps_711x: fixup for "ARM: clps711x: · 77a87824
      Stephen Rothwell authored
       Switch to MULTIPLATFORM"
      
      Missed conflict between commit c86f5173
      
       ("ARM: clps711x: Switch to
      MULTIPLATFORM") from the arm-soc tree and commit 250e46aa3bb3
      ("clocksource/drivers/clps_711x: Add the COMPILE_TEST option") from the
      clockevents tree.
      Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      77a87824
    • Dave Airlie's avatar
      Merge branch 'linux-4.8' of git://github.com/skeggsb/linux into drm-next · 753e7c8c
      Dave Airlie authored
      Runtime PM fixes, fbcon and nv30 fix.
      * 'linux-4.8' of git://github.com/skeggsb/linux:
        drm/nouveau/gr/nv3x: fix instobj write offsets in gr setup
        drm/nouveau/acpi: fix lockup with PCIe runtime PM
        drm/nouveau/acpi: check for function 0x1B before using it
        drm/nouveau/acpi: return supported DSM functions
        drm/nouveau/acpi: ensure matching ACPI handle and supported functions
        drm/nouveau/fbcon: fix font width not divisible by 8
      753e7c8c
  2. 01 Aug, 2016 20 commits
    • Linus Torvalds's avatar
      Merge tag 'please-pull-misc-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux · e48af7aa
      Linus Torvalds authored
      Pull ia64 updates from Tony Luck:
       "Miscellaneous ia64 cleanups"
      
      * tag 'please-pull-misc-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux:
        ia64: salinfo: use a waitqueue instead a sema down/up combo
        ia64: efi: use timespec64 for persistent clock
      e48af7aa
    • Linus Torvalds's avatar
      Merge tag 'armsoc-dt64' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · ed780686
      Linus Torvalds authored
      Pull 64-bit ARM DT updates from Olof Johansson:
       "Just as the 32-bit contents, the 64-bit device tree branch also
        contains a number of additions this release cycle.
      
        New platforms:
         - LG LG1313
         - Mediatek MT6755
         - Renesas r8a7796
         - Broadcom 2837
      
        Other platforms with larger updates are:
         - Nvidia X1 platforms (USB 3.0, regulators, display subsystem)
         - Mediatek MT8173 (display subsystem added)
         - Rockchip RK3399 (a lot of new peripherals)
         - ARM Juno reference implementation (SCPI power domains, coresight,
           thermal)"
      
      * tag 'armsoc-dt64' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (118 commits)
        arm64: tegra: Enable HDMI on Jetson TX1
        arm64: tegra: Add sor1_src clock
        arm64: tegra: Add XUSB powergates on Tegra210
        arm64: tegra: Add DPAUX pinctrl bindings
        arm64: tegra: Add ACONNECT bus node for Tegra210
        arm64: tegra: Add audio powergate node for Tegra210
        arm64: tegra: Add regulators for Tegra210 Smaug
        arm64: tegra: Correct Tegra210 XUSB mailbox interrupt
        arm64: tegra: Enable XUSB controller on Jetson TX1
        arm64: tegra: Enable debug serial on Jetson TX1
        arm64: tegra: Add Tegra210 XUSB controller
        arm64: tegra: Add Tegra210 XUSB pad controller
        arm64: tegra: Add DSI panel on Jetson TX1
        arm64: tegra: p2597: Add SDMMC power supplies
        arm64: tegra: Add PMIC support on Jetson TX1
        Revert "ARM64: DTS: meson-gxbb: switch ethernet to real clock"
        arm64: dts: hi6220: Add pl031 RTC support
        arm64: dts: r8a7796/salvator-x: Enable watchdog timer
        arm64: dts: r8a7796: Add RWDT node
        arm64: dts: r8a7796: Use SYSC "always-on" PM Domain
        ...
      ed780686
    • Linus Torvalds's avatar
      Merge tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 043248cd
      Linus Torvalds authored
      Pull ARM DT updates from Olof Johansson:
       "Device tree contents continue to be the largest branches we submit.
        This time around, some of the contents worth pointing out is:
      
        New SoC platforms:
         - Freescale i.MX 7Solo
         - Broadcom BCM23550
         - Cirrus Logic EP7209 and EP7211 (clps711x platforms)_
         - Hisilicon HI3519
         - Renesas R8A7792
      
        Some of the other delta that is sticking out, line-count wise:
         - Exynos moves of IP blocks under an SoC bus, which causes a large
           delta due to indentation changes
         - a new Tegra K1 board: Apalis
         - a bunch of small updates to many Allwinner platforms; new hardware
           support, some cleanup, etc"
      
      * tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (426 commits)
        ARM: dts: sun8i: Add dts file for inet86dz board
        ARM: dts: sun8i: Add dts file for Polaroid MID2407PXE03 tablet
        ARM: dts: sun8i: Use sun8i-reference-design-tablet for ga10h dts
        ARM: dts: sun8i: Use sun8i-reference-design-tablet for polaroid mid2809pxe04
        ARM: dts: sun8i: reference-design-tablet: Add drivevbus-supply
        ARM: dts: Copy sun8i-q8-common.dtsi sun8i-reference-design-tablet.dtsi
        ARM: dts: sun5i: Use sun5i-reference-design-tablet.dtsi for utoo p66 dts
        ARM: dts: sun5i: Use sun5i-reference-design-tablet.dtsi for dit4350 dts
        ARM: dts: sun5i: reference-design-tablet: Remove mention of q8
        ARM: dts: sun5i: reference-design-tablet: Set lradc vref to avcc
        ARM: dts: sun5i: Rename sun5i-q8-common.dtsi sun5i-reference-design-tablet.dtsi
        ARM: dts: sun5i: Move q8 display bits to sun5i-a13-q8-tablet.dts
        ARM: dts: sunxi: Rename sunxi-q8-common.dtsi sunxi-reference-design-tablet.dtsi
        ARM: dts: at91: Don't build unnecessary dtbs
        ARM: dts: at91: sama5d3x: separate motherboard gmac and emac definitions
        ARM: dts: at91: at91sam9g25ek: fix isi endpoint node
        ARM: dts: at91: move isi definition to at91sam9g25ek
        ARM: dts: at91: fix i2c-gpio node name
        ARM: dts: at91: vinco: fix regulator name
        ARM: dts: at91: ariag25 : fix onewire node
        ...
      043248cd
    • Linus Torvalds's avatar
      Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 43a0a98a
      Linus Torvalds authored
      Pull ARM SoC driver updates from Olof Johansson:
       "Driver updates for ARM SoCs.
      
        A slew of changes this release cycle.  The reset driver tree, that we
        merge through arm-soc for historical reasons, is also sizable this
        time around.
      
        Among the changes:
      
         - clps711x: Treewide changes to compatible strings, merged here for simplicity.
         - Qualcomm: SCM firmware driver cleanups, move to platform driver
         - ux500: Major cleanups, removal of old mach-specific infrastructure.
         - Atmel external bus memory driver
         - Move of brcmstb platform to the rest of bcm
         - PMC driver updates for tegra, various fixes and improvements
         - Samsung platform driver updates to support 64-bit Exynos platforms
         - Reset controller cleanups moving to devm_reset_controller_register() APIs
         - Reset controller driver for Amlogic Meson
         - Reset controller driver for Hisilicon hi6220
         - ARM SCPI power domain support"
      
      * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (100 commits)
        ARM: ux500: consolidate base platform files
        ARM: ux500: move soc_id driver to drivers/soc
        ARM: ux500: call ux500_setup_id later
        ARM: ux500: consolidate soc_device code in id.c
        ARM: ux500: remove cpu_is_u* helpers
        ARM: ux500: use CLK_OF_DECLARE()
        ARM: ux500: move l2x0 init to .init_irq
        mfd: db8500 stop passing around platform data
        ASoC: ab8500-codec: remove platform data based probe
        ARM: ux500: move ab8500_regulator_plat_data into driver
        ARM: ux500: remove unused regulator data
        soc: raspberrypi-power: add CONFIG_OF dependency
        firmware: scpi: add CONFIG_OF dependency
        video: clps711x-fb: Changing the compatibility string to match with the smallest supported chip
        input: clps711x-keypad: Changing the compatibility string to match with the smallest supported chip
        pwm: clps711x: Changing the compatibility string to match with the smallest supported chip
        serial: clps711x: Changing the compatibility string to match with the smallest supported chip
        irqchip: clps711x: Changing the compatibility string to match with the smallest supported chip
        clocksource: clps711x: Changing the compatibility string to match with the smallest supported chip
        clk: clps711x: Changing the compatibility string to match with the smallest supported chip
        ...
      43a0a98a
    • Linus Torvalds's avatar
      Merge tag 'armsoc-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 6911a528
      Linus Torvalds authored
      Pull ARM SoC defconfig updates from Olof Johansson:
       "Defconfig additions, removals, etc.
      
        Most of these are small changes adding the options for newly
        upstreamed drivers, or drivers needed for new board support.
      
        - removed Broadcom bcm_defconfig, targets are all covered in
          multi_v7_defconfig
      
        - new defconfig: multi_v4t_defconfig"
      
      * tag 'armsoc-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (43 commits)
        ARM: multi_v7_defconfig: enable STMicroelectronics DRM Support
        ARM: multi_v7_defconfig: enable STMicroelectronics BDISP 2D blitter driver
        ARM: omap2plus_defconfig: Fix USB selection to keep Ethernet working
        ARM: configs: lpc18xx: enable adc and dac iio drivers
        ARM: config: Add a multi_v4t_defconfig
        ARM: multi_v7_defconfig: add ACT8945A
        ARM: at91/defconfig: Add ACT8945A driver
        ARM: imx_v6_v7_defconfig: Select ADS7846 support
        ARM: configs: qualcomm: Add MDM9615 missing defconfigs
        ARM: multi_v7_defconfig: Enable vivid driver as a module
        ARM: exynos_defconfig: Enable vivid driver as a module
        ARM: defconfig: enable the MSM8660 pin controller
        ARM: imx_v6_v7_defconfig: enable USB FFS gadget
        ARM: socfpga: enable PL330 DMA in socfpga_defconfig
        ARM: socfpga: add PCIe to socfpga_defconfig
        ARM: multi_v7_defconfig: defconfig: Enable r8a7792 SoC
        ARM: shmobile: defconfig: Enable r8a7792 SoC
        ARM: Remove bcm_defconfig
        ARM: multi_v7_defconfig: Enable Broadcom Kona watchdog
        ARM: multi_v7_defconfig: Enable Broadcom STB PWM
        ...
      6911a528
    • Linus Torvalds's avatar
      Merge tag 'armsoc-arm64' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 3fbff9c8
      Linus Torvalds authored
      Pull 64-bit ARM SoC updates from Olof Johansson:
       "Changes to platform code for 64-bit ARM platforms.
      
        Nearly all of these are defconfig updates to enable new drivers or old
        drivers still used on these 64-bit platforms.
      
        Added platforms for this release are:
      
         - Broadcom BCM2837
         - Renesas R8A7796"
      
      * tag 'armsoc-arm64' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (22 commits)
        arm64: remove duplicate PWM entry in defconfig
        arm64: Update default configuration
        arm64: defconfig: Enable more IP blocks for Exynos7 and Exynos5433
        arm64: amlogic: select gxbb clk driver
        arm64: defconfig: Enable S2MPS11 clock and S3C RTC driver
        arm64: marvell: enable Armada 3700 clock drivers
        arm64: defconfig: enable msm8996 pinctrl support
        arm64: defconfig: Enable qcom msm8996 clk drivers
        arm: defconfig: Enable PM8941 pwr key
        arm64: defconfig: enable stmmac and realtek PHY as modules
        arm64: Kconfig: select PM{,_GENERIC_DOMAINS} for ARCH_VEXPRESS
        arm64: defconfig: enable SENSORS_ARM_SCPI
        arm64: defconfig: enable Generic on-chip SRAM driver
        arm64: configs: enable PCIe driver for Armada 7K/8K
        arm64: Add platform selection for BCM2835.
        arm64: defconfig: disable plain NEON implementation of AES
        arm64: Allow for different DMA and CPU bus offsets
        arm64: defconfig: enable Renesas R8A7796 SoC
        arm64: defconfig: Enable Cadence MACB/GEM support
        ARM64: Kconfig: Select the Amlogic Meson pin controller driver
        ...
      3fbff9c8
    • Linus Torvalds's avatar
      Merge tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · fbae5cbb
      Linus Torvalds authored
      Pull ARM SoC platform updates from Olof Johansson:
       "Improved and new platform support for various SoCs:
      
        New SoC support:
         - Broadcom BCM23550
         - Freescale i.MX7Solo
         - Qualcomm MDM9615
         - Renesas r8a7792
      
        Improvements:
         - convert clps711x to multiplatform
         - debug uart improvements for Atmel platforms
         - Tango platform improvements: HOTPLUG_CPU, Suspend-to-ram
         - OMAP tweaks and improvements to hwmod
         - OMAP support for kexec on SMP"
      
      * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (109 commits)
        ARM: davinci: fix build break because of undeclared dm365_evm_snd_data
        ARM: s3c64xx: smartq: Avoid sparse warnings
        ARM: sti: Implement dummy L2 cache's write_sec
        ARM: STi: Update machine _namestr to be more generic.
        arm: meson: explicitly select clk drivers
        ARM: tango: add Suspend-to-RAM support
        ARM: hisi: consolidate the hisilicon machine entries
        ARM: tango: fix CONFIG_HOTPLUG_CPU=n build
        MAINTAINERS: Update BCM281XX/BCM11XXX/BCM216XX entry
        MAINTAINERS: Update BCM63XX entry
        MAINTAINERS: Add NS2 entry
        MAINTAINERS: Fix nsp false-positives
        MAINTAINERS: Change L to M for Broadcom ARM/ARM64 SoC entries
        ARM: debug: Enable DEBUG_BCM_5301X for Northstar Plus SoCs
        ARM: clps711x: Switch to MULTIPLATFORM
        ARM: clps711x: Remove boards support
        ARM: clps711x: Add basic DT support
        ARM: clps711x: Reduce static map size
        ARM: SAMSUNG: Constify iomem address passed to s5p_init_cpu
        ARM: oxnas: Change OX810SE default driver config
        ...
      fbae5cbb
    • Linus Torvalds's avatar
      Merge tag 'armsoc-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 6f888fe3
      Linus Torvalds authored
      Pull ARM SoC cleanups from Olof Johansson:
       "The cleanup branch keeps going down in size as we've completed a lot
        of the major legacy platform removals and conversions.
      
        A handful of changes this time around, some of the themes or larger
        sets are:
      
         - A bunch of i.MX cleanups around platform detection, init call cleanups
         - Misc fixes of missing/implicit includes
         - Removal of ARCH_[WANT_OPTIONAL|REQUIRE]_GPIOLIB"
      
      * tag 'armsoc-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (40 commits)
        ARM: mps2: fix typo
        ARM: s3c64xx: avoid warning about 'struct device_node'
        bus: mvebu-mbus: make mvebu_mbus_syscore_ops static
        bus: mvebu-mbus: fix __iomem on register pointers
        ARM: tegra: Remove board_init_funcs array
        ARM: iop: Fix indentation
        ARM: imx: remove cpu_is_mx*()
        ARM: imx: remove last call to cpu_is_mx5*
        ARM: imx: rework mx27_pm_init() call
        ARM: imx: deconstruct mx3_idle
        ARM: imx: deconstruct mxc_rnga initialization
        ARM: imx: remove cpu_is_mx1 check
        ARM: i.MX: Do not explicitly call l2x0_of_init()
        ARM: i.MX: system.c: Tweak prefetch settings for performance
        ARM: i.MX: system.c: Replace magic numbers
        ARM: i.MX: system.c: Remove redundant errata 752271 code
        ARM: i.MX: system.c: Convert goto to if statement
        ARM: Kirkwood: fix kirkwood_pm_init() declaration/type
        ARM: Kirkwood: make kirkwood_disable_mbus_error_propagation() static
        ARM: orion5x: make orion5x_legacy_handle_irq static
        ...
      6f888fe3
    • Linus Torvalds's avatar
      Merge tag 'linux-kselftest-4.8-rc1-update' of... · 5dd0bf62
      Linus Torvalds authored
      Merge tag 'linux-kselftest-4.8-rc1-update' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull kselftest updates from Shuah Khan:
       "This contains new tests and fixes:
      
         - a few fixes to existing tests
      
         - new media tests for testing driver unbind, and device removal paths
           while an user application is actively making system calls and
           ioctls"
      
      * tag 'linux-kselftest-4.8-rc1-update' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
        selftests: media_tests add a new video device test
        selftests: media_tests - Add media_device_open to .gitignore
        selftests: add media controller regression test scripts and document
        selftests: add media_device_open test
        selftests: media_device_test change it to randomize loop count
        selftests/vm: Don't mlockall MCL_CURRENT in on-fault-limit test
        selftests/vm: write strlen length instead of sizeof to nr_hugepages
        selftests/lib: set printf.sh executable
      5dd0bf62
    • Linus Torvalds's avatar
      Merge tag 'linux-kselftest-4.8-rc1-fixes' of... · 1571a03d
      Linus Torvalds authored
      Merge tag 'linux-kselftest-4.8-rc1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull kselftest fixes from Shuah Khan:
      
       - Add a new timer set-tz test case
      
       - Fix a bug in exec test Makefile dependency list
      
      * tag 'linux-kselftest-4.8-rc1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
        selftests/exec: Makefile is a run-time dependency, add it to the install list
        kselftests: timers: Add set-tz test case
      1571a03d
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-linus-v4.8-2' of... · 2790aed0
      Linus Torvalds authored
      Merge tag 'hwmon-for-linus-v4.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull more hwmon updates from Guenter Roeck:
      
       - Improved error handling in tmp102, lm75, and lm90 drivers
      
       - Bug fixes in sht3x, ftsteutates, iio_hwmon, and adt7411 drivers
      
      * tag 'hwmon-for-linus-v4.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (adt7411) set sane values for CFG1 and CFG3
        hwmon: (iio_hwmon) fix memory leak in name attribute
        hwmon: (ftsteutates) Fix potential memory access error
        hwmon: (tmp102) Improve error handling
        hwmon: (lm75) Improve error handling
        hwmon: (lm90) Improve error handling
        hwmon: (lm90) Add missing assignment
        hwmon: (sht3x) set initial jiffies to last_update
      2790aed0
    • Linus Torvalds's avatar
      Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 · f38d2e53
      Linus Torvalds authored
      Pull crypto fixes from Herbert Xu:
       "This fixes a number of regressions in the marvell cesa driver caused
        by the chaining work, and a regression in lib/mpi that leads to a
        GFP_KERNEL allocation with preemption disabled"
      
      * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
        crypto: marvell - Don't copy IV vectors from the _process op for ciphers
        lib/mpi: Fix SG miter leak
        crypto: marvell - Update cache with input sg only when it is unmapped
        crypto: marvell - Don't chain at DMA level when backlog is disabled
        crypto: marvell - Fix memory leaks in TDMA chain for cipher requests
      f38d2e53
    • Linus Torvalds's avatar
      Merge branch 'x86-headers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · aeb35d6b
      Linus Torvalds authored
      Pull x86 header cleanups from Ingo Molnar:
       "This tree is a cleanup of the x86 tree reducing spurious uses of
        module.h - which should improve build performance a bit"
      
      * 'x86-headers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, crypto: Restore MODULE_LICENSE() to glue_helper.c so it loads
        x86/apic: Remove duplicated include from probe_64.c
        x86/ce4100: Remove duplicated include from ce4100.c
        x86/headers: Include spinlock_types.h in x8664_ksyms_64.c for missing spinlock_t
        x86/platform: Delete extraneous MODULE_* tags fromm ts5500
        x86: Audit and remove any remaining unnecessary uses of module.h
        x86/kvm: Audit and remove any unnecessary uses of module.h
        x86/xen: Audit and remove any unnecessary uses of module.h
        x86/platform: Audit and remove any unnecessary uses of module.h
        x86/lib: Audit and remove any unnecessary uses of module.h
        x86/kernel: Audit and remove any unnecessary uses of module.h
        x86/mm: Audit and remove any unnecessary uses of module.h
        x86: Don't use module.h just for AUTHOR / LICENSE tags
      aeb35d6b
    • Linus Torvalds's avatar
      Merge tag 'backlight-for-linus-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight · 7a66ecfd
      Linus Torvalds authored
      Pull backlight updates from Lee Jones:
       "Add support for an enable regulator to lp855x_bl"
      
      * tag 'backlight-for-linus-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight:
        backlight: lp855x: Add enable regulator
      7a66ecfd
    • Linus Torvalds's avatar
      Merge tag 'mfd-for-linus-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd · 06e23d51
      Linus Torvalds authored
      Pull MFD updates from Lee Jones:
       "Core Framework:
         - New API to call bespoke pre/post IRQ handlers; Regmap
      
        New Device Support:
         - Add support for RN5T567 to rn5t618
         - Add support for COMe-cSL6 and COMe-mAL10 to kempld-core
      
        New Functionality:
         - Add support for USB Power Supply to axp20x
         - Add support for Power Key to hi655x-pmic
      
        Fix-ups:
         - Update MAINTAINERS; Dialog, Altera
         - Remove module support; max77843, max77620, max8998, max8997, max8925-i2c
         - Add module support; max14577
         - Constifying; max77620
         - Allow bespoke IRQ masking/unmasking; max77620
         - Remove superfluous code; arizona, qcom_rpm, smsc-ece1099
         - Power Management fixups; arizona-core
         - Error-path improvement; twl-core, dm355evm_msp, smsc-ece1099, hi655x
         - Clocking fixups; twl6040
         - Trivial (spelling, headers, coding-style, whitespace, (re)naming);
             si476x-i2c, omap-usb-tll, ti_am335x_tscadc, tps6507, hi655x-pmic
      
        Bug Fixes:
         - Fix offset error for MSM8660; qcom_rpm
         - Fix possible spurious IRQs; arizona, hi655x-pmic"
      
      * tag 'mfd-for-linus-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (42 commits)
        mfd: qcom_rpm: Parametrize also ack selector size
        mfd: twl6040: Handle mclk used for HPPLL and optional internal clock source
        mfd: Add support for COMe-cSL6 and COMe-mAL10 to Kontron PLD driver
        mfd: hi655x: Fix return value check in hi655x_pmic_probe()
        mfd: smsc-ece1099: Return directly after a function failure in smsc_i2c_probe()
        mfd: smsc-ece1099: Delete an unnecessary variable initialisation in smsc_i2c_probe()
        mfd: dm355evm_msp: Return directly after a failed platform_device_alloc() in add_child()
        mfd: twl-core: Refactoring for add_numbered_child()
        mfd: twl-core: Return directly after a failed platform_device_alloc() in add_numbered_child()
        mfd: arizona: Add missing disable of PM runtime on probe error path
        mfd: stmpe: Move platform data into MFD driver
        mfd: max14577: Allow driver to be built as a module
        mfd: max14577: Use module_init() instead of subsys_initcall()
        mfd: arizona: Remove some duplicate defines
        mfd: qcom_rpm: Remove unused define
        mfd: hi655x-pmic: Add powerkey device to hi655x PMIC driver
        mfd: hi655x-pmic: Rename some interrupt macro names
        mfd: hi655x-pmic: Fixup issue with un-acked interrupts
        mfd: arizona: Check if AOD interrupts are pending before dispatching
        mfd: qcom_rpm: Fix offset error for msm8660
        ...
      06e23d51
    • Linus Torvalds's avatar
      Merge tag 'iommu-updates-v4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu · dd967117
      Linus Torvalds authored
      Pull IOMMU updates from Joerg Roedel:
      
       - big-endian support and preparation for defered probing for the Exynos
         IOMMU driver
      
       - simplifications in iommu-group id handling
      
       - support for Mediatek generation one IOMMU hardware
      
       - conversion of the AMD IOMMU driver to use the generic IOVA allocator.
         This driver now also benefits from the recent scalability
         improvements in the IOVA code.
      
       - preparations to use generic DMA mapping code in the Rockchip IOMMU
         driver
      
       - device tree adaption and conversion to use generic page-table code
         for the MSM IOMMU driver
      
       - an iova_to_phys optimization in the ARM-SMMU driver to greatly
         improve page-table teardown performance with VFIO
      
       - various other small fixes and conversions
      
      * tag 'iommu-updates-v4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (59 commits)
        iommu/amd: Initialize dma-ops domains with 3-level page-table
        iommu/amd: Update Alias-DTE in update_device_table()
        iommu/vt-d: Return error code in domain_context_mapping_one()
        iommu/amd: Use container_of to get dma_ops_domain
        iommu/amd: Flush iova queue before releasing dma_ops_domain
        iommu/amd: Handle IOMMU_DOMAIN_DMA in ops->domain_free call-back
        iommu/amd: Use dev_data->domain in get_domain()
        iommu/amd: Optimize map_sg and unmap_sg
        iommu/amd: Introduce dir2prot() helper
        iommu/amd: Implement timeout to flush unmap queues
        iommu/amd: Implement flush queue
        iommu/amd: Allow NULL pointer parameter for domain_flush_complete()
        iommu/amd: Set up data structures for flush queue
        iommu/amd: Remove align-parameter from __map_single()
        iommu/amd: Remove other remains of old address allocator
        iommu/amd: Make use of the generic IOVA allocator
        iommu/amd: Remove special mapping code for dma_ops path
        iommu/amd: Pass gfp-flags to iommu_map_page()
        iommu/amd: Implement apply_dm_region call-back
        iommu/amd: Create a list of reserved iova addresses
        ...
      dd967117
    • Linus Torvalds's avatar
      Merge branch 'mailbox-for-next' of git://git.linaro.org/landing-teams/working/fujitsu/integration · 77d9ada2
      Linus Torvalds authored
      Pull mailbox updates from Jussi Brar:
       "Broadcom:
         - New PDC controller driver and bindings
      
        Misc:
         - PL320 - Convert from 'raw' IO to 'relaxed' version
         - Test - fix dangling pointer"
      
      * 'mailbox-for-next' of git://git.linaro.org/landing-teams/working/fujitsu/integration:
        mailbox: Fix format and type mismatches in Broadcom PDC driver
        mailbox: Add Broadcom PDC mailbox driver
        dt-bindings: add bindings documentation for PDC driver.
        mailbox: pl320: remove __raw IO
        mailbox: mailbox-test: set tdev->signal to NULL after freeing
      77d9ada2
    • Linus Torvalds's avatar
      Merge tag 'mmc-v4.8' of git://git.linaro.org/people/ulf.hansson/mmc · 07f00f06
      Linus Torvalds authored
      Pull MMC updates from Ulf Hansson:
       "MMC core:
         - A couple of changes to improve the support for erase/discard/trim cmds
         - Add eMMC HS400 enhanced strobe support
         - Show OCR and DSR registers in SYSFS for MMC/SD cards
         - Correct and improve busy detection logic for MMC switch (CMD6) cmds
         - Disable HPI cmds for certain broken Hynix eMMC cards
         - Allow MMC hosts to specify non-support for SD and MMC cmds
         - Some minor additional fixes
      
        MMC host:
         - sdhci: Re-works, fixes and clean-ups
         - sdhci: Add HW auto re-tuning support
         - sdhci: Re-factor code to prepare for adding support for eMMC CMDQ
         - sdhci-esdhc-imx: Fixes and clean-ups
         - sdhci-esdhc-imx: Update system PM support
         - sdhci-esdhc-imx: Enable HW auto re-tuning
         - sdhci-bcm2835: Remove driver as sdhci-iproc is used instead
         - sdhci-brcmstb: Add new driver for Broadcom BRCMSTB SoCs
         - sdhci-msm: Add support for UHS cards
         - sdhci-tegra: Improve support for UHS cards
         - sdhci-of-arasan: Update phy support for Rockchip SoCs
         - sdhci-of-arasan: Deploy enhanced strobe support
         - dw_mmc: Some fixes and clean-ups
         - dw_mmc: Enable support for erase/discard/trim cmds
         - dw_mmc: Enable CMD23 support
         - mediatek: Some fixes related to the eMMC HS400 support
         - sh_mmcif: Improve support for HW busy detection
         - rtsx_pci: Enable support for erase/discard/trim cmds"
      
      * tag 'mmc-v4.8' of git://git.linaro.org/people/ulf.hansson/mmc: (135 commits)
        mmc: rtsx_pci: Remove deprecated create_singlethread_workqueue
        mmc: rtsx_pci: Enable MMC_CAP_ERASE to allow erase/discard/trim requests
        mmc: rtsx_pci: Use the provided busy timeout from the mmc core
        mmc: sdhci-pltfm: Drop define for SDHCI_PLTFM_PMOPS
        mmc: sdhci-pltfm: Convert to use the SET_SYSTEM_SLEEP_PM_OPS
        mmc: sdhci-pltfm: Make sdhci_pltfm_suspend|resume() static
        mmc: sdhci-esdhc-imx: Use common sdhci_suspend|resume_host()
        mmc: sdhci-esdhc-imx: Assign system PM ops within #ifdef CONFIG_PM_SLEEP
        mmc: sdhci-sirf: Remove non needed #ifdef CONFIG_PM* for dev_pm_ops
        mmc: sdhci-s3c: Remove non needed #ifdef CONFIG_PM for dev_pm_ops
        mmc: sdhci-pxav3: Remove non needed #ifdef CONFIG_PM for dev_pm_ops
        mmc: sdhci-of-esdhc: Simplify code by using SIMPLE_DEV_PM_OPS
        mmc: sdhci-acpi: Simplify code by using SET_SYSTEM_SLEEP_PM_OPS
        mmc: sdhci-pci-core: Simplify code by using SET_SYSTEM_SLEEP_PM_OPS
        mmc: Change the max discard sectors and erase response when HW busy detect
        phy: rockchip-emmc: Wait even longer for the DLL to lock
        phy: rockchip-emmc: Be tolerant to card clock of 0 in power on
        mmc: sdhci-of-arasan: Revert: Always power the PHY off/on when clock changes
        mmc: sdhci-msm: Add support for UHS cards
        mmc: sdhci-msm: Add set_uhs_signaling() implementation
        ...
      07f00f06
    • Linus Torvalds's avatar
      Merge git://www.linux-watchdog.org/linux-watchdog · 27acbec3
      Linus Torvalds authored
      Pull watchdog updates from Wim Van Sebroeck:
       "Core:
         - min and max timeout improvements, WDOG_HW_RUNNING improvements,
           status funtionality
         - Add a device managed API for watchdog_register_device()
      
        New watchdog drivers:
         -  Aspeed SoCs
         -  Maxim PMIC MAX77620
         -  Amlogic Meson GXBB SoC
      
        Enhancements:
         - support for the r8a7796 watchdog device
         - support for F81866 watchdog device
         - support for 5th variation of Apollo Lake
         - support for MCP78S chipset
         - clean-up of softdog.c watchdog device driver
         - pic32-wdt and pic32-dmt fixes
         - Documentation/watchdog: watchdog-test improvements
         - several other fixes and improvements"
      
      * git://www.linux-watchdog.org/linux-watchdog: (50 commits)
        watchdog: gpio_wdt: Fix missing platform_set_drvdata() in gpio_wdt_probe()
        watchdog: core: Clear WDOG_HW_RUNNING before calling the stop function
        watchdog: core: Fix error handling of watchdog_dev_init()
        watchdog: pic32-wdt: Fix return value check in pic32_wdt_drv_probe()
        watchdog: pic32-dmt: Remove .owner field for driver
        watchdog: pic32-wdt: Remove .owner field for driver
        watchdog: renesas-wdt: Add support for the r8a7796 wdt
        Documentation/watchdog: check return value for magic close
        watchdog: sbsa: Drop status function
        watchdog: Implement status function in watchdog core
        watchdog: tangox: Set max_hw_heartbeat_ms instead of max_timeout
        watchdog: change watchdog_need_worker logic
        watchdog: add support for MCP78S chipset in nv_tco
        watchdog: bcm2835_wdt: remove redundant ->set_timeout callback
        watchdog: bcm2835_wdt: constify _ops and _info structures
        dt-bindings: watchdog: Add Meson GXBB Watchdog bindings
        watchdog: Add Meson GXBB Watchdog Driver
        watchdog: qcom: configure BARK time in addition to BITE time
        watchdog: qcom: add option for standalone watchdog not in timer block
        watchdog: qcom: update device tree bindings
        ...
      27acbec3
    • Linus Torvalds's avatar
      Merge branch 'for-linus-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs · ba929b66
      Linus Torvalds authored
      Pull btrfs updates from Chris Mason:
       "This pull is dedicated to Josef's enospc rework, which we've been
        testing for a few releases now.  It fixes some early enospc problems
        and is dramatically faster.
      
        This also includes an updated fix for the delalloc accounting that
        happens after a fault in copy_from_user.  My patch in v4.7 was almost
        but not quite enough"
      
      * 'for-linus-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
        Btrfs: fix delalloc accounting after copy_from_user faults
        Btrfs: avoid deadlocks during reservations in btrfs_truncate_block
        Btrfs: use FLUSH_LIMIT for relocation in reserve_metadata_bytes
        Btrfs: fill relocation block rsv after allocation
        Btrfs: always use trans->block_rsv for orphans
        Btrfs: change how we calculate the global block rsv
        Btrfs: use root when checking need_async_flush
        Btrfs: don't bother kicking async if there's nothing to reclaim
        Btrfs: fix release reserved extents trace points
        Btrfs: add fsid to some tracepoints
        Btrfs: add tracepoints for flush events
        Btrfs: fix delalloc reservation amount tracepoint
        Btrfs: trace pinned extents
        Btrfs: introduce ticketed enospc infrastructure
        Btrfs: add tracepoint for adding block groups
        Btrfs: warn_on for unaccounted spaces
        Btrfs: change delayed reservation fallback behavior
        Btrfs: always reserve metadata for delalloc extents
        Btrfs: fix callers of btrfs_block_rsv_migrate
        Btrfs: add bytes_readonly to the spaceinfo at once
      ba929b66