From nobody Mon Sep 28 20:09:07 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 4C5523769F8 for ; Tue, 18 Aug 2026 05:01:28 +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=1787029289; cv=none; b=FF41OMOxJrlbgZBfs+tbBrqs3Ac6Hf4i90vr7YsG3Kz5QnEmdUl1NxE7D1rFkuqWMcEDHNdYCCmXo+lw0hV4LAAu4R9Rq/+QBHy23+5pwkaqfaHaMDlC9HE383BuCtGdP70XhV3OGz4160FUsUXqRhi0hDh821UWUHlBlZ1GaO8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787029289; c=relaxed/simple; bh=++4ueJUBuR+ALJL9F9Xv/e1NPCYzmBqxDWJrIW04iiM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UM18rNoC9WIRPgCaNAQkQShC56dK+CZcGw1g7vTGg8KHlb2E8a1VAfkTUdZ2y4kvCPhyUEujRuUj+yRvhRAPWpweJ9q873WYmJpBIq4enV2if2fj4T5iny5tscqNaQzTl1KOsOyjkCRB+JLVoMivhi0I1a76UrH3e6IPSBf7rpQ= 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=LYszM8VN; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=b0Nlam6j; 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="LYszM8VN"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="b0Nlam6j" 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 67I45nfl4187133 for ; Tue, 18 Aug 2026 05:01:27 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= HDLr6tMxOU8X4ZoOR5cvkxyRwp+J3THXTF2vqA6irL0=; b=LYszM8VNilR7UCEq 8rs3IknO2Kk5BMXlQ7Umj3xkKOEk1ZmaD7ZuiimV3YwJlhYOpLnQ+8ITes3v341g CD+OZJBdCxSraBXv+HZLmflAStqN+pDXfjBMf3Fu6ATMAb6oHXSQMjmRoOdEvypH YX54KxXW9LAXMn3IQcTfWknILTo9/dyo6E+GYo4M7PINOuiF38K1Yi00xjsbMxnS LClETud7vGPUwuyUL6YCupKSSc/EBcI42PrmH2rthE8yKPTAUK2+rslIYxmGkGxl O+MZZRad4cJkKeIqQT/yU2gmDoNCsAqKidzUyTt2YH08TmW4lIIK2yZQEm//Vp8G Bmz/6w== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4g2p0759-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 18 Aug 2026 05:01:27 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-84865f326efso4367890b3a.0 for ; Mon, 17 Aug 2026 22:01:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787029286; x=1787634086; 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=HDLr6tMxOU8X4ZoOR5cvkxyRwp+J3THXTF2vqA6irL0=; b=b0Nlam6jb+52HleLm2f5jI2mfMTtC+cAN0xPo7UVsQdZ8nyB611EgyEsInwGafumjf jGl7octP/OHakF1LB+SGFn+HvdyzJ2VCCEh4YaMlxbhB6wvKBDEnlVVVO8RAmPfLydZb ZBABS8mt8iQs+bzoWzXjw+CH124OMDo1ci6BGOmQ9FQeIihDVDdLQOBNfwaH2Mr/2MTZ OHjiD63u5jkwNNVmaGYDdqYYxoB0n22z5TOxZO6LhFMYpwtQxCFnC0lshIPgg2VeG4kj UaOAUOiYkvbHG3HcM/qjdy4awmerSIGJtQpzrKEYk8m7t6p9TvZEWzR05JElXMB74Qaa EjuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787029286; x=1787634086; 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=HDLr6tMxOU8X4ZoOR5cvkxyRwp+J3THXTF2vqA6irL0=; b=koN7Hxrg3A9745OfMwK8UASpAZwY5PdjfZ22C9iTgCBjwq6rmVcPlr5SC/idYlEiSg BMNfUS5bAgfcVHuKwiiw4ptTt2f5HrGrpnRS+Fubd5x/RFfGfmECBQ73RT27QKXSsN3y yBPcDAX87keXf476qkdP4YHKgbO8pOhBB1eoKAo9JHEAnSOq+V1x7p8EjMqgRDoAbfzR jagp5Mk0XCxfcO4ZBAmg21+Uxja8Z6AqQVNmx9kw3sZNQl951oCA8W+0L3MLd0cZEPEY 1xciFcr7x9ITR3zh0tJAUpG7ZIctriKqUUHErDuHse7U11KoPG0sCgeKoWWzYXJYPndw SJsw== X-Forwarded-Encrypted: i=1; AHgh+RqSlFN5sIfUmte+nmy9FtafUNC3bYrHlONV1bllFL1MjAtKch4ulFXcXbL9lmCx85TPknCKTtVORSkX0to=@vger.kernel.org X-Gm-Message-State: AOJu0YwhIis5OHaHqqHG4NiU5kMX254x359qk3fTE85qTzV/RMUbVAKI CYJ52EQHZ7ysVNXIQJSXLQ3TweoHE8ovxqn4MW/+GH9Lwfu7JIlX/Z2SaX1p+T4ci1M+HjRndM2 SWcGVselJnrZDL2jH+Uu2dYAJKXR9SxWu5clmVT08tzNOzHSpiqqLV283HG/ZZq5PqeBGSxMyB7 0= X-Gm-Gg: AR+sD124VymiM3ANtkR+n/gs4VGvAfPaZ6mziKM/N+KCXTDoOF5gV2I469dTQ8WYKMh +vyv9WlgZOTwO4YgFUb2ZEph2mScVqAzkp+yyFs4a7VKeZ2lGcVISmbp3OZWZB+s0zCvCc+GdQA dvp7bOD7SnT6/8FCdYei2jDq50c9K0KjcUV3S3FI7HZDKuRnocq19IJea47ORAsI+vHZg7bgLLU ASmwNAVy3y+J4hCkGzns40QHbtxoaCZlIEZ/TKAhQU2V+4eFt/5XHGLbZUl54AHJUJ1x0g4l+G/ O8ba9r/lzTQXWomxJWVB6tEKW46JfoRQKAio90YDl6X0xqT5NNYmFKsf5bPnZZwXZncx0fm5BKG cppjokDOKE4mb8PIy3KVSgBeOAHFOzX/FhA== X-Received: by 2002:a05:6a00:408b:b0:82f:2b0:2809 with SMTP id d2e1a72fcca58-84fde3651cemr31654348b3a.1.1787029285997; Mon, 17 Aug 2026 22:01:25 -0700 (PDT) X-Received: by 2002:a05:6a00:408b:b0:82f:2b0:2809 with SMTP id d2e1a72fcca58-84fde3651cemr31654223b3a.1.1787029285376; Mon, 17 Aug 2026 22:01:25 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b6fc0158sm1028876b3a.40.2026.08.17.22.01.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 22:01:25 -0700 (PDT) From: Praveen Talari Date: Tue, 18 Aug 2026 10:31:17 +0530 Subject: [PATCH 1/2] i2c: 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-i2c-v1-1-9f31b5fae5f6@oss.qualcomm.com> References: <20260818-add-shutdown-and-panic-notifier-for-i2c-v1-0-9f31b5fae5f6@oss.qualcomm.com> In-Reply-To: <20260818-add-shutdown-and-panic-notifier-for-i2c-v1-0-9f31b5fae5f6@oss.qualcomm.com> To: konrad.dybcio@oss.qualcomm.com, Mukesh Kumar Savaliya , Viken Dadhaniya , Andi Shyti Cc: chandana.chiluveru@oss.qualcomm.com, linux-i2c@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Praveen Talari X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787029278; l=3344; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=++4ueJUBuR+ALJL9F9Xv/e1NPCYzmBqxDWJrIW04iiM=; b=qoh/kF/CdZGmjzzp8V0TC/GMZvud3T2lPhY+DJ9aa965phrFGeje7GZcT1wurx2VhlD8NUqPH 2i0bb1278TYAZdZ8/aYXpPh1NAQ8XcW7rlbkx0AlNf9/C0QYWwwqjLa X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-GUID: DUUEkGw784EfIVXgmbEwWheZTOwqhu60 X-Proofpoint-Spam-Info: AW1haW4tMjYwODE4MDAzNSBTYWx0ZWRfX8dW4V65MZJcA rzqvk2SDNaJGL43ynTuQT1fPleEmrhpg0BJB7icOw6a3L/qzKViAekSEnQNgpqjtJGUrchtIKBb jYS1q1tM7m4e/ogXg//Tx0N1RZfNFEw= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE4MDAzNSBTYWx0ZWRfX+MC8+3CuQArc Mqg1fT3oJg20pnD8+J6Co3Hycjb8/7DQHXguWsnlKsMC80uWxXZh4AGVg9cevcbCmq+tMlAwoUy mEpp1YLpEfFwFZKVFp1DOAN49C96e+lfKDGVeAPSS/ypMO241OAagvzjRhidTARKRonGp6yrNUG 5FwhGGN094j3z1qvI4yXokMFc30q3Ua1S4IubmPM8xvw+Puv0pOCmk+4QC6hv6+Jo1qoMi3NH8M gRYUZXprNPpT9xi2WMCBDV1iU3nqFisuwhyFx73cMbsiCRpryQ23K8oa4R9KJqF+CANgu3taARJ +2WR4k2kUbRKLvIR3oSc9dcRpIzv/kkFE8UHlod0/VNcYXpAzC4r+ysQ2y0BrgJPNtW7xkAtHVw ANyDGDOfYgv+WGvZvGQph/pisaFI0BPtB0IIW+wpXCMxJ1dGI9/aqcvSiXVkSvS6P5RfHQyBVbL WU3DdsWyC14ytW4j8LA== X-Proofpoint-ORIG-GUID: DUUEkGw784EfIVXgmbEwWheZTOwqhu60 X-Authority-Analysis: v=2.4 cv=bfRbluPB c=1 sm=1 tr=0 ts=6a83e727 cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==: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=jy3MxQloX0jDNi3JzIsA:9 a=QEXdDO2ut3YA:10 a=zc0IvFSfCIW2DFIPzwfm: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-17_04,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-2608180035 During system reboot, an active I2C 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 geni_i2c_quiesce() helper that cancels/aborts any in-progress GENI or GPI DMA transfer and resets the TX/RX FSMs, and call it from a new shutdown callback before the system resets. This prevents both hardware state corruption on reboot and SMMU faults during VM shutdown. dmaengine_terminate_async() is used unconditionally so the helper is also safe to call from atomic contexts such as a panic notifier. Signed-off-by: Praveen Talari --- drivers/i2c/busses/i2c-qcom-geni.c | 51 ++++++++++++++++++++++++++++++++++= ++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 658636c1ee0e..10c6a4b0b825 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -1034,6 +1035,53 @@ static int setup_gpi_dma(struct geni_i2c_dev *gi2c) return ret; } =20 +static void geni_i2c_quiesce(struct geni_i2c_dev *gi2c) +{ + void __iomem *base =3D gi2c->se.base; + u32 val; + + /* Make client i2c transfers start failing */ + i2c_mark_adapter_suspended(&gi2c->adap); + + if (!pm_runtime_active(gi2c->se.dev)) + return; + + if (gi2c->gpi_mode) { + dmaengine_terminate_async(gi2c->tx_c); + dmaengine_terminate_async(gi2c->rx_c); + return; + } + + if (!(readl_relaxed(base + SE_GENI_STATUS) & M_GENI_CMD_ACTIVE)) + return; + + geni_se_cancel_m_cmd(&gi2c->se); + + if (!readl_poll_timeout_atomic(base + SE_GENI_M_IRQ_STATUS, val, + val & M_CMD_CANCEL_EN, 10, 200000)) { + writel_relaxed(M_CMD_CANCEL_EN, base + SE_GENI_M_IRQ_CLEAR); + return; + } + + geni_se_abort_m_cmd(&gi2c->se); + + if (!readl_poll_timeout_atomic(base + SE_GENI_M_IRQ_STATUS, val, + val & M_CMD_ABORT_EN, 10, 200000)) + writel_relaxed(M_CMD_ABORT_EN, base + SE_GENI_M_IRQ_CLEAR); + + if (readl_relaxed(base + SE_GENI_DMA_MODE_EN)) { + writel_relaxed(1, base + SE_DMA_TX_FSM_RST); + readl_poll_timeout_atomic(base + SE_DMA_TX_IRQ_STAT, val, + val & TX_RESET_DONE, 10, 50000); + writel_relaxed(val, base + SE_DMA_TX_IRQ_CLR); + + writel_relaxed(1, base + SE_DMA_RX_FSM_RST); + readl_poll_timeout_atomic(base + SE_DMA_RX_IRQ_STAT, val, + val & RX_RESET_DONE, 10, 50000); + writel_relaxed(val, base + SE_DMA_RX_IRQ_CLR); + } +} + static int geni_i2c_init(struct geni_i2c_dev *gi2c) { u32 proto, tx_depth; @@ -1209,8 +1257,7 @@ static void geni_i2c_shutdown(struct platform_device = *pdev) { struct geni_i2c_dev *gi2c =3D platform_get_drvdata(pdev); =20 - /* Make client i2c transfers start failing */ - i2c_mark_adapter_suspended(&gi2c->adap); + geni_i2c_quiesce(gi2c); } =20 static int __maybe_unused geni_i2c_runtime_suspend(struct device *dev) --=20 2.34.1 From nobody Mon Sep 28 20:09:07 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 8AB6D345CAA for ; Tue, 18 Aug 2026 05:01:31 +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=1787029293; cv=none; b=A8fIDVcelx8Qjx4RpNzp1YOly+srmjP+/VNVxBRYxw4KgseAo/sgKd/T48oXq1hBOu5bYwINpGCPLe5RMHirybCdWpPl+8kOY+8os8RBtJuqZ7+fd8o/4ZJve/PObn24c7yYBQ+78InUsx8OuwyM3chpg1OwiF9kZSCzvklrxSE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787029293; c=relaxed/simple; bh=nWVWXo8PeGEpgHZRaEwwycO9V5CYo0ghXOEjdfrH9GU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cjw7EyHec1PyZezGyxgz5b5T5zkjwyOgvh3BQmz4CCz9GAXRyxSrcOWFB0LKenPRPQ0DOS1RZJRsfut0vXpKght1sDqppyDyPJErBErjs+IdZJJCTv9KGt6KGdpzpKdKw4XML+GbSZhMx7jEajvJcuRQpGdFOLTWHx7ptMQNOuI= 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=Y0u9Znq7; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=hmw/qbqX; 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="Y0u9Znq7"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hmw/qbqX" 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 67I2YPo83761854 for ; Tue, 18 Aug 2026 05:01:30 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= eUvixyY9G/lT9AeLA6BxhhEw+FAfIWOYlEArceVOqRc=; b=Y0u9Znq7GI9C6nS1 qYy9nlISszDbGq0eSjPmMw1GBRJVmBcYdbn/RqKywQAswy5zCUMa+1DCJWIx5bi6 70VPmezBUmsIKbCeMF2Q9MPAjax2sV12jawNPcxYgH9HVwxiMJf0JP9g3PhxTdjX uAG3GD4qUz5JDANcAAEWOiyzpSPZ/RGZGE9kz4Jg2JV/7k7QT7SAw8eyW9tdp7tY uqdZrqNlyDzl4h/3f0CsXiguIru+poJqzTU1cvBXCgJlQmT7uK7ElY5s95R2Z4BE /aWCZgN1Rs5/KhshLPa2pJn+o51avxAD4hjIw/lonLhWEZvS32Kdh0AY7e/hMN5o 7CmArg== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g4eqtrgn5-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 18 Aug 2026 05:01:30 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-84885a4fcabso1489491b3a.3 for ; Mon, 17 Aug 2026 22:01:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787029289; x=1787634089; 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=eUvixyY9G/lT9AeLA6BxhhEw+FAfIWOYlEArceVOqRc=; b=hmw/qbqX8pu/ngBcNq3js4/J5WB+uJbjOPfiGohoDMRa7R3ItYl81S3mdFM634/gj5 GL/NYrie3jy37kylhJdXFEuBBRDzVOmPWkk6LdeTydXT1YRXt8jyzdU9Wxjx98LHLEMA mxlB24Vv7HaGxdVpHBCUgKE+T7ldUFOu7sVVHMCi9Ksl4zXpvAF6p6J5QPLL2MYwyHPu 5cl3DiSNToDpt5Dpii8AIUKCeyrhkydN3gGRMHMq0+17r1k3c8AkNWdSfM+AdKkE0clK ePchjfZuNfDl8lj57nhJcswfNoSojV3k11YKnD32XTRYFjMOK2OYQio6bZe/vadl5dH7 tpYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787029289; x=1787634089; 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=eUvixyY9G/lT9AeLA6BxhhEw+FAfIWOYlEArceVOqRc=; b=RD7Utd+vQOfX9q6KBaOEZIlV5RvFU+dn9f/YTw9g48GDvtnYy6ozIIft037Azj7SM2 DPt8lonJvffFQFW5F7jAUZFjE/8cMZR7VJ9JyimaXF7GGaIafYivIXSH0btW+fzh5Z8s RfLqV0WagI8mchWEHm7TdyEeJ/jYQRZhmvohAPdl0huZistP7RKbKkkWZls3SKRcCSXZ jG8Wndoa9K1qnr+H9EmdyrdbKxFm9s3rlWKTgoWYjdbyBJVDWY7FOuT6GRv4PQqhT22G uYhDh+F5Nofboax6FgrMwkqwdUCMn7cHHIPt4wVdTSY8dZjHq+mF/SAq397LcsK308MY WPiQ== X-Forwarded-Encrypted: i=1; AHgh+RpkZs0PDvrOyEDTxfzkHKkukbGpJ6OuNJvn60wF9uzQxcn4y1R3NP5fbJsZcs2TphYuRbqSZlDXLaTk4vc=@vger.kernel.org X-Gm-Message-State: AOJu0Yzn5FwbCosgUsR9HRDQk6Hgu4NR9vwp5hRvEPWG9RWZ4mmyu20E 2vulRQW4Sao2BIKJGM96UocL08qrJpf5eNdecETNsdvJKiv01LApyqAG6WIMUMn/xREtV9zFBqY JaYcv8NOI/OyyYWUwViydkc5prlTkqKKeTRLQ1AWPOgFsU3kEVXluQSq82nnAr4D3CRBDJAcwUw E= X-Gm-Gg: AR+sD10HFaZTRy/2YAHSVcwTGZANvtJqX0QnLwrXsr1xxdUPtsPsxUBOYguFP/KO1bG H25SaQfW6IBFsiQr5J4be37O8r2jkNK8QYSIMbhUwRFQcnVDaivxhsn2ULhX+8OOw6fi55ldNaw bserxLuYskjtqkyKyA58Nn0CM1t1hdy6jgxrCc9zvz+NM7Li/MkfU3nlaT3LKcuVUTf5K3k7GQk g81k0FQTmw7gqDDPXQiCPGVUsycx7u5/Zz2IFBhvh1WL9lxQ/1bmjkbvXLABOfhDARyxKjY9Q3c DuWmSDqzKRCxMUdSpMjvBEURgXggGuCAxzvppnkgKb3Wb0F8PYG1lTbtJovmXTwxJvC/n3kO+Pz jYXHUpyD8o1dcAlDvuIkveCGHfIXipQ16vA== X-Received: by 2002:a05:6a00:2446:b0:84f:77cc:63cd with SMTP id d2e1a72fcca58-84fde13bf81mr28327331b3a.17.1787029289352; Mon, 17 Aug 2026 22:01:29 -0700 (PDT) X-Received: by 2002:a05:6a00:2446:b0:84f:77cc:63cd with SMTP id d2e1a72fcca58-84fde13bf81mr28327216b3a.17.1787029288810; Mon, 17 Aug 2026 22:01:28 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b6fc0158sm1028876b3a.40.2026.08.17.22.01.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 22:01:28 -0700 (PDT) From: Praveen Talari Date: Tue, 18 Aug 2026 10:31:18 +0530 Subject: [PATCH 2/2] i2c: qcom-geni: Add panic notifier to prevent transfers 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-i2c-v1-2-9f31b5fae5f6@oss.qualcomm.com> References: <20260818-add-shutdown-and-panic-notifier-for-i2c-v1-0-9f31b5fae5f6@oss.qualcomm.com> In-Reply-To: <20260818-add-shutdown-and-panic-notifier-for-i2c-v1-0-9f31b5fae5f6@oss.qualcomm.com> To: konrad.dybcio@oss.qualcomm.com, Mukesh Kumar Savaliya , Viken Dadhaniya , Andi Shyti Cc: chandana.chiluveru@oss.qualcomm.com, linux-i2c@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Praveen Talari X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787029278; l=2967; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=nWVWXo8PeGEpgHZRaEwwycO9V5CYo0ghXOEjdfrH9GU=; b=kkAOSSChSPsRli6fSAY7aHJoXw+gU5iaIqRTDtnKirCM68KsPd9obx16vItbDAhwi47TTWE9i wOFWPk+nLqWCmy7OY1TDXHpV34uTgi9PkxUdhrbgP5EfERhEg2djduO X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-Spam-Info: AW1haW4tMjYwODE4MDAzNSBTYWx0ZWRfXwIuQHJ/Bg2AM 55vtLKQfOCwgLp9umF1TThSu4dH/V0qSlo2rrhFosCXNVqukjEYDdjth14mtf327sMI7IygqdFd /VfEVzGD96siliw3d10FjyGURSoIQP8= X-Proofpoint-ORIG-GUID: 2A7-mf95gWaX-C5kN2xqQM4mzE-0GIX2 X-Authority-Analysis: v=2.4 cv=UfFhjqSN c=1 sm=1 tr=0 ts=6a83e72a cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==: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=0wxbfleT6UKSQBY2OSAA:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-GUID: 2A7-mf95gWaX-C5kN2xqQM4mzE-0GIX2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE4MDAzNSBTYWx0ZWRfX3+0eCWJ9zVaK JaknPiOf+GBKUZrRnJHY+73YsqXkXuMlaQh0wnd8j5/7j1K7a4nMGmfw++6A/8a4TawXRu/xZre 65t3Tiz/0l+xh0M3Hx5MW9s8hrpfXTH/eJQWav5JYLr9gNLiGI4nUSQP/tWhFU3EHJnbPWgqAhT hY2d4DOvKSNschAIcN6BLCarnX931+7Gf75/nxEfzDMbEYLi2pog63YVHCEseN3Ze3ZCjdZ3nz8 zdVUA65QSFA4gKYxhlSZN4v9sK/oyKYVK0vZIq7yk54Z1BrvT8rJ4uQ9OqbC3os2CvyAG/USLZa AFQE2FFSfM0fEK6ZhqIRZFYgcKuJHpfNVzhumWREMOrHZl2iu8wAohtTl78uChTqW9HnfF0QjSR jwdJeWLnXkrNgovlO3cFskEpB7g2qFMDDp4uUQDzg8p4KrHJWmnsHRPCpS/MLIuzRWnY6KxP9u2 RIF2nW0My2s1sn97DpA== 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-17_04,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-2608180035 When a VM crashes with an active I2C 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. Register a panic notifier that calls the same geni_i2c_quiesce() helper used by the shutdown path. This marks the I2C adapter suspended, preventing new transfers from being initiated, and cancels/aborts any transfer already in flight, limiting the window during which the DMA engine can access IOVAs that are about to be invalidated. Signed-off-by: Praveen Talari --- drivers/i2c/busses/i2c-qcom-geni.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 10c6a4b0b825..2f8237c232e1 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -139,6 +140,7 @@ struct geni_i2c_dev { u32 num_msgs; struct geni_i2c_gpi_multi_desc_xfer i2c_multi_desc_config; const struct geni_i2c_desc *dev_data; + struct notifier_block panic_nb; }; =20 struct geni_i2c_err_log { @@ -1082,6 +1084,19 @@ static void geni_i2c_quiesce(struct geni_i2c_dev *gi= 2c) } } =20 +static int geni_i2c_panic_notifier(struct notifier_block *nb, + unsigned long action, void *data) +{ + struct geni_i2c_dev *gi2c =3D container_of(nb, struct geni_i2c_dev, panic= _nb); + + /* Make client i2c transfers start failing */ + i2c_mark_adapter_suspended(&gi2c->adap); + + geni_i2c_quiesce(gi2c); + + return NOTIFY_OK; +} + static int geni_i2c_init(struct geni_i2c_dev *gi2c) { u32 proto, tx_depth; @@ -1236,9 +1251,16 @@ static int geni_i2c_probe(struct platform_device *pd= ev) if (ret < 0) return ret; =20 - ret =3D i2c_add_adapter(&gi2c->adap); + gi2c->panic_nb.notifier_call =3D geni_i2c_panic_notifier; + ret =3D atomic_notifier_chain_register(&panic_notifier_list, &gi2c->panic= _nb); if (ret) + return dev_err_probe(dev, ret, "Error registering panic notifier\n"); + + ret =3D i2c_add_adapter(&gi2c->adap); + if (ret) { + atomic_notifier_chain_unregister(&panic_notifier_list, &gi2c->panic_nb); return dev_err_probe(dev, ret, "Error adding i2c adapter\n"); + } =20 dev_dbg(dev, "Geni-I2C adaptor successfully added\n"); =20 @@ -1249,6 +1271,8 @@ static void geni_i2c_remove(struct platform_device *p= dev) { struct geni_i2c_dev *gi2c =3D platform_get_drvdata(pdev); =20 + atomic_notifier_chain_unregister(&panic_notifier_list, &gi2c->panic_nb); + i2c_del_adapter(&gi2c->adap); release_gpi_dma(gi2c); } --=20 2.34.1