From 9ddc4650a0872715cdc0a5a5dc294fc021ac7bd4 Mon Sep 17 00:00:00 2001 From: Robbe Derks Date: Tue, 5 May 2026 12:43:05 +0200 Subject: [PATCH] don't reboot on wifi SMMU crash (#120) --- arch/arm64/configs/tici_defconfig | 2 +- drivers/iommu/arm-smmu.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/arch/arm64/configs/tici_defconfig b/arch/arm64/configs/tici_defconfig index 540f95fcbfec..564f7ac87890 100644 --- a/arch/arm64/configs/tici_defconfig +++ b/arch/arm64/configs/tici_defconfig @@ -4487,7 +4487,7 @@ CONFIG_MSM_SYSMON_GLINK_COMM=y CONFIG_MSM_PIL_SSR_GENERIC=y CONFIG_MSM_PIL_MSS_QDSP6V5=y CONFIG_ICNSS=y -CONFIG_ICNSS_DEBUG=y +# CONFIG_ICNSS_DEBUG is not set CONFIG_QCOM_COMMAND_DB=y CONFIG_MSM_PERFORMANCE=y CONFIG_MSM_CDSP_LOADER=y diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c index c3376df44eef..b1df8c4e6e8b 100644 --- a/drivers/iommu/arm-smmu.c +++ b/drivers/iommu/arm-smmu.c @@ -1545,7 +1545,18 @@ static irqreturn_t arm_smmu_context_fault(int irq, void *dev) } ret = IRQ_NONE; resume = RESUME_TERMINATE; - if (!non_fatal_fault) { + /* openpilot#35788: the WLAN host (icnss) periodically trips + * this fault during recovery from upstream blips. The original + * BUG() takes down the whole device; for WLAN we'd rather let + * firmware fail the DMA, trigger its own modem-PD SSR through + * icnss, and bring WLAN back ~7s later with the kernel intact. + * All other masters keep the original BUG(). */ + if (smmu_domain->dev && + of_device_is_compatible(smmu_domain->dev->of_node, + "qcom,icnss")) { + dev_err(smmu->dev, + "Unhandled WLAN context fault! (BUG suppressed; awaiting SSR)\n"); + } else if (!non_fatal_fault) { dev_err(smmu->dev, "Unhandled arm-smmu context fault!\n"); BUG();