Jensen Huang
5a358b9786
i2c: rk3x: fix potential spinlock recursion on poll
...
[ Upstream commit 19cde9c92b8d3b7ee555d0da3bcb0232d3a784f4 ]
Possible deadlock scenario (on reboot):
rk3x_i2c_xfer_common(polling)
-> rk3x_i2c_wait_xfer_poll()
-> rk3x_i2c_irq(0, i2c);
--> spin_lock(&i2c->lock);
...
<rk3x i2c interrupt>
-> rk3x_i2c_irq(0, i2c);
--> spin_lock(&i2c->lock); (deadlock here)
Store the IRQ number and disable/enable it around the polling transfer.
This patch has been tested on NanoPC-T4.
Signed-off-by: Jensen Huang <jensenhuang@friendlyarm.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-20 11:51:46 +01:00
..
2023-08-30 21:18:35 +02:00
2021-07-02 09:14:46 +02:00
2021-05-27 21:29:26 +02:00
2023-06-05 09:47:37 +02:00
2021-04-15 22:24:11 +02:00
2022-11-01 13:41:22 +01:00
2023-06-05 09:47:37 +02:00
2022-11-01 13:41:22 +01:00
2024-01-01 12:42:35 +00:00
2023-08-30 21:19:55 +02:00
2023-08-26 00:18:39 +02:00
2020-11-03 21:34:40 +01:00
2023-08-08 15:36:48 +02:00
2023-06-05 09:47:37 +02:00
2023-08-14 17:47:21 +02:00
2023-11-20 11:59:36 +01:00
2023-06-05 09:47:37 +02:00
2023-08-14 18:09:39 +02:00
2023-09-13 11:10:49 +02:00
2023-06-05 09:47:37 +02:00
2022-02-15 10:04:53 +01:00
2022-02-15 10:04:53 +01:00
2023-06-05 09:47:37 +02:00
2021-06-20 23:13:34 +02:00
2023-08-14 17:47:21 +02:00
2023-06-05 09:47:37 +02:00
2023-08-14 17:47:21 +02:00
2023-04-20 18:20:05 +08:00
2022-02-11 15:38:23 +01:00
2023-12-13 18:44:56 +01:00
2023-09-19 21:57:11 +02:00
2023-11-28 17:20:11 +00:00
2023-06-14 10:47:11 +02:00
2023-08-08 15:36:48 +02:00
2023-06-05 11:58:20 +02:00
2023-06-05 09:47:37 +02:00
2023-08-10 10:13:40 +02:00
2022-08-11 23:02:51 +02:00
2021-02-22 09:02:24 -08:00
2023-08-14 17:47:21 +02:00
2023-08-14 17:47:21 +02:00
2023-06-05 09:47:37 +02:00
2023-08-14 17:47:21 +02:00
2023-06-05 09:47:37 +02:00
2023-09-04 13:44:11 -07:00
2023-08-08 15:36:48 +02:00
2023-11-28 17:20:11 +00:00
2023-08-14 17:47:21 +02:00
2022-08-11 23:02:51 +02:00
2023-08-08 15:36:49 +02:00
2023-09-04 13:44:11 -07:00
2023-08-26 00:18:39 +02:00
2023-06-05 09:47:37 +02:00
2023-06-05 09:47:37 +02:00
2022-12-07 21:27:08 +01:00
2023-08-14 17:47:21 +02:00
2023-08-08 15:36:49 +02:00
2023-08-14 17:47:21 +02:00
2023-02-02 22:23:59 +01:00
2023-06-05 10:43:45 +02:00
2023-08-14 17:47:21 +02:00
2023-08-08 15:36:55 +02:00
2023-08-14 18:09:44 +02:00
2023-08-25 22:13:12 +02:00
2023-08-14 17:47:21 +02:00
2023-08-14 17:47:21 +02:00
2023-08-14 17:47:21 +02:00
2023-07-02 10:22:38 -07:00
2023-08-14 17:47:21 +02:00
2023-08-25 22:11:08 +02:00
2023-08-08 15:36:49 +02:00
2023-09-27 21:32:06 +02:00
2023-06-14 10:47:11 +02:00
2023-12-13 18:44:57 +01:00
2021-01-17 12:26:55 +01:00
2023-06-05 09:47:37 +02:00
2023-06-05 09:47:37 +02:00
2023-06-05 09:47:37 +02:00
2023-08-14 17:47:21 +02:00
2022-08-11 23:02:51 +02:00
2022-11-12 21:30:16 +01:00
2022-11-12 21:30:16 +01:00
2022-02-15 10:28:34 +01:00
2023-06-23 11:56:34 +02:00
2021-01-26 07:42:27 +01:00
2023-08-14 17:47:21 +02:00
2022-11-01 13:09:33 +01:00
2023-08-14 18:10:14 +02:00
2023-06-05 09:47:37 +02:00
2023-08-14 17:47:21 +02:00
2023-11-28 17:20:10 +00:00
2023-08-25 22:07:10 +02:00
2024-01-01 12:42:34 +00:00
2023-08-08 15:36:50 +02:00
2023-08-14 17:47:21 +02:00
2023-08-14 17:47:21 +02:00
2024-01-20 11:51:46 +01:00
2021-06-24 22:08:00 +02:00
2023-06-05 12:03:35 +02:00
2023-08-14 18:10:05 +02:00
2023-07-06 22:25:06 -07:00
2023-06-07 14:12:11 +02:00
2023-08-14 18:10:01 +02:00
2023-06-05 09:47:37 +02:00
2022-10-20 23:09:10 +02:00
2023-08-25 22:11:03 +02:00
2023-08-14 17:47:21 +02:00
2023-08-14 18:09:57 +02:00
2023-08-14 18:09:48 +02:00
2023-10-21 20:31:04 +02:00
2023-11-28 17:19:46 +00:00
2023-08-10 10:13:57 +02:00
2022-08-11 23:02:51 +02:00
2023-08-14 17:47:21 +02:00
2023-09-04 13:44:11 -07:00
2022-05-21 13:41:28 +02:00
2023-08-14 15:14:42 +02:00
2023-06-23 12:22:34 +02:00
2023-06-23 12:22:41 +02:00
2023-06-14 10:40:09 +02:00
2023-06-05 09:47:37 +02:00
2023-08-08 15:36:53 +02:00
2023-06-14 10:41:17 +02:00
2023-06-05 09:47:37 +02:00
2023-09-22 12:04:39 +02:00
2023-08-10 10:12:55 +02:00
2023-11-28 17:19:46 +00:00
2023-02-17 23:18:20 +01:00
2023-06-05 09:47:37 +02:00