1. 07 Apr, 2014 19 commits
    • Konstantin Khlebnikov's avatar
      tools/vm/page-types.c: page-cache sniffing feature · 65a6a410
      Konstantin Khlebnikov authored
      After this patch 'page-types' can walk over a file's mappings and
      analyze populated page cache pages mostly without disturbing its state.
      
      It maps chunk of file, marks VMA as MADV_RANDOM to turn off readahead,
      pokes VMA via mincore() to determine cached pages, triggers page-fault
      only for them, and finally gathers information via pagemap/kpageflags.
      Before unmap it marks VMA as MADV_SEQUENTIAL for ignoring reference
      bits.
      
      usage: page-types -f <path>
      
      If <path> is directory it will analyse all files in all subdirectories.
      
      Symlinks are not followed as well as mount points.  Hardlinks aren't
      handled, they'll be dumped as many times as they are found.  Recursive
      walk brings all dentries into dcache and populates page cache of
      block-devices aka 'Buffers'.
      
      Probably it's worth to add ioctl for dumping file page cache as array of
      PFNs as a replacement for this hackish juggling with
      mmap/madvise/mincore/pagemap.  Also recursive walk could be replaced
      with dumping cached inodes via some ioctl or debugfs interface followed
      by openning them via open_by_handle_at, this would fix hardlinks
      handling and unneeded population of dcache and buffers.  This interface
      might be used as data source for constructing readahead plans and for
      background optimizations of actively used files.
      
      collateral changes:
      + fix 64-bit LFS: define _FILE_OFFSET_BITS instead of _LARGEFILE64_SOURCE
      + replace lseek + read with single pread
      + make show_page_range() reusable after flush
      
      usage example:
      
        ~/src/linux/tools/vm$ sudo ./page-types -L -f page-types
        foffset offset    flags
        page-types       Inode: 2229277       Size: 89065 (22 pages)
        Modify: Tue Feb 25 12:00:59 2014 (162 seconds ago)
        Access: Tue Feb 25 12:01:00 2014 (161 seconds ago)
        0       3cbf3b     __RU_lA____M________________________
        1       38946a     __RU_lA____M________________________
        2       1a3cec     __RU_lA____M________________________
        3       1a8321     __RU_lA____M________________________
        4       3af7cc     __RU_lA____M________________________
        5       1ed532     __RU_lA_____________________________
        6       2e436a     __RU_lA_____________________________
        7       29a35e     ___U_lA_____________________________
        8       2de86e     ___U_lA_____________________________
        9       3bdfb4     ___U_lA_____________________________
        10      3cd8a3     ___U_lA_____________________________
        11      2afa50     ___U_lA_____________________________
        12      2534c2     ___U_lA_____________________________
        13      1b7a40     ___U_lA_____________________________
        14      17b0be     ___U_lA_____________________________
        15      392b0c     ___U_lA_____________________________
        16      3ba46a     __RU_lA_____________________________
        17      397dc8     ___U_lA_____________________________
        18      1f2a36     ___U_lA_____________________________
        19      21fd30     __RU_lA_____________________________
        20      2c35ba     __RU_l______________________________
        21      20f181     __RU_l______________________________
      
                     flags page-count   MB  symbolic-flags                        long-symbolic-flags
        0x000000000000002c          2    0  __RU_l______________________________  referenced,uptodate,lru
        0x0000000000000068         11    0  ___U_lA_____________________________  uptodate,lru,active
        0x000000000000006c          4    0  __RU_lA_____________________________  referenced,uptodate,lru,active
        0x000000000000086c          5    0  __RU_lA____M________________________  referenced,uptodate,lru,active,mmap
                     total         22    0
      
        ~/src/linux/tools/vm$ sudo ./page-types -f /
                     flags page-count     MB  symbolic-flags                        long-symbolic-flags
        0x0000000000000028      21761     85  ___U_l______________________________  uptodate,lru
        0x000000000000002c     127279    497  __RU_l______________________________  referenced,uptodate,lru
        0x0000000000000068      74160    289  ___U_lA_____________________________  uptodate,lru,active
        0x000000000000006c      84469    329  __RU_lA_____________________________  referenced,uptodate,lru,active
        0x000000000000007c          1      0  __RUDlA_____________________________  referenced,uptodate,dirty,lru,active
        0x0000000000000228        370      1  ___U_l___I__________________________  uptodate,lru,reclaim
        0x0000000000000828         49      0  ___U_l_____M________________________  uptodate,lru,mmap
        0x000000000000082c        126      0  __RU_l_____M________________________  referenced,uptodate,lru,mmap
        0x0000000000000868        137      0  ___U_lA____M________________________  uptodate,lru,active,mmap
        0x000000000000086c      12890     50  __RU_lA____M________________________  referenced,uptodate,lru,active,mmap
                     total     321242   1254
      Signed-off-by: default avatarKonstantin Khlebnikov <koct9i@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Fengguang Wu <fengguang.wu@intel.com>
      Cc: Borislav Petkov <bp@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      65a6a410
    • Kirill A. Shutemov's avatar
      mm: disable split page table lock for !MMU · 9164550e
      Kirill A. Shutemov authored
      There's no reason to enable split page table lock if don't have page
      tables.
      
      It also triggers build error at least on ARM since we don't define
      pmd_page() for !MMU.
      
        In file included from arch/arm/kernel/asm-offsets.c:14:0:
        include/linux/mm.h: In function 'pte_lockptr':
        include/linux/mm.h:1392:2: error: implicit declaration of function 'pmd_page' [-Werror=implicit-function-declaration]
        include/linux/mm.h:1392:2: warning: passing argument 1 of 'ptlock_ptr' makes pointer from integer without a cast [enabled by default]
        include/linux/mm.h:1384:27: note: expected 'struct page *' but argument is of type 'int'
      Signed-off-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
      Reported-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9164550e
    • Alex Thorlton's avatar
      exec: kill the unnecessary mm->def_flags setting in load_elf_binary() · ab0e113f
      Alex Thorlton authored
      load_elf_binary() sets current->mm->def_flags = def_flags and def_flags
      is always zero.  Not only this looks strange, this is unnecessary
      because mm_init() has already set ->def_flags = 0.
      Signed-off-by: default avatarAlex Thorlton <athorlton@sgi.com>
      Suggested-by: default avatarOleg Nesterov <oleg@redhat.com>
      Cc: Gerald Schaefer <gerald.schaefer@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Christian Borntraeger <borntraeger@de.ibm.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Acked-by: default avatarRik van Riel <riel@redhat.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Cc: Alexander Viro <viro@zeniv.linux.org.uk>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ab0e113f
    • Alex Thorlton's avatar
      mm, thp: add VM_INIT_DEF_MASK and PRCTL_THP_DISABLE · a0715cc2
      Alex Thorlton authored
      Add VM_INIT_DEF_MASK, to allow us to set the default flags for VMs.  It
      also adds a prctl control which allows us to set the THP disable bit in
      mm->def_flags so that VMs will pick up the setting as they are created.
      Signed-off-by: default avatarAlex Thorlton <athorlton@sgi.com>
      Suggested-by: default avatarOleg Nesterov <oleg@redhat.com>
      Cc: Gerald Schaefer <gerald.schaefer@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Christian Borntraeger <borntraeger@de.ibm.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Acked-by: default avatarRik van Riel <riel@redhat.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Cc: Alexander Viro <viro@zeniv.linux.org.uk>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a0715cc2
    • Alex Thorlton's avatar
      mm: revert "thp: make MADV_HUGEPAGE check for mm->def_flags" · 1e1836e8
      Alex Thorlton authored
      The main motivation behind this patch is to provide a way to disable THP
      for jobs where the code cannot be modified, and using a malloc hook with
      madvise is not an option (i.e.  statically allocated data).  This patch
      allows us to do just that, without affecting other jobs running on the
      system.
      
      We need to do this sort of thing for jobs where THP hurts performance,
      due to the possibility of increased remote memory accesses that can be
      created by situations such as the following:
      
      When you touch 1 byte of an untouched, contiguous 2MB chunk, a THP will
      be handed out, and the THP will be stuck on whatever node the chunk was
      originally referenced from.  If many remote nodes need to do work on
      that same chunk, they'll be making remote accesses.
      
      With THP disabled, 4K pages can be handed out to separate nodes as
      they're needed, greatly reducing the amount of remote accesses to
      memory.
      
      This patch is based on some of my work combined with some
      suggestions/patches given by Oleg Nesterov.  The main goal here is to
      add a prctl switch to allow us to disable to THP on a per mm_struct
      basis.
      
      Here's a bit of test data with the new patch in place...
      
      First with the flag unset:
      
        # perf stat -a ./prctl_wrapper_mmv3 0 ./thp_pthread -C 0 -m 0 -c 512 -b 256g
        Setting thp_disabled for this task...
        thp_disable: 0
        Set thp_disabled state to 0
        Process pid = 18027
      
                                                                                                                             PF/
                                        MAX        MIN                                  TOTCPU/      TOT_PF/   TOT_PF/     WSEC/
        TYPE:               CPUS       WALL       WALL        SYS     USER     TOTCPU       CPU     WALL_SEC   SYS_SEC       CPU   NODES
         512      1.120      0.060      0.000    0.110      0.110     0.000    28571428864 -9223372036854775808  55803572      23
      
         Performance counter stats for './prctl_wrapper_mmv3_hack 0 ./thp_pthread -C 0 -m 0 -c 512 -b 256g':
      
          273719072.841402 task-clock                #  641.026 CPUs utilized           [100.00%]
                 1,008,986 context-switches          #    0.000 M/sec                   [100.00%]
                     7,717 CPU-migrations            #    0.000 M/sec                   [100.00%]
                 1,698,932 page-faults               #    0.000 M/sec
        355,222,544,890,379 cycles                   #    1.298 GHz                     [100.00%]
        536,445,412,234,588 stalled-cycles-frontend  #  151.02% frontend cycles idle    [100.00%]
        409,110,531,310,223 stalled-cycles-backend   #  115.17% backend  cycles idle    [100.00%]
        148,286,797,266,411 instructions             #    0.42  insns per cycle
                                                     #    3.62  stalled cycles per insn [100.00%]
        27,061,793,159,503 branches                  #   98.867 M/sec                   [100.00%]
             1,188,655,196 branch-misses             #    0.00% of all branches
      
             427.001706337 seconds time elapsed
      
      Now with the flag set:
      
        # perf stat -a ./prctl_wrapper_mmv3 1 ./thp_pthread -C 0 -m 0 -c 512 -b 256g
        Setting thp_disabled for this task...
        thp_disable: 1
        Set thp_disabled state to 1
        Process pid = 144957
      
                                                                                                                             PF/
                                        MAX        MIN                                  TOTCPU/      TOT_PF/   TOT_PF/     WSEC/
        TYPE:               CPUS       WALL       WALL        SYS     USER     TOTCPU       CPU     WALL_SEC   SYS_SEC       CPU   NODES
         512      0.620      0.260      0.250    0.320      0.570     0.001    51612901376 128000000000 100806448      23
      
         Performance counter stats for './prctl_wrapper_mmv3_hack 1 ./thp_pthread -C 0 -m 0 -c 512 -b 256g':
      
          138789390.540183 task-clock                #  641.959 CPUs utilized           [100.00%]
                   534,205 context-switches          #    0.000 M/sec                   [100.00%]
                     4,595 CPU-migrations            #    0.000 M/sec                   [100.00%]
                63,133,119 page-faults               #    0.000 M/sec
        147,977,747,269,768 cycles                   #    1.066 GHz                     [100.00%]
        200,524,196,493,108 stalled-cycles-frontend  #  135.51% frontend cycles idle    [100.00%]
        105,175,163,716,388 stalled-cycles-backend   #   71.07% backend  cycles idle    [100.00%]
        180,916,213,503,160 instructions             #    1.22  insns per cycle
                                                     #    1.11  stalled cycles per insn [100.00%]
        26,999,511,005,868 branches                  #  194.536 M/sec                   [100.00%]
               714,066,351 branch-misses             #    0.00% of all branches
      
             216.196778807 seconds time elapsed
      
      As with previous versions of the patch, We're getting about a 2x
      performance increase here.  Here's a link to the test case I used, along
      with the little wrapper to activate the flag:
      
        http://oss.sgi.com/projects/memtests/thp_pthread_mmprctlv3.tar.gz
      
      This patch (of 3):
      
      Revert commit 8e72033f and add in code to fix up any issues caused
      by the revert.
      
      The revert is necessary because hugepage_madvise would return -EINVAL
      when VM_NOHUGEPAGE is set, which will break subsequent chunks of this
      patch set.
      
      Here's a snip of an e-mail from Gerald detailing the original purpose of
      this code, and providing justification for the revert:
      
        "The intent of commit 8e72033f was to guard against any future
         programming errors that may result in an madvice(MADV_HUGEPAGE) on
         guest mappings, which would crash the kernel.
      
         Martin suggested adding the bit to arch/s390/mm/pgtable.c, if
         8e72033f was to be reverted, because that check will also prevent
         a kernel crash in the case described above, it will now send a
         SIGSEGV instead.
      
         This would now also allow to do the madvise on other parts, if
         needed, so it is a more flexible approach.  One could also say that
         it would have been better to do it this way right from the
         beginning..."
      Signed-off-by: default avatarAlex Thorlton <athorlton@sgi.com>
      Suggested-by: default avatarOleg Nesterov <oleg@redhat.com>
      Tested-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
      Cc: Gerald Schaefer <gerald.schaefer@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1e1836e8
    • Joonsoo Kim's avatar
      mm/compaction: clean-up code on success of ballon isolation · b6c75016
      Joonsoo Kim authored
      It is just for clean-up to reduce code size and improve readability.
      There is no functional change.
      Signed-off-by: default avatarJoonsoo Kim <iamjoonsoo.kim@lge.com>
      Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Rik van Riel <riel@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b6c75016
    • Joonsoo Kim's avatar
      mm/compaction: check pageblock suitability once per pageblock · c122b208
      Joonsoo Kim authored
      isolation_suitable() and migrate_async_suitable() is used to be sure
      that this pageblock range is fine to be migragted.  It isn't needed to
      call it on every page.  Current code do well if not suitable, but, don't
      do well when suitable.
      
      1) It re-checks isolation_suitable() on each page of a pageblock that was
         already estabilished as suitable.
      2) It re-checks migrate_async_suitable() on each page of a pageblock that
         was not entered through the next_pageblock: label, because
         last_pageblock_nr is not otherwise updated.
      
      This patch fixes situation by 1) calling isolation_suitable() only once
      per pageblock and 2) always updating last_pageblock_nr to the pageblock
      that was just checked.
      
      Additionally, move PageBuddy() check after pageblock unit check, since
      pageblock check is the first thing we should do and makes things more
      simple.
      
      [vbabka@suse.cz: rephrase commit description]
      Signed-off-by: default avatarJoonsoo Kim <iamjoonsoo.kim@lge.com>
      Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Rik van Riel <riel@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c122b208
    • Joonsoo Kim's avatar
      mm/compaction: change the timing to check to drop the spinlock · be1aa03b
      Joonsoo Kim authored
      It is odd to drop the spinlock when we scan (SWAP_CLUSTER_MAX - 1) th
      pfn page.  This may results in below situation while isolating
      migratepage.
      
      1. try isolate 0x0 ~ 0x200 pfn pages.
      2. When low_pfn is 0x1ff, ((low_pfn+1) % SWAP_CLUSTER_MAX) == 0, so drop
         the spinlock.
      3. Then, to complete isolating, retry to aquire the lock.
      
      I think that it is better to use SWAP_CLUSTER_MAX th pfn for checking the
      criteria about dropping the lock.  This has no harm 0x0 pfn, because, at
      this time, locked variable would be false.
      Signed-off-by: default avatarJoonsoo Kim <iamjoonsoo.kim@lge.com>
      Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Rik van Riel <riel@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      be1aa03b
    • Joonsoo Kim's avatar
      mm/compaction: do not call suitable_migration_target() on every page · 01ead534
      Joonsoo Kim authored
      suitable_migration_target() checks that pageblock is suitable for
      migration target.  In isolate_freepages_block(), it is called on every
      page and this is inefficient.  So make it called once per pageblock.
      
      suitable_migration_target() also checks if page is highorder or not, but
      it's criteria for highorder is pageblock order.  So calling it once
      within pageblock range has no problem.
      Signed-off-by: default avatarJoonsoo Kim <iamjoonsoo.kim@lge.com>
      Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Rik van Riel <riel@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      01ead534
    • Joonsoo Kim's avatar
      mm/compaction: disallow high-order page for migration target · 7d348b9e
      Joonsoo Kim authored
      Purpose of compaction is to get a high order page.  Currently, if we
      find high-order page while searching migration target page, we break it
      to order-0 pages and use them as migration target.  It is contrary to
      purpose of compaction, so disallow high-order page to be used for
      migration target.
      
      Additionally, clean-up logic in suitable_migration_target() to simplify
      the code.  There is no functional changes from this clean-up.
      Signed-off-by: default avatarJoonsoo Kim <iamjoonsoo.kim@lge.com>
      Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Rik van Riel <riel@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7d348b9e
    • Michal Hocko's avatar
      mm: exclude memoryless nodes from zone_reclaim · 70ef57e6
      Michal Hocko authored
      We had a report about strange OOM killer strikes on a PPC machine
      although there was a lot of swap free and a tons of anonymous memory
      which could be swapped out.  In the end it turned out that the OOM was a
      side effect of zone reclaim which wasn't unmapping and swapping out and
      so the system was pushed to the OOM.  Although this sounds like a bug
      somewhere in the kswapd vs.  zone reclaim vs.  direct reclaim
      interaction numactl on the said hardware suggests that the zone reclaim
      should not have been set in the first place:
      
        node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
        node 0 size: 0 MB
        node 0 free: 0 MB
        node 2 cpus:
        node 2 size: 7168 MB
        node 2 free: 6019 MB
        node distances:
        node   0   2
        0:  10  40
        2:  40  10
      
      So all the CPUs are associated with Node0 which doesn't have any memory
      while Node2 contains all the available memory.  Node distances cause an
      automatic zone_reclaim_mode enabling.
      
      Zone reclaim is intended to keep the allocations local but this doesn't
      make any sense on the memoryless nodes.  So let's exclude such nodes for
      init_zone_allows_reclaim which evaluates zone reclaim behavior and
      suitable reclaim_nodes.
      Signed-off-by: default avatarMichal Hocko <mhocko@suse.cz>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Acked-by: default avatarNishanth Aravamudan <nacc@linux.vnet.ibm.com>
      Tested-by: default avatarNishanth Aravamudan <nacc@linux.vnet.ibm.com>
      Acked-by: default avatarMel Gorman <mgorman@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      70ef57e6
    • Davidlohr Bueso's avatar
      mm/memory.c: update comment in unmap_single_vma() · 7aa6b4ad
      Davidlohr Bueso authored
      The described issue now occurs inside mmap_region().  And unfortunately
      is still valid.
      Signed-off-by: default avatarDavidlohr Bueso <davidlohr@hp.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7aa6b4ad
    • Weijie Yang's avatar
      mm/vmscan: do not check compaction_ready on promoted zones · 9bbc04ee
      Weijie Yang authored
      We abort direct reclaim if we find the zone is ready for compaction.
      Sometimes the zone is just a promoted highmem zone to force a scan of
      highmem, which is not the intended zone the caller want to allocate a
      page from.  In this situation, setting aborted_reclaim to indicate the
      caller turned back to retry the allocation is waste of time and could
      cause a loop in __alloc_pages_slowpath().
      
      This patch does not check compaction_ready() on promoted zones to avoid
      the above situation.  Only set aborted_reclaim if the caller intended
      zone is ready for compaction.
      Signed-off-by: default avatarWeijie Yang <weijie.yang@samsung.com>
      Acked-by: default avatarRik van Riel <riel@redhat.com>
      Acked-by: default avatarMel Gorman <mgorman@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9bbc04ee
    • Weijie Yang's avatar
      mm/vmscan: restore sc->gfp_mask after promoting it to __GFP_HIGHMEM · 619d0d76
      Weijie Yang authored
      We promote sc->gfp_mask to __GFP_HIGHMEM to forcibly scan highmem if
      there are too many buffer_heads pinning highmem.  See cc715d99 ("mm:
      vmscan: forcibly scan highmem if there are too many buffer_heads pinning
      highmem").
      
      This patch restores sc->gfp_mask to its caller original value after
      finishing the scan job, to avoid the impact on other invocations from
      its upper caller, such as vmpressure_prio(), shrink_slab().
      Signed-off-by: default avatarWeijie Yang <weijie.yang@samsung.com>
      Acked-by: default avatarMel Gorman <mgorman@suse.de>
      Acked-by: default avatarRik van Riel <riel@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      619d0d76
    • Rik van Riel's avatar
      mm: move mmu notifier call from change_protection to change_pmd_range · a5338093
      Rik van Riel authored
      The NUMA scanning code can end up iterating over many gigabytes of
      unpopulated memory, especially in the case of a freshly started KVM
      guest with lots of memory.
      
      This results in the mmu notifier code being called even when there are
      no mapped pages in a virtual address range.  The amount of time wasted
      can be enough to trigger soft lockup warnings with very large KVM
      guests.
      
      This patch moves the mmu notifier call to the pmd level, which
      represents 1GB areas of memory on x86-64.  Furthermore, the mmu notifier
      code is only called from the address in the PMD where present mappings
      are first encountered.
      
      The hugetlbfs code is left alone for now; hugetlb mappings are not
      relocatable, and as such are left alone by the NUMA code, and should
      never trigger this problem to begin with.
      Signed-off-by: default avatarRik van Riel <riel@redhat.com>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Reported-by: default avatarXing Gang <gang.xing@hp.com>
      Tested-by: default avatarChegu Vinod <chegu_vinod@hp.com>
      Cc: Sasha Levin <sasha.levin@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a5338093
    • Mel Gorman's avatar
      mm: numa: recheck for transhuge pages under lock during protection changes · 1ad9f620
      Mel Gorman authored
      Sasha reported the following bug using trinity
      
        kernel BUG at mm/mprotect.c:149!
        invalid opcode: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
        Dumping ftrace buffer:
           (ftrace buffer empty)
        Modules linked in:
        CPU: 20 PID: 26219 Comm: trinity-c216 Tainted: G        W    3.14.0-rc5-next-20140305-sasha-00011-ge06f5f3-dirty #105
        task: ffff8800b6c80000 ti: ffff880228436000 task.ti: ffff880228436000
        RIP: change_protection_range+0x3b3/0x500
        Call Trace:
          change_protection+0x25/0x30
          change_prot_numa+0x1b/0x30
          task_numa_work+0x279/0x360
          task_work_run+0xae/0xf0
          do_notify_resume+0x8e/0xe0
          retint_signal+0x4d/0x92
      
      The VM_BUG_ON was added in -mm by the patch "mm,numa: reorganize
      change_pmd_range".  The race existed without the patch but was just
      harder to hit.
      
      The problem is that a transhuge check is made without holding the PTL.
      It's possible at the time of the check that a parallel fault clears the
      pmd and inserts a new one which then triggers the VM_BUG_ON check.  This
      patch removes the VM_BUG_ON but fixes the race by rechecking transhuge
      under the PTL when marking page tables for NUMA hinting and bailing if a
      race occurred.  It is not a problem for calls to mprotect() as they hold
      mmap_sem for write.
      Signed-off-by: default avatarMel Gorman <mgorman@suse.de>
      Reported-by: default avatarSasha Levin <sasha.levin@oracle.com>
      Reviewed-by: default avatarRik van Riel <riel@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1ad9f620
    • Rik van Riel's avatar
      mm,numa: reorganize change_pmd_range() · 88a9ab6e
      Rik van Riel authored
      Reorganize the order of ifs in change_pmd_range a little, in preparation
      for the next patch.
      
      [akpm@linux-foundation.org: fix indenting, per David]
      Signed-off-by: default avatarRik van Riel <riel@redhat.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Reported-by: default avatarXing Gang <gang.xing@hp.com>
      Tested-by: default avatarChegu Vinod <chegu_vinod@hp.com>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Cc: Sasha Levin <sasha.levin@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      88a9ab6e
    • Naoya Horiguchi's avatar
      mm/hugetlb.c: add NULL check of return value of huge_pte_offset · a9af0c5d
      Naoya Horiguchi authored
      huge_pte_offset() could return NULL, so we need NULL check to avoid
      potential NULL pointer dereferences.
      Signed-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Sasha Levin <sasha.levin@oracle.com>
      Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
      Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a9af0c5d
    • Fabian Frederick's avatar
      ntfs: logging clean-up · 87c1b497
      Fabian Frederick authored
      - Convert spinlock/static array to va_format (inspired by Joe Perches
        help on previous logging patches).
      
      - Convert printk(KERN_ERR to pr_warn in __ntfs_warning.
      
      - Convert printk(KERN_ERR to pr_err in __ntfs_error.
      
      - Convert printk(KERN_DEBUG to pr_debug in __ntfs_debug.  (Note that
        __ntfs_debug is still guarded by #if DEBUG)
      
      - Improve !DEBUG to parse all arguments (Joe Perches).
      
      - Sparse pr_foo() conversions in super.c
      
      NTFS, NTFS-fs prefixes as well as 'warning' and 'error' were removed :
      pr_foo() automatically adds module name and error level is already
      specified.
      Signed-off-by: default avatarFabian Frederick <fabf@skynet.be>
      Cc: Anton Altaparmakov <anton@tuxera.com>
      Cc: Joe Perches <joe@perches.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      87c1b497
  2. 06 Apr, 2014 8 commits
    • Linus Torvalds's avatar
      Merge tag 'nfs-for-3.15-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs · 2b3a8fd7
      Linus Torvalds authored
      Pull NFS client updates from Trond Myklebust:
       "Highlights include:
      
         - Stable fix for a use after free issue in the NFSv4.1 open code
         - Fix the SUNRPC bi-directional RPC code to account for TCP segmentation
         - Optimise usage of readdirplus when confronted with 'ls -l' situations
         - Soft mount bugfixes
         - NFS over RDMA bugfixes
         - NFSv4 close locking fixes
         - Various NFSv4.x client state management optimisations
         - Rename/unlink code cleanups"
      
      * tag 'nfs-for-3.15-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (28 commits)
        nfs: pass string length to pr_notice message about readdir loops
        NFSv4: Fix a use-after-free problem in open()
        SUNRPC: rpc_restart_call/rpc_restart_call_prepare should clear task->tk_status
        SUNRPC: Don't let rpc_delay() clobber non-timeout errors
        SUNRPC: Ensure call_connect_status() deals correctly with SOFTCONN tasks
        SUNRPC: Ensure call_status() deals correctly with SOFTCONN tasks
        NFSv4: Ensure we respect soft mount timeouts during trunking discovery
        NFSv4: Schedule recovery if nfs40_walk_client_list() is interrupted
        NFS: advertise only supported callback netids
        SUNRPC: remove KERN_INFO from dprintk() call sites
        SUNRPC: Fix large reads on NFS/RDMA
        NFS: Clean up: revert increase in READDIR RPC buffer max size
        SUNRPC: Ensure that call_bind times out correctly
        SUNRPC: Ensure that call_connect times out correctly
        nfs: emit a fsnotify_nameremove call in sillyrename codepath
        nfs: remove synchronous rename code
        nfs: convert nfs_rename to use async_rename infrastructure
        nfs: make nfs_async_rename non-static
        nfs: abstract out code needed to complete a sillyrename
        NFSv4: Clear the open state flags if the new stateid does not match
        ...
      2b3a8fd7
    • Linus Torvalds's avatar
      Merge tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux · 6f4c98e1
      Linus Torvalds authored
      Pull module updates from Rusty Russell:
       "Nothing major: the stricter permissions checking for sysfs broke a
        staging driver; fix included.  Greg KH said he'd take the patch but
        hadn't as the merge window opened, so it's included here to avoid
        breaking build"
      
      * tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
        staging: fix up speakup kobject mode
        Use 'E' instead of 'X' for unsigned module taint flag.
        VERIFY_OCTAL_PERMISSIONS: stricter checking for sysfs perms.
        kallsyms: fix percpu vars on x86-64 with relocation.
        kallsyms: generalize address range checking
        module: LLVMLinux: Remove unused function warning from __param_check macro
        Fix: module signature vs tracepoints: add new TAINT_UNSIGNED_MODULE
        module: remove MODULE_GENERIC_TABLE
        module: allow multiple calls to MODULE_DEVICE_TABLE() per module
        module: use pr_cont
      6f4c98e1
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile · 18a1a7a1
      Linus Torvalds authored
      Pull arch/tile updates from Chris Metcalf:
       "These fix a few stray build issues seen in linux-next, and also add
        the minimal required support for perf to tilegx"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
        arch/tile: remove unused variable 'devcap'
        tile: Fix vDSO compilation issue with allyesconfig
        perf tools: Allow building for tile
        tile/perf: Support perf_events on tilegx and tilepro
        tile: Enable NMIs on return from handle_nmi() without errors
        tile: Add support for handling PMC hardware
        tile: don't use __get_cpu_var() with structure-typed arguments
        tile: avoid overflow in ns2cycles
      18a1a7a1
    • Linus Torvalds's avatar
      Merge tag 'dm-3.15-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm · 04535d27
      Linus Torvalds authored
      Pull device mapper changes from Mike Snitzer:
      
       - Fix dm-cache corruption caused by discard_block_size > cache_block_size
      
       - Fix a lock-inversion detected by LOCKDEP in dm-cache
      
       - Fix a dangling bio bug in the dm-thinp target's process_deferred_bios
         error path
      
       - Fix corruption due to non-atomic transaction commit which allowed a
         metadata superblock to be written before all other metadata was
         successfully written -- this is common to all targets that use the
         persistent-data library's transaction manager (dm-thinp, dm-cache and
         dm-era).
      
       - Various small cleanups in the DM core
      
       - Add the dm-era target which is useful for keeping track of which
         blocks were written within a user defined period of time called an
         'era'.  Use cases include tracking changed blocks for backup
         software, and partially invalidating the contents of a cache to
         restore cache coherency after rolling back a vendor snapshot.
      
       - Improve the on-disk layout of multithreaded writes to the
         dm-thin-pool by splitting the pool's deferred bio list to be a
         per-thin device list and then sorting that list using an rb_tree.
         The subsequent read throughput of the data written via multiple
         threads improved by ~70%.
      
       - Simplify the multipath target's handling of queuing IO by pushing
         requests back to the request queue rather than queueing the IO
         internally.
      
      * tag 'dm-3.15-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm: (24 commits)
        dm cache: fix a lock-inversion
        dm thin: sort the per thin deferred bios using an rb_tree
        dm thin: use per thin device deferred bio lists
        dm thin: simplify pool_is_congested
        dm thin: fix dangling bio in process_deferred_bios error path
        dm mpath: print more useful warnings in multipath_message()
        dm-mpath: do not activate failed paths
        dm mpath: remove extra nesting in map function
        dm mpath: remove map_io()
        dm mpath: reduce memory pressure when requeuing
        dm mpath: remove process_queued_ios()
        dm mpath: push back requests instead of queueing
        dm table: add dm_table_run_md_queue_async
        dm mpath: do not call pg_init when it is already running
        dm: use RCU_INIT_POINTER instead of rcu_assign_pointer in __unbind
        dm: stop using bi_private
        dm: remove dm_get_mapinfo
        dm: make dm_table_alloc_md_mempools static
        dm: take care to copy the space map roots before locking the superblock
        dm transaction manager: fix corruption due to non-atomic transaction commit
        ...
      04535d27
    • Linus Torvalds's avatar
      Merge tag 'iommu-updates-v3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu · 3f583bc2
      Linus Torvalds authored
      Pull IOMMU upates from Joerg Roedel:
       "This time a few more updates queued up.
      
         - Rework VT-d code to support ACPI devices
      
         - Improvements for memory and PCI hotplug support in the VT-d driver
      
         - Device-tree support for OMAP IOMMU
      
         - Convert OMAP IOMMU to use devm_* interfaces
      
         - Fixed PASID support for AMD IOMMU
      
         - Other random cleanups and fixes for OMAP, ARM-SMMU and SHMOBILE
           IOMMU
      
        Most of the changes are in the VT-d driver because some rework was
        necessary for better hotplug and ACPI device support"
      
      * tag 'iommu-updates-v3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (75 commits)
        iommu/vt-d: Fix error handling in ANDD processing
        iommu/vt-d: returning free pointer in get_domain_for_dev()
        iommu/vt-d: Only call dmar_acpi_dev_scope_init() if DRHD units present
        iommu/vt-d: Check for NULL pointer in dmar_acpi_dev_scope_init()
        iommu/amd: Fix logic to determine and checking max PASID
        iommu/vt-d: Include ACPI devices in iommu=pt
        iommu/vt-d: Finally enable translation for non-PCI devices
        iommu/vt-d: Remove to_pci_dev() in intel_map_page()
        iommu/vt-d: Remove pdev from intel_iommu_attach_device()
        iommu/vt-d: Remove pdev from iommu_no_mapping()
        iommu/vt-d: Make domain_add_dev_info() take struct device
        iommu/vt-d: Make domain_remove_one_dev_info() take struct device
        iommu/vt-d: Rename 'hwdev' variables to 'dev' now that that's the norm
        iommu/vt-d: Remove some pointless to_pci_dev() calls
        iommu/vt-d: Make get_valid_domain_for_dev() take struct device
        iommu/vt-d: Make iommu_should_identity_map() take struct device
        iommu/vt-d: Handle RMRRs for non-PCI devices
        iommu/vt-d: Make get_domain_for_dev() take struct device
        iommu/vt-d: Make domain_context_mapp{ed,ing}() take struct device
        iommu/vt-d: Make device_to_iommu() cope with non-PCI devices
        ...
      3f583bc2
    • Linus Torvalds's avatar
      Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging · 3e76b749
      Linus Torvalds authored
      Pull hwmon updates from Jean Delvare:
       "This includes a number of driver conversions to
        devm_hwmon_device_register_with_groups, a few cleanups, and
        support for the ITE IT8623E"
      
      * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
        hwmon: (it87) Add support for IT8623E
        hwmon: (it87) Fix IT8603E define name
        hwmon: (lm90) Convert to use hwmon_device_register_with_groups
        hwmon: (lm90) Create all sysfs groups in one call
        hwmon: (lm90) Always use the dev variable in the probe function
        hwmon: (lm90) Create most optional attributes with sysfs_create_group
        hwmon: Avoid initializing the same field twice
        hwmon: (pc87360) Avoid initializing the same field twice
        hwmon: (lm80) Convert to use devm_hwmon_device_register_with_groups
        hwmon: (adm1021) Convert to use devm_hwmon_device_register_with_groups
        hwmon: (lm63) Avoid initializing the same field twice
        hwmon: (lm63) Convert to use devm_hwmon_device_register_with_groups
        hwmon: (lm63) Create all sysfs groups in one call
        hwmon: (lm63) Introduce 'dev' variable to point to client->dev
        hwmon: (lm63) Add additional sysfs group for temp2_type attribute
        hwmon: (f71805f) Fix author's address
      3e76b749
    • Linus Torvalds's avatar
      Merge tag 'clk-for-linus-3.15' of git://git.linaro.org/people/mike.turquette/linux · 19bc2eec
      Linus Torvalds authored
      Pull clock framework changes from Mike Turquette:
       "The clock framework changes for 3.15 look similar to past pull
        requests.  Mostly clock driver updates, more Device Tree support in
        the form of common functions useful across platforms and a handful of
        features and fixes to the framework core"
      
      * tag 'clk-for-linus-3.15' of git://git.linaro.org/people/mike.turquette/linux: (86 commits)
        clk: shmobile: fix setting paretn clock rate
        clk: shmobile: rcar-gen2: fix lb/sd0/sd1/sdh clock parent to pll1
        clk: Fix minor errors in of_clk_init() function comments
        clk: reverse default clk provider initialization order in of_clk_init()
        clk: sirf: update copyright years to 2014
        clk: mmp: try to use closer one when do round rate
        clk: mmp: fix the wrong calculation formula
        clk: mmp: fix wrong mask when calculate denominator
        clk: st: Adds quadfs clock binding
        clk: st: Adds clockgen-vcc and clockgen-mux clock binding
        clk: st: Adds clockgen clock binding
        clk: st: Adds divmux and prediv clock binding
        clk: st: Support for A9 MUX clocks
        clk: st: Support for ClockGenA9/DDR/GPU
        clk: st: Support for QUADFS inside ClockGenB/C/D/E/F
        clk: st: Support for VCC-mux and MUX clocks
        clk: st: Support for PLLs inside ClockGenA(s)
        clk: st: Support for DIVMUX and PreDiv Clocks
        clk: support hardware-specific debugfs entries
        clk: s2mps11: Use of_get_child_by_name
        ...
      19bc2eec
    • Linus Torvalds's avatar
      Merge tag 'pwm/for-3.15-rc1' of... · 9712d3c3
      Linus Torvalds authored
      Merge tag 'pwm/for-3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm
      
      Pull pwm changes from Thierry Reding:
       "The legacy HAVE_PWM Kconfig symbol is finally being retired.  Thanks a
        lot to Sascha Hauer for doing that.
      
        Three new drivers are added: Freescale FTM, Cirrus Logic CLPS711X and
        Intel Low Power Subsystem.
      
        An assortment of fixes and cleanups rounds things off for this release
        cycle"
      
      * tag 'pwm/for-3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm:
        pwm: pxa: Constify OF match table
        pwm: pxa: Fix typo "pwm" -> "PWM"
        Revert "pwm: pxa: Use of_match_ptr()"
        pwm: add support for Intel Low Power Subsystem PWM
        pwm: Add CLPS711X PWM support
        pwm: atmel: correct CDTY calculation
        pwm: atmel: Fix polarity handling
        Documentation: Add device tree bindings for Freescale FTM PWM.
        pwm: Add Freescale FTM PWM driver support
        pwm: pxa: Use of_match_ptr()
        pwm: samsung: Use SIMPLE_DEV_PM_OPS macro
        pwm: renesas-tpu: Add dependency on HAS_IOMEM
        pwm: Remove obsolete HAVE_PWM Kconfig symbol
      9712d3c3
  3. 05 Apr, 2014 13 commits
    • Linus Torvalds's avatar
      Merge tag 'tags/cleanup2-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 2bf73dd6
      Linus Torvalds authored
      Pull ARM SoC late cleanups from Arnd Bergmann:
       "These could not be part of the first cleanup branch, because they
        either came too late in the cycle, or they have dependencies on other
        branches.  Important changes are:
      
         - The integrator platform is almost multiplatform capable after some
           reorganization (Linus Walleij)
         - Minor cleanups on Zynq (Michal Simek)
         - Lots of changes for Exynos and other Samsung platforms, including
           further preparations for multiplatform support and the clocks
           bindings are rearranged"
      
      * tag 'tags/cleanup2-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (54 commits)
        devicetree: fix newly added exynos sata bindings
        ARM: EXYNOS: Fix compilation error in cpuidle.c
        ARM: S5P64X0: Explicitly include linux/serial_s3c.h in mach/pm-core.h
        ARM: EXYNOS: Remove hardware.h file
        ARM: SAMSUNG: Remove hardware.h inclusion
        ARM: S3C24XX: Remove invalid code from hardware.h
        dt-bindings: clock: Move exynos-audss-clk.h to dt-bindings/clock
        ARM: dts: Keep some essential LDOs enabled for arndale-octa board
        ARM: dts: Disable MDMA1 node for arndale-octa board
        ARM: S3C64XX: Fix build for implicit serial_s3c.h inclusion
        serial: s3c: Fix build of header without serial_core.h preinclusion
        ARM: EXYNOS: Allow wake-up using GIC interrupts
        ARM: EXYNOS: Stop using legacy Samsung PM code
        ARM: EXYNOS: Remove PM initcalls and useless indirection
        ARM: EXYNOS: Fix abuse of CONFIG_PM
        ARM: SAMSUNG: Move s3c_pm_check_* prototypes to plat/pm-common.h
        ARM: SAMSUNG: Move common save/restore helpers to separate file
        ARM: SAMSUNG: Move Samsung PM debug code into separate file
        ARM: SAMSUNG: Consolidate PM debug functions
        ARM: SAMSUNG: Use debug_ll_addr() to get UART base address
        ...
      2bf73dd6
    • Linus Torvalds's avatar
      Merge tag 'sh-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · d2b150d0
      Linus Torvalds authored
      Pull ARM SoC sh driver change from Arnd Bergmann:
       "The drivers/sh subdirectory used to get merged through the SH
        architecture tree, but things are in flux there and some of the
        drivers are shared with ARM shmobile, we have picked it up for the
        time being.
      
        There is only one trivial patch from Laurent Pinchart this time"
      
      * tag 'sh-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        sh: intc: Enable driver compilation with COMPILE_TEST
      d2b150d0
    • Linus Torvalds's avatar
      Merge tag 'drivers-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · cbda94e0
      Linus Torvalds authored
      Pull ARM SoC driver changes from Arnd Bergmann:
       "These changes are mostly for ARM specific device drivers that either
        don't have an upstream maintainer, or that had the maintainer ask us
        to pick up the changes to avoid conflicts.
      
        A large chunk of this are clock drivers (bcm281xx, exynos, versatile,
        shmobile), aside from that, reset controllers for STi as well as a
        large rework of the Marvell Orion/EBU watchdog driver are notable"
      
      * tag 'drivers-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (99 commits)
        Revert "dts: socfpga: Add DTS entry for adding the stmmac glue layer for stmmac."
        Revert "net: stmmac: Add SOCFPGA glue driver"
        ARM: shmobile: r8a7791: Fix SCIFA3-5 clocks
        ARM: STi: Add reset controller support to mach-sti Kconfig
        drivers: reset: stih416: add softreset controller
        drivers: reset: stih415: add softreset controller
        drivers: reset: Reset controller driver for STiH416
        drivers: reset: Reset controller driver for STiH415
        drivers: reset: STi SoC system configuration reset controller support
        dts: socfpga: Add sysmgr node so the gmac can use to reference
        dts: socfpga: Add support for SD/MMC on the SOCFPGA platform
        reset: Add optional resets and stubs
        ARM: shmobile: r7s72100: fix bus clock calculation
        Power: Reset: Generalize qnap-poweroff to work on Synology devices.
        dts: socfpga: Update clock entry to support multiple parents
        ARM: socfpga: Update socfpga_defconfig
        dts: socfpga: Add DTS entry for adding the stmmac glue layer for stmmac.
        net: stmmac: Add SOCFPGA glue driver
        watchdog: orion_wdt: Use %pa to print 'phys_addr_t'
        drivers: cci: Export CCI PMU revision
        ...
      cbda94e0
    • Linus Torvalds's avatar
      Merge tag 'dt-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · f83ccb93
      Linus Torvalds authored
      Pull ARM SoC device tree changes from Arnd Bergmann:
       "A large part of the arm-soc patches are nowadays DT changes, adding
        support for new SoCs, boards and devices without changing kernel
        source.  The plan is still to move the devicetree files out of the
        kernel tree and reduce the amount of churn going on here, but we keep
        finding reasons to delay doing that.
      
        Changes are really all over the place, with little sticking out
        particularly.  We have contributions from a total of 116 people in
        this branch.
      
        Unfortunately, the size of this branch also causes a significant
        number of conflicts at the moment, typically when subsystem
        maintainers merge patches that change the driver at the same time as
        the dts files.  In most cases this could be avoided because the dts
        changes are supposed to be compatible in both ways, and we are asking
        everyone to send ARM dts changes through our tree only"
      
      * tag 'dt-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (541 commits)
        dts: stmmac: Document the clocks property in the stmmac base document
        dts: socfpga: Add DTS entry for adding the stmmac glue layer for stmmac.
        ARM: STi: stih41x: Add support for the FSM Serial Flash Controller
        ARM: STi: stih416: Add support for the FSM Serial Flash Controller
        ARM: tegra: fix Dalmore pinctrl configuration
        ARM: dts: keystone: use common "ti,keystone" compatible instead of -evm
        ARM: dts: k2hk-evm: set ubifs partition size for 512M NAND
        ARM: dts: Build all keystone dt blobs
        ARM: dts: keystone: Fix control register range for clktsip
        ARM: dts: keystone: Fix domain register range for clkfftc1
        ARM: dts: bcm28155-ap: leave camldo1 on to fix reboot
        ARM: dts: add bcm590xx pmu support and enable for bcm28155-ap
        ARM: dts: bcm21664: Add device tree files.
        ARM: DT: bcm21664: Device tree bindings
        ARM: efm32: properly namespace i2c location property
        ARM: efm32: fix unit address part in USART2 device nodes' names
        ARM: mvebu: Enable NAND controller in Armada 385-DB
        ARM: mvebu: Add support for NAND controller in Armada 38x SoC
        ARM: mvebu: Add the Core Divider clock to Armada 38x SoCs
        ARM: mvebu: Add a 2 GHz fixed-clock on Armada 38x SoCs
        ...
      f83ccb93
    • Linus Torvalds's avatar
      Merge tag 'boards-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 930b440c
      Linus Torvalds authored
      Pull ARM SoC board changes from Arnd Bergmann:
       "As we continue to replace board files with device tree descriptions,
        this part of the ARM support is getting smaller.  We have basically
        just defconfig changes here this time, and a significant number of
        Renesas shmobile changes, as Renesas is still in the process of
        deprecating board file support"
      
      * tag 'boards-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (92 commits)
        ARM: enable fhandle in multi_v7_defconfig
        ARM: tegra: enable fhandle in tegra_defconfig
        ARM: update multi_v7_defconfig for Tegra
        ARM: add Marvell Dove and some drivers to multi_v7 defconfig
        ARM: fix duplicate symbols in multi_v5_defconfig
        ARM: pxa: add gpio keys information
        ARM: tegra: defconfig updates
        ARM: config: keystone: enable AEMIF/NAND support
        ARM: qcom: Enable basic support for Qualcomm platforms in multi_v7_defconfig
        ARM: kirkwood: Add HP T5325 devices to {multi|mvebu}_v5_defconfig
        ARM: config: Add mvebu_v5_defconfig
        ARM: config: Add a multi_v5_defconfig
        ARM: shmobile: r7s72100: update defconfig for I2C usage
        ARM: shmobile: Remove Lager DT reference legacy clock bits
        ARM: shmobile: Remove Koelsch DT reference legacy clock bits
        ARM: shmobile: Remove KZM9D board code
        ARM: mvebu: update defconfigs for Armada 375 and 38x
        ARM: dove: Enable watchdog support in the defconfig
        ARM: mvebu: Enable watchdog support in defconfig
        ARM: config: keystone: enable led support
        ...
      930b440c
    • Linus Torvalds's avatar
      Merge tag 'soc-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · ff050ad1
      Linus Torvalds authored
      Pull ARM SoC specific changes from Arnd Bergmann:
       "Lots of changes specific to one of the SoC families.  Some that stick
        out are:
      
         - mach-qcom gains new features, most importantly SMP support for the
           newer chips (Stephen Boyd, Rohit Vaswani)
         - mvebu gains support for three new SoCs: Armada 375, 380 and 385
           (Thomas Petazzoni and Free-electrons team)
         - SMP support for Rockchips (Heiko Stübner)
         - Lots of i.MX changes (Shawn Guo)
         - Added support for BCM5301x SoC (Hauke Mehrtens)
         - Multiplatform support for Marvell Kirkwood and Dove (Andrew Lunn
           and Sebastian Hesselbarth doing the final part of a long journey)
         - Unify davinci platforms and remove obsolete ones (Sekhar Nori, Arnd
           Bergmann)"
      
      * tag 'soc-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (126 commits)
        ARM: sunxi: Select HAVE_ARM_ARCH_TIMER
        ARM: cache-tauros2: remove ARMv6 code
        ARM: mvebu: don't select CONFIG_NEON
        ARM: davinci: fix DT booting with default defconfig
        ARM: configs: bcm_defconfig: enable bcm590xx regulator support
        ARM: davinci: remove tnetv107x support
        MAINTAINERS: Update ARM STi maintainers
        ARM: restrict BCM_KONA_UART to ARCH_BCM_MOBILE
        ARM: bcm21664: Add board support.
        ARM: sunxi: Add the new watchog compatibles to the reboot code
        ARM: enable ARM_HAS_SG_CHAIN for multiplatform
        ARM: davinci: remove da8xx_omapl_defconfig
        ARM: davinci: da8xx: fix multiple watchdog device registration
        ARM: davinci: add da8xx specific configs to davinci_all_defconfig
        ARM: davinci: enable da8xx build concurrently with older devices
        ARM: BCM5301X: workaround suppress fault
        ARM: BCM5301X: add early debugging support
        ARM: BCM5301X: initial support for the BCM5301X/BCM470X SoCs with ARM CPU
        ARM: mach-bcm: Remove GENERIC_TIME
        ARM: shmobile: APMU: Fix warnings due to improper printk formats
        ...
      ff050ad1
    • Linus Torvalds's avatar
      Merge tag 'cleanup-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · dfc25e45
      Linus Torvalds authored
      Pull ARM SoC cleanups from Arnd Bergmann:
       "These cleanup patches are mainly move stuff around and should all be
        harmless.  They are mainly split out so that other branches can be
        based on top to avoid conflicts.
      
        Notable changes are:
      
         - We finally remove all mach/timex.h, after CLOCK_TICK_RATE is no
           longer used (Uwe Kleine-König)
         - The Qualcomm MSM platform is split out into legacy mach-msm and
           new-style mach-qcom, to allow easier maintainance of the new
           hardware support without regressions (Kumar Gala)
         - A rework of some of the Kconfig logic to simplify multiplatform
           support (Rob Herring)
         - Samsung Exynos gets closer to supporting multiplatform (Sachin
           Kamat and others)
         - mach-bcm3528 gets merged into mach-bcm (Stephen Warren)
         - at91 gains some common clock framework support (Alexandre Belloni,
           Jean-Jacques Hiblot and other French people)"
      
      * tag 'cleanup-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (89 commits)
        ARM: hisi: select HAVE_ARM_SCU only for SMP
        ARM: efm32: allow uncompress debug output
        ARM: prima2: build reset code standalone
        ARM: at91: add PWM clock
        ARM: at91: move sam9261 SoC to common clk
        ARM: at91: prepare common clk transition for sam9261 SoC
        ARM: at91: updated the at91_dt_defconfig with support for the ADS7846
        ARM: at91: dt: sam9261: Device Tree support for the at91sam9261ek
        ARM: at91: dt: defconfig: Added the sam9261 to the list of DT-enabled SOCs
        ARM: at91: dt: Add at91sam9261 dt SoC support
        ARM: at91: switch sam9rl to common clock framework
        ARM: at91/dt: define main clk frequency of at91sam9rlek
        ARM: at91/dt: define at91sam9rl clocks
        ARM: at91: prepare common clk transition for sam9rl SoCs
        ARM: at91: prepare sam9 dt boards transition to common clk
        ARM: at91: dt: sam9rl: Device Tree for the at91sam9rlek
        ARM: at91/defconfig: Add the sam9rl to the list of DT-enabled SOCs
        ARM: at91: Add at91sam9rl DT SoC support
        ARM: at91: prepare at91sam9rl DT transition
        ARM: at91/defconfig: refresh at91sam9260_9g20_defconfig
        ...
      dfc25e45
    • Linus Torvalds's avatar
      Merge tag 'fixes-non-critical-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 9f800363
      Linus Torvalds authored
      Pull ARM SoC non-critical bug fixes from Arnd Bergmann:
       "Lots of isolated bug fixes that were not found to be important enough
        to be submitted before the merge window or backported into stable
        kernels.
      
        The vast majority of these came out of Arnd's randconfig testing and
        just prevents running into build-time bugs in configurations that we
        do not care about in practice"
      
      * tag 'fixes-non-critical-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (75 commits)
        ARM: at91: fix a typo
        ARM: moxart: fix CPU selection
        ARM: tegra: fix board DT pinmux setup
        ARM: nspire: Fix compiler warning
        IXP4xx: Fix DMA masks.
        Revert "ARM: ixp4xx: Make dma_set_coherent_mask common, correct implementation"
        IXP4xx: Fix Goramo Multilink GPIO conversion.
        Revert "ARM: ixp4xx: fix gpio rework"
        ARM: tegra: make debug_ll code build for ARMv6
        ARM: sunxi: fix build for THUMB2_KERNEL
        ARM: exynos: add missing include of linux/module.h
        ARM: exynos: fix l2x0 saved regs handling
        ARM: samsung: select CRC32 for SAMSUNG_PM_CHECK
        ARM: samsung: select ATAGS where necessary
        ARM: samsung: fix SAMSUNG_PM_DEBUG Kconfig logic
        ARM: samsung: allow serial driver to be disabled
        ARM: s5pv210: enable IDE support in MACH_TORBRECK
        ARM: s5p64x0: fix building with only one soc type
        ARM: s3c64xx: select power domains only when used
        ARM: s3c64xx: MACH_SMDK6400 needs HSMMC1
        ...
      9f800363
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm · 2d1eb87a
      Linus Torvalds authored
      Pull ARM changes from Russell King:
      
       - Perf updates from Will Deacon:
         - Support for Qualcomm Krait processors (run perf on your phone!)
         - Support for Cortex-A12 (run perf stat on your FPGA!)
         - Support for perf_sample_event_took, allowing us to automatically decrease
           the sample rate if we can't handle the PMU interrupts quickly enough
           (run perf record on your FPGA!).
      
       - Basic uprobes support from David Long:
           This patch series adds basic uprobes support to ARM. It is based on
           patches developed earlier by Rabin Vincent. That approach of adding
           hooks into the kprobes instruction parsing code was not well received.
           This approach separates the ARM instruction parsing code in kprobes out
           into a separate set of functions which can be used by both kprobes and
           uprobes. Both kprobes and uprobes then provide their own semantic action
           tables to process the results of the parsing.
      
       - ARMv7M (microcontroller) updates from Uwe Kleine-König
      
       - OMAP DMA updates (recently added Vinod's Ack even though they've been
         sitting in linux-next for a few months) to reduce the reliance of
         omap-dma on the code in arch/arm.
      
       - SA11x0 changes from Dmitry Eremin-Solenikov and Alexander Shiyan
      
       - Support for Cortex-A12 CPU
      
       - Align support for ARMv6 with ARMv7 so they can cooperate better in a
         single zImage.
      
       - Addition of first AT_HWCAP2 feature bits for ARMv8 crypto support.
      
       - Removal of IRQ_DISABLED from various ARM files
      
       - Improved efficiency of virt_to_page() for single zImage
      
       - Patch from Ulf Hansson to permit runtime PM callbacks to be available for
         AMBA devices for suspend/resume as well.
      
       - Finally kill asm/system.h on ARM.
      
      * 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm: (89 commits)
        dmaengine: omap-dma: more consolidation of CCR register setup
        dmaengine: omap-dma: move IRQ handling to omap-dma
        dmaengine: omap-dma: move register read/writes into omap-dma.c
        ARM: omap: dma: get rid of 'p' allocation and clean up
        ARM: omap: move dma channel allocation into plat-omap code
        ARM: omap: dma: get rid of errata global
        ARM: omap: clean up DMA register accesses
        ARM: omap: remove almost-const variables
        ARM: omap: remove references to disable_irq_lch
        dmaengine: omap-dma: cleanup errata 3.3 handling
        dmaengine: omap-dma: provide register read/write functions
        dmaengine: omap-dma: use cached CCR value when enabling DMA
        dmaengine: omap-dma: move barrier to omap_dma_start_desc()
        dmaengine: omap-dma: move clnk_ctrl setting to preparation functions
        dmaengine: omap-dma: improve efficiency loading C.SA/C.EI/C.FI registers
        dmaengine: omap-dma: consolidate clearing channel status register
        dmaengine: omap-dma: move CCR buffering disable errata out of the fast path
        dmaengine: omap-dma: provide register definitions
        dmaengine: omap-dma: consolidate setup of CCR
        dmaengine: omap-dma: consolidate setup of CSDP
        ...
      2d1eb87a
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rkuo/linux-hexagon-kernel · 2f997759
      Linus Torvalds authored
      Pull Hexagon updates from Richard Kuo:
       "Mostly cleanups for compilation with allmodconfig and some other
        miscellaneous fixes"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rkuo/linux-hexagon-kernel:
        Hexagon: update CR year for elf.h
        Hexagon: remove SP macro
        Hexagon:  set ELF_EXEC_PAGESIZE to PAGE_SIZE
        Hexagon: set the e_flags in user regset view for core dumps
        Hexagon: fix atomic_set
        Hexagon: add screen_info for VGA_CONSOLE
        hexagon: correct type on pgd copy
        smp, hexagon: kill SMP single function call interrupt
        arch: hexagon: include: asm: add generic macro 'mmiowb' in "io.h"
        arch: hexagon: kernel: hexagon_ksyms.c: export related symbols which various modules need
        arch: hexagon: kernel: reset.c: use function pointer instead of function for pm_power_off and export it
        arch: hexagon: include: asm: add "vga.h" in Kbuild
        arch: hexagon: include: asm: Kbuild: add generic "serial.h" in Kbuild
        arch: hexagon: include: uapi: asm: setup.h add swith macro __KERNEL__
        arch: hexagon: include: asm: add prefix "hvm[ci]_" for all enum members in "hexagon_vm.h"
        arch: hexagon: Kconfig: add HAVE_DMA_ATTR in Kconfig and remove "linux/dma-mapping.h" from "asm/dma-mapping.h"
        arch: hexagon: kernel: add export symbol function __delay()
        hexagon: include: asm: kgdb: extend DBG_MAX_REG_NUM for "cs0/1"
        hexagon: kernel: kgdb: include related header for pass compiling.
        hexagon: kernel: remove useless variables 'dn', 'r' and 'err' in time_init_deferred() in "time.c"
      2f997759
    • Linus Torvalds's avatar
      Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu · 472e3741
      Linus Torvalds authored
      Pull m68k fixes from Greg Ungerer:
       "Just a couple of fixes.  Clean up compile warnings by using correct
        types in function args, and clean out the removed CONFIG_MTD_PARTITIONS"
      
      * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu:
        m68knommu: fix arg types for outs* functions
        m68k : Kill CONFIG_MTD_PARTITIONS
      472e3741
    • Linus Torvalds's avatar
      Merge branch 'topic/exynos' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · 463b21fb
      Linus Torvalds authored
      Pull exynos media updates from Mauro Carvalho Chehab:
       "These are the remaining patches I have for the merge windows.  It
        basically adds a new sensor and adds the needed DT bits for it to
        work"
      
      * 'topic/exynos' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
        [media] s5p-fimc: Remove reference to outdated macro
        [media] s5p-jpeg: Fix broken indentation in jpeg-regs.h
        [media] exynos4-is: Add the FIMC-IS ISP capture DMA driver
        [media] exynos4-is: Add support for asynchronous subdevices registration
        [media] exynos4-is: Add clock provider for the SCLK_CAM clock outputs
        [media] exynos4-is: Use external s5k6a3 sensor driver
        [media] V4L: s5c73m3: Add device tree support
        [media] V4L: Add driver for s5k6a3 image sensor
        [media] Documentation: devicetree: Update Samsung FIMC DT binding
        [media] Documentation: dt: Add binding documentation for S5C73M3 camera
        [media] Documentation: dt: Add binding documentation for S5K6A3 image sensor
      463b21fb
    • Jeff Layton's avatar
      nfs: pass string length to pr_notice message about readdir loops · 9581a4ae
      Jeff Layton authored
      There is no guarantee that the strings in the nfs_cache_array will be
      NULL-terminated. In the event that we end up hitting a readdir loop, we
      need to ensure that we pass the warning message the length of the
      string.
      Reported-by: default avatarLachlan McIlroy <lmcilroy@redhat.com>
      Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
      Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
      9581a4ae