Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1425771
| From | Sebastian Reichel <sre@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [RFC 14/19] HSI: omap_ssi_port: avoid calling runtime_pm_*_sync inside spinlock |
| Date | 2016-06-18 18:30 +0200 |
| Message-ID | <rLria-6py-41@gated-at.bofh.it> (permalink) |
| References | <rLri9-6py-7@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
runtime_pm_*_sync can block when irq_safe flag is removed
from omap-ssi driver, so it may not be called while a
spinlock is held.
Signed-off-by: Sebastian Reichel <sre@kernel.org>
---
drivers/hsi/controllers/omap_ssi_port.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/hsi/controllers/omap_ssi_port.c b/drivers/hsi/controllers/omap_ssi_port.c
index f7ed59ba3b2c..92064221dbab 100644
--- a/drivers/hsi/controllers/omap_ssi_port.c
+++ b/drivers/hsi/controllers/omap_ssi_port.c
@@ -767,13 +767,12 @@ static int ssi_release(struct hsi_client *cl)
struct omap_ssi_port *omap_port = hsi_port_drvdata(port);
struct hsi_controller *ssi = to_hsi_controller(port->device.parent);
- spin_lock_bh(&omap_port->lock);
pm_runtime_get_sync(omap_port->pdev);
+ spin_lock_bh(&omap_port->lock);
/* Stop all the pending DMA requests for that client */
ssi_cleanup_gdd(ssi, cl);
/* Now cleanup all the queues */
ssi_cleanup_queues(cl);
- pm_runtime_put_sync(omap_port->pdev);
/* If it is the last client of the port, do extra checks and cleanup */
if (port->claimed <= 1) {
/*
@@ -782,15 +781,16 @@ static int ssi_release(struct hsi_client *cl)
*/
if (test_and_clear_bit(SSI_WAKE_EN, &omap_port->flags))
pm_runtime_put_sync(omap_port->pdev);
- pm_runtime_get_sync(omap_port->pdev);
+ pm_runtime_get(omap_port->pdev);
/* Stop any SSI TX/RX without a client */
ssi_set_port_mode(omap_port, SSI_MODE_SLEEP);
omap_port->sst.mode = SSI_MODE_SLEEP;
omap_port->ssr.mode = SSI_MODE_SLEEP;
- pm_runtime_put_sync(omap_port->pdev);
+ pm_runtime_put(omap_port->pdev);
WARN_ON(omap_port->wk_refcount != 0);
}
spin_unlock_bh(&omap_port->lock);
+ pm_runtime_put_sync(omap_port->pdev);
return 0;
}
--
2.8.1
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[RFC 00/19] Runtime PM fixes for omap-ssi Sebastian Reichel <sre@kernel.org> - 2016-06-18 18:30 +0200
[RFC 14/19] HSI: omap_ssi_port: avoid calling runtime_pm_*_sync inside spinlock Sebastian Reichel <sre@kernel.org> - 2016-06-18 18:30 +0200
[RFC 15/19] HSI: omap_ssi_port: replace pm_runtime_put_sync with non-sync variant Sebastian Reichel <sre@kernel.org> - 2016-06-18 18:30 +0200
[RFC 02/19] HSI: omap_ssi: do not reset module Sebastian Reichel <sre@kernel.org> - 2016-06-18 18:30 +0200
Re: [RFC 02/19] HSI: omap_ssi: do not reset module Tony Lindgren <tony@atomide.com> - 2016-06-21 13:50 +0200
[RFC 12/19] HSI: omap_ssi_port: switch to threaded pio irq Sebastian Reichel <sre@kernel.org> - 2016-06-18 18:30 +0200
[RFC 13/19] HSI: omap_ssi_port: avoid pm_runtime_get_sync in ssi_start_dma and ssi_start_pio Sebastian Reichel <sre@kernel.org> - 2016-06-18 18:30 +0200
[RFC 11/19] HSI: omap_ssi_core: remove pm_runtime_get_sync call from tasklet Sebastian Reichel <sre@kernel.org> - 2016-06-18 18:30 +0200
[RFC 06/19] HSI: omap_ssi: convert cawake irq handler to thread Sebastian Reichel <sre@kernel.org> - 2016-06-18 18:30 +0200
[RFC 05/19] HSI: ssi_protocol: fix ssip_xmit invocation Sebastian Reichel <sre@kernel.org> - 2016-06-18 18:30 +0200
[RFC 18/19] HSI: omap_ssi_port: use rpm autosuspend API Sebastian Reichel <sre@kernel.org> - 2016-06-18 18:30 +0200
[RFC 08/19] HSI: core: switch port event notifier from atomic to blocking Sebastian Reichel <sre@kernel.org> - 2016-06-18 18:30 +0200
[RFC 07/19] HSI: omap_ssi_port: replace wkin_cken with atomic bitmap operations Sebastian Reichel <sre@kernel.org> - 2016-06-18 18:30 +0200
[RFC 09/19] HSI: omap_ssi_port: prepare start_tx/stop_tx for blocking pm_runtime calls Sebastian Reichel <sre@kernel.org> - 2016-06-18 18:40 +0200
[RFC 01/19] HSI: omap_ssi_port: remove useless newline Sebastian Reichel <sre@kernel.org> - 2016-06-18 18:40 +0200
Re: [RFC 00/19] Runtime PM fixes for omap-ssi Pavel Machek <pavel@ucw.cz> - 2016-06-18 21:00 +0200
Re: [RFC 00/19] Runtime PM fixes for omap-ssi Sebastian Reichel <sre@kernel.org> - 2016-06-18 22:30 +0200
Re: [RFC 00/19] Runtime PM fixes for omap-ssi Pavel Machek <pavel@ucw.cz> - 2016-06-19 00:10 +0200
csiph-web