1. 31 Jan, 2014 25 commits
    • Vladimir Davydov's avatar
      memcg: fix mutex not unlocked on memcg_create_kmem_cache fail path · 7c094fd6
      Vladimir Davydov authored
      Commit 842e2873 ("memcg: get rid of kmem_cache_dup()") introduced a
      mutex for memcg_create_kmem_cache() to protect the tmp_name buffer that
      holds the memcg name.  It failed to unlock the mutex if this buffer
      could not be allocated.
      
      This patch fixes the issue by appropriately unlocking the mutex if the
      allocation fails.
      Signed-off-by: default avatarVladimir Davydov <vdavydov@parallels.com>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Glauber Costa <glommer@parallels.com>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7c094fd6
    • Richard Yao's avatar
      Documentation/filesystems/vfs.txt: update file_operations documentation · 46bf16c4
      Richard Yao authored
      ->readv, ->writev and ->sendfile have been removed while ->show_fdinfo
      has been added. The documentation should reflect this.
      Signed-off-by: default avatarRichard Yao <ryao@gentoo.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      46bf16c4
    • David Rientjes's avatar
      mm, oom: base root bonus on current usage · 778c14af
      David Rientjes authored
      A 3% of system memory bonus is sometimes too excessive in comparison to
      other processes.
      
      With commit a63d83f4 ("oom: badness heuristic rewrite"), the OOM
      killer tries to avoid killing privileged tasks by subtracting 3% of
      overall memory (system or cgroup) from their per-task consumption.  But
      as a result, all root tasks that consume less than 3% of overall memory
      are considered equal, and so it only takes 33+ privileged tasks pushing
      the system out of memory for the OOM killer to do something stupid and
      kill dhclient or other root-owned processes.  For example, on a 32G
      machine it can't tell the difference between the 1M agetty and the 10G
      fork bomb member.
      
      The changelog describes this 3% boost as the equivalent to the global
      overcommit limit being 3% higher for privileged tasks, but this is not
      the same as discounting 3% of overall memory from _every privileged task
      individually_ during OOM selection.
      
      Replace the 3% of system memory bonus with a 3% of current memory usage
      bonus.
      
      By giving root tasks a bonus that is proportional to their actual size,
      they remain comparable even when relatively small.  In the example
      above, the OOM killer will discount the 1M agetty's 256 badness points
      down to 179, and the 10G fork bomb's 262144 points down to 183500 points
      and make the right choice, instead of discounting both to 0 and killing
      agetty because it's first in the task list.
      Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
      Reported-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@suse.cz>
      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>
      778c14af
    • Andrey Vagin's avatar
      mm: don't lose the SOFT_DIRTY flag on mprotect · 24f91eba
      Andrey Vagin authored
      The SOFT_DIRTY bit shows that the content of memory was changed after a
      defined point in the past.  mprotect() doesn't change the content of
      memory, so it must not change the SOFT_DIRTY bit.
      
      This bug causes a malfunction: on the first iteration all pages are
      dumped.  On other iterations only pages with the SOFT_DIRTY bit are
      dumped.  So if the SOFT_DIRTY bit is cleared from a page by mistake, the
      page is not dumped and its content will be restored incorrectly.
      
      This patch does nothing with _PAGE_SWP_SOFT_DIRTY, becase pte_modify()
      is called only for present pages.
      
      Fixes commit 0f8975ec ("mm: soft-dirty bits for user memory changes
      tracking").
      Signed-off-by: default avatarAndrey Vagin <avagin@openvz.org>
      Acked-by: default avatarCyrill Gorcunov <gorcunov@openvz.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Pavel Emelyanov <xemul@parallels.com>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Wen Congyang <wency@cn.fujitsu.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>
      24f91eba
    • Dave Hansen's avatar
      mm/slub.c: fix page->_count corruption (again) · a0320865
      Dave Hansen authored
      Commit abca7c49 ("mm: fix slab->page _count corruption when using
      slub") notes that we can not _set_ a page->counters directly, except
      when using a real double-cmpxchg.  Doing so can lose updates to
      ->_count.
      
      That is an absolute rule:
      
              You may not *set* page->counters except via a cmpxchg.
      
      Commit abca7c49 fixed this for the folks who have the slub
      cmpxchg_double code turned off at compile time, but it left the bad case
      alone.  It can still be reached, and the same bug triggered in two
      cases:
      
      1. Turning on slub debugging at runtime, which is available on
         the distro kernels that I looked at.
      2. On 64-bit CPUs with no CMPXCHG16B (some early AMD x86-64
         cpus, evidently)
      
      There are at least 3 ways we could fix this:
      
      1. Take all of the exising calls to cmpxchg_double_slab() and
         __cmpxchg_double_slab() and convert them to take an old, new
         and target 'struct page'.
      2. Do (1), but with the newly-introduced 'slub_data'.
      3. Do some magic inside the two cmpxchg...slab() functions to
         pull the counters out of new_counters and only set those
         fields in page->{inuse,frozen,objects}.
      
      I've done (2) as well, but it's a bunch more code.  This patch is an
      attempt at (3).  This was the most straightforward and foolproof way
      that I could think to do this.
      
      This would also technically allow us to get rid of the ugly
      
      #if defined(CONFIG_HAVE_CMPXCHG_DOUBLE) && \
             defined(CONFIG_HAVE_ALIGNED_STRUCT_PAGE)
      
      in 'struct page', but leaving it alone has the added benefit that
      'counters' stays 'unsigned' instead of 'unsigned long', so all the
      copies that the slub code does stay a bit smaller.
      Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
      Cc: Christoph Lameter <cl@linux-foundation.org>
      Cc: Pekka Enberg <penberg@kernel.org>
      Cc: Matt Mackall <mpm@selenic.com>
      Cc: Pravin B Shelar <pshelar@nicira.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a0320865
    • David Rientjes's avatar
      mm/mempolicy.c: fix mempolicy printing in numa_maps · 8790c71a
      David Rientjes authored
      As a result of commit 5606e387 ("mm: numa: Migrate on reference
      policy"), /proc/<pid>/numa_maps prints the mempolicy for any <pid> as
      "prefer:N" for the local node, N, of the process reading the file.
      
      This should only be printed when the mempolicy of <pid> is
      MPOL_PREFERRED for node N.
      
      If the process is actually only using the default mempolicy for local
      node allocation, make sure "default" is printed as expected.
      Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
      Reported-by: default avatarRobert Lippert <rlippert@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Acked-by: default avatarMel Gorman <mgorman@suse.de>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: <stable@vger.kernel.org>	[3.7+]
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8790c71a
    • Minchan Kim's avatar
      zram: remove zram->lock in read path and change it with mutex · e46e3315
      Minchan Kim authored
      Finally, we separated zram->lock dependency from 32bit stat/ table
      handling so there is no reason to use rw_semaphore between read and
      write path so this patch removes the lock from read path totally and
      changes rw_semaphore with mutex.  So, we could do
      
      old:
      
        read-read: OK
        read-write: NO
        write-write: NO
      
      Now:
      
        read-read: OK
        read-write: OK
        write-write: NO
      
      The below data proves mixed workload performs well 11 times and there is
      also enhance on write-write path because current rw-semaphore doesn't
      support SPIN_ON_OWNER.  It's side effect but anyway good thing for us.
      
      Write-related tests perform better (from 61% to 1058%) but read path has
      good/bad(from -2.22% to 1.45%) but they are all marginal within stddev.
      
        CPU 12
        iozone -t -T -l 12 -u 12 -r 16K -s 60M -I +Z -V 0
      
        ==Initial write                ==Initial write
        records: 10                    records: 10
        avg:  516189.16                avg:  839907.96
        std:   22486.53 (4.36%)        std:   47902.17 (5.70%)
        max:  546970.60                max:  909910.35
        min:  481131.54                min:  751148.38
        ==Rewrite                      ==Rewrite
        records: 10                    records: 10
        avg:  509527.98                avg: 1050156.37
        std:   45799.94 (8.99%)        std:   40695.44 (3.88%)
        max:  611574.27                max: 1111929.26
        min:  443679.95                min:  980409.62
        ==Read                         ==Read
        records: 10                    records: 10
        avg: 4408624.17                avg: 4472546.76
        std:  281152.61 (6.38%)        std:  163662.78 (3.66%)
        max: 4867888.66                max: 4727351.03
        min: 4058347.69                min: 4126520.88
        ==Re-read                      ==Re-read
        records: 10                    records: 10
        avg: 4462147.53                avg: 4363257.75
        std:  283546.11 (6.35%)        std:  247292.63 (5.67%)
        max: 4912894.44                max: 4677241.75
        min: 4131386.50                min: 4035235.84
        ==Reverse Read                 ==Reverse Read
        records: 10                    records: 10
        avg: 4565865.97                avg: 4485818.08
        std:  313395.63 (6.86%)        std:  248470.10 (5.54%)
        max: 5232749.16                max: 4789749.94
        min: 4185809.62                min: 3963081.34
        ==Stride read                  ==Stride read
        records: 10                    records: 10
        avg: 4515981.80                avg: 4418806.01
        std:  211192.32 (4.68%)        std:  212837.97 (4.82%)
        max: 4889287.28                max: 4686967.22
        min: 4210362.00                min: 4083041.84
        ==Random read                  ==Random read
        records: 10                    records: 10
        avg: 4410525.23                avg: 4387093.18
        std:  236693.22 (5.37%)        std:  235285.23 (5.36%)
        max: 4713698.47                max: 4669760.62
        min: 4057163.62                min: 3952002.16
        ==Mixed workload               ==Mixed workload
        records: 10                    records: 10
        avg:  243234.25                avg: 2818677.27
        std:   28505.07 (11.72%)       std:  195569.70 (6.94%)
        max:  288905.23                max: 3126478.11
        min:  212473.16                min: 2484150.69
        ==Random write                 ==Random write
        records: 10                    records: 10
        avg:  555887.07                avg: 1053057.79
        std:   70841.98 (12.74%)       std:   35195.36 (3.34%)
        max:  683188.28                max: 1096125.73
        min:  437299.57                min:  992481.93
        ==Pwrite                       ==Pwrite
        records: 10                    records: 10
        avg:  501745.93                avg:  810363.09
        std:   16373.54 (3.26%)        std:   19245.01 (2.37%)
        max:  518724.52                max:  833359.70
        min:  464208.73                min:  765501.87
        ==Pread                        ==Pread
        records: 10                    records: 10
        avg: 4539894.60                avg: 4457680.58
        std:  197094.66 (4.34%)        std:  188965.60 (4.24%)
        max: 4877170.38                max: 4689905.53
        min: 4226326.03                min: 4095739.72
      Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Tested-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Cc: Jerome Marchand <jmarchan@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e46e3315
    • Minchan Kim's avatar
      zram: remove workqueue for freeing removed pending slot · f614a9f4
      Minchan Kim authored
      Commit a0c516cb ("zram: don't grab mutex in zram_slot_free_noity")
      introduced free request pending code to avoid scheduling by mutex under
      spinlock and it was a mess which made code lenghty and increased
      overhead.
      
      Now, we don't need zram->lock any more to free slot so this patch
      reverts it and then, tb_lock should protect it.
      Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Tested-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Cc: Jerome Marchand <jmarchan@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f614a9f4
    • Minchan Kim's avatar
      zram: introduce zram->tb_lock · 92967471
      Minchan Kim authored
      Currently, the zram table is protected by zram->lock but it's rather
      coarse-grained lock and it makes hard for scalibility.
      
      Let's use own rwlock instead of depending on zram->lock.  This patch
      adds new locking so obviously, it would make slow but this patch is just
      prepartion for removing coarse-grained rw_semaphore(ie, zram->lock)
      which is hurdle about zram scalability.
      
      Final patch in this patchset series will remove the lock from read-path
      and change rw_semaphore with mutex in write path.  With bonus, we could
      drop pending slot free mess in next patch.
      Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Tested-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Cc: Jerome Marchand <jmarchan@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      92967471
    • Minchan Kim's avatar
      zram: use atomic operation for stat · deb0bdeb
      Minchan Kim authored
      Some of fields in zram->stats are protected by zram->lock which is
      rather coarse-grained so let's use atomic operation without explict
      locking.
      
      This patch is ready for removing dependency of zram->lock in read path
      which is very coarse-grained rw_semaphore.  Of course, this patch adds
      new atomic operation so it might make slow but my 12CPU test couldn't
      spot any regression.  All gain/lose is marginal within stddev.
      
        iozone -t -T -l 12 -u 12 -r 16K -s 60M -I +Z -V 0
      
        ==Initial write                ==Initial write
        records: 50                    records: 50
        avg:  412875.17                avg:  415638.23
        std:   38543.12 (9.34%)        std:   36601.11 (8.81%)
        max:  521262.03                max:  502976.72
        min:  343263.13                min:  351389.12
        ==Rewrite                      ==Rewrite
        records: 50                    records: 50
        avg:  416640.34                avg:  397914.33
        std:   60798.92 (14.59%)       std:   46150.42 (11.60%)
        max:  543057.07                max:  522669.17
        min:  304071.67                min:  316588.77
        ==Read                         ==Read
        records: 50                    records: 50
        avg: 4147338.63                avg: 4070736.51
        std:  179333.25 (4.32%)        std:  223499.89 (5.49%)
        max: 4459295.28                max: 4539514.44
        min: 3753057.53                min: 3444686.31
        ==Re-read                      ==Re-read
        records: 50                    records: 50
        avg: 4096706.71                avg: 4117218.57
        std:  229735.04 (5.61%)        std:  171676.25 (4.17%)
        max: 4430012.09                max: 4459263.94
        min: 2987217.80                min: 3666904.28
        ==Reverse Read                 ==Reverse Read
        records: 50                    records: 50
        avg: 4062763.83                avg: 4078508.32
        std:  186208.46 (4.58%)        std:  172684.34 (4.23%)
        max: 4401358.78                max: 4424757.22
        min: 3381625.00                min: 3679359.94
        ==Stride read                  ==Stride read
        records: 50                    records: 50
        avg: 4094933.49                avg: 4082170.22
        std:  185710.52 (4.54%)        std:  196346.68 (4.81%)
        max: 4478241.25                max: 4460060.97
        min: 3732593.23                min: 3584125.78
        ==Random read                  ==Random read
        records: 50                    records: 50
        avg: 4031070.04                avg: 4074847.49
        std:  192065.51 (4.76%)        std:  206911.33 (5.08%)
        max: 4356931.16                max: 4399442.56
        min: 3481619.62                min: 3548372.44
        ==Mixed workload               ==Mixed workload
        records: 50                    records: 50
        avg:  149925.73                avg:  149675.54
        std:    7701.26 (5.14%)        std:    6902.09 (4.61%)
        max:  191301.56                max:  175162.05
        min:  133566.28                min:  137762.87
        ==Random write                 ==Random write
        records: 50                    records: 50
        avg:  404050.11                avg:  393021.47
        std:   58887.57 (14.57%)       std:   42813.70 (10.89%)
        max:  601798.09                max:  524533.43
        min:  325176.99                min:  313255.34
        ==Pwrite                       ==Pwrite
        records: 50                    records: 50
        avg:  411217.70                avg:  411237.96
        std:   43114.99 (10.48%)       std:   33136.29 (8.06%)
        max:  530766.79                max:  471899.76
        min:  320786.84                min:  317906.94
        ==Pread                        ==Pread
        records: 50                    records: 50
        avg: 4154908.65                avg: 4087121.92
        std:  151272.08 (3.64%)        std:  219505.04 (5.37%)
        max: 4459478.12                max: 4435857.38
        min: 3730512.41                min: 3101101.67
      Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Tested-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Cc: Jerome Marchand <jmarchan@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      deb0bdeb
    • Minchan Kim's avatar
      zram: remove unnecessary free · 874e3cdd
      Minchan Kim authored
      Commit a0c516cb ("zram: don't grab mutex in zram_slot_free_noity")
      introduced pending zram slot free in zram's write path in case of
      missing slot free by memory allocation failure in zram_slot_free_notify
      but it is not necessary because we have already freed the slot right
      before overwriting.
      Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Cc: Jerome Marchand <jmarchan@redhat.com>
      Tested-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      874e3cdd
    • Minchan Kim's avatar
      zram: delay pending free request in read path · 9b353db1
      Minchan Kim authored
      Sergey reported we don't need to handle pending free request every I/O
      so that this patch removes it in read path while we remain it in write
      path.
      
      Let's consider below example.
      
      Swap subsystem ask to zram "A" block free by swap_slot_free_notify but
      zram had been pended it without real freeing.  Swap subsystem allocates
      "A" block for new data but request pended for a long time just handled
      and zram blindly free new data on the "A" block.  :(
      
      That's why we couldn't remove handle pending free request right before
      zram-write.
      Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
      Reported-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Tested-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Cc: Jerome Marchand <jmarchan@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9b353db1
    • Minchan Kim's avatar
      zram: fix race between reset and flushing pending work · da4a0412
      Minchan Kim authored
      Dan and Sergey reported that there is a racy between reset and flushing
      of pending work so that it could make oops by freeing zram->meta in
      reset while zram_slot_free can access zram->meta if new request is
      adding during the race window.
      
      This patch moves flush after taking init_lock so it prevents new request
      so that it closes the race.
      Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Cc: Jerome Marchand <jmarchan@redhat.com>
      Tested-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.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>
      da4a0412
    • Minchan Kim's avatar
      zsmalloc: add maintainers · eae70d06
      Minchan Kim authored
      tAdd adds maintainer information for zsmalloc into the MAINTAINERS file.
      Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      eae70d06
    • Minchan Kim's avatar
      zram: add zram maintainers · 6920f2cc
      Minchan Kim authored
      Add maintainer information for zram into the MAINTAINERS file.
      Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6920f2cc
    • Minchan Kim's avatar
      zsmalloc: add copyright · 31fc00bb
      Minchan Kim authored
      Add my copyright to the zsmalloc source code which I maintain.
      Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      31fc00bb
    • Minchan Kim's avatar
      zram: add copyright · 7bfb3de8
      Minchan Kim authored
      Add my copyright to the zram source code which I maintain.
      Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7bfb3de8
    • Minchan Kim's avatar
      zram: remove old private project comment · 49061236
      Minchan Kim authored
      Remove the old private compcache project address so upcoming patches
      should be sent to LKML because we Linux kernel community will take care.
      Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      49061236
    • Minchan Kim's avatar
      zram: promote zram from staging · cd67e10a
      Minchan Kim authored
      Zram has lived in staging for a LONG LONG time and have been
      fixed/improved by many contributors so code is clean and stable now.  Of
      course, there are lots of product using zram in real practice.
      
      The major TV companys have used zram as swap since two years ago and
      recently our production team released android smart phone with zram
      which is used as swap, too and recently Android Kitkat start to use zram
      for small memory smart phone.  And there was a report Google released
      their ChromeOS with zram, too and cyanogenmod have been used zram long
      time ago.  And I heard some disto have used zram block device for tmpfs.
      In addition, I saw many report from many other peoples.  For example,
      Lubuntu start to use it.
      
      The benefit of zram is very clear.  With my experience, one of the
      benefit was to remove jitter of video application with backgroud memory
      pressure.  It would be effect of efficient memory usage by compression
      but more issue is whether swap is there or not in the system.  Recent
      mobile platforms have used JAVA so there are many anonymous pages.  But
      embedded system normally are reluctant to use eMMC or SDCard as swap
      because there is wear-leveling and latency issues so if we do not use
      swap, it means we can't reclaim anoymous pages and at last, we could
      encounter OOM kill.  :(
      
      Although we have real storage as swap, it was a problem, too.  Because
      it sometime ends up making system very unresponsible caused by slow swap
      storage performance.
      
      Quote from Luigi on Google
       "Since Chrome OS was mentioned: the main reason why we don't use swap
        to a disk (rotating or SSD) is because it doesn't degrade gracefully
        and leads to a bad interactive experience.  Generally we prefer to
        manage RAM at a higher level, by transparently killing and restarting
        processes.  But we noticed that zram is fast enough to be competitive
        with the latter, and it lets us make more efficient use of the
        available RAM.  " and he announced.
      http://www.spinics.net/lists/linux-mm/msg57717.html
      
      Other uses case is to use zram for block device.  Zram is block device
      so anyone can format the block device and mount on it so some guys on
      the internet start zram as /var/tmp.
      http://forums.gentoo.org/viewtopic-t-838198-start-0.html
      
      Let's promote zram and enhance/maintain it instead of removing.
      Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
      Reviewed-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Acked-by: default avatarNitin Gupta <ngupta@vflare.org>
      Acked-by: default avatarPekka Enberg <penberg@kernel.org>
      Cc: Bob Liu <bob.liu@oracle.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Luigi Semenzato <semenzato@google.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Seth Jennings <sjenning@linux.vnet.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      cd67e10a
    • Minchan Kim's avatar
      zsmalloc: move it under mm · bcf1647d
      Minchan Kim authored
      This patch moves zsmalloc under mm directory.
      
      Before that, description will explain why we have needed custom
      allocator.
      
      Zsmalloc is a new slab-based memory allocator for storing compressed
      pages.  It is designed for low fragmentation and high allocation success
      rate on large object, but <= PAGE_SIZE allocations.
      
      zsmalloc differs from the kernel slab allocator in two primary ways to
      achieve these design goals.
      
      zsmalloc never requires high order page allocations to back slabs, or
      "size classes" in zsmalloc terms.  Instead it allows multiple
      single-order pages to be stitched together into a "zspage" which backs
      the slab.  This allows for higher allocation success rate under memory
      pressure.
      
      Also, zsmalloc allows objects to span page boundaries within the zspage.
      This allows for lower fragmentation than could be had with the kernel
      slab allocator for objects between PAGE_SIZE/2 and PAGE_SIZE.  With the
      kernel slab allocator, if a page compresses to 60% of it original size,
      the memory savings gained through compression is lost in fragmentation
      because another object of the same size can't be stored in the leftover
      space.
      
      This ability to span pages results in zsmalloc allocations not being
      directly addressable by the user.  The user is given an
      non-dereferencable handle in response to an allocation request.  That
      handle must be mapped, using zs_map_object(), which returns a pointer to
      the mapped region that can be used.  The mapping is necessary since the
      object data may reside in two different noncontigious pages.
      
      The zsmalloc fulfills the allocation needs for zram perfectly
      
      [sjenning@linux.vnet.ibm.com: borrow Seth's quote]
      Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
      Acked-by: default avatarNitin Gupta <ngupta@vflare.org>
      Reviewed-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Cc: Bob Liu <bob.liu@oracle.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Luigi Semenzato <semenzato@google.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Pekka Enberg <penberg@kernel.org>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Seth Jennings <sjenning@linux.vnet.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      bcf1647d
    • Roman Gushchin's avatar
      kernel/smp.c: remove cpumask_ipi · 73f94550
      Roman Gushchin authored
      After commit 9a46ad6d ("smp: make smp_call_function_many() use logic
      similar to smp_call_function_single()"), cfd->cpumask is accessed only
      in smp_call_function_many().  So there is no more need to copy it into
      cfd->cpumask_ipi before putting csd into the list.  The cpumask_ipi
      field is obsolete and can be removed.
      Signed-off-by: default avatarRoman Gushchin <klamm@yandex-team.ru>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Wang YanQing <udknight@gmail.com>
      Cc: Xie XiuQi <xiexiuqi@huawei.com>
      Cc: Shaohua Li <shli@fusionio.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      73f94550
    • Christoph Hellwig's avatar
      kernel: use lockless list for smp_call_function_single · 6897fc22
      Christoph Hellwig authored
      Make smp_call_function_single and friends more efficient by using a
      lockless list.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarJan Kara <jack@suse.cz>
      Cc: Jens Axboe <axboe@kernel.dk>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6897fc22
    • Levente Kurusa's avatar
      drivers/net/phy/mdio_bus.c: call put_device on device_register() failure · 0c692d07
      Levente Kurusa authored
      It is required to call put_device() if device_register() fails, so that
      we give up the last reference to the device.  Calling put_device allows
      for mdiobus_release to be executed, kfreeing the bus.
      Signed-off-by: default avatarLevente Kurusa <levex@linux.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Grant Likely <grant.likely@secretlab.ca>
      Cc: David Daney <david.daney@cavium.com>
      Cc: David S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0c692d07
    • Levente Kurusa's avatar
      drivers/video/backlight/lcd.c: call put_device if device_register fails · 54f5968d
      Levente Kurusa authored
      Currently we kfree the container of the device which failed to register.
      This is wrong as the last reference is not given up with a put_device
      call.  Also, now that we have put_device() callen, we no longer need the
      kfree as the new_ld->dev.release function will take care of kfreeing the
      associated memory.
      Signed-off-by: default avatarLevente Kurusa <levex@linux.com>
      Acked-by: default avatarJingoo Han <jg1.han@samsung.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      54f5968d
    • Yinghai Lu's avatar
      memblock, bootmem: restore goal for alloc_low · 07bacb38
      Yinghai Lu authored
      Now we have memblock_virt_alloc_low to replace original bootmem api in
      swiotlb.
      
      But we should not use BOOTMEM_LOW_LIMIT for arch that does not support
      CONFIG_NOBOOTMEM, as old api take 0.
      
      | #define alloc_bootmem_low(x) \
      |        __alloc_bootmem_low(x, SMP_CACHE_BYTES, 0)
      |#define alloc_bootmem_low_pages_nopanic(x) \
      |        __alloc_bootmem_low_nopanic(x, PAGE_SIZE, 0)
      
      and we have
       #define BOOTMEM_LOW_LIMIT __pa(MAX_DMA_ADDRESS)
      for CONFIG_NOBOOTMEM.
      
      Restore goal to 0 to fix ia64 crash, that Tony found.
      Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
      Reported-by: default avatarTony Luck <tony.luck@gmail.com>
      Tested-by: default avatarTony Luck <tony.luck@intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      07bacb38
  2. 30 Jan, 2014 15 commits
    • Linus Torvalds's avatar
      Merge branch 'for-3.14/drivers' of git://git.kernel.dk/linux-block · 53d8ab29
      Linus Torvalds authored
      Pull block IO driver changes from Jens Axboe:
      
       - bcache update from Kent Overstreet.
      
       - two bcache fixes from Nicholas Swenson.
      
       - cciss pci init error fix from Andrew.
      
       - underflow fix in the parallel IDE pg_write code from Dan Carpenter.
         I'm sure the 1 (or 0) users of that are now happy.
      
       - two PCI related fixes for sx8 from Jingoo Han.
      
       - floppy init fix for first block read from Jiri Kosina.
      
       - pktcdvd error return miss fix from Julia Lawall.
      
       - removal of IRQF_SHARED from the SEGA Dreamcast CD-ROM code from
         Michael Opdenacker.
      
       - comment typo fix for the loop driver from Olaf Hering.
      
       - potential oops fix for null_blk from Raghavendra K T.
      
       - two fixes from Sam Bradshaw (Micron) for the mtip32xx driver, fixing
         an OOM problem and a problem with handling security locked conditions
      
      * 'for-3.14/drivers' of git://git.kernel.dk/linux-block: (47 commits)
        mg_disk: Spelling s/finised/finished/
        null_blk: Null pointer deference problem in alloc_page_buffers
        mtip32xx: Correctly handle security locked condition
        mtip32xx: Make SGL container per-command to eliminate high order dma allocation
        drivers/block/loop.c: fix comment typo in loop_config_discard
        drivers/block/cciss.c:cciss_init_one(): use proper errnos
        drivers/block/paride/pg.c: underflow bug in pg_write()
        drivers/block/sx8.c: remove unnecessary pci_set_drvdata()
        drivers/block/sx8.c: use module_pci_driver()
        floppy: bail out in open() if drive is not responding to block0 read
        bcache: Fix auxiliary search trees for key size > cacheline size
        bcache: Don't return -EINTR when insert finished
        bcache: Improve bucket_prio() calculation
        bcache: Add bch_bkey_equal_header()
        bcache: update bch_bkey_try_merge
        bcache: Move insert_fixup() to btree_keys_ops
        bcache: Convert sorting to btree_keys
        bcache: Convert debug code to btree_keys
        bcache: Convert btree_iter to struct btree_keys
        bcache: Refactor bset_tree sysfs stats
        ...
      53d8ab29
    • Linus Torvalds's avatar
      Merge branch 'for-3.14/core' of git://git.kernel.dk/linux-block · f568849e
      Linus Torvalds authored
      Pull core block IO changes from Jens Axboe:
       "The major piece in here is the immutable bio_ve series from Kent, the
        rest is fairly minor.  It was supposed to go in last round, but
        various issues pushed it to this release instead.  The pull request
        contains:
      
         - Various smaller blk-mq fixes from different folks.  Nothing major
           here, just minor fixes and cleanups.
      
         - Fix for a memory leak in the error path in the block ioctl code
           from Christian Engelmayer.
      
         - Header export fix from CaiZhiyong.
      
         - Finally the immutable biovec changes from Kent Overstreet.  This
           enables some nice future work on making arbitrarily sized bios
           possible, and splitting more efficient.  Related fixes to immutable
           bio_vecs:
      
              - dm-cache immutable fixup from Mike Snitzer.
              - btrfs immutable fixup from Muthu Kumar.
      
        - bio-integrity fix from Nic Bellinger, which is also going to stable"
      
      * 'for-3.14/core' of git://git.kernel.dk/linux-block: (44 commits)
        xtensa: fixup simdisk driver to work with immutable bio_vecs
        block/blk-mq-cpu.c: use hotcpu_notifier()
        blk-mq: for_each_* macro correctness
        block: Fix memory leak in rw_copy_check_uvector() handling
        bio-integrity: Fix bio_integrity_verify segment start bug
        block: remove unrelated header files and export symbol
        blk-mq: uses page->list incorrectly
        blk-mq: use __smp_call_function_single directly
        btrfs: fix missing increment of bi_remaining
        Revert "block: Warn and free bio if bi_end_io is not set"
        block: Warn and free bio if bi_end_io is not set
        blk-mq: fix initializing request's start time
        block: blk-mq: don't export blk_mq_free_queue()
        block: blk-mq: make blk_sync_queue support mq
        block: blk-mq: support draining mq queue
        dm cache: increment bi_remaining when bi_end_io is restored
        block: fixup for generic bio chaining
        block: Really silence spurious compiler warnings
        block: Silence spurious compiler warnings
        block: Kill bio_pair_split()
        ...
      f568849e
    • Linus Torvalds's avatar
      Merge branch 'for-3.14' of git://linux-nfs.org/~bfields/linux · d9894c22
      Linus Torvalds authored
      Pull nfsd updates from Bruce Fields:
       - Handle some loose ends from the vfs read delegation support.
         (For example nfsd can stop breaking leases on its own in a
          fewer places where it can now depend on the vfs to.)
       - Make life a little easier for NFSv4-only configurations
         (thanks to Kinglong Mee).
       - Fix some gss-proxy problems (thanks Jeff Layton).
       - miscellaneous bug fixes and cleanup
      
      * 'for-3.14' of git://linux-nfs.org/~bfields/linux: (38 commits)
        nfsd: consider CLAIM_FH when handing out delegation
        nfsd4: fix delegation-unlink/rename race
        nfsd4: delay setting current_fh in open
        nfsd4: minor nfs4_setlease cleanup
        gss_krb5: use lcm from kernel lib
        nfsd4: decrease nfsd4_encode_fattr stack usage
        nfsd: fix encode_entryplus_baggage stack usage
        nfsd4: simplify xdr encoding of nfsv4 names
        nfsd4: encode_rdattr_error cleanup
        nfsd4: nfsd4_encode_fattr cleanup
        minor svcauth_gss.c cleanup
        nfsd4: better VERIFY comment
        nfsd4: break only delegations when appropriate
        NFSD: Fix a memory leak in nfsd4_create_session
        sunrpc: get rid of use_gssp_lock
        sunrpc: fix potential race between setting use_gss_proxy and the upcall rpc_clnt
        sunrpc: don't wait for write before allowing reads from use-gss-proxy file
        nfsd: get rid of unused function definition
        Define op_iattr for nfsd4_open instead using macro
        NFSD: fix compile warning without CONFIG_NFSD_V3
        ...
      d9894c22
    • Geert Uytterhoeven's avatar
      ipmi: Add missing rv in ipmi_parisc_probe() · dfa19426
      Geert Uytterhoeven authored
      Fix
      
        drivers/char/ipmi/ipmi_si_intf.c: In function 'ipmi_parisc_probe':
        drivers/char/ipmi/ipmi_si_intf.c:2752:2: error: 'rv' undeclared (first use in this function)
        drivers/char/ipmi/ipmi_si_intf.c:2752:2: note: each undeclared identifier is reported only once for each function it appears in
      
      Introduced by commit d02b3709 ("ipmi: Cleanup error return")
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Acked-by: default avatarCorey Minyard <cminyard@mvista.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      dfa19426
    • Christoph Hellwig's avatar
      nfs: fix xattr inode op pointers when disabled · 5f13ee9c
      Christoph Hellwig authored
      Chris Mason reported a NULL pointer derefernence in generic_getxattr()
      that was due to sb->s_xattr being NULL.
      
      The reason is that the nfs #ifdef's for ACL support were misplaced, and
      the nfs3 inode operations had the xattr operation pointers set up, even
      though xattrs were not actually supported.  As a result, the xattr code
      was being called without the infrastructure having been set up.
      
      Move the #ifdef's appropriately.
      Reported-and-tested-by: default avatarChris Mason <clm@fb.com>
      Acked-by: Al Viro viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5f13ee9c
    • Linus Torvalds's avatar
      Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux · 9b0cd304
      Linus Torvalds authored
      Pull drm updates from Dave Airlie:
       "Been a bit busy, first week of kids school, and waiting on other trees
        to go in before I could send this, so its a bit later than I'd
        normally like.
      
        Highlights:
         - core:
            timestamp fixes, lots of misc cleanups
         - new drivers:
            bochs virtual vga
         - vmwgfx:
            major overhaul for their nextgen virt gpu.
         - i915:
            runtime D3 on HSW, watermark fixes, power well work, fbc fixes,
            bdw is no longer prelim.
         - nouveau:
            gk110/208 acceleration, more pm groundwork, old overlay support
         - radeon:
            dpm rework and clockgating for CIK, pci config reset, big endian
            fixes
         - tegra:
            panel support and DSI support, build as module, prime.
         - armada, omap, gma500, rcar, exynos, mgag200, cirrus, ast:
            fixes
         - msm:
            hdmi support for mdp5"
      
      * 'drm-next' of git://people.freedesktop.org/~airlied/linux: (595 commits)
        drm/nouveau: resume display if any later suspend bits fail
        drm/nouveau: fix lock unbalance in nouveau_crtc_page_flip
        drm/nouveau: implement hooks for needed for drm vblank timestamping support
        drm/nouveau/disp: add a method to fetch info needed by drm vblank timestamping
        drm/nv50: fill in crtc mode struct members from crtc_mode_fixup
        drm/radeon/dce8: workaround for atom BlankCrtc table
        drm/radeon/DCE4+: clear bios scratch dpms bit (v2)
        drm/radeon: set si_notify_smc_display_change properly
        drm/radeon: fix DAC interrupt handling on DCE5+
        drm/radeon: clean up active vram sizing
        drm/radeon: skip async dma init on r6xx
        drm/radeon/runpm: don't runtime suspend non-PX cards
        drm/radeon: add ring to fence trace functions
        drm/radeon: add missing trace point
        drm/radeon: fix VMID use tracking
        drm: ast,cirrus,mgag200: use drm_can_sleep
        drm/gma500: Lock struct_mutex around cursor updates
        drm/i915: Fix the offset issue for the stolen GEM objects
        DRM: armada: fix missing DRM_KMS_FB_HELPER select
        drm/i915: Decouple GPU error reporting from ring initialisation
        ...
      9b0cd304
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma · ca2a650f
      Linus Torvalds authored
      Pull slave-dma updates from Vinod Koul:
       - new driver for BCM2835 used in R-pi
       - new driver for MOXA ART
       - dma_get_any_slave_channel API for DT based systems
       - minor fixes and updates spread acrooss driver
      
      [ The fsl-ssi dual fifo mode support addition clashed badly with the
        other changes to fsl-ssi that came in through the sound merge.  I did
        a very rough cut at fixing up the conflict, but Nicolin Chen (author
        of both sides) will need to verify and check things ]
      
      * 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma: (36 commits)
        dmaengine: mmp_pdma: fix mismerge
        dma: pl08x: Export pl08x_filter_id
        acpi-dma: align documentation with kernel-doc format
        dma: fix vchan_cookie_complete() debug print
        DMA: dmatest: extend the "device" module parameter to 32 characters
        drivers/dma: fix error return code
        dma: omap: Set debug level to debugging messages
        dmaengine: fix kernel-doc style typos for few comments
        dma: tegra: add support for Tegra148/124
        dma: dw: use %pad instead of casting dma_addr_t
        dma: dw: join split up messages
        dma: dw: fix style of multiline comment
        dmaengine: k3dma: fix sparse warnings
        dma: pl330: Use dma_get_slave_channel() in the of xlate callback
        dma: pl330: Differentiate between submitted and issued descriptors
        dmaengine: sirf: Add device_slave_caps interface
        DMA: Freescale: change BWC from 256 bytes to 1024 bytes
        dmaengine: Add MOXA ART DMA engine driver
        dmaengine: Add DMA_PRIVATE to BCM2835 driver
        dma: imx-sdma: Assign a default script number for ROM firmware cases
        ...
      ca2a650f
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/olof/chrome-platform · e9e352e9
      Linus Torvalds authored
      Pull chrome platform cleanups and improvements from Olof Johansson:
       - Use deferred probing on Chrome OS platforms for the i2c device
         registration.  This fixes a long-standing race of initialization of
         touchpad/screen on Chromebooks.
       - Added in platform device registration for pstore console on supported
         hardware
       - Misc smaller fixes (__initdata, module exit cleanup, etc)
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/olof/chrome-platform:
        platform/chrome: unregister platform driver/device when module exit
        platform/chrome: Make i2c_adapter_names static
        platform/chrome: chromeos_laptop - fix incorrect placement of __initdata tag
        platform/chrome: chromeos_laptop - Use deferred probing
        platform/chrome: chromeos_laptop - Restructure device associations
        platform/chrome: Add pstore platform_device
      e9e352e9
    • Linus Torvalds's avatar
      Merge tag 'iommu-updates-v3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu · b3a4bcaa
      Linus Torvalds authored
      Pull IOMMU Updates from Joerg Roedel:
       "A few patches have been queued up for this merge window:
      
         - improvements for the ARM-SMMU driver (IOMMU_EXEC support, IOMMU
           group support)
         - updates and fixes for the shmobile IOMMU driver
         - various fixes to generic IOMMU code and the Intel IOMMU driver
         - some cleanups in IOMMU drivers (dev_is_pci() usage)"
      
      * tag 'iommu-updates-v3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (36 commits)
        iommu/vt-d: Fix signedness bug in alloc_irte()
        iommu/vt-d: free all resources if failed to initialize DMARs
        iommu/vt-d, trivial: clean sparse warnings
        iommu/vt-d: fix wrong return value of dmar_table_init()
        iommu/vt-d: release invalidation queue when destroying IOMMU unit
        iommu/vt-d: fix access after free issue in function free_dmar_iommu()
        iommu/vt-d: keep shared resources when failed to initialize iommu devices
        iommu/vt-d: fix invalid memory access when freeing DMAR irq
        iommu/vt-d, trivial: simplify code with existing macros
        iommu/vt-d, trivial: use defined macro instead of hardcoding
        iommu/vt-d: mark internal functions as static
        iommu/vt-d, trivial: clean up unused code
        iommu/vt-d, trivial: check suitable flag in function detect_intel_iommu()
        iommu/vt-d, trivial: print correct domain id of static identity domain
        iommu/vt-d, trivial: refine support of 64bit guest address
        iommu/vt-d: fix resource leakage on error recovery path in iommu_init_domains()
        iommu/vt-d: fix a race window in allocating domain ID for virtual machines
        iommu/vt-d: fix PCI device reference leakage on error recovery path
        drm/msm: Fix link error with !MSM_IOMMU
        iommu/vt-d: use dedicated bitmap to track remapping entry allocation status
        ...
      b3a4bcaa
    • Linus Torvalds's avatar
      Merge git://www.linux-watchdog.org/linux-watchdog · 17c7f854
      Linus Torvalds authored
      Pull watchdog updates from Wim Van Sebroeck:
       - new driver for bcm281xx watchdog device
       - new driver for gpio based watchdog devices
       - remove DEFINE_PCI_DEVICE_TABLE macro for watchdog device drivers
       - conversion of davinci_wdt and mpc8xxx_wdt to watchdog core
       - improvements on davinci_wdt, at91/dt, at91sam9_wdt and s3c2410_wdt
       - Auto-detect IO address and expand supported chips on w836* super-I/O
         chipsets
       - core: Make dt "timeout-sec" property work on drivers w/out min/max
       - fix Kconfig dependencies
       - sirf: Remove redundant of_match_ptr helper
       - mach-moxart: add restart handler
       - hpwdt patch to display better panic information
       - imx2_wdt: disable watchdog timer during low power mode
      
      * git://www.linux-watchdog.org/linux-watchdog: (31 commits)
        watchdog: w83627hf_wdt: Reset watchdog trigger during initialization
        watchdog: w83627hf: Add support for W83697HF and W83697UG
        watchdog: w83627hf: Auto-detect IO address and supported chips
        watchdog: at91sam9_wdt: increase security margin on watchdog counter reset
        watchdog: at91sam9_wdt: avoid spurious watchdog reset during init
        watchdog: at91sam9_wdt: fix secs_to_ticks
        ARM: at91/dt: add watchdog properties to kizbox board
        ARM: at91/dt: add sam9 watchdog default options to SoCs
        watchdog: at91sam9_wdt: update device tree doc
        watchdog: at91sam9_wdt: better watchdog support
        watchdog: sp805_wdt depends also on ARM64
        watchdog: mach-moxart: add restart handler
        watchdog: mpc8xxx_wdt convert to watchdog core
        watchdog: sirf: Remove redundant of_match_ptr helper
        watchdog: hpwdt patch to display informative string
        watchdog: dw_wdt: remove build dependencies
        watchdog: imx2_wdt: disable watchdog timer during low power mode
        watchdog: s3c2410_wdt: Report when the watchdog reset the system
        watchdog: s3c2410_wdt: use syscon regmap interface to configure pmu register
        watchdog: s3c2410_wdt: Handle rounding a little better for timeout
        ...
      17c7f854
    • Linus Torvalds's avatar
      Merge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · f7a6ad9f
      Linus Torvalds authored
      Pull more i2c updates from Wolfram Sang:
       "Mostly bugfixes, small but wanted cleanups, and Paul's init.h removal
        applied"
      
      * 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
        i2c: rcar: fix NACK error code
        i2c: update i2c_algorithm documentation
        i2c: rcar: use devm_clk_get to ensure clock is properly ref-counted
        i2c: rcar: do not print error if device nacks transfer
        i2c: rely on driver core when sanitizing devices
        i2c: delete non-required instances of include <linux/init.h>
        i2c: acorn: is tristate and should use module.h
        i2c: piix4: Standardize log messages
        i2c: piix4: Use different message for AMD Auxiliary SMBus Controller
        i2c: piix4: Add support for AMD ML and CZ SMBus changes
      f7a6ad9f
    • Linus Torvalds's avatar
      Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging · 9076e0ca
      Linus Torvalds authored
      Pull hwmon updates from Jean Delvare:
       "This include it87 driver improvements, and a tree-wide change of my
        e-mail address"
      
      * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
        Update Jean Delvare's e-mail address
        hwmon: (it87) Print proper names for the IT8771E and IT8772E
        hwmon: (it87) Add support for the ITE IT8603E
      9076e0ca
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86 · b7a8399e
      Linus Torvalds authored
      Pull x86 platform drivers update from Matthew Garrett:
       "Nothing amazingly special here.  Some cleanups, a new driver to
        support a single button on some new HPs, a tiny amount of hardware
        enablement"
      
      * 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86:
        ipc: add intel-mid's pci id macros
        hp-wireless: new driver for hp wireless button for Windows 8
        toshiba_acpi: Support RFKILL hotkey scancode
        hp_accel: Add a new PnP ID HPQ6007 for new HP laptops
        sony-laptop: remove unnecessary assigment of len
        fujitsu-laptop: fix error return code
        dell-laptop: Only install the i8042 filter when rfkill is active
        X86 platform: New BayTrail IOSF-SB MBI driver
        drivers: platform: Include appropriate header file in mxm-wmi.c
        drivers: platform: Mark functions as static in hp_accel.c
        dell-laptop: rkill whitelist Precision models
        ipc: simplify platform data approach
        asus-wmi: Convert to use devm_hwmon_device_register_with_groups
        compal-laptop: Use devm_hwmon_device_register_with_groups
        compal-laptop: Replace SENSOR_DEVICE_ATTR with DEVICE_ATTR
        eeepc-laptop: Convert to use devm_hwmon_device_register_with_groups
        compal-laptop: Use devm_kzalloc to allocate local data structure
        dell-laptop: fix to return error code in dell_send_intensity()
      b7a8399e
    • Linus Torvalds's avatar
      Merge tag 'blackfin-for-linus' of... · 30c867ee
      Linus Torvalds authored
      Merge tag 'blackfin-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/realmz6/blackfin-linux
      
      Pull blackfin updates from Steven Miao:
       "Some minor changes and bug fixes"
      
      * tag 'blackfin-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/realmz6/blackfin-linux:
        From: Eunbong Song <eunb.song@samsung.com>
        Add platfrom device resource for bfin-sport on bf533 stamp
        fix build error for bf527-ezkit_defconfig for old silicon
        blackfin: Support L1 SRAM parity checking feature on bf60x
        blackfin: bf609: update the anomaly list to Nov 2013
        blackfin: delete non-required instances of <linux/init.h>
        From: Paul Walmsley <pwalmsley@nvidia.com>
        06/18] smp, blackfin: kill SMP single function call interrupt
        arch: blackfin: uapi: be sure of "_UAPI" prefix for all guard macros
      30c867ee
    • Linus Torvalds's avatar
      Merge branch 'x86-intel-mid-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · cac9283c
      Linus Torvalds authored
      Pull intel MID cleanups from Peter Anvin:
       "Miscellaneous cleanups to the intel-mid code merged earlier in this
        merge window"
      
      * 'x86-intel-mid-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, intel-mid: Cleanup some platform code's header files
        x86, intel-mid: Add missing 'void' to functions without arguments
        x86: Don't add new __cpuinit users to Merrifield platform code
        x86: Don't introduce more __cpuinit users in intel_mid_weak_decls.h
      cac9283c