Commit graph

560,913 commits

Author SHA1 Message Date
Tejun Heo
27bd4dbb8d cgroup: replace cgroup_has_tasks() with cgroup_is_populated()
Currently, cgroup_has_tasks() tests whether the target cgroup has any
css_set linked to it.  This works because a css_set's refcnt converges
with the number of tasks linked to it and thus there's no css_set
linked to a cgroup if it doesn't have any live tasks.

To help tracking resource usage of zombie tasks, putting the ref of
css_set will be separated from disassociating the task from the
css_set which means that a cgroup may have css_sets linked to it even
when it doesn't have any live tasks.

This patch replaces cgroup_has_tasks() with cgroup_is_populated()
which tests cgroup->nr_populated instead which locally counts the
number of populated css_sets.  Unlike cgroup_has_tasks(),
cgroup_is_populated() is recursive - if any of the descendants is
populated, the cgroup is populated too.  While this changes the
meaning of the test, all the existing users are okay with the change.

While at it, replace the open-coded ->populated_cnt test in
cgroup_events_show() with cgroup_is_populated().

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Li Zefan <lizefan@huawei.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@kernel.org>
2015-10-15 16:41:50 -04:00
Tejun Heo
0de0942db2 cgroup: make cgroup->nr_populated count the number of populated css_sets
Currently, cgroup->nr_populated counts whether the cgroup has any
css_sets linked to it and the number of children which has non-zero
->nr_populated.  This works because a css_set's refcnt converges with
the number of tasks linked to it and thus there's no css_set linked to
a cgroup if it doesn't have any live tasks.

To help tracking resource usage of zombie tasks, putting the ref of
css_set will be separated from disassociating the task from the
css_set which means that a cgroup may have css_sets linked to it even
when it doesn't have any live tasks.

This patch updates cgroup->nr_populated so that for the cgroup itself
it counts the number of css_sets which have tasks associated with them
so that empty css_sets don't skew the populated test.

Signed-off-by: Tejun Heo <tj@kernel.org>
2015-10-15 16:41:49 -04:00
Tejun Heo
b309e5b743 cgroup: remove an unused parameter from cgroup_task_migrate()
cgroup_task_migrate() no longer uses @old_cgrp.  Remove it.

Signed-off-by: Tejun Heo <tj@kernel.org>
2015-10-15 16:41:49 -04:00
Arnd Bergmann
41e602e8af Marvell Berlin BG2Q CPU clock driver:
- add BG2Q CPU clock to clk driver
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJWH/dLAAoJEN2kpao7fSL4WTMP/j95BmglqNQLm71boVsc5ZJy
 fP/IoO4afSNe9+E06yAKMF6ocRZmNi/bgrWSOEMmRdpr9KDGh3CwZlUdvME2pO/u
 XuM8MADQp9+b8bAYIYp/8m9c6ccmDbi74TV/vzY1dLzTjqzV8hgUwfA5DYXoqN2S
 Fsfl0uYlRbuP1V+nnYEElbXNSOgz7oz6viA4guXUtGrKyGa94EEEmlMfaZXsWWr7
 DCH398lkpTh3jsCHSKdp6V9VWW0HnUjghF6Sjo1bH49CIdqEpwc2fZF5spcx1pgr
 H2+qBXHvaPnH9dMLDnViHC/7EeycvRsHJn0S0KUTQY7RNhs78JU8D6JnjWQn5oKB
 4GyV0spDVXZuJ9tiiE6jgw7QP/gSORnjbKtFIlfqu8QogkH9ny2aQ8U7fhHuT6ZG
 sgqhw9dXAkWbH/KVIZG3JGqmQA0MTgRWaNVf4cCMZvm11E4NU0i/WGFtZEgRDSrh
 mEYhn9Zf1HiyynIWSOTcR5ZwHFBlDy7yhEXpR55rtTloDphbFUcef2mBqM/xXaTf
 DLzHPD/2tRgy0n3efHFGK3Qey99TWWCPZ0PIn/uGhdn+3w3GaC+q3SUCEb+VnLzj
 vz35jv7HwkpNypVz4U7IDabqLxsMIrHvnlfNIqCA52cht5/JMJJRCJNq56aqU50y
 vrk6jfGw95Mai5xN8bdK
 =slnI
 -----END PGP SIGNATURE-----

Merge tag 'berlin-new-cpuclk-for-4.4-1' of git://git.infradead.org/users/hesselba/linux-berlin into next/drivers

Merge "Marvell Berlin BG2Q CPU clock driver" from Sebastian Hesselbarth:

- add BG2Q CPU clock to clk driver

* tag 'berlin-new-cpuclk-for-4.4-1' of git://git.infradead.org/users/hesselba/linux-berlin:
  clk: berlin: add cpuclk
  ARM: berlin: dts: add CLKID_CPU for BG2Q
2015-10-15 22:41:04 +02:00
Maxime Coquelin
fb40c67769 ARM: configs: Enable FIXED_PHY in multi_v7 defconfig
CONFIG_FIXED_PHY is needed to have Ethernet working on STi boards.

Select it as built-in since RootFS is accessible from NFS on these boards.

Signed-off-by: Maxime Coquelin <maxime.coquelin@st.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2015-10-15 22:40:18 +02:00
Arnd Bergmann
3b2c05644b SCPI support on ARM64 Juno Development Platform
1. SRAM, MHU mailbox and SCPI support
   2. CPU topology using cpu-map
   3. Clock support for all the cpus
   4. Support for SoC sensors
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABCAAGBQJWF7sKAAoJEABBurwxfuKYrEAP/2EqYNykediW8cxct7xyMls3
 L6KEOl29HfOJueYT0xY3/9rRuL+a+3rXe/MxnlL/E5FO88080b/ITJFP19DcLW5e
 /NmV9O4t9S7ZDYiQiGsTjbwaqYXxQA3xcnO25g3oACiMoBety/Axw/FTzEQEpQWL
 8UhWbiaONiwlvbe/rOq9VL2gdsN9wpS9W0I+SnCJcHv/UvCRTfalT5wP1azy/liq
 E+Z8SCinH2Pj0SCVuNg/4YzM0UXDIt2b4fqqp6Yb+lKiUnkACYqK+VsCtT/f+qmY
 ICMDLDoapq/96SwCCUf0pmvMErx270r8WJeC+Mv4EtkMYnbzGdHIR70yHWCcDbW7
 6umapM/QcDfazj2wkPh4dYSTLe1bkijKGEaiMWG5dmn0HtC8dq/mUw1Midgo0z9e
 n0Mr9dGyMj0oxT0+d1NhuL/XtValCfGxJQu1D3p22KYDliN2Bs8Oa3q0ERArytbe
 KYhHXJ36AvP66ZjYWTv/Cs3s5RfsW3+ZzDtlB6tl6nh8QgsrUxKcVrCrw15w5qWN
 1z00v2Iw5zFe3i5YbPCvGtarYMvGJEyIdv7+D3mIsIU1BA2iff2iB4lq77G7ZoNA
 UbbeFTZqV8pKtbejDjHkPN4r+Ws5i8A2E3k+kIviqQO46AB8gRyzIUOXj8Di8h0S
 gMgyo8NkC+6CBlXfPfrC
 =wBcv
 -----END PGP SIGNATURE-----

Merge tag 'juno-scpi-for-v4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux into next/dt

Merge "SCPI support on ARM64 Juno Development Platform" from Sudeep Holla:

  1. SRAM, MHU mailbox and SCPI support
  2. CPU topology using cpu-map
  3. Clock support for all the cpus
  4. Support for SoC sensors

* tag 'juno-scpi-for-v4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux:
  arm64: dts: Add sensor node to Juno dt
  arm64: dts: add clock support for all the cpus
  arm64: dts: add CPU topology on Juno
  arm64: dts: add SRAM, MHU mailbox and SCPI support on Juno
2015-10-15 22:38:10 +02:00
Baruch Siach
020effe8cb ARM: digicolor: dts: add uart pin configuration
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2015-10-15 22:37:15 +02:00
Baruch Siach
2d5958e360 ARM: digicolor: add pinctrl module device node
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2015-10-15 22:37:08 +02:00
Arnd Bergmann
82f8817470 ARM Keystone DTS part2 for 4.4
- Typo fix the soc binding documentation
 	- NETCP Accumulator nodes
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJWHW1dAAoJEHJsHOdBp5c/kUAP/Aj7851EEAmWoyVsaJIId2eY
 e8Bc0A08+fvhRc0AC3xVBCAIz3D4Sk1VIKrHHIZk4lQI/wPTGAkex/I6VBd0+Udr
 kdT+XfKtzUfqxK5Oi6e6XY56buUKAsMZCAzZqh+0tpJaoz5EUtEwoSqqvVMNfmdM
 5fT4bfl+zYIuhuS6CCulPJkHVZSuOJLUB7hkc2jxN/zSXptfwly69kBzVHmeJHST
 wmjlvIUjgScpaf+yP0ZaXTZsSvhbyJ6caEwsgrlFitjKqkRFLfqm9gJKyIdyaZ9o
 G62g4bX+dYfoT/ffTHAf9k0djBcjADkHf3T6uw8hNeEU4ykZykRcT/rGFtzdOH7a
 mOeQmraaL75HeSHaVwgGqiHq7HHs/eZO8iGBRoKsqqlw7kSH2zgsuP/wyLHQNEs9
 9TkHjQXkpSieBlawiUliVQWMsmetiU69uCz38cyS9Ttu2bYIpspIVBiJwHW3PNDP
 RPOevZhGKC+irGuU/SM8Sso6eXloCP1DzziAXTFebaWTDANZyjqvBBAElCKGW1e0
 Nd042TYfWUK3g2r/g9kBoYC6CzA0S6xxQ8Rlo3XJPlxJOVoa7d4UPclFRTzvWcHz
 F+peAEC+SCgLsg/Ar0pRWoIMvB6I4keP07r8ZI4sVjlZGwW1IvmeasMlPrBZNr6J
 vgmHgbnQRZFcTyJO81ne
 =QDuK
 -----END PGP SIGNATURE-----

Merge tag 'keystone-dts-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone into next/dt

Merge "ARM Keystone DTS part2 for 4.4" from Santosh Shilimkar:

	- Typo fix the soc binding documentation
	- NETCP Accumulator nodes

* tag 'keystone-dts-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone:
  ARM: dts: keystone: enable accumulator channels
  Documentation: dt: keystone: Fix up missing quotes
2015-10-15 22:35:46 +02:00
Arnd Bergmann
2dc71a68d2 Device tree changes for omaps for v4.4 merge window:
- DCAN sleep pins for am437x-gp-evm
 
 - A series of changes to add audio support for dra7
 
 - Add support for gpio keys and LEDs on dra7
 
 - Regulator clean-up for am335x-wega
 
 - A series of changes to enable IOMMUs and mailboxes for dra7
   accelerators
 
 - Add support for am335x-bonegreen
 
 - Fix up GPIO flags where 0 was used instead of GPIO_ACTIVE_HIGH
 
 - Fix omap3-lilly-am33x IRQ level flag
 
 - Remove duplicate uart2 pinmux for igep and fix indentation and
   update igep to use pinctrl macros for the register offsets
 
 - Fix MMC cd-gpios usage
 
 Note that this branch is against v4.3-rc4 as that contains critical
 MMC related fixes to boot with MMC working on most omaps.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJWHr4GAAoJEBvUPslcq6Vzhr8QAMAH0SNDea4C48F7vPkjA31V
 D0x1hGnLkeXbInR9H+pDjULuLdY8bQubCi0gdpH0OAxUarga2WneTC9A0IaNs3gm
 YR3fS3RnusrPdderNJ00fkJaz1taaQmEdbKAxgPG2XabOZtUDqRhE4JafUnMN2QI
 jOde4CS3XDbzEfsDLxrxzsw8x1wHnPRQ4LWHVxuUYIPVRsbwbU+Ur23NPxUU7JtQ
 g+Lf86PR5B3AtXqh+1x0cdpoybyCpKSqFnvFBEQS997B+7DQYKXwVWRZctBtSsV0
 66BccG/dN3YSG+WdRno4R8ikrebuhhdVTn8bOUIFN83o5BjDAuWKBsYXYkVHsusk
 wLRnFkLwkNoil8C4DWY9+RfdX7uLwcCPppBB4PF6P541rbPGpV8O19/D5v1qBCVQ
 p4GxNarygJdXWEzYb22x9KEwVBHz8waPNfuRz82TrgcttTyDWUtiUbRnxRtI137a
 V8g5/TrR8p1WwRFlp4X7UFhZACqn1CSoNW9J1eax7VpGm5I8DEECAOzSHUId98k5
 eRhfC5r/tLWDl3IkSnKrGnQ2hVu6dcazFj3nMJacYkpmRghoHvp+7ElepxffZCae
 +V8TXFP6ehEajkvrExPRL8Ey9UdMJEXeof5t/o2Vt0b2w+XeLOpuoDrKbcJsYPMb
 RWisiAUU/KWk6UQYOPj5
 =Sbup
 -----END PGP SIGNATURE-----

Merge tag 'omap-for-v4.4/dt-pt1' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/dt

Merge "Device tree changes for omaps for v4.4 merge window:" from Tony Lindgren:

- DCAN sleep pins for am437x-gp-evm

- A series of changes to add audio support for dra7

- Add support for gpio keys and LEDs on dra7

- Regulator clean-up for am335x-wega

- A series of changes to enable IOMMUs and mailboxes for dra7
  accelerators

- Add support for am335x-bonegreen

- Fix up GPIO flags where 0 was used instead of GPIO_ACTIVE_HIGH

- Fix omap3-lilly-am33x IRQ level flag

- Remove duplicate uart2 pinmux for igep and fix indentation and
  update igep to use pinctrl macros for the register offsets

- Fix MMC cd-gpios usage

Note that this branch is against v4.3-rc4 as that contains critical
MMC related fixes to boot with MMC working on most omaps.

* tag 'omap-for-v4.4/dt-pt1' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: (33 commits)
  ARM: dts: omap3-igep: Use OMAP3_CORE1_IOPAD pinmux macro
  ARM: dts: dra7xx: am57xx: fix cd-gpios definition as per hardware design and dt binding docs
  ARM: dts: am43xx: fix cd-gpios definition as per hardware design and dt binding docs
  ARM: dts: am335x: fix cd-gpios definition as per hardware design and dt binding docs
  ARM: dts: omap3-igep0020: Remove duplicate uart2 pinmux
  ARM: dts: omap3-igep: Fix indentation
  ARM: dts: omap3-lilly-a83x: Don't use IRQ level flag for a GPIO
  ARM: dts: DRA74x: Add IOMMU nodes for DSP2
  ARM: dts: DRA7: Add common IOMMU nodes
  ARM: dts: DRA74x: Add dsp2_system syscon node
  ARM: dts: DRA7: Add dsp1_system syscon node
  ARM: dts: Use defined GPIO constants in flags cell for OMAP2+ boards
  ARM: dts: Add am335x-bonegreen
  ARM: dts: beagle-x15: Enable the system mailboxes 5 and 6
  ARM: dts: dra72-evm: Enable the system mailboxes 5 and 6
  ARM: dts: dra7-evm: Enable the system mailboxes 5 and 6
  ARM: dts: DRA72x: Add IPC sub-mailbox nodes for IPU1, IPU2 & DSP1
  ARM: dts: DRA74x: Add IPC sub-mailbox nodes for all IPUs & DSPs
  ARM: dts: am335x-wega: Clean up regulators
  ARM: dts: dra7-evm: add gpio key support
  ...
2015-10-15 22:32:53 +02:00
Linus Torvalds
c7823b6b97 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
Pull ext4 Kconfig description fixup from Jan Kara:
 "A small fixup in description of EXT4_USE_FOR_EXT2 config option"

* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
  ext4: Update EXT4_USE_FOR_EXT2 description
2015-10-15 13:31:00 -07:00
Baruch Siach
8207e2edbd ARM: digicolor: select pinctrl/gpio driver
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2015-10-15 22:27:30 +02:00
Arnd Bergmann
7a0205bc18 Support for additional ARM MPMCs to the PL172 driver and an update to
the bindings documentation to reflect this from Vladimir Zapolskiy.
 
 "The change adds support of ARM PrimeCell PL175 MPMC and PL176 MPMC,
  the static memory controllers on devices are similar to one found on
  ARM PrimeCell PL172, add support to the existing driver."
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQEcBAABCAAGBQJWFtaVAAoJEF5zSH4+/j/ajj4H/1Yi5EZXpfSnSrLzETEkJbXF
 VH0RLMA2ODgAgZEJt1y2mS0OW2ImDz2UIUDK86BbPP6cvyTxJft56nAMm8JHRrNU
 M6PkOVIgkcSflqIW3LwJlW/TsXYvuaZQ+JJREZeeZT82IxQYAWyfnrKEyypfRTp2
 1HTwTJv3E0RR0oefRF4kXnfHuRUlRcFbRjm4NyjH/mIj4HGIK+Vwjirkjq9U6xYn
 7dGYj89soxVtlaSH/TTG9F4LnmGk/vOsvXlLBxgvYUWfOHvQDxgxPErVrj7GE2vv
 tZ0iLs2tv4dbVo6D/YdQfLP576fKoVbjN3iKvlhP22w67b/QxVPXSgFxier5HK0=
 =/iBk
 -----END PGP SIGNATURE-----

Merge tag 'drivers_pl172_for_4.4' of https://github.com/manabian/linux-lpc into next/drivers

Merge "PL172 driver updates for v4.4" from Joachim Eastwood:

Support for additional ARM MPMCs to the PL172 driver and an update to
the bindings documentation to reflect this from Vladimir Zapolskiy.

"The change adds support of ARM PrimeCell PL175 MPMC and PL176 MPMC,
 the static memory controllers on devices are similar to one found on
 ARM PrimeCell PL172, add support to the existing driver."

* tag 'drivers_pl172_for_4.4' of https://github.com/manabian/linux-lpc:
  doc: dt: arm,pl172: add description of PL175 and PL176 controllers
  memory: pl172: add ARM PrimeCell PL176 MPMC support
  memory: pl172: add ARM PrimeCell PL175 MPMC support
  memory: pl172: correct MPMC peripheral ID register bits
2015-10-15 22:26:03 +02:00
Joachim Eastwood
04004d4d9a ARM: configs: update lpc18xx defconfig
- Enable SPIFI Flash and JFFS2 to support rootfs on Flash memory
- Enable USB Phy, mass storage and SCSI to support USB memory
- Enable PCF857x and JC42 I2C devices found on Hitex board
- Enable PL172 to support memory mapped NOR Flash
- New LPC18xx drivers: I2C, Watchdog, SCT PWM and RTC

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2015-10-15 22:25:01 +02:00
Joachim Eastwood
19c1c32c66 MAINTAINERS: update lpc18xx entry with more drivers
Add explicit entries for drivers used by the lpc18xx that is
not caught by the "lpc18xx" regex pattern.

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2015-10-15 22:24:17 +02:00
Arnd Bergmann
cfd96d3e74 ARM Keystone SOC driver updates for 4.4
Documentation and support to be able to load the PDSP
 	firmware necessary for accumulator operation.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJWHW8iAAoJEHJsHOdBp5c/9ywP/3Qpvy+kcnwMvwrnq/jxLlGk
 qc+gQTAMMguenYGZmIqnyLVHG9B4UUNZ6e/uiukzCxMP1SWx8KmgKNFSQonJuFVV
 wLufo+wYBTH4P8VIM5OJNkJVPqZ8YXwtVJ09LhVxYNh1vF/l6aOEQ/kaEC22f5sD
 jycgKdKx3yRn67VrWiuXS1MGXIDkGR3ABCxv6iJHSKyP15HArQ6fAhyrkfP/mNkr
 9YXIrX+vmMdsICfXG19R2z/lCuM+JadXz9Rjo9yMQwvUw+3QAHYy8m4JXb9cZFZq
 jNZnzWQj5azuxaGnLVS1UNggsEXuxmd0S1PJvdF1N2ISHVYqwCtFuLjQ2r+z4WQm
 uzo9DyPTaYtASO6iSq9MQVzKKW0r0a5dPlAJIYTJHR11xi8kOpu04KUkJUR4c1ly
 X5I9zJ7ishV1VxFUZaMJtl/nX7B18WiKZyHhtO4MqRLPFA1fjH1psA/s8vRk6l6e
 unawCOM5oT8KvuSyijTNq2sQlxgRJJW7S4F1P1iUxsA6nocaPdTV+Oi/aECt8mFQ
 Q9gFVgCTEMWBYPuVqVisfU/mmZFPRDiotknMAeM+mUF6D/DkA0NSPvNWH0LP4rrA
 kIGRHQWtJMBTdxdBhjKoCsEEk1DR0wOCTUqow77SR/H3wl1FL1EYDB2J15JD7vzM
 lVTrZzd1wRXSsHINdnY6
 =T5UX
 -----END PGP SIGNATURE-----

Merge tag 'keystone-driver-soc_v2' of git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone into next/soc

Merge "ARM Keystone SOC driver updates for 4.4" from Santosh Shilimkar:

	Documentation and support to be able to load the PDSP
	firmware necessary for accumulator operation.

* tag 'keystone-driver-soc_v2' of git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone:
  soc: ti: qmss: make acc queue support optional in the driver
  soc: ti: add firmware file name as part of the driver
  Documentation: dt: soc: Add description for knav qmss driver
2015-10-15 22:22:26 +02:00
Trond Myklebust
275058a218 NFS: Fix an 'unused variable' complaint when #ifndef CONFIG_NFS_V4_2
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
2015-10-15 16:20:11 -04:00
Dan Carpenter
95fb6144bb iommu/vt-d: shift wrapping bug in prq_event_thread()
The "req->addr" variable is a bit field declared as "u64 addr:52;".
The "address" variable is a u64.  We need to cast "req->addr" to a u64
before the shift or the result is truncated to 52 bits.

Fixes: a222a7f0bb ('iommu/vt-d: Implement page request handling')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2015-10-15 21:16:47 +01:00
David Woodhouse
26322ab55a iommu/vt-d: Fix NULL pointer dereference in page request error case
Dan Carpenter pointed out an error path which could lead to us
dereferencing the 'svm' pointer after we know it to be NULL because the
PASID lookup failed. Fix that, and make it less likely to happen again.

Fixes: a222a7f0bb ('iommu/vt-d: Implement page request handling')
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2015-10-15 21:16:22 +01:00
Arnd Bergmann
d72b712824 Merge tag 'arm-soc/for-4.4/soc' of http://github.com/Broadcom/stblinux into next/soc
Merge "Broadcom soc changes for v4.4 (try 2)" from Florian Fainelli:

This pull request contains the following Broadcom SoC platform and driver changes:

- Brian Norris create a drivers/soc/brcmstb/ stub as a place holder for SoC-specific
  code which is coming next

- Florian Fainelli adds support for configuring the BCM7xxx SoCs Bus Interface Unit
  with their specific write-pairing setting, which must be saved and restored during
  system-wide suspend/resume, and consequently updates the brcmstb machine code to
  initialize the BIU

- Jon Mason adds support for the Northstar Plus SoCs by introducing a custom machine
  descriptor matching their compatible string and setting up the PL310 L2 cache and
  enabling the relevant ARM errata for their Cortex-A9

* tag 'arm-soc/for-4.4/soc' of http://github.com/Broadcom/stblinux:
  ARM: brcmstb: Setup BIU control registers during boot
  soc: brcmstb: Add Bus Interface Unit control setup
  soc: add stubs for brcmstb SoC's
  ARM: NSP: Add basic support for Broadcom Northstar Plus SoC
2015-10-15 22:09:07 +02:00
Peng Tao
a340abcf41 nfs42: add NFS_IOC_CLONE_RANGE ioctl
It follows btrfs BTRFS_IOC_CLONE_RANGE lead on ioctl number and
arguments.

Signed-off-by: Peng Tao <tao.peng@primarydata.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
2015-10-15 16:08:33 -04:00
Peng Tao
811b7b85d6 nfs42: respect clone_blksize
draft-ietf-nfsv4-minorversion2-38.txt says:
   Both cl_src_offset and
   cl_dst_offset must be aligned to the clone block size Section 12.2.1.
   The number of bytes to be cloned must be a multiple of the clone
   block size, except in the case in which cl_src_offset plus the number
   of bytes to be cloned is equal to the source file size.

Signed-off-by: Peng Tao <tao.peng@primarydata.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
2015-10-15 16:08:28 -04:00
Peng Tao
2a92ee92d4 nfs: get clone_blksize when probing fsinfo
NFSv42 CLONE operation is supposed to respect it.

Signed-off-by: Peng Tao <tao.peng@primarydata.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
2015-10-15 16:08:18 -04:00
Peng Tao
bea51b30b2 nfs42: add NFS_IOC_CLONE ioctl
It can be called by user space to CLONE two files.
Follow btrfs lead and define NFS_IOC_CLONE same as BTRFS_IOC_CLONE.
Thus we don't mess up userspace with too many ioctls.

Signed-off-by: Peng Tao <tao.peng@primarydata.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
2015-10-15 16:08:04 -04:00
Peng Tao
e5341f3a57 nfs42: add CLONE proc functions
Signed-off-by: Peng Tao <tao.peng@primarydata.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
2015-10-15 16:07:36 -04:00
Peng Tao
36022770de nfs42: add CLONE xdr functions
xdr definitions per draft-ietf-nfsv4-minorversion2-38.txt

Signed-off-by: Peng Tao <tao.peng@primarydata.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
2015-10-15 16:07:21 -04:00
Arnd Bergmann
aebd774de9 Marvell SoC for 4.4 take 1
- register cpufreq-dt device
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJWDZQ0AAoJEN2kpao7fSL4z68P/1WZp+th6WUYchqeHn77cNUq
 MPolc6fnYfot0AwfwXio/o5/sj2bxPaLJPUWEbc6mAEeK3AHtBAXtOZZwy4G26g2
 GmEu3aP8ivFx2wMbTDS78Y7FNKltUX940s6eiW4wDsHxlKTKMEJUlh2Z7qcRzvTu
 Spdwi1Vuq7KfnQOOMeZPquVU3xBJ0Q2yJi0sIv+aKLMHLklEUrKMTTzMkVdyI0Bp
 5wG9mld1sdFRa55tBlbzjRBSBG8w3pyYeF1p+Z65WIbdaGs1p0TK14WIM1TCwmqm
 wS7h/eLa84PJPwLcyom64jXOO9vXo+W7mBekPwSsdPwo75De8k8QVvuHxDaSup+M
 jfyH9f0O60kko72GDMdo0V7FtPYIHRyYQHJA5W9UcarCPzDUnBBVIkReU8NHOxpY
 KrgTt3s739KXKcqK7/DG82JTmaF+H2k7f1pPj/QlVTBECfv9C8c8VxJL8PL2pC8A
 nDc6HIwb5ZZR8dee/6kov4Y2t2Fj/NDUgfAN8o0OjwoDzzFcUi5yCBoQHSN4AHf0
 xfnHnP8RcHuWuVG4AE/B9xiWcPsux2h6K/Q2FRtkAT57m0RKY042C9zQb9A6xCx+
 Zy2SV7AO6BdR0na0s3EGo+GyOBp/WKImzBDcRYBJj3meSWvRDsOi2DvCnhXqqCdH
 evzM2Iux0pKbHXZseXm1
 =Cg/T
 -----END PGP SIGNATURE-----

Merge tag 'berlin-soc-for-4.4-1' of git://git.infradead.org/users/hesselba/linux-berlin into next/soc

Merge "Marvell SoC for 4.4 take 1" from Sebastian Hesselbarth:
- register cpufreq-dt device

* tag 'berlin-soc-for-4.4-1' of git://git.infradead.org/users/hesselba/linux-berlin:
  ARM: berlin: register cpufreq-dt
2015-10-15 22:06:45 +02:00
Arnd Bergmann
dc7a499674 Marvell Berlin ARM64 SoC for 4.4 take 1
- enable ARCH_REQUIRE_GPIOLIB for DW GPIO driver
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJWDZT+AAoJEN2kpao7fSL4lIoP/34vCze+/wvNzJWzh1nJ4/TJ
 +X5rNaAlqpqrGU/0SeukjFKwbUuV0V3XZ/lNbEPepiNMjANvDaiD/722mIS9yg1N
 5/nLQCHJBtTglDy2/kyrFBxilZJEUYykYvfV8lmgfsLEDNjTtEKNtGk01afEb7R9
 /4s6V5rvXZDvDQIrzuUg06B38BBswghWUOlWOArw+BBY01byoqek51Jd85Mb6h3P
 CthsGHQRANcCLpO66n9sXJMOPY8WP15aUnsk1A1DcrPHdFiIXIz7N7HFpctAm7Dr
 YKGdTTEHoKsz4Pb8xzkCOd/j4A0uJmdZH8GiYjqeutWedojD1iqesx7p3GT95sGp
 jrXSKu9VmqhRpzyap9vIxKkzuBIwAjKVlmNW+GYW+IIHqcREpS12fQHnLE3lvcNp
 7SF5VHCtxgT1MF4X+nJXhvQHefls7cM75Bv1noZ5urEC3y28m72B7Yc3DWd4dazX
 2ybi51xSlWsU2roERizT6KeQsOsqg6uaw4h2knhKLy1ugpzaCx8tlZ0WaNyx1rvj
 xxCxr8lpqy5fC0heu4doE222JBIYEUnzVog2e5i0h4I4B/yr3cBLtGnVPJSbirr8
 dMHcDXtX9pxzwMixfqC55CzA5rqPSBqJLS9tDwCDso9rISCb7UEaBUmc9EacZBh+
 O0oPG9tXCoWAUahDt3dm
 =sFLX
 -----END PGP SIGNATURE-----

Merge tag 'berlin64-soc-for-4.4-1' of git://git.infradead.org/users/hesselba/linux-berlin into next/soc

Merge "Marvell Berlin ARM64 SoC for 4.4 take 1" from Sebastian Hesselbarth:
- enable ARCH_REQUIRE_GPIOLIB for DW GPIO driver

* tag 'berlin64-soc-for-4.4-1' of git://git.infradead.org/users/hesselba/linux-berlin:
  arm64: berlin: enable ARCH_REQUIRE_GPIOLIB
2015-10-15 22:04:18 +02:00
Arnd Bergmann
19f47051e5 mvebu soc for 4.4 (part 1)
L2 caches optimization for Armada XP
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iEYEABECAAYFAlYX5kYACgkQCwYYjhRyO9XRAACgh9ZuCj/Bxgsql5tHL2fLPhMw
 OzwAn3RJqjzRRMLcZ/TmgTPNbNwz3hEB
 =bO2O
 -----END PGP SIGNATURE-----

Merge tag 'mvebu-soc-4.4-1' of git://git.infradead.org/linux-mvebu into next/soc

Merge "mvebu soc for 4.4 (part 1)" from Gregory CLEMENT:

L2 caches optimization for Armada XP

* tag 'mvebu-soc-4.4-1' of git://git.infradead.org/linux-mvebu:
  ARM: mvebu: add support to clear shared L2 bit on Armada XP
2015-10-15 22:03:35 +02:00
Linus Torvalds
176bed1de5 vmstat: explicitly schedule per-cpu work on the CPU we need it to run on
The vmstat code uses "schedule_delayed_work_on()" to do the initial
startup of the delayed work on the right CPU, but then once it was
started it would use the non-cpu-specific "schedule_delayed_work()" to
re-schedule it on that CPU.

That just happened to schedule it on the same CPU historically (well, in
almost all situations), but the code _requires_ this work to be per-cpu,
and should say so explicitly rather than depend on the non-cpu-specific
scheduling to schedule on the current CPU.

The timer code is being changed to not be as single-minded in always
running things on the calling CPU.

See also commit 874bbfe600 ("workqueue: make sure delayed work run in
local cpu") that for now maintains the local CPU guarantees just in case
there are other broken users that depended on the accidental behavior.

Cc: Christoph Lameter <cl@linux.com>
Cc: Tejun Heo <tj@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2015-10-15 13:01:50 -07:00
Arnd Bergmann
5f1e3c9100 Clean-up for omaps for v4.4 merge window:
- Remove legacy omap3 ISP code as the driver is DT only
 
 - Remove VoiceBlue board support as it's been unused over
   10 years now
 
 - Remove unused polarity control macros for TWL
 
 - Remove two unneeded semicolons
 
 - Remove unused core dpll code for reprogramming the rates
 
 Note that this branch is against v4.3-rc4 as that contains critical
 MMC related fixes to boot with MMC working on most omaps.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJWHrwcAAoJEBvUPslcq6Vzv+EP/joH02GVQmwJKREznkp1L+Jg
 eaJ3P9Os7p2cHkz68XEq79Cq/O4Zh3yupS4O9OeGn6XhqcG+MnXFETVYKIV3WJ7s
 QvSuRxJrc6dStbPKAcsmgczJNNE+8mgFkI4rrJ75d17SZ+ybaQVQRziuRLMq9YX5
 GIQDayYKlBYs5gb21h7qU9O4zHzkNIga/yKydOZJQ0GZ8ZJhQ68KZtfXPCrZUquD
 x2DVecGsPe+CfoDjGppjngD7suTQteIALno/VoIXPhtewwDKuYXW82hfNL9/WXF3
 OSVWkxp/mcldJJzwJhoCv2kN4Dmp0GaDVqTNn2tpxMUpEeDGjRnrDc3al4z2k87f
 9A2qs4CRSSnDcTpVqNBUSSF6BOBpacHrUZVtlm9YF5e+UyIzI+MCwOM6Sn5EusNg
 ENyPgV1HGkUhyRPEeBJsPzRF4NOMDyyLiPeIpwcTXATl6udBHTV1L9yM7yhPEtJg
 9ftCz9JGVO1EjD90By9YZcCK37LV1MaFRliWfnXjodGraWY7x3WlYsdLV4Cv3t+t
 yp6HFufciHrthfoSERnb2nEK6g2N9nITeaiBhknrTN/spfs+0uwkjumwa7AIdfNl
 4kvJpdge+UmhrNiFktvbhjtqEP5Nq3LUGDdvMr2rvppP8HCiss6+K51otzSeo8ny
 BTrFLhEU8GEzVplgg7Er
 =d5vJ
 -----END PGP SIGNATURE-----

Merge tag 'omap-for-v4.4/cleanup-pt1' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/cleanup

Merge "Clean-up for omaps for v4.4 merge window" from Tony Lindgren:

- Remove legacy omap3 ISP code as the driver is DT only

- Remove VoiceBlue board support as it's been unused over
  10 years now

- Remove unused polarity control macros for TWL

- Remove two unneeded semicolons

- Remove unused core dpll code for reprogramming the rates

Note that this branch is against v4.3-rc4 as that contains critical
MMC related fixes to boot with MMC working on most omaps.

* tag 'omap-for-v4.4/cleanup-pt1' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: OMAP3: clock: remove un-used core dpll re-program code
  ARM: OMAP2+: Remove unneeded semicolons
  ARM: OMAP3: vc: Remove unused macros
  ARM: OMAP1: Remove board support for VoiceBlue board
  ARM: OMAP2+: Remove legacy OMAP3 ISP instantiation
2015-10-15 22:00:27 +02:00
Linus Torvalds
995e2fe9a4 Merge branch 'for-4.3-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
Pull workqueue fixlet from Tejun Heo:
 "Single patch to make delayed work always be queued on the local CPU"

This is not actually something we should guarantee, but it's something
we by accident have historically done, and at least one call site has
grown to depend on it.

I'm going to fix that known broken callsite, but in the meantime this
makes the accidental behavior be explicit, just in case there are other
cases that might depend on it.

* 'for-4.3-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
  workqueue: make sure delayed work run in local cpu
2015-10-15 12:58:37 -07:00
Arnd Bergmann
f88839ddbe mvebu cleanup for 4.4 (part 1)
use the CR_C define instead of a literal value
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iEYEABECAAYFAlYX5PQACgkQCwYYjhRyO9WE/wCdHL0jkJKufbzUMo3P1ZTfGvKR
 iHUAn2hB1f1k3xKFV8HP6XLO7jhc29LJ
 =NZow
 -----END PGP SIGNATURE-----

Merge tag 'mvebu-cleanup-4.4-1' of git://git.infradead.org/linux-mvebu into next/cleanup

Merge "mvebu cleanup for 4.4 (part 1)" from Gregory CLEMENT:

use the CR_C define instead of a literal value

* tag 'mvebu-cleanup-4.4-1' of git://git.infradead.org/linux-mvebu:
  ARM: mvebu: Use a CR_C constant instead of a hard-coded one
2015-10-15 21:54:05 +02:00
Keith Busch
0dfc70c334 NVMe: Fix memory leak on retried commands
Resources are reallocated for requeued commands, so unmap and release
the iod for the failed command.

It's a pretty bad memory leak and causes a kernel hang if you remove a
drive because of a busy dma pool. You'll get messages spewing like this:

  nvme 0000:xx:xx.x: dma_pool_destroy prp list 256, ffff880420dec000 busy

and lock up pci and the driver since removal never completes while
holding a lock.

Cc: stable@vger.kernel.org
Cc: <stable@vger.kernel.org> # 4.0.x-
Signed-off-by: Keith Busch <keith.busch@intel.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@fb.com>
2015-10-15 13:38:48 -06:00
Jisheng Zhang
a7b3d5a715 arm: berlin: add CPU hotplug support
Add cpu hotplug support for berlin SoCs such as BG2 and BG2Q. These SoC
don't support power off cpu independently, but we also want cpu hotplug
support in these SoCs. We achieve this goal by putting the dying CPU in
WFI state after the coherency is disabled, then asserting the dying CPU
reset bit to put the CPU in reset state.

Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
2015-10-15 21:14:28 +02:00
Jisheng Zhang
ac7fc233b2 arm: berlin: use non-self-cleared reset register to reset cpu
In Berlin SoCs, there are two kinds of cpu reset control registers: the
first one's corresponding bits will be self-cleared after some cycles,
while the second one's bits won't. Previously the first kind of reset
control register is used, this patch uses the second kind one to prepare
for the next hotplug commit.

Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
2015-10-15 21:10:22 +02:00
Antoine Tenart
515f1a2027 clk: berlin: add cpuclk
Add cpuclk in the Berlin BG2Q clock driver. This clk has a divider
fixed to 1.

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
Acked-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
2015-10-15 20:55:55 +02:00
Arnd Bergmann
5d984ee707 Marvell Berlin DT CPU clock for 4.4
- add missing CLKID_CPU for Berlin BG2Q
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJWH/JEAAoJEN2kpao7fSL4bvMQAK8ps1rMEEywSRXvEjBBBSYr
 OSiIinSOEycUDzWqaLJQOvzPWxDGVn0a5xdPvOt2/kDY70UriY1YQ/GouFymumEl
 v7CqrUgX73D5/NbqlM4UTWivRsHFaQQyCKdfdiBVKH0bWv2Q4FW7EzO4RGPZQG03
 tZIV+KbxtTkyTw3PJyt5WzmBVlr1Ll8whWhYpHHlyku1FgzQGGLEuL/M7/fEpWvP
 ynBpDQpTVyA4WtGwk/mJ+IzqO+ohRohQHWo1k8FoicSIngejbl89KVNd+WzHJaq+
 1b3LiDrPdM7KYjxqUNuf4vuD2Izo31DJuXOxlSK4rgofF+dh3JrTtsrqgRw1m6Wj
 8RwJfN94F3S/qEbw8wY6dsAGcOzhg+pLl4Q0lyDwXW625TX7izHFifRJbrC8NJnH
 XSoPJkUQphYpBS+1ZKTKZhumhCDafCF1YYUXBDvkd61Eq2TZ2NwoSbxOfjytItrB
 aS/9vf1S24Bjs2ZG1PicVTIz1G9SEu+GwCbCHEjLWIcYmKWz3m8ej4N5I5rVUsVf
 0IEvAPzoihbYIQUhVjny00dH+6rEvds6aoBiVC/DX9LwwDKk0DPiFOhuVAUl2j6f
 xbMu2HsIMlP51f0Jkod3XG1lV7dRF1hyb+kTCgBWSdsPNTN/2AHA3vaM92qIOINp
 qlm+cyIgU045c40XDjJl
 =JoAi
 -----END PGP SIGNATURE-----

Merge tag 'berlin-dt-cpuclk-for-4.4-1' of git://git.infradead.org/users/hesselba/linux-berlin into next/dt

Pull "Marvell Berlin DT CPU clock for 4.4" from Sebastian Hesselbarth:
- add missing CLKID_CPU for Berlin BG2Q

* tag 'berlin-dt-cpuclk-for-4.4-1' of git://git.infradead.org/users/hesselba/linux-berlin:
  ARM: berlin: dts: add CLKID_CPU for BG2Q
2015-10-15 20:50:02 +02:00
Sebastian Hesselbarth
0f0ebb1349 Marvell Berlin DT CPU clock for 4.4
- add missing CLKID_CPU for Berlin BG2Q
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJWH/JEAAoJEN2kpao7fSL4bvMQAK8ps1rMEEywSRXvEjBBBSYr
 OSiIinSOEycUDzWqaLJQOvzPWxDGVn0a5xdPvOt2/kDY70UriY1YQ/GouFymumEl
 v7CqrUgX73D5/NbqlM4UTWivRsHFaQQyCKdfdiBVKH0bWv2Q4FW7EzO4RGPZQG03
 tZIV+KbxtTkyTw3PJyt5WzmBVlr1Ll8whWhYpHHlyku1FgzQGGLEuL/M7/fEpWvP
 ynBpDQpTVyA4WtGwk/mJ+IzqO+ohRohQHWo1k8FoicSIngejbl89KVNd+WzHJaq+
 1b3LiDrPdM7KYjxqUNuf4vuD2Izo31DJuXOxlSK4rgofF+dh3JrTtsrqgRw1m6Wj
 8RwJfN94F3S/qEbw8wY6dsAGcOzhg+pLl4Q0lyDwXW625TX7izHFifRJbrC8NJnH
 XSoPJkUQphYpBS+1ZKTKZhumhCDafCF1YYUXBDvkd61Eq2TZ2NwoSbxOfjytItrB
 aS/9vf1S24Bjs2ZG1PicVTIz1G9SEu+GwCbCHEjLWIcYmKWz3m8ej4N5I5rVUsVf
 0IEvAPzoihbYIQUhVjny00dH+6rEvds6aoBiVC/DX9LwwDKk0DPiFOhuVAUl2j6f
 xbMu2HsIMlP51f0Jkod3XG1lV7dRF1hyb+kTCgBWSdsPNTN/2AHA3vaM92qIOINp
 qlm+cyIgU045c40XDjJl
 =JoAi
 -----END PGP SIGNATURE-----

Merge tag 'berlin-dt-cpuclk-for-4.4-1' into berlin/cpuclk

Marvell Berlin DT CPU clock for 4.4
- add missing CLKID_CPU for Berlin BG2Q
2015-10-15 20:49:33 +02:00
Sebastian Hesselbarth
28c039eeba ARM: berlin: dts: add CLKID_CPU for BG2Q
Marvell Berlin BG2Q SoC also has a clock for the CPU, add a
corresponding CLKID to the dt-binding include.

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
2015-10-15 20:31:41 +02:00
Romain Bezut
a86760664f PCI/MSI: Export all remapped MSIs to sysfs attributes
irqbalance uses sysfs attributes to populate its internal database, which
is then used to bind the IRQ to the appropriate NUMA node.

On a device accepting multiple MSIs and with interrupt remapping enabled,
only the first IRQ entry is exported in the "msi_irqs" directory.  This
results in irqbalance having no clue of the NUMA affinity for the extra
IRQs, so it can't bind them to the correct node.

Export all MSI interrupts as sysfs attributes when relevant.

[bhelgaas: changelog]
Signed-off-by: Romain Bezut <rbezut@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
2015-10-15 12:17:19 -05:00
Ville Syrjälä
c562657a75 drm/i915: Kill the leftover RMW from ivb_sprite_disable()
We still had one lingering RMW in ivb_sprite_disable(), all the other
RMWs were killed off from the sprite code some time ago. Kill the
straggler too.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-10-15 18:45:52 +02:00
Wolfram Sang
fc531d9848 MAINTAINERS: add maintainers for Synopsis Designware I2C drivers
Those guys already have been helpful in the past and are actively
working on this driver, unlike me.

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
2015-10-15 18:36:15 +02:00
Doron Tsur
17b38fb890 IB/core: Fix memory corruption in ib_cache_gid_set_default_gid
When ib_cache_gid_set_default_gid is called from several threads,
updating the table could make find_gid fail, therefore a negative
index will be retruned and an invalid table entry will be used.
Locking find_gid as well fixes this problem.

Fixes: 03db3a2d81 ('IB/core: Add RoCE GID table management')
Signed-off-by: Doron Tsur <doront@mellanox.com>
Signed-off-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2015-10-15 12:35:54 -04:00
David Howells
f05819df10 KEYS: Fix crash when attempt to garbage collect an uninstantiated keyring
The following sequence of commands:

    i=`keyctl add user a a @s`
    keyctl request2 keyring foo bar @t
    keyctl unlink $i @s

tries to invoke an upcall to instantiate a keyring if one doesn't already
exist by that name within the user's keyring set.  However, if the upcall
fails, the code sets keyring->type_data.reject_error to -ENOKEY or some
other error code.  When the key is garbage collected, the key destroy
function is called unconditionally and keyring_destroy() uses list_empty()
on keyring->type_data.link - which is in a union with reject_error.
Subsequently, the kernel tries to unlink the keyring from the keyring names
list - which oopses like this:

	BUG: unable to handle kernel paging request at 00000000ffffff8a
	IP: [<ffffffff8126e051>] keyring_destroy+0x3d/0x88
	...
	Workqueue: events key_garbage_collector
	...
	RIP: 0010:[<ffffffff8126e051>] keyring_destroy+0x3d/0x88
	RSP: 0018:ffff88003e2f3d30  EFLAGS: 00010203
	RAX: 00000000ffffff82 RBX: ffff88003bf1a900 RCX: 0000000000000000
	RDX: 0000000000000000 RSI: 000000003bfc6901 RDI: ffffffff81a73a40
	RBP: ffff88003e2f3d38 R08: 0000000000000152 R09: 0000000000000000
	R10: ffff88003e2f3c18 R11: 000000000000865b R12: ffff88003bf1a900
	R13: 0000000000000000 R14: ffff88003bf1a908 R15: ffff88003e2f4000
	...
	CR2: 00000000ffffff8a CR3: 000000003e3ec000 CR4: 00000000000006f0
	...
	Call Trace:
	 [<ffffffff8126c756>] key_gc_unused_keys.constprop.1+0x5d/0x10f
	 [<ffffffff8126ca71>] key_garbage_collector+0x1fa/0x351
	 [<ffffffff8105ec9b>] process_one_work+0x28e/0x547
	 [<ffffffff8105fd17>] worker_thread+0x26e/0x361
	 [<ffffffff8105faa9>] ? rescuer_thread+0x2a8/0x2a8
	 [<ffffffff810648ad>] kthread+0xf3/0xfb
	 [<ffffffff810647ba>] ? kthread_create_on_node+0x1c2/0x1c2
	 [<ffffffff815f2ccf>] ret_from_fork+0x3f/0x70
	 [<ffffffff810647ba>] ? kthread_create_on_node+0x1c2/0x1c2

Note the value in RAX.  This is a 32-bit representation of -ENOKEY.

The solution is to only call ->destroy() if the key was successfully
instantiated.

Reported-by: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Tested-by: Dmitry Vyukov <dvyukov@google.com>
2015-10-15 17:21:37 +01:00
Linus Walleij
26ba9cd48f gpio: pl061: assign the apropriate handler for irqs
The PL061 can handle level IRQs and edge IRQs, however it is
just utilizing handle_simple_irq() for all IRQs. Inspired by
Stefan Agners patch to vf610, this assigns the right handler
depending on what type is set up, and after this
handle_bad_irq() is only used as default and if the type is
not specified, as is done in the OMAP driver: defining the
IRQ type is really not optional for this driver.

The interrupt handler was just writing the interrupt clearing
register for all lines that were high when entering the handling
loop, this is wrong: that register is only supposed to be
written (on a per-line basis) for edge IRQs, so this ACK
was moved to the .irq_ack() callback as is proper.

Tested with PL061 on the ARM RealView PB11MPCore and the
MMC/SC card detect GPIO.

Cc: Jonas Gorski <jogo@openwrt.org>
Cc: Stefan Agner <stefan@agner.ch>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2015-10-15 18:03:07 +02:00
Arnd Bergmann
eb351031a1 ahci: qoriq: Fix a compiling warning
kbuild test robot reports the warnings:
drivers/ata/ahci_qoriq.c: In function 'ahci_qoriq_hardreset':
>> include/asm-generic/io.h:163:2: warning: 'px_is' may be used
>> uninitialized in this function [-Wuninitialized]
drivers/ata/ahci_qoriq.c:70:14: note: 'px_is' was declared here
>> include/asm-generic/io.h:163:2: warning: 'px_cmd' may be used
>> uninitialized in this function [-Wuninitialized]
drivers/ata/ahci_qoriq.c:70:6: note: 'px_cmd' was declared here

This patch fixed it by introducing a local variable.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2015-10-15 12:03:00 -04:00
Thierry Reding
4f1d841475 ARM: tegra: Comment out gpio-ranges properties
While the addition of these properties is technically correct it unveils
a bug with deferred probe. The problem is that the presence of the gpio-
range property causes the gpio-tegra driver to defer probe (it needs the
pinctrl driver to be ready). That's technically correct, but it causes a
couple of issues:

  - The keyboard on Chromebooks stops working. The reason for that is
    that the gpio-tegra device has not registered an IRQ domain by the
    time the EC SPI device is registered, hence the interrupt number
    resolves to 0. This is technically a bug in the SPI core, since it
    should really resolve the interrupt at probe time and defer if the
    IRQ domain isn't available yet. This is similar to what's done for
    I2C and platform device already.

  - The gpio-tegra device deferring probe means that it is moved to the
    end of the dpm_list. This list defines the suspend/resume order for
    devices. However the core lacks a way to move all users of the
    gpio-tegra device to the end of the dpm_list at the same time. This
    in turn results in a subtle bug on Jetson TK1, where the gpio-keys
    device is used to expose the power key as input. The power key is a
    convenient way to wake the system from suspend. Interestingly, the
    gpio-keys device ends up getting probed at a point after gpio-tegra
    has been probed successfully from having been deferred earlier. As
    such the driver doesn't need to defer the probe itself, and hence
    the device isn't moved to the end of the dpm_list. This causes the
    gpio-tegra device to be suspended before gpio-keys, which in turn
    leaves gpio-keys unable to wake the system from suspend.

There are patches in the works to fix both of the above issues, but they
are too involved to make it into v4.3, so in the meantime let's fix the
regressions by commenting out the gpio-ranges properties until the fixes
have landed.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2015-10-15 17:58:43 +02:00
Tejun Heo
b02176f30c block: don't release bdi while request_queue has live references
bdi's are initialized in two steps, bdi_init() and bdi_register(), but
destroyed in a single step by bdi_destroy() which, for a bdi embedded
in a request_queue, is called during blk_cleanup_queue() which makes
the queue invisible and starts the draining of remaining usages.

A request_queue's user can access the congestion state of the embedded
bdi as long as it holds a reference to the queue.  As such, it may
access the congested state of a queue which finished
blk_cleanup_queue() but hasn't reached blk_release_queue() yet.
Because the congested state was embedded in backing_dev_info which in
turn is embedded in request_queue, accessing the congested state after
bdi_destroy() was called was fine.  The bdi was destroyed but the
memory region for the congested state remained accessible till the
queue got released.

a13f35e871 ("writeback: don't embed root bdi_writeback_congested in
bdi_writeback") changed the situation.  Now, the root congested state
which is expected to be pinned while request_queue remains accessible
is separately reference counted and the base ref is put during
bdi_destroy().  This means that the root congested state may go away
prematurely while the queue is between bdi_dstroy() and
blk_cleanup_queue(), which was detected by Andrey's KASAN tests.

The root cause of this problem is that bdi doesn't distinguish the two
steps of destruction, unregistration and release, and now the root
congested state actually requires a separate release step.  To fix the
issue, this patch separates out bdi_unregister() and bdi_exit() from
bdi_destroy().  bdi_unregister() is called from blk_cleanup_queue()
and bdi_exit() from blk_release_queue().  bdi_destroy() is now just a
simple wrapper calling the two steps back-to-back.

While at it, the prototype of bdi_destroy() is moved right below
bdi_setup_and_register() so that the counterpart operations are
located together.

Signed-off-by: Tejun Heo <tj@kernel.org>
Fixes: a13f35e871 ("writeback: don't embed root bdi_writeback_congested in bdi_writeback")
Cc: stable@vger.kernel.org # v4.2+
Reported-and-tested-by: Andrey Konovalov <andreyknvl@google.com>
Link: http://lkml.kernel.org/g/CAAeHK+zUJ74Zn17=rOyxacHU18SgCfC6bsYW=6kCY5GXJBwGfQ@mail.gmail.com
Reviewed-by: Jan Kara <jack@suse.com>
Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
2015-10-15 09:53:28 -06:00
Jens Axboe
ef658fc2a6 NVMe: initialize error to '0'
Reported-by: Keith Busch <keith.busch@intel.com>
Fixes: 1951feae88 ("nvme: use an integer value to Linux errno values")
Signed-off-by: Jens Axboe <axboe@fb.com>
2015-10-15 09:49:57 -06:00