Super Liu
f3440d9a0d
spi: abort spi_sync if failed to prepare_transfer_hardware
...
There is no chance to wait spi message complete if failed to
prepare_transfer_hardware(). Therefore, finalize this message and abort
transfer with corresponding return status to release this block case.
Logs:
[17400.283005] c7 3267 PM: PM: suspend entry 2019-05-04 03:01:14.403097147 UTC
[17400.283013] c7 3267 PM: suspend entry (deep)
[17400.283016] c6 3267 PM: Syncing filesystems ... done.
[17400.584395] c1 753 spi_geni 890000.spi: spi_geni_prepare_transfer_hardware:Error enabling SE resources -13
[17400.584404] c1 753 spi_master spi1: failed to prepare transfer hardware
[17400.664611] c4 3267 PM: PM: suspend exit 2019-05-04 03:01:15.235273018 UTC
Flow:
__spi_sync@spi.c
| if (status == 0) {
| /* Push out the messages in the calling context if we
| * can.
| */
| if (ctlr->transfer == spi_queued_transfer) {
| SPI_STATISTICS_INCREMENT_FIELD(&ctlr->statistics,
| spi_sync_immediate);
| SPI_STATISTICS_INCREMENT_FIELD(&spi->statistics,
| spi_sync_immediate);
| __spi_pump_messages(ctlr, false);
| }
|
| wait_for_completion(&done); <== stuck here!!!
| status = message->status;
| }
| message->context = NULL;
| return status;
|
--> __spi_pump_messages@spi.c
| if (!was_busy && ctlr->prepare_transfer_hardware) {
| ret = ctlr->prepare_transfer_hardware(ctlr);
| if (ret) {
| dev_err(&ctlr->dev,
| "failed to prepare transfer hardware\n");
|
| if (ctlr->auto_runtime_pm)
| pm_runtime_put(ctlr->dev.parent);
| mutex_unlock(&ctlr->io_mutex);
| return;
| }
| }
|
--> spi_geni_prepare_transfer_hardware@spi-geni-qcom.c
| ret = pm_runtime_get_sync(mas->dev);
| if (ret < 0) {
| dev_err(mas->dev,
| "%s:Error enabling SE resources %d\n",
| __func__, ret);
| pm_runtime_put_noidle(mas->dev);
| goto exit_prepare_transfer_hardware;
Signed-off-by: Super Liu <supercjliu@google.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
2019-05-23 14:36:13 +01:00
..
2019-03-25 12:13:10 +00:00
2018-04-23 15:48:18 +01:00
2019-04-05 10:24:49 +07:00
2019-04-05 10:24:49 +07:00
2017-08-16 11:53:31 +01:00
2018-01-26 17:57:24 +00:00
2019-03-25 12:13:20 +00:00
2019-01-17 12:34:55 +00:00
2019-01-30 23:02:11 +00:00
2017-10-31 11:15:10 +00:00
2018-09-18 09:16:34 -07:00
2017-08-08 11:36:35 +01:00
2019-05-02 10:37:55 +09:00
2019-04-08 14:06:14 +07:00
2018-10-11 15:00:34 +01:00
2017-11-02 11:10:55 +01:00
2019-05-16 11:16:43 +01:00
2018-08-01 14:50:24 +01:00
2019-01-24 19:03:11 +00:00
2017-11-02 11:10:55 +01:00
2019-01-09 12:41:58 +00:00
2019-01-10 11:54:13 +00:00
2018-02-12 12:04:16 +00:00
2019-03-20 17:21:02 +00:00
2019-02-20 17:58:18 +00:00
2018-10-11 15:11:04 +01:00
2019-05-02 10:37:59 +09:00
2017-09-01 11:33:22 +01:00
2019-02-20 17:58:18 +00:00
2018-09-05 12:38:27 +01:00
2019-03-18 14:47:24 +00:00
2019-04-08 14:08:53 +07:00
2019-03-13 15:18:39 +00:00
2019-05-22 13:20:47 +01:00
2019-01-14 12:24:05 +00:00
2019-04-08 14:11:18 +07:00
2018-07-30 16:31:54 +01:00
2019-03-15 17:06:34 +00:00
2018-03-18 17:57:42 -07:00
2017-04-26 15:58:04 +01:00
2018-08-01 14:50:24 +01:00
2017-07-26 13:08:56 +01:00
2019-04-08 14:06:51 +07:00
2018-05-02 05:59:21 +09:00
2018-04-27 12:05:39 +01:00
2018-11-27 14:17:20 +00:00
2019-03-25 12:13:34 +00:00
2019-03-20 17:20:29 +00:00
2019-01-29 15:08:58 +00:00
2019-01-03 12:27:17 +00:00
2019-01-29 11:55:41 +00:00
2018-06-12 16:19:22 -07:00
2019-01-15 13:17:04 +00:00
2019-03-18 12:18:42 +00:00
2019-01-08 07:58:37 -05:00
2019-04-01 15:24:47 +07:00
2019-01-28 18:23:04 +00:00
2017-01-17 18:34:25 +00:00
2019-03-20 17:21:17 +00:00
2019-03-20 17:21:17 +00:00
2019-05-02 10:37:53 +09:00
2019-01-23 10:59:56 +00:00
2018-11-22 14:38:13 +00:00
2017-08-10 15:50:23 +01:00
2018-10-10 12:48:06 +01:00
2018-11-05 11:42:43 +00:00
2019-03-15 16:32:19 +00:00
2018-05-17 13:27:08 +09:00
2017-02-22 10:50:09 -08:00
2019-02-08 13:04:19 +00:00
2019-04-04 13:00:47 +07:00
2018-08-01 14:50:24 +01:00
2018-08-28 20:32:00 +01:00
2019-02-22 15:17:58 +00:00
2018-01-03 11:38:46 +00:00
2018-09-28 14:29:14 +01:00
2018-10-03 16:23:10 +01:00
2017-05-26 13:12:04 +01:00
2018-06-26 13:52:27 -07:00
2019-02-20 17:58:18 +00:00
2017-05-26 12:41:07 +01:00
2019-05-02 10:37:56 +09:00
2019-01-07 18:25:48 +00:00
2017-12-07 11:59:15 +00:00
2017-12-07 17:45:17 +00:00
2017-07-19 17:06:31 +01:00
2019-03-27 12:33:33 +00:00
2019-04-08 14:13:06 +07:00
2017-03-17 21:54:08 +00:00
2019-01-29 12:08:03 +00:00
2019-04-05 10:19:10 +07:00
2018-08-02 11:08:06 +01:00
2017-11-27 16:31:20 +00:00
2017-08-08 11:36:07 +01:00
2018-08-01 14:50:24 +01:00
2019-05-02 10:37:57 +09:00
2018-11-05 11:54:35 +00:00
2019-05-23 14:36:13 +01:00
2019-03-18 12:18:28 +00:00