kernel-ark/drivers/spi
Dmitry Eremin-Solenikov 2b9375b91b spi: pxa2xx: toggle clocks on suspend if not disabled by runtime PM
If PM_RUNTIME is enabled, it is easy to trigger the following backtrace
on pxa2xx hosts:

------------[ cut here ]------------
WARNING: CPU: 0 PID: 1 at /home/lumag/linux/arch/arm/mach-pxa/clock.c:35 clk_disable+0xa0/0xa8()
Modules linked in:
CPU: 0 PID: 1 Comm: swapper Not tainted 3.17.0-00007-g1b3d2ee-dirty #104
[<c000de68>] (unwind_backtrace) from [<c000c078>] (show_stack+0x10/0x14)
[<c000c078>] (show_stack) from [<c001d75c>] (warn_slowpath_common+0x6c/0x8c)
[<c001d75c>] (warn_slowpath_common) from [<c001d818>] (warn_slowpath_null+0x1c/0x24)
[<c001d818>] (warn_slowpath_null) from [<c0015e80>] (clk_disable+0xa0/0xa8)
[<c0015e80>] (clk_disable) from [<c02507f8>] (pxa2xx_spi_suspend+0x2c/0x34)
[<c02507f8>] (pxa2xx_spi_suspend) from [<c0200360>] (platform_pm_suspend+0x2c/0x54)
[<c0200360>] (platform_pm_suspend) from [<c0207fec>] (dpm_run_callback.isra.14+0x2c/0x74)
[<c0207fec>] (dpm_run_callback.isra.14) from [<c0209254>] (__device_suspend+0x120/0x2f8)
[<c0209254>] (__device_suspend) from [<c0209a94>] (dpm_suspend+0x50/0x208)
[<c0209a94>] (dpm_suspend) from [<c00455ac>] (suspend_devices_and_enter+0x8c/0x3a0)
[<c00455ac>] (suspend_devices_and_enter) from [<c0045ad4>] (pm_suspend+0x214/0x2a8)
[<c0045ad4>] (pm_suspend) from [<c04b5c34>] (test_suspend+0x14c/0x1dc)
[<c04b5c34>] (test_suspend) from [<c000880c>] (do_one_initcall+0x8c/0x1fc)
[<c000880c>] (do_one_initcall) from [<c04aecfc>] (kernel_init_freeable+0xf4/0x1b4)
[<c04aecfc>] (kernel_init_freeable) from [<c0378078>] (kernel_init+0x8/0xec)
[<c0378078>] (kernel_init) from [<c0009590>] (ret_from_fork+0x14/0x24)
---[ end trace 46524156d8faa4f6 ]---

This happens because suspend function tries to disable a clock that is
already disabled by runtime_suspend callback. Add if
(!pm_runtime_suspended()) checks to suspend/resume path.

Fixes: 7d94a50585 (spi/pxa2xx: add support for runtime PM)
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Reported-by: Andrea Adami <andrea.adami@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: stable@vger.kernel.org
2014-11-06 12:54:00 +00:00
..
Kconfig Merge remote-tracking branches 'spi/topic/pl022', 'spi/topic/pxa2xx', 'spi/topic/rspi', 'spi/topic/sh-msiof' and 'spi/topic/sirf' into spi-next 2014-10-03 16:33:42 +01:00
Makefile spi: bcm53xx: driver for SPI controller on Broadcom bcma SoC 2014-08-19 11:30:55 -05:00
spi-adi-v3.c spi: spi-adi-v3: Remove redundant OOM message 2014-06-21 11:14:02 +01:00
spi-altera.c
spi-ath79.c
spi-atmel.c spi/atmel: Fix pointer to int conversion warnings on 64 bit builds 2014-08-01 18:22:42 +01:00
spi-au1550.c spi: spi-au1550: fix build failure 2014-08-19 16:17:57 -05:00
spi-bcm53xx.c spi: bcm53xx: Add missing module information 2014-09-26 09:08:10 +01:00
spi-bcm53xx.h spi: bcm53xx: driver for SPI controller on Broadcom bcma SoC 2014-08-19 11:30:55 -05:00
spi-bcm63xx-hsspi.c
spi-bcm63xx.c
spi-bcm2835.c
spi-bfin5xx.c
spi-bfin-sport.c
spi-bitbang-txrx.h
spi-bitbang.c
spi-butterfly.c
spi-cadence.c spi: cadence: Remove .owner field for driver 2014-08-16 17:11:32 -05:00
spi-clps711x.c spi: clps711x: Migrate to the new clk subsystem 2014-09-24 09:40:24 +01:00
spi-coldfire-qspi.c
spi-davinci.c Merge remote-tracking branches 'spi/topic/davinci', 'spi/topic/doc', 'spi/topic/dw' and 'spi/topic/fsl' into spi-next 2014-10-03 16:33:39 +01:00
spi-dw-mid.c spi: dw-mid: follow new DMAengine workflow 2014-10-02 17:06:26 +01:00
spi-dw-mmio.c spi: dw-mmio: add devicetree support 2014-07-03 19:44:04 +01:00
spi-dw-pci.c Merge remote-tracking branches 'spi/topic/davinci', 'spi/topic/doc', 'spi/topic/dw' and 'spi/topic/fsl' into spi-next 2014-10-03 16:33:39 +01:00
spi-dw.c Merge remote-tracking branches 'spi/topic/davinci', 'spi/topic/doc', 'spi/topic/dw' and 'spi/topic/fsl' into spi-next 2014-10-03 16:33:39 +01:00
spi-dw.h spi: dw-mid: change magic numbers to the constants 2014-10-02 17:06:26 +01:00
spi-efm32.c spi: efm32: correct namespacing of location property 2014-07-11 13:39:36 +01:00
spi-ep93xx.c spi: ep93xx: Fix checkpatch issue 2014-09-02 11:47:12 +01:00
spi-falcon.c spi: falcon: Remove unnecessary platform_set_drvdata() 2014-06-06 11:14:29 +01:00
spi-fsl-cpm.c spi: fsl: Sort include headers alphabetically 2014-09-29 18:14:08 +01:00
spi-fsl-cpm.h
spi-fsl-dspi.c Merge remote-tracking branches 'spi/topic/fsl-dspi', 'spi/topic/imx', 'spi/topic/mxs', 'spi/topic/omap-100k' and 'spi/topic/orion' into spi-next 2014-10-03 16:33:41 +01:00
spi-fsl-espi.c Merge remote-tracking branches 'spi/topic/davinci', 'spi/topic/doc', 'spi/topic/dw' and 'spi/topic/fsl' into spi-next 2014-10-03 16:33:39 +01:00
spi-fsl-lib.c spi: fsl: Sort include headers alphabetically 2014-09-29 18:14:08 +01:00
spi-fsl-lib.h
spi-fsl-spi.c Merge remote-tracking branches 'spi/topic/davinci', 'spi/topic/doc', 'spi/topic/dw' and 'spi/topic/fsl' into spi-next 2014-10-03 16:33:39 +01:00
spi-fsl-spi.h
spi-gpio.c spi: spi-gpio: Make of_device_id array const 2014-05-07 20:53:04 +01:00
spi-imx.c spi: spi-imx: add DMA support 2014-09-17 11:36:11 -07:00
spi-lm70llp.c
spi-mpc52xx-psc.c
spi-mpc52xx.c
spi-mpc512x-psc.c
spi-mxs.c Merge remote-tracking branches 'spi/topic/fsl-dspi', 'spi/topic/imx', 'spi/topic/mxs', 'spi/topic/omap-100k' and 'spi/topic/orion' into spi-next 2014-10-03 16:33:41 +01:00
spi-nuc900.c
spi-oc-tiny.c
spi-octeon.c
spi-omap2-mcspi.c spi/omap-mcspi: Fix the spi task hangs waiting dma_rx 2014-08-11 19:55:51 +01:00
spi-omap-100k.c spi: omap-100k: Remove unused definitions 2014-08-16 17:12:14 -05:00
spi-omap-uwire.c spi: omap-uwire: Fix build error 2014-06-24 16:25:48 +01:00
spi-orion.c Merge remote-tracking branches 'spi/topic/fsl-dspi', 'spi/topic/imx', 'spi/topic/mxs', 'spi/topic/omap-100k' and 'spi/topic/orion' into spi-next 2014-10-03 16:33:41 +01:00
spi-pl022.c Merge remote-tracking branches 'spi/topic/pl022', 'spi/topic/pxa2xx', 'spi/topic/rspi', 'spi/topic/sh-msiof' and 'spi/topic/sirf' into spi-next 2014-10-03 16:33:42 +01:00
spi-ppc4xx.c
spi-pxa2xx-dma.c spi/pxa2xx: Don't use slave_id of dma_slave_config 2014-09-18 11:54:07 +05:30
spi-pxa2xx-pci.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-10-18 18:11:04 -07:00
spi-pxa2xx-pxadma.c
spi-pxa2xx.c spi: pxa2xx: toggle clocks on suspend if not disabled by runtime PM 2014-11-06 12:54:00 +00:00
spi-pxa2xx.h
spi-qup.c Merge remote-tracking branches 'spi/topic/orion', 'spi/topic/pl022', 'spi/topic/qup', 'spi/topic/rockchip' and 'spi/topic/rspi' into spi-next 2014-08-04 17:21:12 +01:00
spi-rockchip.c Merge remote-tracking branch 'spi/fix/rockchip' into spi-linus 2014-10-03 16:33:35 +01:00
spi-rspi.c spi: rspi: Add support for new R-Car Gen2 SoCs 2014-08-28 15:33:17 +01:00
spi-s3c24xx-fiq.h
spi-s3c24xx-fiq.S
spi-s3c24xx.c Merge remote-tracking branch 'spi/topic/workqueue' into spi-next 2014-06-02 17:08:43 +01:00
spi-s3c64xx.c ARM: SoC cleanups for 3.17 2014-08-08 11:00:26 -07:00
spi-sc18is602.c
spi-sh-hspi.c spi: sh-hspi: Make of_device_id array const 2014-06-06 12:37:41 +01:00
spi-sh-msiof.c spi: sh-msiof: Fix transmit-only DMA transfers 2014-08-31 13:41:46 +01:00
spi-sh-sci.c spi: sh-sci: fix use-after-free in sh_sci_spi_remove() 2014-06-17 15:47:31 +01:00
spi-sh.c spi/spi-sh: Use devm_ioremap 2014-07-07 12:50:52 +02:00
spi-sirf.c Merge remote-tracking branches 'spi/topic/pl022', 'spi/topic/pxa2xx', 'spi/topic/rspi', 'spi/topic/sh-msiof' and 'spi/topic/sirf' into spi-next 2014-10-03 16:33:42 +01:00
spi-sun4i.c
spi-sun6i.c
spi-tegra20-sflash.c spi: tegra20-sflash: Fix checkpatch issue 2014-09-03 19:30:27 +01:00
spi-tegra20-slink.c spi: tegra20-slink: Make of_device_id array const 2014-05-07 20:53:05 +01:00
spi-tegra114.c spi: tegra114: Fix checkpatch issue 2014-09-03 19:30:26 +01:00
spi-ti-qspi.c
spi-tle62x0.c spi: tle62x0: remove unnecessary OOM messages 2014-04-29 12:01:42 -07:00
spi-topcliff-pch.c spi: topcliff-pch: don't hardcode PCI slot to get DMA device 2014-07-31 00:03:42 +01:00
spi-txx9.c spi: txx9: Fix checkpatch issue 2014-09-03 19:30:27 +01:00
spi-xcomm.c
spi-xilinx.c spi: xilinx: Remove .owner field for driver 2014-08-16 17:15:47 -05:00
spi-xtensa-xtfpga.c spi: xtensa-xtfpga: Fix checkpatch issue 2014-09-02 11:47:12 +01:00
spi.c ACPI and power management updates for 3.18-rc1 2014-10-09 16:07:43 -04:00
spidev.c