<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/mmc, branch v4.0.4</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>mmc: sh_mmcif: Fix timeout value for command request</title>
<updated>2015-05-17T16:55:10+00:00</updated>
<author>
<name>Takeshi Kihara</name>
<email>takeshi.kihara.df@renesas.com</email>
</author>
<published>2015-04-29T17:03:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=a44d1844deb25c71881e2ee930f892d2b85a49d2'/>
<id>a44d1844deb25c71881e2ee930f892d2b85a49d2</id>
<content type='text'>
commit bad4371d87d1d1ed1aecd9c9cc21c41ac3f289c8 upstream.

f9fd54f22e ("mmc: sh_mmcif: Use msecs_to_jiffies() for host-&gt;timeout")
changed the timeout value from 1000 jiffies to 1s. In the case where
HZ is 1000 the values are the same. However, for smaller HZ values the
timeout is now smaller, 1s instead of 10s in the case of HZ=100.

Since the timeout occurs in spite of a normal data transfer a timeout of
10s seems more appropriate. This restores the previous timeout in the
case where HZ=100 and results in an increase over the previous timeout
for larger values of HZ.

Fixes: f9fd54f22e ("mmc: sh_mmcif: Use msecs_to_jiffies() for host-&gt;timeout")
Signed-off-by: Takeshi Kihara &lt;takeshi.kihara.df@renesas.com&gt;
[horms: rewrote changelog to refer to HZ]
Signed-off-by: Simon Horman &lt;horms+renesas@verge.net.au&gt;
Signed-off-by: Yoshihiro Kaneko &lt;ykaneko0929@gmail.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit bad4371d87d1d1ed1aecd9c9cc21c41ac3f289c8 upstream.

f9fd54f22e ("mmc: sh_mmcif: Use msecs_to_jiffies() for host-&gt;timeout")
changed the timeout value from 1000 jiffies to 1s. In the case where
HZ is 1000 the values are the same. However, for smaller HZ values the
timeout is now smaller, 1s instead of 10s in the case of HZ=100.

Since the timeout occurs in spite of a normal data transfer a timeout of
10s seems more appropriate. This restores the previous timeout in the
case where HZ=100 and results in an increase over the previous timeout
for larger values of HZ.

Fixes: f9fd54f22e ("mmc: sh_mmcif: Use msecs_to_jiffies() for host-&gt;timeout")
Signed-off-by: Takeshi Kihara &lt;takeshi.kihara.df@renesas.com&gt;
[horms: rewrote changelog to refer to HZ]
Signed-off-by: Simon Horman &lt;horms+renesas@verge.net.au&gt;
Signed-off-by: Yoshihiro Kaneko &lt;ykaneko0929@gmail.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: core: add missing pm event in mmc_pm_notify to fix hib restore</title>
<updated>2015-05-17T16:55:09+00:00</updated>
<author>
<name>Grygorii Strashko</name>
<email>Grygorii.Strashko@linaro.org</email>
</author>
<published>2015-04-23T10:43:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=4f61e99e285bd85c617a6fda5e9faaa367dea41d'/>
<id>4f61e99e285bd85c617a6fda5e9faaa367dea41d</id>
<content type='text'>
commit 184af16b09360d6273fd6160e6ff7f8e2482ef23 upstream.

The PM_RESTORE_PREPARE is not handled now in mmc_pm_notify(),
as result mmc_rescan() could be scheduled and executed at
late hibernation restore stages when MMC device is suspended
already - which, in turn, will lead to system crash on TI dra7-evm board:

WARNING: CPU: 0 PID: 3188 at drivers/bus/omap_l3_noc.c:148 l3_interrupt_handler+0x258/0x374()
44000000.ocp:L3 Custom Error: MASTER MPU TARGET L4_PER1_P3 (Idle): Data Access in User mode during Functional access

Hence, add missed PM_RESTORE_PREPARE PM event in mmc_pm_notify().

Fixes: 4c2ef25fe0b8 (mmc: fix all hangs related to mmc/sd card...)
Signed-off-by: Grygorii Strashko &lt;Grygorii.Strashko@linaro.org&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 184af16b09360d6273fd6160e6ff7f8e2482ef23 upstream.

The PM_RESTORE_PREPARE is not handled now in mmc_pm_notify(),
as result mmc_rescan() could be scheduled and executed at
late hibernation restore stages when MMC device is suspended
already - which, in turn, will lead to system crash on TI dra7-evm board:

WARNING: CPU: 0 PID: 3188 at drivers/bus/omap_l3_noc.c:148 l3_interrupt_handler+0x258/0x374()
44000000.ocp:L3 Custom Error: MASTER MPU TARGET L4_PER1_P3 (Idle): Data Access in User mode during Functional access

Hence, add missed PM_RESTORE_PREPARE PM event in mmc_pm_notify().

Fixes: 4c2ef25fe0b8 (mmc: fix all hangs related to mmc/sd card...)
Signed-off-by: Grygorii Strashko &lt;Grygorii.Strashko@linaro.org&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: card: Don't access RPMB partitions for normal read/write</title>
<updated>2015-05-17T16:55:09+00:00</updated>
<author>
<name>Chuanxiao Dong</name>
<email>chuanxiao.dong@intel.com</email>
</author>
<published>2014-08-12T04:01:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=6bf08adad420b7ba8b8c6daf9d45f8dd6216dd27'/>
<id>6bf08adad420b7ba8b8c6daf9d45f8dd6216dd27</id>
<content type='text'>
commit 4e93b9a6abc0d028daf3c8a00cb77b679d8a4df4 upstream.

During kernel boot, it will try to read some logical sectors
of each block device node for the possible partition table.

But since RPMB partition is special and can not be accessed
by normal eMMC read / write CMDs, it will cause below error
messages during kernel boot:
...
 mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
 mmcblk0rpmb: error -110 transferring data, sector 0, nr 32, cmd response 0x900, card status 0xb00
 mmcblk0rpmb: retrying using single block read
 mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
 mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
 mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
 mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
 mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
 mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
 end_request: I/O error, dev mmcblk0rpmb, sector 0
 Buffer I/O error on device mmcblk0rpmb, logical block 0
 end_request: I/O error, dev mmcblk0rpmb, sector 8
 Buffer I/O error on device mmcblk0rpmb, logical block 1
 end_request: I/O error, dev mmcblk0rpmb, sector 16
 Buffer I/O error on device mmcblk0rpmb, logical block 2
 end_request: I/O error, dev mmcblk0rpmb, sector 24
 Buffer I/O error on device mmcblk0rpmb, logical block 3
...

This patch will discard the access request in eMMC queue if
it is RPMB partition access request. By this way, it avoids
trigger above error messages.

Fixes: 090d25fe224c ("mmc: core: Expose access to RPMB partition")
Signed-off-by: Yunpeng Gao &lt;yunpeng.gao@intel.com&gt;
Signed-off-by: Chuanxiao Dong &lt;chuanxiao.dong@intel.com&gt;
Tested-by: Michael Shigorin &lt;mike@altlinux.org&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 4e93b9a6abc0d028daf3c8a00cb77b679d8a4df4 upstream.

During kernel boot, it will try to read some logical sectors
of each block device node for the possible partition table.

But since RPMB partition is special and can not be accessed
by normal eMMC read / write CMDs, it will cause below error
messages during kernel boot:
...
 mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
 mmcblk0rpmb: error -110 transferring data, sector 0, nr 32, cmd response 0x900, card status 0xb00
 mmcblk0rpmb: retrying using single block read
 mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
 mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
 mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
 mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
 mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
 mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
 end_request: I/O error, dev mmcblk0rpmb, sector 0
 Buffer I/O error on device mmcblk0rpmb, logical block 0
 end_request: I/O error, dev mmcblk0rpmb, sector 8
 Buffer I/O error on device mmcblk0rpmb, logical block 1
 end_request: I/O error, dev mmcblk0rpmb, sector 16
 Buffer I/O error on device mmcblk0rpmb, logical block 2
 end_request: I/O error, dev mmcblk0rpmb, sector 24
 Buffer I/O error on device mmcblk0rpmb, logical block 3
...

This patch will discard the access request in eMMC queue if
it is RPMB partition access request. By this way, it avoids
trigger above error messages.

Fixes: 090d25fe224c ("mmc: core: Expose access to RPMB partition")
Signed-off-by: Yunpeng Gao &lt;yunpeng.gao@intel.com&gt;
Signed-off-by: Chuanxiao Dong &lt;chuanxiao.dong@intel.com&gt;
Tested-by: Michael Shigorin &lt;mike@altlinux.org&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: sunxi: Use devm_reset_control_get_optional() for reset control</title>
<updated>2015-05-06T20:03:43+00:00</updated>
<author>
<name>Chen-Yu Tsai</name>
<email>wens@csie.org</email>
</author>
<published>2015-03-03T01:44:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=85895968a9444e810f96cc951c6b5fc7dd183296'/>
<id>85895968a9444e810f96cc951c6b5fc7dd183296</id>
<content type='text'>
commit 9e71c589e44ddf2b86f361c81e360c6b0d0354b1 upstream.

The reset control for the sunxi mmc controller is optional. Some
newer platforms (sun6i, sun8i, sun9i) have it, while older ones
(sun4i, sun5i, sun7i) don't.

Use the properly stubbed _optional version so the driver does not
fail to compile when RESET_CONTROLLER=n.

This patch also adds a check for deferred probing on the reset
control.

Signed-off-by: Chen-Yu Tsai &lt;wens@csie.org&gt;
Acked-by: David Lanzendörfer &lt;david.lanzendoerfer@o2s.ch&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 9e71c589e44ddf2b86f361c81e360c6b0d0354b1 upstream.

The reset control for the sunxi mmc controller is optional. Some
newer platforms (sun6i, sun8i, sun9i) have it, while older ones
(sun4i, sun5i, sun7i) don't.

Use the properly stubbed _optional version so the driver does not
fail to compile when RESET_CONTROLLER=n.

This patch also adds a check for deferred probing on the reset
control.

Signed-off-by: Chen-Yu Tsai &lt;wens@csie.org&gt;
Acked-by: David Lanzendörfer &lt;david.lanzendoerfer@o2s.ch&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: tmio: Remove bogus un-initialization in tmio_mmc_host_free()</title>
<updated>2015-05-06T20:03:43+00:00</updated>
<author>
<name>Geert Uytterhoeven</name>
<email>geert+renesas@glider.be</email>
</author>
<published>2015-02-18T16:34:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=7df0c5a403d2e9a1698a6ebdcf6e37a0639aad85'/>
<id>7df0c5a403d2e9a1698a6ebdcf6e37a0639aad85</id>
<content type='text'>
commit 13a6a2ed1f5e77ae47c2b1a8e3bf22b2fa2d56ba upstream.

If CONFIG_DEBUG_SLAB=y:

    sh_mobile_sdhi ee100000.sd: Got CD GPIO
    sh_mobile_sdhi ee100000.sd: Got WP GPIO
    platform ee100000.sd: Driver sh_mobile_sdhi requests probe deferral
    ...
    Slab corruption (Not tainted): kmalloc-1024 start=ed8b3c00, len=1024
    2d0: 00 00 00 00 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  ....kkkkkkkkkkkk
    Prev obj: start=ed8b3800, len=1024
    000: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
    010: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk

Struct tmio_mmc_host is embedded inside struct mmc_host, and thus is
freed by the call to mmc_free_host(). Hence it must not be written to
afterwards, as that will corrupt freed (and perhaps already reused)
memory.

Fixes: 94b110aff8679b14 ("mmc: tmio: add tmio_mmc_host_alloc/free()")
Signed-off-by: Geert Uytterhoeven &lt;geert+renesas@glider.be&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 13a6a2ed1f5e77ae47c2b1a8e3bf22b2fa2d56ba upstream.

If CONFIG_DEBUG_SLAB=y:

    sh_mobile_sdhi ee100000.sd: Got CD GPIO
    sh_mobile_sdhi ee100000.sd: Got WP GPIO
    platform ee100000.sd: Driver sh_mobile_sdhi requests probe deferral
    ...
    Slab corruption (Not tainted): kmalloc-1024 start=ed8b3c00, len=1024
    2d0: 00 00 00 00 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  ....kkkkkkkkkkkk
    Prev obj: start=ed8b3800, len=1024
    000: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
    010: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk

Struct tmio_mmc_host is embedded inside struct mmc_host, and thus is
freed by the call to mmc_free_host(). Hence it must not be written to
afterwards, as that will corrupt freed (and perhaps already reused)
memory.

Fixes: 94b110aff8679b14 ("mmc: tmio: add tmio_mmc_host_alloc/free()")
Signed-off-by: Geert Uytterhoeven &lt;geert+renesas@glider.be&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: pwrseq_simple: fix error path in mmc_pwrseq_simple_alloc</title>
<updated>2015-03-19T10:26:35+00:00</updated>
<author>
<name>NeilBrown</name>
<email>neil@brown.name</email>
</author>
<published>2015-02-21T04:15:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=6b7a783ebd2181aa2e0e6f9f5509da8466e321e3'/>
<id>6b7a783ebd2181aa2e0e6f9f5509da8466e321e3</id>
<content type='text'>
The current error-path code (when gpiod_get_index() reports
an error) can never free pwrseq-&gt;reset_gpios[0], but might
try to tree pwrseq-&gt;reset_gpios[-1], which has unfortunate
consequences.

Signed-off-by: NeilBrown &lt;neil@brown.name&gt;
Fixes: 934f1f48330ed695927a51fa068dc5d673f2da19
Acked-by: Javier Martinez Canillas &lt;javier.martinez@collabora.co.uk&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Reported-by: Srinivas Kandagatla &lt;srinivas.kandagatla@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The current error-path code (when gpiod_get_index() reports
an error) can never free pwrseq-&gt;reset_gpios[0], but might
try to tree pwrseq-&gt;reset_gpios[-1], which has unfortunate
consequences.

Signed-off-by: NeilBrown &lt;neil@brown.name&gt;
Fixes: 934f1f48330ed695927a51fa068dc5d673f2da19
Acked-by: Javier Martinez Canillas &lt;javier.martinez@collabora.co.uk&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Reported-by: Srinivas Kandagatla &lt;srinivas.kandagatla@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'clk-for-linus-3.20' of git://git.linaro.org/people/mike.turquette/linux</title>
<updated>2015-02-21T20:30:30+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2015-02-21T20:30:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=18a8d49973667aa016e68826eeb374788b7c63b0'/>
<id>18a8d49973667aa016e68826eeb374788b7c63b0</id>
<content type='text'>
Pull clock framework updates from Mike Turquette:
 "The clock framework changes contain the usual driver additions,
  enhancements and fixes mostly for ARM32, ARM64, MIPS and Power-based
  devices.

  Additionally the framework core underwent a bit of surgery with two
  major changes:

   - The boundary between the clock core and clock providers (e.g clock
     drivers) is now more well defined with dedicated provider helper
     functions.  struct clk no longer maps 1:1 with the hardware clock
     but is a true per-user cookie which helps us tracker users of
     hardware clocks and debug bad behavior.

   - The addition of rate constraints for clocks.  Rate ranges are now
     supported which are analogous to the voltage ranges in the
     regulator framework.

  Unfortunately these changes to the core created some breakeage.  We
  think we fixed it all up but for this reason there are lots of last
  minute commits trying to undo the damage"

* tag 'clk-for-linus-3.20' of git://git.linaro.org/people/mike.turquette/linux: (113 commits)
  clk: Only recalculate the rate if needed
  Revert "clk: mxs: Fix invalid 32-bit access to frac registers"
  clk: qoriq: Add support for the platform PLL
  powerpc/corenet: Enable CLK_QORIQ
  clk: Replace explicit clk assignment with __clk_hw_set_clk
  clk: Add __clk_hw_set_clk helper function
  clk: Don't dereference parent clock if is NULL
  MIPS: Alchemy: Remove bogus args from alchemy_clk_fgcs_detr
  clkdev: Always allocate a struct clk and call __clk_get() w/ CCF
  clk: shmobile: div6: Avoid division by zero in .round_rate()
  clk: mxs: Fix invalid 32-bit access to frac registers
  clk: omap: compile legacy omap3 clocks conditionally
  clkdev: Export clk_register_clkdev
  clk: Add rate constraints to clocks
  clk: remove clk-private.h
  pci: xgene: do not use clk-private.h
  arm: omap2+ remove dead clock code
  clk: Make clk API return per-user struct clk instances
  clk: tegra: Define PLLD_DSI and remove dsia(b)_mux
  clk: tegra: Add support for the Tegra132 CAR IP block
  ...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull clock framework updates from Mike Turquette:
 "The clock framework changes contain the usual driver additions,
  enhancements and fixes mostly for ARM32, ARM64, MIPS and Power-based
  devices.

  Additionally the framework core underwent a bit of surgery with two
  major changes:

   - The boundary between the clock core and clock providers (e.g clock
     drivers) is now more well defined with dedicated provider helper
     functions.  struct clk no longer maps 1:1 with the hardware clock
     but is a true per-user cookie which helps us tracker users of
     hardware clocks and debug bad behavior.

   - The addition of rate constraints for clocks.  Rate ranges are now
     supported which are analogous to the voltage ranges in the
     regulator framework.

  Unfortunately these changes to the core created some breakeage.  We
  think we fixed it all up but for this reason there are lots of last
  minute commits trying to undo the damage"

* tag 'clk-for-linus-3.20' of git://git.linaro.org/people/mike.turquette/linux: (113 commits)
  clk: Only recalculate the rate if needed
  Revert "clk: mxs: Fix invalid 32-bit access to frac registers"
  clk: qoriq: Add support for the platform PLL
  powerpc/corenet: Enable CLK_QORIQ
  clk: Replace explicit clk assignment with __clk_hw_set_clk
  clk: Add __clk_hw_set_clk helper function
  clk: Don't dereference parent clock if is NULL
  MIPS: Alchemy: Remove bogus args from alchemy_clk_fgcs_detr
  clkdev: Always allocate a struct clk and call __clk_get() w/ CCF
  clk: shmobile: div6: Avoid division by zero in .round_rate()
  clk: mxs: Fix invalid 32-bit access to frac registers
  clk: omap: compile legacy omap3 clocks conditionally
  clkdev: Export clk_register_clkdev
  clk: Add rate constraints to clocks
  clk: remove clk-private.h
  pci: xgene: do not use clk-private.h
  arm: omap2+ remove dead clock code
  clk: Make clk API return per-user struct clk instances
  clk: tegra: Define PLLD_DSI and remove dsia(b)_mux
  clk: tegra: Add support for the Tegra132 CAR IP block
  ...
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: sdhci-s3c: solve problem with sleeping in atomic context</title>
<updated>2015-02-04T12:39:14+00:00</updated>
<author>
<name>Paul Osmialowski</name>
<email>p.osmialowsk@samsung.com</email>
</author>
<published>2015-02-04T09:16:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=017210d1c0dc2e2d3b142985cb31d90b98dc0f0f'/>
<id>017210d1c0dc2e2d3b142985cb31d90b98dc0f0f</id>
<content type='text'>
This change addresses following problem:

[    2.560726] ------------[ cut here ]------------
[    2.565341] WARNING: CPU: 0 PID: 1 at kernel/locking/lockdep.c:2744 lockdep_trace_alloc+0xec/0x118()
[    2.574439] DEBUG_LOCKS_WARN_ON(irqs_disabled_flags(flags))
[    2.579821] Modules linked in:
[    2.583038] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W      3.18.0-next-20141216-00002-g4ff197fc1902-dirty #1318
[    2.593796] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
[    2.599892] [&lt;c0014c44&gt;] (unwind_backtrace) from [&lt;c0011bbc&gt;] (show_stack+0x10/0x14)
[    2.607612] [&lt;c0011bbc&gt;] (show_stack) from [&lt;c04953b8&gt;] (dump_stack+0x70/0xbc)
[    2.614822] [&lt;c04953b8&gt;] (dump_stack) from [&lt;c0023444&gt;] (warn_slowpath_common+0x74/0xb0)
[    2.622885] [&lt;c0023444&gt;] (warn_slowpath_common) from [&lt;c0023514&gt;] (warn_slowpath_fmt+0x30/0x40)
[    2.631569] [&lt;c0023514&gt;] (warn_slowpath_fmt) from [&lt;c0063644&gt;] (lockdep_trace_alloc+0xec/0x118)
[    2.640246] [&lt;c0063644&gt;] (lockdep_trace_alloc) from [&lt;c00df52c&gt;] (__kmalloc+0x3c/0x1cc)
[    2.648240] [&lt;c00df52c&gt;] (__kmalloc) from [&lt;c0394970&gt;] (clk_fetch_parent_index+0xb8/0xd4)
[    2.656390] [&lt;c0394970&gt;] (clk_fetch_parent_index) from [&lt;c0394a6c&gt;] (clk_calc_new_rates+0xe0/0x1fc)
[    2.665415] [&lt;c0394a6c&gt;] (clk_calc_new_rates) from [&lt;c0394b40&gt;] (clk_calc_new_rates+0x1b4/0x1fc)
[    2.674181] [&lt;c0394b40&gt;] (clk_calc_new_rates) from [&lt;c0395408&gt;] (clk_set_rate+0x50/0xc8)
[    2.682265] [&lt;c0395408&gt;] (clk_set_rate) from [&lt;c0377708&gt;] (sdhci_cmu_set_clock+0x68/0x16c)
[    2.690503] [&lt;c0377708&gt;] (sdhci_cmu_set_clock) from [&lt;c03735cc&gt;] (sdhci_do_set_ios+0xf0/0x64c)
[    2.699095] [&lt;c03735cc&gt;] (sdhci_do_set_ios) from [&lt;c0373b48&gt;] (sdhci_set_ios+0x20/0x2c)
[    2.707080] [&lt;c0373b48&gt;] (sdhci_set_ios) from [&lt;c035ddf0&gt;] (mmc_power_up+0x118/0x1fc)
[    2.714889] [&lt;c035ddf0&gt;] (mmc_power_up) from [&lt;c035ecd0&gt;] (mmc_start_host+0x44/0x6c)
[    2.722615] [&lt;c035ecd0&gt;] (mmc_start_host) from [&lt;c035fd60&gt;] (mmc_add_host+0x58/0x7c)
[    2.730341] [&lt;c035fd60&gt;] (mmc_add_host) from [&lt;c037454c&gt;] (sdhci_add_host+0x968/0xd94)
[    2.738240] [&lt;c037454c&gt;] (sdhci_add_host) from [&lt;c0377b60&gt;] (sdhci_s3c_probe+0x354/0x52c)
[    2.746406] [&lt;c0377b60&gt;] (sdhci_s3c_probe) from [&lt;c0283b58&gt;] (platform_drv_probe+0x48/0xa4)
[    2.754733] [&lt;c0283b58&gt;] (platform_drv_probe) from [&lt;c02824e8&gt;] (driver_probe_device+0x13c/0x37c)
[    2.763585] [&lt;c02824e8&gt;] (driver_probe_device) from [&lt;c02827bc&gt;] (__driver_attach+0x94/0x98)
[    2.772003] [&lt;c02827bc&gt;] (__driver_attach) from [&lt;c0280a60&gt;] (bus_for_each_dev+0x54/0x88)
[    2.780163] [&lt;c0280a60&gt;] (bus_for_each_dev) from [&lt;c0281b48&gt;] (bus_add_driver+0xe4/0x200)
[    2.788322] [&lt;c0281b48&gt;] (bus_add_driver) from [&lt;c0282dfc&gt;] (driver_register+0x78/0xf4)
[    2.796308] [&lt;c0282dfc&gt;] (driver_register) from [&lt;c00089b0&gt;] (do_one_initcall+0xac/0x1f0)
[    2.804473] [&lt;c00089b0&gt;] (do_one_initcall) from [&lt;c0673d94&gt;] (kernel_init_freeable+0x10c/0x1d8)
[    2.813153] [&lt;c0673d94&gt;] (kernel_init_freeable) from [&lt;c0490058&gt;] (kernel_init+0x28/0x108)
[    2.821398] [&lt;c0490058&gt;] (kernel_init) from [&lt;c000f268&gt;] (ret_from_fork+0x14/0x2c)
[    2.828939] ---[ end trace 03cc00e539849d1f ]---

clk_set_rate() tries to take clk's prepare_lock mutex while being in atomic
context entered in sdhci_do_set_ios().

The solution is inspired by similar situation in sdhci_set_power() also called
from sdhci_do_set_ios():

                spin_unlock_irq(&amp;host-&gt;lock);
                mmc_regulator_set_ocr(mmc, mmc-&gt;supply.vmmc, vdd);
                spin_lock_irq(&amp;host-&gt;lock);

Note that since sdhci_s3c_set_clock() sets SDHCI_CLOCK_CARD_EN, proposed change
first resets this bit. It is reset anyway (by setting SDHCI_CLOCK_INT_EN bit
only) after call to clk_set_rate() in order to wait for the clock to stabilize
and is set again as soon as the clock becomes stable.

Signed-off-by: Paul Osmialowski &lt;p.osmialowsk@samsung.com&gt;
Tested-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Acked-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change addresses following problem:

[    2.560726] ------------[ cut here ]------------
[    2.565341] WARNING: CPU: 0 PID: 1 at kernel/locking/lockdep.c:2744 lockdep_trace_alloc+0xec/0x118()
[    2.574439] DEBUG_LOCKS_WARN_ON(irqs_disabled_flags(flags))
[    2.579821] Modules linked in:
[    2.583038] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W      3.18.0-next-20141216-00002-g4ff197fc1902-dirty #1318
[    2.593796] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
[    2.599892] [&lt;c0014c44&gt;] (unwind_backtrace) from [&lt;c0011bbc&gt;] (show_stack+0x10/0x14)
[    2.607612] [&lt;c0011bbc&gt;] (show_stack) from [&lt;c04953b8&gt;] (dump_stack+0x70/0xbc)
[    2.614822] [&lt;c04953b8&gt;] (dump_stack) from [&lt;c0023444&gt;] (warn_slowpath_common+0x74/0xb0)
[    2.622885] [&lt;c0023444&gt;] (warn_slowpath_common) from [&lt;c0023514&gt;] (warn_slowpath_fmt+0x30/0x40)
[    2.631569] [&lt;c0023514&gt;] (warn_slowpath_fmt) from [&lt;c0063644&gt;] (lockdep_trace_alloc+0xec/0x118)
[    2.640246] [&lt;c0063644&gt;] (lockdep_trace_alloc) from [&lt;c00df52c&gt;] (__kmalloc+0x3c/0x1cc)
[    2.648240] [&lt;c00df52c&gt;] (__kmalloc) from [&lt;c0394970&gt;] (clk_fetch_parent_index+0xb8/0xd4)
[    2.656390] [&lt;c0394970&gt;] (clk_fetch_parent_index) from [&lt;c0394a6c&gt;] (clk_calc_new_rates+0xe0/0x1fc)
[    2.665415] [&lt;c0394a6c&gt;] (clk_calc_new_rates) from [&lt;c0394b40&gt;] (clk_calc_new_rates+0x1b4/0x1fc)
[    2.674181] [&lt;c0394b40&gt;] (clk_calc_new_rates) from [&lt;c0395408&gt;] (clk_set_rate+0x50/0xc8)
[    2.682265] [&lt;c0395408&gt;] (clk_set_rate) from [&lt;c0377708&gt;] (sdhci_cmu_set_clock+0x68/0x16c)
[    2.690503] [&lt;c0377708&gt;] (sdhci_cmu_set_clock) from [&lt;c03735cc&gt;] (sdhci_do_set_ios+0xf0/0x64c)
[    2.699095] [&lt;c03735cc&gt;] (sdhci_do_set_ios) from [&lt;c0373b48&gt;] (sdhci_set_ios+0x20/0x2c)
[    2.707080] [&lt;c0373b48&gt;] (sdhci_set_ios) from [&lt;c035ddf0&gt;] (mmc_power_up+0x118/0x1fc)
[    2.714889] [&lt;c035ddf0&gt;] (mmc_power_up) from [&lt;c035ecd0&gt;] (mmc_start_host+0x44/0x6c)
[    2.722615] [&lt;c035ecd0&gt;] (mmc_start_host) from [&lt;c035fd60&gt;] (mmc_add_host+0x58/0x7c)
[    2.730341] [&lt;c035fd60&gt;] (mmc_add_host) from [&lt;c037454c&gt;] (sdhci_add_host+0x968/0xd94)
[    2.738240] [&lt;c037454c&gt;] (sdhci_add_host) from [&lt;c0377b60&gt;] (sdhci_s3c_probe+0x354/0x52c)
[    2.746406] [&lt;c0377b60&gt;] (sdhci_s3c_probe) from [&lt;c0283b58&gt;] (platform_drv_probe+0x48/0xa4)
[    2.754733] [&lt;c0283b58&gt;] (platform_drv_probe) from [&lt;c02824e8&gt;] (driver_probe_device+0x13c/0x37c)
[    2.763585] [&lt;c02824e8&gt;] (driver_probe_device) from [&lt;c02827bc&gt;] (__driver_attach+0x94/0x98)
[    2.772003] [&lt;c02827bc&gt;] (__driver_attach) from [&lt;c0280a60&gt;] (bus_for_each_dev+0x54/0x88)
[    2.780163] [&lt;c0280a60&gt;] (bus_for_each_dev) from [&lt;c0281b48&gt;] (bus_add_driver+0xe4/0x200)
[    2.788322] [&lt;c0281b48&gt;] (bus_add_driver) from [&lt;c0282dfc&gt;] (driver_register+0x78/0xf4)
[    2.796308] [&lt;c0282dfc&gt;] (driver_register) from [&lt;c00089b0&gt;] (do_one_initcall+0xac/0x1f0)
[    2.804473] [&lt;c00089b0&gt;] (do_one_initcall) from [&lt;c0673d94&gt;] (kernel_init_freeable+0x10c/0x1d8)
[    2.813153] [&lt;c0673d94&gt;] (kernel_init_freeable) from [&lt;c0490058&gt;] (kernel_init+0x28/0x108)
[    2.821398] [&lt;c0490058&gt;] (kernel_init) from [&lt;c000f268&gt;] (ret_from_fork+0x14/0x2c)
[    2.828939] ---[ end trace 03cc00e539849d1f ]---

clk_set_rate() tries to take clk's prepare_lock mutex while being in atomic
context entered in sdhci_do_set_ios().

The solution is inspired by similar situation in sdhci_set_power() also called
from sdhci_do_set_ios():

                spin_unlock_irq(&amp;host-&gt;lock);
                mmc_regulator_set_ocr(mmc, mmc-&gt;supply.vmmc, vdd);
                spin_lock_irq(&amp;host-&gt;lock);

Note that since sdhci_s3c_set_clock() sets SDHCI_CLOCK_CARD_EN, proposed change
first resets this bit. It is reset anyway (by setting SDHCI_CLOCK_INT_EN bit
only) after call to clk_set_rate() in order to wait for the clock to stabilize
and is set again as soon as the clock becomes stable.

Signed-off-by: Paul Osmialowski &lt;p.osmialowsk@samsung.com&gt;
Tested-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Acked-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: pwrseq: add driver for emmc hardware reset</title>
<updated>2015-02-04T08:45:09+00:00</updated>
<author>
<name>Marek Szyprowski</name>
<email>m.szyprowski@samsung.com</email>
</author>
<published>2015-02-03T13:07:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=726b6324e36b39788f9cdcb918df48bc4d475268'/>
<id>726b6324e36b39788f9cdcb918df48bc4d475268</id>
<content type='text'>
This patch provides a simple mmc-pwrseq-emmc driver, which controls
single gpio line. It perform standard eMMC hw reset procedure, as
descibed by Jedec 4.4 specification. This procedure is performed just
after MMC core enabled power to the given mmc host (to fix possible
issues if bootloader has left eMMC card in initialized or unknown
state), and before performing complete system reboot (also in case of
emergency reboot call). The latter is needed on boards, which doesn't
have hardware reset logic connected to emmc card and (limited or broken)
ROM bootloaders are unable to read second stage from the emmc card if
the card is left in unknown or already initialized state.

Signed-off-by: Marek Szyprowski &lt;m.szyprowski@samsung.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch provides a simple mmc-pwrseq-emmc driver, which controls
single gpio line. It perform standard eMMC hw reset procedure, as
descibed by Jedec 4.4 specification. This procedure is performed just
after MMC core enabled power to the given mmc host (to fix possible
issues if bootloader has left eMMC card in initialized or unknown
state), and before performing complete system reboot (also in case of
emergency reboot call). The latter is needed on boards, which doesn't
have hardware reset logic connected to emmc card and (limited or broken)
ROM bootloaders are unable to read second stage from the emmc card if
the card is left in unknown or already initialized state.

Signed-off-by: Marek Szyprowski &lt;m.szyprowski@samsung.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: moxart: fix probe logic</title>
<updated>2015-02-04T08:42:29+00:00</updated>
<author>
<name>Arnd Bergmann</name>
<email>arnd@arndb.de</email>
</author>
<published>2015-02-03T15:55:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=3981c516664d81a3e83c1923fa1ab3988c529402'/>
<id>3981c516664d81a3e83c1923fa1ab3988c529402</id>
<content type='text'>
Jonas Jensen wanted to submit a patch for these, but apparently
forgot about it. I stumbled over this symptom first:

drivers/built-in.o: In function `moxart_probe':
:(.text+0x2af128): undefined reference to `of_dma_request_slave_channel'

This is because of_dma_request_slave_channel is an internal helper
and not exported to loadable module. I'm changing the driver to
use dma_request_slave_channel_reason() instead.

Further problems from inspection:

* The remove function must not call kfree on the host pointer,
  because it is allocated together with the mmc_host.

* The clock is never released

* The dma_cap_mask_t is completely unused and can be removed

* deferred probing does not work if the dma driver is loaded
  after the mmc driver.

This patch should fix all of the above.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Jonas Jensen &lt;jonas.jensen@gmail.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Jonas Jensen wanted to submit a patch for these, but apparently
forgot about it. I stumbled over this symptom first:

drivers/built-in.o: In function `moxart_probe':
:(.text+0x2af128): undefined reference to `of_dma_request_slave_channel'

This is because of_dma_request_slave_channel is an internal helper
and not exported to loadable module. I'm changing the driver to
use dma_request_slave_channel_reason() instead.

Further problems from inspection:

* The remove function must not call kfree on the host pointer,
  because it is allocated together with the mmc_host.

* The clock is never released

* The dma_cap_mask_t is completely unused and can be removed

* deferred probing does not work if the dma driver is loaded
  after the mmc driver.

This patch should fix all of the above.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Jonas Jensen &lt;jonas.jensen@gmail.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
