From mboxrd@z Thu Jan 1 00:00:00 1970 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 849B519CD1D for ; Thu, 29 Jan 2026 15:49: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=1769701754; cv=none; b=c7DRYMtqZyO+0FycpUzGwGB0/lTfgKk/eIcjxpMagBJyzRCSiv2RAZhgxCng5tdXOVAqMOQYeNpUGmkNk/AJsu0r1t9gKbIXTiksnVxE7Ds8sEGvkJ355CVXRj5e3HmzGA/xcfa7TP1p8fMksQYs6yUbKRS7aApDxDlUZPnJYbg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769701754; c=relaxed/simple; bh=wcTESOf7AidL9TI2v50Z1dwmr64aG7bhXo2++sRShtg=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=bVGo5QqXdSPSqIz8/ANsAk7v1hoqmLF5X4DsuU03iDwgLHawxnPQrFz9mxzuk2pkZl73IzXpIDOLEfJf7JZTziG0BOS4i9/Q03yvSlJCxa374gtvTZXO/TnzMkxl8sZt06y69OGf/fN0PzOZytIlPoGhb5QlewehzQ686g70IP8= 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=pjqwH6xP; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=LNjBzL/S; 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="pjqwH6xP"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="LNjBzL/S" 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 60TAR1uC2502305 for ; Thu, 29 Jan 2026 15:49: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= 9l3lRufO4nmq9wcYZ7mtP19dWxQPitgYMjCxPzwqxjg=; b=pjqwH6xPOOqRpE/y czy200ckVhFRUSxnQPjs2AibbZuYeW45qXCo3dIFua5hGhczNQZBVp94Ztm7HyWa nQDhUgIsNaqbuAFsjLV72NxVPcyLfGN8vUaFt77Ooh5XDc4wy5AsTCiBtAfAFQ7w zrcySNRPMQVIJWfc49+Xtejfkt8OreSaNzWw7Q3u/7IcO98BFsgRM7y+W9HBmY1S MYB6MLPJ6mblXmC4/wvzdsq3moTffGqsSXD2R7WF+cFYw9wO5ebrYvv9ZX6IlaQE J7N4Akj9RHCwaJ7+JUzoCOzmkX9Ed4oNeyUq+4Te4Mp6BlRUnxcC5jDeOrjS8V6h Z1QOSQ== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c05tbs08p-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 29 Jan 2026 15:49:11 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-c551e6fe4b4so690513a12.3 for ; Thu, 29 Jan 2026 07:49:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1769701750; x=1770306550; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=9l3lRufO4nmq9wcYZ7mtP19dWxQPitgYMjCxPzwqxjg=; b=LNjBzL/SdUQ6vESIBAH7o/HWS7qJwEclvouGLGijYoKW5eyBmHzlhSHAlW1xTeCIs9 Rg1/EIt+sCOHK50n9vjDa3Xi+SD9mv/pPHHZkmfFY40YMcMnH+xl/7jxdqlQEM4ixb+A bmcZ5Nbr5T7AO+zF0N03gQR+yQtfQyY+B6CefLlwk/IOpEG4aMcg5xcqaZ9Lahg6jVF2 fkFkoEpkrQbzn7ddcb0MFAMe7CXnz0rq8QN4b5o/YZJfk21M01gmdx73jU8bXStoZXSV N0SgD4U77ox8zzlm2ppyYMXCJCYmi53+kbjVPXTTRKbvnLVwdBJ5Eo9ms3DH4Oc2LbM8 ekOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769701750; x=1770306550; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=9l3lRufO4nmq9wcYZ7mtP19dWxQPitgYMjCxPzwqxjg=; b=ZKQgKEpZEk07A+3ztCRCNR4x/YNYmzvm5ZFoNqNCwWGNFCFjNYyWpadCfwIXwRsECM 2E9Vqj9vhuiMqMVk0QvOxT7D+2GXAGz0ic1gdY1Wy55VI+SQSM6oWDN4au4uC3AV8/fb mT19B6n8yU1LS5R8l/3YsRXQ4IqHZd5fNWKj4ZOeh0PpGqK1FbvBFzvRSiRXT1P1BOVS VPZ3oBKJEFi7W7injykpBO0241XVnjxFprujtBONr++Vyh36YgZnr4HI9Ab9qyrewO3Q RAhaomx2TGJ6943xoPY8t6O4RD2ZJkaM7DR0pIQSMBVzWpm/z+EZ7yXmRvaI1UdkTM0F NRrA== X-Forwarded-Encrypted: i=1; AJvYcCXdOa/eRlgwntCQPKTSWMfsHcOf25sNfAQwgxAQyabX9vvGtQhMoE8pIG7cUiWj4fQT+fxkTsExHuJbPtQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwIUDPgkMGxATqPDh+i4AtjTw2wcVjVlmoB9zHQbOF05m4BMqjM XN3XhsEfxFv8xacCEQKgOmH+rJ74thxIaezBXlboQWtfNZ3LjpC2LsJpyNvB/Z4Zz0rMWwkpbi2 jU2LvWtxhtEU9eH7hebSfLqtx01gDSK27ZXaGrGFJsxJgAR45qEzsc5YfMNNaM9HHKmc= X-Gm-Gg: AZuq6aLvBn8Q2u5LQdkV+1r0IdvV2xsL5T9TCorEFooMofZDi+ser0opJb22+g72Cy7 lY+z23EgAgsX90df3KeK214Mvxi3Li6Omobm+0XRa+whspgwbwEDKpC3dbCA77/2rsjnqrXtFbE Bwx+2xxicrvpIzzJFQ9TWeg+c67oeN8EQE3vPADkBKQSgA57H8RoF2Y7wcqh+xHuO9y36rL9YdO hyuIa6b0ZmaqxSIpLb1MFqpBTSRrVS6Mtzq1QpaOjp95kCcl7G4hT8SG59vHo+mTT3cmIo+TZBJ r7yGa2RX+eUYVT4KkVoa9PC0R5rmqpQWIFpCfWnC3/MlBQn0p7dM5akJbqI1ztz1tHUGFO/PlMZ I88Ku/0tn6jAiRTfKcfTzosLo9lFyFML0qLjJM8mbnw== X-Received: by 2002:a05:6a20:7350:b0:343:af1:9a57 with SMTP id adf61e73a8af0-38ec655cc0emr7712050637.56.1769701750340; Thu, 29 Jan 2026 07:49:10 -0800 (PST) X-Received: by 2002:a05:6a20:7350:b0:343:af1:9a57 with SMTP id adf61e73a8af0-38ec655cc0emr7712011637.56.1769701749595; Thu, 29 Jan 2026 07:49:09 -0800 (PST) Received: from [192.168.1.2] ([49.204.110.251]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c64276efbb7sm5048588a12.2.2026.01.29.07.49.04 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 29 Jan 2026 07:49:08 -0800 (PST) Message-ID: <565a54cb-32cf-41d8-87fb-d60be63cca95@oss.qualcomm.com> Date: Thu, 29 Jan 2026 21:19:03 +0530 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1 2/3] spi: geni-qcom: Fix abort sequence execution for serial engine errors To: Konrad Dybcio , Mark Brown , linux-arm-msm@vger.kernel.org, linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, mukesh.savaliya@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com References: <20260122151008.2149252-1-praveen.talari@oss.qualcomm.com> <20260122151008.2149252-3-praveen.talari@oss.qualcomm.com> <9d9d4d3d-42bf-4f4a-99d3-19df73f89c30@oss.qualcomm.com> <95bdb386-1635-4f8b-84dd-b5123d271b7d@oss.qualcomm.com> <0fddd038-185a-4cc0-b080-d12ba973cce3@oss.qualcomm.com> Content-Language: en-US From: Praveen Talari In-Reply-To: <0fddd038-185a-4cc0-b080-d12ba973cce3@oss.qualcomm.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Proofpoint-GUID: ozzeZTYReg7Eoz8EjnYMk4RmDEjcZIyv X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTI5MDEwOSBTYWx0ZWRfX9iHhCvq+cyPN Rw/pU9uRM3itG11Rfer2IT2lt53BUq6kRs179EtsxUciEPPIY3QTYaH+yN94QNA9jywZcuwmsAg 5l9//jv82ejt+nZMbWwHBiZQk/3f83W/GZa2Q+PleGsDLnitwO/+bIaoTEaxYCYBHXSBCcak5l9 N0i9Qb8TmHne5+F5nQCFnp6wPWXkmMRNAv59bWCrqyxNJqiQ7obRgai712X5PnsfbHwQJhinrSD Gq7yNGh0uuIv4bHPtIxkh5jiw1USOS2LpAAxoCdgH/JibhsW81i1XrvZfoCZcHLE7+Y6xYBmkNs mHP2IA7VEFumV3z8XqphVz5P/kA47CjlwzVnwdWdi8UTcWItNq/1LrBZz2hCNNqG8btJh15OAql XhbzSLT43Pf0uMn0copXoKKSw5Xec20urTqW2Jnhi/XyNwDzzylXlfuuzixIbSIo/wBI+oYvtWl kni5u70OnIV68kGYKvw== X-Proofpoint-ORIG-GUID: ozzeZTYReg7Eoz8EjnYMk4RmDEjcZIyv X-Authority-Analysis: v=2.4 cv=betmkePB c=1 sm=1 tr=0 ts=697b8177 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=hmzEZbfuJy6/QR5cQt8XuQ==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=LZ84-7LdfmDJ-_vHDukA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-01-29_02,2026-01-28_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 impostorscore=0 bulkscore=0 adultscore=0 priorityscore=1501 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2601290109 Hi Konrad, On 1/29/2026 5:18 PM, Konrad Dybcio wrote: > On 1/28/26 5:22 PM, Praveen Talari wrote: >> HI Konrad, >> >> Thank you for review. >> >> On 1/27/2026 6:47 PM, Konrad Dybcio wrote: >>> On 1/22/26 4:10 PM, Praveen Talari wrote: >>>> The driver currently skips the abort sequence for target mode when serial >>>> engine errors occur. This leads to improper error recovery as the serial >>>> engine may remain in an undefined state without proper cleanup, potentially >>>> causing subsequent operations to fail or behave unpredictably. >>>> >>>> Fix this by ensuring the abort sequence and DMA reset always execute during >>>> error recovery, as both are required for proper serial engine error >>>> handling. >>>> >>>> Signed-off-by: Praveen Talari >>>> --- >>>>   drivers/spi/spi-geni-qcom.c | 3 ++- >>>>   1 file changed, 2 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c >>>> index f5d05025b196..e5320e2fb834 100644 >>>> --- a/drivers/spi/spi-geni-qcom.c >>>> +++ b/drivers/spi/spi-geni-qcom.c >>>> @@ -167,7 +167,7 @@ static void handle_se_timeout(struct spi_controller *spi, >>>>            * doesn`t support CMD Cancel sequnece >>>>            */ >>>>           spin_unlock_irq(&mas->lock); >>>> -        goto reset_if_dma; >>>> +        goto abort; >>>>       } >>>>         reinit_completion(&mas->cancel_done); >>>> @@ -178,6 +178,7 @@ static void handle_se_timeout(struct spi_controller *spi, >>>>       if (time_left) >>>>           goto reset_if_dma; >>>>   +abort: >>>>       spin_lock_irq(&mas->lock); >>> >>> Now that the jump is just 5 LoC, you can dispose of the goto and change it >>> to an if-statement >> >> Is the modification below good? >> >> diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c >> index f5d05025b196..4feaf24d47ea 100644 >> --- a/drivers/spi/spi-geni-qcom.c >> +++ b/drivers/spi/spi-geni-qcom.c >> @@ -167,16 +167,15 @@ static void handle_se_timeout(struct spi_controller *spi, >>                  * doesn`t support CMD Cancel sequnece >>                  */ >>                 spin_unlock_irq(&mas->lock); >> -               goto reset_if_dma; >> -       } >> - >> -       reinit_completion(&mas->cancel_done); >> -       geni_se_cancel_m_cmd(se); >> -       spin_unlock_irq(&mas->lock); >> +       } else { >> +               reinit_completion(&mas->cancel_done); >> +               geni_se_cancel_m_cmd(se); >> +               spin_unlock_irq(&mas->lock); >> >> -       time_left = wait_for_completion_timeout(&mas->cancel_done, HZ); >> -       if (time_left) >> -               goto reset_if_dma; >> +               time_left = wait_for_completion_timeout(&mas->cancel_done, HZ); >> +               if (time_left) >> +                       goto reset_if_dma; >> +       } >> >>         spin_lock_irq(&mas->lock); >>         reinit_completion(&mas->abort_done); > > I think we can make it even shorter: > > diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c > index 231fd31de048..59567ef6759e 100644 > --- a/drivers/spi/spi-geni-qcom.c > +++ b/drivers/spi/spi-geni-qcom.c > @@ -161,25 +161,20 @@ static void handle_se_timeout(struct spi_controller *spi, > xfer = mas->cur_xfer; > mas->cur_xfer = NULL; > > - if (spi->target) { > - /* > - * skip CMD Cancel sequnece since spi target > - * doesn`t support CMD Cancel sequnece > - */ > + /* The controller doesn't support the Cancel commnand in target mode */ > + if (!spi->target) { > + reinit_completion(&mas->cancel_done); > + geni_se_cancel_m_cmd(se); > + > spin_unlock_irq(&mas->lock); > - goto abort; > + > + time_left = wait_for_completion_timeout(&mas->cancel_done, HZ); > + if (time_left) > + goto reset_if_dma; > + > + spin_lock_irq(&mas->lock); > } > > - reinit_completion(&mas->cancel_done); > - geni_se_cancel_m_cmd(se); > - spin_unlock_irq(&mas->lock); > - > - time_left = wait_for_completion_timeout(&mas->cancel_done, HZ); > - if (time_left) > - goto reset_if_dma; > - > -abort: > - spin_lock_irq(&mas->lock); > reinit_completion(&mas->abort_done); > geni_se_abort_m_cmd(se); > spin_unlock_irq(&mas->lock); Thank you for help. will review and update in next patch. Thanks, Praveen > > > Konrad