diff options
| author | Breno Leitao <[email protected]> | 2024-08-13 16:12:53 +0000 |
|---|---|---|
| committer | Andi Shyti <[email protected]> | 2024-08-14 22:22:28 +0000 |
| commit | 14d069d92951a3e150c0a81f2ca3b93e54da913b (patch) | |
| tree | b6ff4778097685d9428510d318522be9f7cfe3f0 /rust/helpers/build_assert.c | |
| parent | i2c: qcom-geni: Add missing geni_icc_disable in geni_i2c_runtime_resume (diff) | |
| download | kernel-14d069d92951a3e150c0a81f2ca3b93e54da913b.tar.gz kernel-14d069d92951a3e150c0a81f2ca3b93e54da913b.zip | |
i2c: tegra: Do not mark ACPI devices as irq safe
On ACPI machines, the tegra i2c module encounters an issue due to a
mutex being called inside a spinlock. This leads to the following bug:
BUG: sleeping function called from invalid context at kernel/locking/mutex.c:585
...
Call trace:
__might_sleep
__mutex_lock_common
mutex_lock_nested
acpi_subsys_runtime_resume
rpm_resume
tegra_i2c_xfer
The problem arises because during __pm_runtime_resume(), the spinlock
&dev->power.lock is acquired before rpm_resume() is called. Later,
rpm_resume() invokes acpi_subsys_runtime_resume(), which relies on
mutexes, triggering the error.
To address this issue, devices on ACPI are now marked as not IRQ-safe,
considering the dependency of acpi_subsys_runtime_resume() on mutexes.
Fixes: bd2fdedbf2ba ("i2c: tegra: Add the ACPI support")
Cc: <[email protected]> # v5.17+
Co-developed-by: Michael van der Westhuizen <[email protected]>
Signed-off-by: Michael van der Westhuizen <[email protected]>
Signed-off-by: Breno Leitao <[email protected]>
Reviewed-by: Dmitry Osipenko <[email protected]>
Reviewed-by: Andy Shevchenko <[email protected]>
Signed-off-by: Andi Shyti <[email protected]>
Diffstat (limited to 'rust/helpers/build_assert.c')
0 files changed, 0 insertions, 0 deletions
