From nobody Mon Sep 28 19:24:41 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 D3BDD477986 for ; Tue, 18 Aug 2026 13:28:20 +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=1787059702; cv=none; b=W98+nXAaxP7l/Xx9r5PrLXVDXM1T8KFscwww/69K+p0Y1K+zU6ZX4u72AEor/etKXgds8lUpbgBKYAF0orvxF7OVYxv1OCwbEHwGp+Mx/uaQjZYrtG+Yz+gCH9lN94yj+2QnkbTbNzY94D0E88Z98n7gYeQfVQXo37luoVFnJ8Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787059702; c=relaxed/simple; bh=TovCzYyigZPcuqdxaq6mBJ/WhakHhvbKPZIUTQWZczM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=K+QRoggC7yDPxYP3cOsUMwNfw4hjmVFEtg6ESh+G0yO1j/uuxjgl36znWiF1hPrnryS7VDILiii7fPmBbIxX8wvpK3Ha/I5AxEZOAZP0jKmq8VAVPjTuNThppgSu5HvaYHYLok596gw4bRJAwXDK7bZIiDdICuJTEoM3WvvbeZI= 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=JeETVJGy; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=D6piz1Gf; 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="JeETVJGy"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="D6piz1Gf" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67IDQdjH1350514 for ; Tue, 18 Aug 2026 13:28:19 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= xZVarPA2YK70hu4oSEiRrCsHgH73gXrWPpCWXncwRgc=; b=JeETVJGyaVyPhj9t gV/4cX67CCMJZNX9q/kWAYMbx9FO0iHexa7ALp9jywM9CrnL1sCjG8lo3EiGYcxe Q/oh69qaRnfCHwFX9EWzhb3rnJj57B4oPTkinSEb6We9MNlgKB7dfChjOazC7vWh ysGICi37Dcxr49OZb3fwVyqCCmsy8ErmIQGnyrSYFvSITP0PTnwIrVLyAiCzDvj/ kGlaw9BDW6TWvS0/8W1Ea376ueu3vPHhc42acB3NrkgmDJSmDSe2ZgRP1T91LY8e UgRKcTDO5Vse+MrRVlQMgCaOFF37Yl9bIGrZX7dzAssxHuonrkOmMdGnE3C5DwXH 7KORZQ== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4nb18ryb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 18 Aug 2026 13:28:19 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51bf321d786so62653591cf.1 for ; Tue, 18 Aug 2026 06:28:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787059699; x=1787664499; 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=xZVarPA2YK70hu4oSEiRrCsHgH73gXrWPpCWXncwRgc=; b=D6piz1GfBPJJtdXAz+YrOYfcX6c/VSzVsdZYkPOrDQHZIK/+0Lql/jvSH0560CgD7V +wRY/ee5pKm/gMYy3NjIlj4J+cNY1SzXe2ZpyIv4DoVtDGAB79jSCig3XPE4o7ToIHZ4 nEePUM7R/75u5nYiN8T13l1mEbsNLpCwMfYoaSEf/OpOYevukz87M0mGal11RCOHDgVE WK4lBw5PN3ZRBz2BvLFJ+HyL8Vt8NYVf7TW9UQtHu7fSJpWN/A7n8fz6aO9VHKwI2h2q 9P9Bc9fZedkKfQm6Od6Tb9gYNIQYbiZcd1IbLNujIDV3foLq2ifjJGnRO+sPXvYSi1Pf zpPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787059699; x=1787664499; 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=xZVarPA2YK70hu4oSEiRrCsHgH73gXrWPpCWXncwRgc=; b=hMlIjDa/3vlj5RAgByxjLUAJZBzeYDlX6tYIR2Ej2RaF1d6B3/012X+VAIpMnC8ZCB Ccj6iNhEG7Y4OtePOAr1VuM0B1XwQ2qIrccDrOJrp416XQpFh4g/IdzBoCzXNsvT1Chf ne9z+tAkfTgYimomlwiJaZe3tADGZty4UaWbTcqp5vTtBx6m9qMS+cN/AKi1zjIw/uKN NVHDc6hDCfu7m6iYZ+q/Ep2JNCCbby6O3gOVsnSjdSSwQDdVc2hFQvQfuQLuJ+66FTRQ xV4iJaa62j+4K15nRrAsylgBQxEuuKUJEToq3SJ9Kgq97ESzL3wgBIwG5MsY4buZbkgA 3c8w== X-Forwarded-Encrypted: i=1; AHgh+RrZ5W4Q1vuI7WVIc9yqlhpbf6OFNh8kqQMJseBm9gflskOQ1L75CqsPdFwPaeQunJ1Q/f5ht8uuoki03uY=@vger.kernel.org X-Gm-Message-State: AOJu0Yx2/whKNljnE55ilzg16NnVrVyFepzzb4R110OlCkJ6/tfh9hou iz877coxD5I2D8ZYHG/BSjFhfzGDyGuRGaamQZdqJKDQ9Hp/VPOWwYjYN1CEEmUUYHkSBsN52x3 M71RqHXkmFiHER+sf0QL2TN2FgeLb0NFxuiRF8ze0aRjVSIagkdyjaL0iAqtPdsEVFuc= X-Gm-Gg: AR+sD11vlKrxVRvVwqqG9Z7oUU9s+QY69J4IZhzP4pvxSYNYTpAqaSNBiQv7bQfTlyn Kk7xBFoW+WYiL9dlhHp4WWvv3Jg+awut75PnaEhQApBYJqRKYPDhfHSmt84rwqt8QusAX6Z8yuk gj9wOjLHVNRLWePUlnDrFRwBv8EMq5QnyKMn98kMPwpJwnHm2vKsIZ0NxT3D60LlprBJkNeHV0X V1DQVfn5aez6WffK5r8wsuMnZVqoToWxVyWha2BOZcrSL4Mzoo/kmbkAhYsdOs50kDNazhA0IsT vN06aOZfflg5mWEeL1XUPw58c2WW5pRi0USkiODsvIfcUu1LsjsGD4DS7HbSAcOk6kOdh21gDB7 TOZgLk42FIs7pW0/oy61dGbHEIjU6iZZnEA== X-Received: by 2002:a05:622a:1b92:b0:51c:849e:e222 with SMTP id d75a77b69052e-52d854affffmr293763591cf.36.1787059698834; Tue, 18 Aug 2026 06:28:18 -0700 (PDT) X-Received: by 2002:a05:622a:1b92:b0:51c:849e:e222 with SMTP id d75a77b69052e-52d854affffmr293763021cf.36.1787059698313; Tue, 18 Aug 2026 06:28:18 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-90c4580f611sm32304636d6.6.2026.08.18.06.28.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 06:28:18 -0700 (PDT) From: Praveen Talari Date: Tue, 18 Aug 2026 18:58:07 +0530 Subject: [PATCH v3 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-v3-1-8b62c4bc2d21@oss.qualcomm.com> References: <20260818-add-shutdown-and-panic-notifier-for-spi-v3-0-8b62c4bc2d21@oss.qualcomm.com> In-Reply-To: <20260818-add-shutdown-and-panic-notifier-for-spi-v3-0-8b62c4bc2d21@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=1787059691; l=1581; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=TovCzYyigZPcuqdxaq6mBJ/WhakHhvbKPZIUTQWZczM=; b=WgpUCGiLcWxkWH+Cm4TePP7JaBUeDhb32z/HmWuPcq9sRW1HSXtGIsGOnbid0RPszGK9wfMMs fgWC+TQ4H2fCf5HCm4+OI1c7AZxQeHGWJ7xzJuyTc+PhIsX1BAuqafa X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE4MDA5OSBTYWx0ZWRfXxqNyJJNsAwT5 2blprbFnjgNiyTFzg+uPeKnzwoZcAbkQy7QUrNuEWvSRbpw1lHP5kDjt1srgSXvX2NotFJ8+lja N8vGbORjJZlf9hVRsbDQzCmKQq+uDSR6kIjcxHukSf9iEcXiVinAxziQ6U0M/qD54Y3DaMLE/4z Ww6nOkY3ZWpcZDC07nK7wBHUMQl6Oy/AYh7i9wN3+/PIbrviKuWXXdr2OEUZP/N5gvK8LgAIJef gYdpC6t35bno7q0GdCy85Sp2Hy4lG5tCCH2y5fbNhoPGp4v0xFBMkbnI4j/CK50Yl8jorlV+AvI OohjmZR+qc8f/Ff2N65k0uMVt8HHmEw9HHHGRu8XhvM5lpHby2d18aweOQZP3xMbaOC/wZVlxld 2H9xq1I7rGZa2Ei/L1BpUz+WZvuxGZ3gu5L6LbwPWTLEI9JWcVKRjDRSxlP+VrbL+xOVJ6syBsj 7jqGc+TYJAQgNzwy1Cw== X-Proofpoint-GUID: exBpRyBBBsUiv8gc0a-KPzi9Z3gEwAiT X-Authority-Analysis: v=2.4 cv=Ze4t8MVA c=1 sm=1 tr=0 ts=6a845df3 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=Bb2fkNEn-BfLECvCvWMA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-ORIG-GUID: exBpRyBBBsUiv8gc0a-KPzi9Z3gEwAiT X-Proofpoint-Spam-Info: AW1haW4tMjYwODE4MDA5OSBTYWx0ZWRfX+DL+BZTBlf22 VL45TrXLJOVQhz8dGnZVGTCZKU1OOm5Rhk+iZ1c+LDwGYsYajUAbNidOdjwW7IaJkq69YZU136A f0J8BmNvUk84mKXUMNzW8DGcSscvVdU= 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_02,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 clxscore=1015 phishscore=0 impostorscore=0 adultscore=0 suspectscore=0 malwarescore=0 lowpriorityscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608180099 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 Reviewed-by: Mukesh Kumar Savaliya --- 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 6c57f8309a3b..c65c1788325d 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; @@ -1241,7 +1248,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 pm_ptr(&spi_geni_pm_ops), --=20 2.34.1 From nobody Mon Sep 28 19:24:41 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 CC65B477E2B for ; Tue, 18 Aug 2026 13:28:24 +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=1787059706; cv=none; b=AzWOywd5LjWqhKmN1EA5CT888k6MWVtLZJy3wHVU3NFfU8ZvRRU5IamsEWEtOHRcAQ/M1lUNY3Cv7dE3fT+mO00oaSTs2GX1hbC4t0JdGsiLd70dQ4E8s95dhQxSYYI36lknz0OFBWgM/l6xqL8kGxCx/hEHHbzjSRP73bpKt7Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787059706; c=relaxed/simple; bh=BpLYbDTze5uFtkiCRqcEFWa/uhNMG9l7EwehucHfhME=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M/tYlJLx3gPsnRu0CgJJ/u2gws5bZoXNgklNVLNmiKLFr3NDo3zg44VZQQtFSWPicTnY0OiVKL/M3f6v4zsWrVUywZRrxDRQRWJ2I4brGM1L86MVPBIcdW8vv1+kQWs5a4iFrmnUkD5sMj3lsSdydVvOIQTwQ+ovHMP0jMYGsXA= 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=IgjVVis5; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=JPF+Lm6Z; 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="IgjVVis5"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="JPF+Lm6Z" 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 67IDQhoc1028397 for ; Tue, 18 Aug 2026 13:28:23 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= 3mgtIdNm+Qcja3pfQQpEG06zXdPExxszQT4cQ1BBpI0=; b=IgjVVis5adGb0887 AK3ZpaD/sEdq8TaiDYx7uoAckyxGKBK4bH3xAzRGZsIOnetnT4KQwRG/c6MIUoeu 3GIMoOnQnDXDtxQaP+G/MFopW5iSezk1nqxa+QZb2UbKZKUqTolqeiwIQZKKQhKk CGKSct63HX3/sRynAhHRk9mGxmec3HTbA5VI8zq9xwhL1xI1GpABYQV66jnL2Ktm 0zZwstb15RgI46HPT/Bc5few+hGIRPVjLubhDLh+aUk4bv0zY1if0HMwK8dOR6ry Zj4zZ7RFyHdgxd15L7W9FjXhwvmBeFXmSPBRYmrlmkz/j77GYitVaPrIDklEvzMi WX1k3g== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4eqtthhs-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 18 Aug 2026 13:28:23 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-52769fc3f2eso61077321cf.0 for ; Tue, 18 Aug 2026 06:28:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787059703; x=1787664503; 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=3mgtIdNm+Qcja3pfQQpEG06zXdPExxszQT4cQ1BBpI0=; b=JPF+Lm6ZFqlPUUobRbR3vYWRU9vkSIs/wecp/t3r5qsF0E0RLyLjf3JxCfkWbZPf4+ tfiN0S09VjfQ+wqHpJCln0O7kwx4K2xQJf4O2bhId9yQ2s2ebbXHe6GJqDpde972Yna1 Uj611Ro/DqE0nUge/GzlcLlovxzjgZxvugYdTjSrW/XmlKtKbHy3DB9UzzecVM1brKYK qj93Wi93bT/2TiZ0cApJloWu5D85g/ZMpgSuj3sXj7ltJMnNg+Dt/6cK2cjqohap1uTk RZUCCt+eXWTsoRjc97Lx9Nur7qMU8fexoHwiJdeBEpJB91GAP9351fWldNYey8LLEutJ WAkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787059703; x=1787664503; 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=3mgtIdNm+Qcja3pfQQpEG06zXdPExxszQT4cQ1BBpI0=; b=Q3ryiG4tgI+AnWazEVZWp2CSZIth6yGkpOnShMdAts/W70PQhZhae13WjzoqZieesU OQxIbeDX2dUOUnqV6SDolGH+JWnVYtfL0VXgAgQUIXtDtHJGYFylYsfsrKrL+wHWehfN 7AgXPFENSsCIsvLszjmfF7KzVEvnEc+CijVqHl5VDFZqnE02Mx+TOjrW7TChRHWimSDT Lz6BsvYzbLuiJHQO5iG4NlKC2d5uLL/TDyY7pmXO2y/xx2xT816Nsl3gEUv0HoyCVOYY sWd4opNDrxQRszQ3REOndo18nzWwB9baSevUXz2M9/LHY6sIcKyPF+7+jeTvJRu4ip1t Eouw== X-Forwarded-Encrypted: i=1; AHgh+RoVbv4f3XCAN8Pom15gcptaYxKq+M7rJwaWGP/Y5HFtWeNcP8/ozIIOexyEMPJSip8AtQLSI/I3p4FsgaA=@vger.kernel.org X-Gm-Message-State: AOJu0Yx2rDfsFFlKFAzBa67mog9coLOc/hD7DsLC05IM+KXS11onvzo8 /pRwWjyWSAreXiUA3INBv3BOL2OE5bJe73IGvFDHQ8EhyDFRYvgRERT2FU/7wfAPEzrA83kBxCD MthCVaoplCozjtGM+onxK6wLpgwtRge3wqONU5fv+FX705m6uISsirPCzQDYpMuSEqXg= X-Gm-Gg: AR+sD13FhpNYoiSFRbDjj3LAaR1SxiPFhpgx0Ys73r6IBrVUHpdbqgeH2sqvbcAuAYb JmKzZvEvXbs5EoGlmupGUV/so3j79LqgcSkJ9fpoXAHD1+5z/i4gNqD2kxKFtNTXrua/0ZYPndZ 4cquDDGG6mvtF2px2IuKm3+Hpq7m+mjfJLyD18DIsMXMoBQ7kaQrj2xIl3J4TNygpF0Suf1aMGm JKw4NT4RePJzuhzhv81fVV29gcnXAVtt8PxhMRjsXkXJFYqJKMUvBhChMCpMtATTDU6zoAaE41c 5Vk0kERj0kLlJJU81bPxa/Tg3ZhntdPCYYcueMT6PBezviV7CCBEG2OzaM55iTQjYO6NV11HYTL 8MEPAqtpHHOZ13UiHpIOhhUM3vhrt7nRaSw== X-Received: by 2002:a05:6214:3209:b0:907:bf98:c8fe with SMTP id 6a1803df08f44-90c4b3b832amr82744476d6.23.1787059702673; Tue, 18 Aug 2026 06:28:22 -0700 (PDT) X-Received: by 2002:a05:6214:3209:b0:907:bf98:c8fe with SMTP id 6a1803df08f44-90c4b3b832amr82743446d6.23.1787059701954; Tue, 18 Aug 2026 06:28:21 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-90c4580f611sm32304636d6.6.2026.08.18.06.28.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 06:28:21 -0700 (PDT) From: Praveen Talari Date: Tue, 18 Aug 2026 18:58:08 +0530 Subject: [PATCH v3 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-v3-2-8b62c4bc2d21@oss.qualcomm.com> References: <20260818-add-shutdown-and-panic-notifier-for-spi-v3-0-8b62c4bc2d21@oss.qualcomm.com> In-Reply-To: <20260818-add-shutdown-and-panic-notifier-for-spi-v3-0-8b62c4bc2d21@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=1787059691; l=4545; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=BpLYbDTze5uFtkiCRqcEFWa/uhNMG9l7EwehucHfhME=; b=LWzceMtLaSx00PKV1NOaClTV6SVIcr+ol8WyWfyRqz+P3Md14Lcxe88mRt9e1rOLsaHVg7AkC KXAFeL3wo8aBclbdhwabWuT3a9B265E0sz5akh2ws3lQsGveno0TdsH X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-Spam-Info: AW1haW4tMjYwODE4MDA5OSBTYWx0ZWRfXy+4iI+VOdwJU QAfJlsDdgoEG0WSxKLb4oSD0V9k2u+nCn8e1wMAT4KjFpJq035fSmUu+Vq5yCFbLpIZM391TJRu 7vDV48QkoAMEvLLavOiQ4P9af2JLuxI= X-Proofpoint-ORIG-GUID: EbMgvHdiAArYngSJpRZR8cGVH7slJfwi X-Authority-Analysis: v=2.4 cv=UfFhjqSN c=1 sm=1 tr=0 ts=6a845df7 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==: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=xoWfBlptTmbWqyQa1LgA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-GUID: EbMgvHdiAArYngSJpRZR8cGVH7slJfwi X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE4MDA5OSBTYWx0ZWRfX7hmKBSaUbhGA HYH2XBKkAZGttXsuZaUqKRc2Ru7eK24vtYaAHHGXLNz4d6Ebr/ylChNi83pf220352kBzOjpkOj ycVoIBBFTWN4HLHpxqC7EV2h3ovs/8CypW/LNfJDq4u0DltA39PYBs8aTblmHG9gPOzUrdqwGW6 Mwo2Pm/Aoui6VyiKpWzOwcMO7357g/D1Eh251TSUWg3Ql/kxMOKfjHze8gOHYcBJboboyJ+pdB/ fUZKFFuPufdfb97mxaI0Bwi3WgO5hdPOv+DTSRW+aon6GHbnPqpacMIV3b5VNIGp9dhYQ+HKbpA z6lzw1WA6y/TjSFqcfV0bm8TVDbWD5QKBQSvXlnIjMaRIA9t+6WWDxOCbPyPICu7EjWLSUJGM6T +gNqYgWz6k4oiOq/fLEPNOn1m49b2Z18wr8EtghVI6yIKmJrHTahsyTZeWOsSou46zmO56P3p/2 STff8jlhybXzg/65oTw== 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_02,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-2608180099 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 c65c1788325d..f272bd0cb640 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