diff options
| author | Shawn Lin <shawn.lin@rock-chips.com> | 2026-09-22 17:40:07 +0800 |
|---|---|---|
| committer | Ulf Hansson <ulfh@kernel.org> | 2026-09-29 12:30:45 +0200 |
| commit | 7e355997ddeac0dc76cb3d0e2cd497758c96500e (patch) | |
| tree | 1c4d872f3793f5845436cdf0a780e7fc2cee56b7 /tools/perf/scripts/python/bin/stackcollapse-report | |
| parent | 4b286ace03225a30930bda6a410f1127fd60ed1e (diff) | |
mmc: sdhci-of-dwcmshc: Disable CQE error halt request for Rockchip
In CMDQ mode an I/O error in one task (data_crc_err, data_end_bit_err,
etc.) makes the controller raise a halt request. While the halt request
is pending, the controller rejects doorbell writes with a slave response
error, which hangs the CPU (or raises SError on ARM) on Rockchip
platforms.
A software workaround[1] clears CQHCI_CTL right before ringing the
doorbell to narrow down the window, but a race remains: an I/O error can
still happen in another slot between the CQHCI_CTL write and the
doorbell kick, so the hang is not fully solved.
To fix this once and for all, newer silicon introduces
SW_ERR_HALR_REQ_DISABLE (CQHCI_CTL[1]) which stops the controller from
raising a halt request on I/O errors. Set the bit when the CQE is
enabled, which is the last CQHCI_CTL write before any doorbell write.
Older SoCs keep this bit reserved, so writing it is a no-op and nothing
changes in the wild, thus no fixes tag is needed.
[1] https://github.com/rockchip-linux/kernel/commit/4b7ea0500a1a5c186807b737fecfc6bb4d4e06f8
Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ulf Hansson <ulfh@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/bin/stackcollapse-report')
0 files changed, 0 insertions, 0 deletions
