diff options
author | Vutla, Lokesh <lokeshvutla@ti.com> | 2015-03-31 00:22:24 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2015-04-01 10:22:43 -0400 |
commit | b0a3d8986a768c8b6a95ea6dd36e975bb3a44c44 (patch) | |
tree | 597b1416d5ca83864e2639df563883e1bde0bbcb /drivers/crypto | |
parent | 555fa17b2b8cc865c203de263443041eb75bc7f7 (diff) |
crypto: omap-sham - Use pm_runtime_irq_safe()
omap_sham_handle_queue() can be called as part of done_task tasklet.
During this its atomic and any calls to pm functions cannot sleep.
But there is a call to pm_runtime_get_sync() (which can sleep) in
omap_sham_handle_queue(), because of which the following appears:
" [ 116.169969] BUG: scheduling while atomic: kworker/0:2/2676/0x00000100"
Add pm_runtime_irq_safe() to avoid this.
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto')
-rw-r--r-- | drivers/crypto/omap-sham.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/crypto/omap-sham.c b/drivers/crypto/omap-sham.c index 3c76696ee578..21fd515068c5 100644 --- a/drivers/crypto/omap-sham.c +++ b/drivers/crypto/omap-sham.c | |||
@@ -1945,6 +1945,7 @@ static int omap_sham_probe(struct platform_device *pdev) | |||
1945 | dd->flags |= dd->pdata->flags; | 1945 | dd->flags |= dd->pdata->flags; |
1946 | 1946 | ||
1947 | pm_runtime_enable(dev); | 1947 | pm_runtime_enable(dev); |
1948 | pm_runtime_irq_safe(dev); | ||
1948 | pm_runtime_get_sync(dev); | 1949 | pm_runtime_get_sync(dev); |
1949 | rev = omap_sham_read(dd, SHA_REG_REV(dd)); | 1950 | rev = omap_sham_read(dd, SHA_REG_REV(dd)); |
1950 | pm_runtime_put_sync(&pdev->dev); | 1951 | pm_runtime_put_sync(&pdev->dev); |