From nobody Mon Sep 28 19:24:53 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 64080455173 for ; Tue, 18 Aug 2026 10:46:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787049974; cv=none; b=lP2kmK/LCV/FnKiNiRaZxkuCjmpFsUqVYo+FKHfXs2x1XMhrOD31SnS5SyOihAI9rHHy3aPFHVUInYM6wEJMNQRoNIhMIzCJ2bLVrFjLt2dkOMG9K3+Us9f2Ovf1nmbpAzf4VFDMtn2FbjoRRWQ7z91nYJfEe6tPbiv1gi7j+po= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787049974; c=relaxed/simple; bh=dFfg+yi5CHzTc26iZLvWQGYdkQ4fnddTpoVHGJmMkSU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XlRwIGzkkGsQllTeo557WdPIn11MHeuz81TG2zcjCs1lOIJGQH+TVWQSnjtxfGJvi1ID4zBEMqFlj2VbF4h/rdlyCRyUM9UZAV9tByIH9qjy1lM2UC4EUJ5zqCl8EQRna3nVV8hK1G8NiUHaUuqgD+n1HprxakV1V8ysUOlAMrw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=NqcHeBUW; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CAoTF0vx; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="NqcHeBUW"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CAoTF0vx" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67IABpCe599576 for ; Tue, 18 Aug 2026 10:46:11 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= SosYBOSUJqYzgFFI2VlCZ6y4w4ywG1iaTvH3S/tqiq0=; b=NqcHeBUWj7tPC+Gu 1w++ZMfamb6DV66mYqnv9gHuWitrHBThd6Ut6kElZI7gZxNfATOE+mHiEcdK2wgw Kn+U8ZJfrWtKIQiTZsq3nc8FoSAumVBJrDyFYmyMvCEUXMo/YRfUqZ/juxbSqlwF 6OgFh39Kn+RIhjL7X5IGbCavEMUT7++/poS8P0juXqeKPDI7Kk2MjA5RYCN4V7jr YzPQtwhL0ids1QjbDWs5qRDjETIM5wWEmv2PNPOgZTwux17w0JwGZMKocwIInzdQ 1ibvpnbRZkec0dhxG8PGinsckICNdQuh3tC0pznGnzRTA1Jb5TmISHwvHj13c1oB R5lc7g== Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4eqtswm8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 18 Aug 2026 10:46:11 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-38dbf293831so11244670a91.3 for ; Tue, 18 Aug 2026 03:46:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787049970; x=1787654770; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=SosYBOSUJqYzgFFI2VlCZ6y4w4ywG1iaTvH3S/tqiq0=; b=CAoTF0vxUJFNaXiaHNtVmqwLSSwPT+o4WV3+34XF60zYZDZTOn9sExN3rYOBr6K9xB Tuh7hp+rZlIv0zK44L9LHSB+DgwLTfVLkaU37zjUatyw2HXUt7+o0VXIXUusr6J4ClZa AzTW8PUduDi5TmPAayz1UYCBVdxK4tuIizyOM79zvb8U3r25QMc0xFk2nZAs2vVWO0RI ZsWDXdndsh59Yi/55S1p/OwCkfcwfdtYr8CLFGWjJYSt7Jqvu2h0/BePdpWq5O8I4EE0 opCXOtiPLW/OcgqrPWP+dpFi09/dJCYp++arg4yquytDCwEjjNAF/VRFXkLE8h9jD6JA ARIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787049970; x=1787654770; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=SosYBOSUJqYzgFFI2VlCZ6y4w4ywG1iaTvH3S/tqiq0=; b=ryCdXlyo7L1C1UVWBpCXWQ1XgwTw9Z9n7ZNy3vRJdiXOPXN7e1k+rhlqK/cWb85B4B J3esjLVtSiWlbDttcUhxCs4sLBe8YGDrajTQ7gQpYf8JuOQr3rFPJXSHh09F807+HE85 j2Rxard6LMcjkdl7ZqYhNCC7gl3acBgIpHYQ/i60Q2qL0LoTtR684nKaZMlocfMHE4VN n179frkldM1Y4+W3t7y4425YM/9h86QqWxHWgh6JPyh807XxOf5jhrVshWGDaSbe3431 hWitIzPY5QqH5RJroIVF1JhD835lJja0l6QhsO7tQxxwnKbqFi8Pi0a1tkVwoWsa4Xk4 y2tw== X-Forwarded-Encrypted: i=1; AHgh+RpczLF3U/oNKGGlxZ0giIzVzHExQSAMxp+G6sytDJAH5qg6hF4k9k0djbPXKsOFep9omvm4z/v1d9cGZyA=@vger.kernel.org X-Gm-Message-State: AOJu0Yx+hIYZoRqIPHQgV3cM3R1cg1/cTIgr20dEHPPPpst5GFkSYNQb HeUutED6OpZf7K+ya8FO5619wfE4Rrof1jrNyahLuvlock6ZLjDiDo4Sb8iAf1x2NtDU4iCV/9R kJiVnTv5Vegn//zU/5m2HtnztACJizsBnryFDNQOwRRBy7CV8VbZ34EP/HCDOaWfAjoXHjJqvU7 Y= X-Gm-Gg: AR+sD12C7l7nBMoZ42vD3B6p+r+MTQulOPI4tKbwYMQyuM+SKFfFEP3EQTmjZlXwDDC npGTIzefjwOv3wxgzluWpDflFJALGD25Px9wDEa3znusCNTWYswryhRB3g9BWxJ9vn5L2ctDfDb snmGzVcVjj8ZWeViNgIDmKw1Y9ZHlp/U2JMoi+e0s6W8sFTXxCWJZtVYXHvo1ztVMhySppsi6o+ oeSM4beNjdSFM3h4saeah3SMM6zfu0yYC2khtv/J6rX8YtMzaz/qdLx3Ez8UUINHywX8DF0xK2S 6WcOQddueke5hL39rDhNTvvjboNHRRJlGdOjB59TTYyiCmv9gky06X0viMy9mfE21oldjn4KM9n bAL016UbWS1+rm3pG9V4ASlMe+vZTq/7eRQ== X-Received: by 2002:a17:902:ea0a:b0:2ca:d91d:d3a7 with SMTP id d9443c01a7336-2d3b08987dfmr301062295ad.10.1787049970260; Tue, 18 Aug 2026 03:46:10 -0700 (PDT) X-Received: by 2002:a17:902:ea0a:b0:2ca:d91d:d3a7 with SMTP id d9443c01a7336-2d3b08987dfmr301061805ad.10.1787049969782; Tue, 18 Aug 2026 03:46:09 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d5c1ef9b3esm12877935ad.79.2026.08.18.03.46.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 03:46:09 -0700 (PDT) From: Praveen Talari Date: Tue, 18 Aug 2026 16:15:54 +0530 Subject: [PATCH v2 1/2] spi: qcom-geni: Add shutdown callback to quiesce hardware on reboot Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260818-add-shutdown-and-panic-notifier-for-spi-v2-1-eb25d56634a0@oss.qualcomm.com> References: <20260818-add-shutdown-and-panic-notifier-for-spi-v2-0-eb25d56634a0@oss.qualcomm.com> In-Reply-To: <20260818-add-shutdown-and-panic-notifier-for-spi-v2-0-eb25d56634a0@oss.qualcomm.com> To: konrad.dybcio@oss.qualcomm.com, Mark Brown Cc: mukesh.savaliya@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, chandana.chiluveru@oss.qualcomm.com, Praveen Talari X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787049963; l=1573; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=dFfg+yi5CHzTc26iZLvWQGYdkQ4fnddTpoVHGJmMkSU=; b=MYT+AqL/5TOBXPcB8c5nXOH1xClkB9g1lwkPmjQjSHwqLpIlWFRcdkqZZKbTstNJVSgVBZREC tkz0hfmjV5QDt5LtNsmmUHIlnjW8//QKq7XuoXkI906tr8ww2wVMrI0 X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-Spam-Info: AW1haW4tMjYwODE4MDA3OCBTYWx0ZWRfXx6QhkziODcuO 17eFbAG897PP16Lk3DDYkURV2OHISMVT8rkc/oM7YjcyFdZ1beYpD2PtsUB954pZJAZJeweAWBM esPY/kaftXISxuirM7bzehl1pY4hJl8= X-Proofpoint-ORIG-GUID: qTgmaZKW_keQ_ykiYuBJojr-O_5uO6LG X-Authority-Analysis: v=2.4 cv=UfFhjqSN c=1 sm=1 tr=0 ts=6a8437f3 cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=Bb2fkNEn-BfLECvCvWMA:9 a=QEXdDO2ut3YA:10 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-GUID: qTgmaZKW_keQ_ykiYuBJojr-O_5uO6LG X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE4MDA3OCBTYWx0ZWRfX2lMPeNNbng7K 0pzcReyadu3OaCL4crOlnVHAkKYtqZA6r2XE3US9kzGlGdjQRleDw3BOO/4v7aPIZFdsiB7ATic pGqmYIPFBD9Ked18VpJynQ7nDvV6LvuI+pIs9EjsdKzCA354WUNBqy5aHZWmptRe4j9e/LjW3nM NhMsRQKYCcnmY21nq3BI4N9/iBfPfI6vK/6wNFubMOXhATbtT4S6TMHWbgNfw7tcJll9Zb7QtPQ 6crgWCDETD7QJ+PeTave+jS2sS6BkuHuRYdUCAlKIBjQkTO4X5ZXyGXpbB9tjNgqGsTM1kLU+6B 5dXKFiLHWdUrS+ensN8xeeDMge0DW7UGXZZGKfUJqBU/GjBaM8chEnuiur3jehcsKC2UTak+/uk Zp8/64PRpnUbEvg/kM4cyj3ZWpUKOoS6fdP7028LqVAgi4YufdjYIMBAYDn1JA0rvXBZ/g26wwb EkPN1vkrab963iby0Dw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_01,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 malwarescore=0 impostorscore=0 suspectscore=0 adultscore=0 spamscore=0 priorityscore=1501 clxscore=1015 phishscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608180078 During system reboot, an active SPI transfer can leave the GENI Serial Engine in an indeterminate state. On VM-based platforms, if a DMA transfer is in progress when the VM is shut down, the SMMU can raise context faults as the DMA engine continues to access IOVAs that have already been invalidated during VM teardown. Add a shutdown callback to suspend the SPI controller and abort any in-progress transfer, ensuring the DMA engine is idle and all IOVA mappings are retired before the system resets. Signed-off-by: Praveen Talari --- drivers/spi/spi-geni-qcom.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c index 6566975eb24f..39d67f19244c 100644 --- a/drivers/spi/spi-geni-qcom.c +++ b/drivers/spi/spi-geni-qcom.c @@ -1066,6 +1066,13 @@ static int spi_geni_target_abort(struct spi_controll= er *spi) return 0; } =20 +static void spi_geni_shutdown(struct platform_device *pdev) +{ + struct spi_controller *spi =3D platform_get_drvdata(pdev); + + spi_controller_suspend(spi); +} + static int spi_geni_probe(struct platform_device *pdev) { int ret, irq; @@ -1242,7 +1249,8 @@ static const struct of_device_id spi_geni_dt_match[] = =3D { MODULE_DEVICE_TABLE(of, spi_geni_dt_match); =20 static struct platform_driver spi_geni_driver =3D { - .probe =3D spi_geni_probe, + .probe =3D spi_geni_probe, + .shutdown =3D spi_geni_shutdown, .driver =3D { .name =3D "geni_spi", .pm =3D &spi_geni_pm_ops, --=20 2.34.1 From nobody Mon Sep 28 19:24:53 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F06B64570FE for ; Tue, 18 Aug 2026 10:46:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787049977; cv=none; b=ICXj9Pi8EZ7Pg0EzarDpZ7EqEQ+Rfg2Kr0Q5nSC6YP4XCMu5dWy0ZXYN80Po/iohi+KBYLgK4vuchPnKbISXP3eDyxRZvJPdiJ54vZZG3INNW50FJfGHZ4o2Ym+hGu0BtFG7qNw8BI75vctEtx+5I/VihnQ75fJ4KdxltDFEJcI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787049977; c=relaxed/simple; bh=3GxZsZZ0axdMoB5qI/U/nBuEqGc/X6IlpBABVEOP41k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mUKMdYI6WuYzJfV0YszPBECfLlvXU2JKuR/4H6E/hhdBVqYlIktXT1aOLOLEfks+mZ1619CXTxBMaljnbeqdud5PRgpsYO25q/rq2LWORZTttu7EDxuDF1p8aLydNZ+YDtz+TI/+LRWv35PnP8A4kH40YDXdqze/Hne+JmhUAlI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=PRe5LD00; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=B48YOAcM; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="PRe5LD00"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="B48YOAcM" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67IABhmD820175 for ; Tue, 18 Aug 2026 10:46:14 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= AjFfNFXT66wBzziVDwKp+u3lssV0V1KcVKuQX4YISx0=; b=PRe5LD00N+LtatCM KVd8+Bq7YhI3a6A6WRo3Aaj7Cou3qXabzMyCrrNLpim3c34WtaTDyH0aho0BorUH GasHbUL96jR4TLLDLEGo7VBsa4ugXxl8f+eE3G7GL66Yv1czUyKLbAqZ29CyOYNx KlLwRjAKgfBowVYb8KOWNotQRd+RDZs26yT8aFK5mWbmOJ9EM+OnixYM+l2muaRb daUOWlALR6gE+emgxyMOaUO+OlkXM6qgQvgUKqGFDLUgXPHVtxiCYF5quGFZ1idv wD+DLiyuKmuHa3JtN+MbwoGY86tP/DYT5J4vLPA3B+wOheiRFsiPgyfaTmUTYcQr d3ZRCg== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4g2p1jw1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 18 Aug 2026 10:46:14 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2cfc52ddc55so73589695ad.3 for ; Tue, 18 Aug 2026 03:46:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787049973; x=1787654773; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=AjFfNFXT66wBzziVDwKp+u3lssV0V1KcVKuQX4YISx0=; b=B48YOAcMgt5HA5rsGli1Ft8I7xH+Tp0TMHrSv9bzHiDRKNA00G3PsWzQzT5TSirbAO 47a/JOc00Jw+wp0OEWa/L42hz88AiFluZN6gjZaCoSAH0DgJ/M151s7zLw43ocP9+7+k g96RACZOQ2JYIvzkm5ixcpvXUL29ZLFnYXMcwX0SXLF8zoY/l0k2Ew4vlpiRtPi1zIS+ G1hTbabMyTIYc8rgcJw7RZT1B23bbdHEqcbKwG+v3ODYBKFz+IRf11Y3Lm/Z3y7EgzDo 0X7mZG1rr0CpD1Oq8m0EOx+4zOX/lTtOFCxmshjizxlOk6IPUwi6Vfv0yHgxjVuZRVtj 5S1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787049973; x=1787654773; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=AjFfNFXT66wBzziVDwKp+u3lssV0V1KcVKuQX4YISx0=; b=BlhNV3Vv5dXMrzyCMw97Ho6TKX8H+6lN8+qKd0dULttqRGLC1kOTSbg7GUwmrdxZMP 5tN/WljqV3re8WdOfFKDppbnkfRbkrtsgEt41LJBO/1ody9efRiTbHwtykQK0cUEGebR 2TEmkuwRpHz4Qzxiw2hnQivl56izuzvcTz8HIwPxn70VLdXlLlD0NKCzh3wO+wMcQ1hr xmXm0H+pBsShcLZqVU122CGwYnTmRTppcPYyqkkJTLUsPtmgSq95QR+mxShmOqIVLMGq Cd5tw3eFmGn7H0B0IJsPALS6+MYNcjWhgThFVcOrUbOdYuzzG/3ufWczkztcJZh/8tGp wISA== X-Forwarded-Encrypted: i=1; AHgh+Rpy+kplnVeuBJnl673uNiqU3YPbM0Gk1xIB/6O8ZqdvNmaVTABRFDt7jPuz5mgnnHMcv5ln5EDd7h6ccjo=@vger.kernel.org X-Gm-Message-State: AOJu0Yy7qsS9brRi1+Zknp8CYleW3C56fJsUzD8/hAxS5fjiebi3KOGf tBzue8s+vqRIThwN4APbgzMjOeXEgA43eOKyodrLdSlcp5caa4SspUkQWJ2dHW4l3eOH6yuszlB g8kaTbAqedEGlHx9J8ryg0V5yw2mBFbkfHxEmtvLTTZk8JKzZc8sCX1efl0im8lEHdcs= X-Gm-Gg: AR+sD125wvfD5j5SmmpSwEuNhYVKl5bRDQkbgwXBtFiWHEGRMSCd0x0qYTbJ7GHps+6 hObGXFhMIlrYU4v0l8oeEF7AGP3gChfDSYOarrWc+Oun87yWdsbBcCOUESUfZbQIPqdYCsVzfpD YEb7Y6oF9AwLcx8cmizR66oZcESGM0THj24IxeX9XFQ/PtyPioVcoTILWfEB4Fv+9lM2xUYZ8z6 GanDLAjFSnuU5nEb+XlwdhZMQPtQTj9jy7KpdLR0NWYIRKf2AR28NnZBY37luYpwlUR0wPNMLXY Zxcvxf1YLSyfh/fFzRyLi3ZNk1JCK39rU1J5I3eAXppPDfYX0AJU0jb9xrlZ2K00CDapdvjrfMP S7xAcbjaYoaBR9pTfx5d4WvhTTEgInuigJw== X-Received: by 2002:a17:903:320b:b0:2c0:b6c7:227e with SMTP id d9443c01a7336-2d3b0aeeb9bmr389242685ad.5.1787049973499; Tue, 18 Aug 2026 03:46:13 -0700 (PDT) X-Received: by 2002:a17:903:320b:b0:2c0:b6c7:227e with SMTP id d9443c01a7336-2d3b0aeeb9bmr389241725ad.5.1787049972953; Tue, 18 Aug 2026 03:46:12 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d5c1ef9b3esm12877935ad.79.2026.08.18.03.46.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 03:46:12 -0700 (PDT) From: Praveen Talari Date: Tue, 18 Aug 2026 16:15:55 +0530 Subject: [PATCH v2 2/2] spi: qcom-geni: Add panic notifier to cancel and reset DMA during panic Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260818-add-shutdown-and-panic-notifier-for-spi-v2-2-eb25d56634a0@oss.qualcomm.com> References: <20260818-add-shutdown-and-panic-notifier-for-spi-v2-0-eb25d56634a0@oss.qualcomm.com> In-Reply-To: <20260818-add-shutdown-and-panic-notifier-for-spi-v2-0-eb25d56634a0@oss.qualcomm.com> To: konrad.dybcio@oss.qualcomm.com, Mark Brown Cc: mukesh.savaliya@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, chandana.chiluveru@oss.qualcomm.com, Praveen Talari X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787049963; l=4545; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=3GxZsZZ0axdMoB5qI/U/nBuEqGc/X6IlpBABVEOP41k=; b=Vmp+4pR3Ikr51hFiJQkeBKwYy8LsSjWFDL/TVXb0gU+xALJFCDZOATRZJwlU3DEhDgIHIjU3o jhERsAUS5siAEu8VSaQ+Qtip+ldmkiK6aTcujrlcX7CEiXIgUDnEBEP X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-GUID: DbKFhyWm0030lpXwuZNmYFGprU2YWIEV X-Proofpoint-Spam-Info: AW1haW4tMjYwODE4MDA3OCBTYWx0ZWRfX+VZq/OtCyfeK 2oeYdnDBmdHg1cEd02kNZunrUbveVjzaRmKxTSzedXgtUkVbgKLPwW764LNohqEBeNUIeAoOfbC ePjbqTqepP82yErFLcMgW7jZyOLuUX8= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE4MDA3OCBTYWx0ZWRfX6DSWGUrRS0lu 2Ys6mIKL4/9cSZU4F4lIAIiwyKN9CIm5B/hGHJEaojgrsAWGeK59ZdP81fEU2B2urSTmYe+I+ky te5fPti6IxCj28kjtYCp9rqLsMRYN73vhtlVc+ilEdr6AQ/OIQAKFVMKtpb0dMXoOhn972C6xqe wWl3U4ti3xpUoDZLx/umcydUOxPotyYd+fmw/KmUQUUjCH+ptktsgTtIO2yXwntQDfMice/vmh/ Eo783EWzFCLqibOh/g4jEyHjQG4EqXltg6ql0aBPiNBN8DJu48NMAGLv7NVxNAbJpvqUnqkJ1zc tz/N4d1LS30nRqQwWKDhxFXFmwW8OJGs/9leGxHB9W1QqyHHPzKPl9VJMvdTSOFZ7Gf2T+hJDYm 4fWfwNnej/aCCZghq7l3bpD1rZlDnyjB01kP1GeStw7nV5k2F8WMCwrLOSFmWsnwq5Sa28ayXIG 5YAcck9y/HJt+gHS0+A== X-Proofpoint-ORIG-GUID: DbKFhyWm0030lpXwuZNmYFGprU2YWIEV X-Authority-Analysis: v=2.4 cv=bfRbluPB c=1 sm=1 tr=0 ts=6a8437f6 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=xoWfBlptTmbWqyQa1LgA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_01,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 malwarescore=0 lowpriorityscore=0 phishscore=0 impostorscore=0 bulkscore=0 spamscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608180078 When a VM crashes with an active SPI DMA transfer in progress, the SMMU raises context faults as the DMA engine continues to access IOVAs that are invalidated when the VM's memory context is torn down. These faults can affect other VMs sharing the same SMMU instance and obscure the root cause of the crash. Register a panic notifier that cancels (or aborts, if cancel doesn't complete) the in-flight command and resets the TX/RX DMA FSMs, so the DMA engine stops issuing transactions against invalidated IOVAs before the system halts. For GPI DMA mode, the DMA channels are terminated directly via dmaengine_terminate_async(). The notifier bails out early if the device is not runtime-active or if there's no active GENI command, avoiding unnecessary register accesses while the SE is clock-gated or idle. Since panic notifiers run with IRQs and preemption disabled, completion-based waits used by the regular error-handling path (handle_se_timeout()) cannot be reused here. Instead, the relevant status registers are polled directly with readl_poll_timeout_atomic(), which is safe to call in this context. Signed-off-by: Praveen Talari --- drivers/spi/spi-geni-qcom.c | 68 +++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 68 insertions(+) diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c index 39d67f19244c..dae806818413 100644 --- a/drivers/spi/spi-geni-qcom.c +++ b/drivers/spi/spi-geni-qcom.c @@ -12,8 +12,10 @@ #include #include #include +#include #include #include +#include #include #include #include @@ -115,6 +117,7 @@ struct spi_geni_master { struct dma_chan *rx; int cur_xfer_mode; const struct geni_spi_desc *dev_data; + struct notifier_block panic_nb; }; =20 static void spi_slv_setup(struct spi_geni_master *mas) @@ -1073,6 +1076,62 @@ static void spi_geni_shutdown(struct platform_device= *pdev) spi_controller_suspend(spi); } =20 +static int spi_geni_panic_notifier(struct notifier_block *nb, + unsigned long action, void *data) +{ + struct spi_geni_master *mas =3D container_of(nb, struct spi_geni_master, = panic_nb); + struct spi_controller *spi =3D dev_get_drvdata(mas->dev); + struct geni_se *se =3D &mas->se; + u32 val; + + if (!pm_runtime_active(mas->dev)) + return NOTIFY_OK; + + if (mas->cur_xfer_mode =3D=3D GENI_GPI_DMA) { + dmaengine_terminate_async(mas->tx); + dmaengine_terminate_async(mas->rx); + return NOTIFY_OK; + } + + if (!(readl_relaxed(se->base + SE_GENI_STATUS) & M_GENI_CMD_ACTIVE)) + return NOTIFY_OK; + + if (!spi->target) { + geni_se_cancel_m_cmd(se); + if (!readl_poll_timeout_atomic(se->base + SE_GENI_M_IRQ_STATUS, val, + val & M_CMD_CANCEL_EN, 10, 50000)) { + writel_relaxed(M_CMD_CANCEL_EN, se->base + SE_GENI_M_IRQ_CLEAR); + return NOTIFY_OK; + } + } + + geni_se_abort_m_cmd(se); + if (!readl_poll_timeout_atomic(se->base + SE_GENI_M_IRQ_STATUS, val, + val & M_CMD_ABORT_EN, 10, 50000)) + writel_relaxed(M_CMD_ABORT_EN, se->base + SE_GENI_M_IRQ_CLEAR); + + if (mas->cur_xfer_mode =3D=3D GENI_SE_DMA) { + writel_relaxed(1, se->base + SE_DMA_TX_FSM_RST); + readl_poll_timeout_atomic(se->base + SE_DMA_TX_IRQ_STAT, val, + val & TX_RESET_DONE, 10, 50000); + writel_relaxed(val, se->base + SE_DMA_TX_IRQ_CLR); + + writel_relaxed(1, se->base + SE_DMA_RX_FSM_RST); + readl_poll_timeout_atomic(se->base + SE_DMA_RX_IRQ_STAT, val, + val & RX_RESET_DONE, 10, 50000); + writel_relaxed(val, se->base + SE_DMA_RX_IRQ_CLR); + } + + return NOTIFY_OK; +} + +static void spi_geni_unregister_notifiers(void *data) +{ + struct spi_geni_master *mas =3D data; + + atomic_notifier_chain_unregister(&panic_notifier_list, &mas->panic_nb); +} + static int spi_geni_probe(struct platform_device *pdev) { int ret, irq; @@ -1161,6 +1220,15 @@ static int spi_geni_probe(struct platform_device *pd= ev) if (ret) return ret; =20 + mas->panic_nb.notifier_call =3D spi_geni_panic_notifier; + ret =3D atomic_notifier_chain_register(&panic_notifier_list, &mas->panic_= nb); + if (ret) + return ret; + + ret =3D devm_add_action_or_reset(dev, spi_geni_unregister_notifiers, mas); + if (ret) + return ret; + return devm_spi_register_controller(dev, spi); } =20 --=20 2.34.1