Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp44236rwb; Wed, 14 Dec 2022 13:47:16 -0800 (PST) X-Google-Smtp-Source: AA0mqf5cwjTCazZ+0kAdOujDK01L+0Zeh88gMxCWHymIwibMmfyG2Rb8YhSJqdmSLtfaY0iuA+/h X-Received: by 2002:a17:906:f2d5:b0:7c0:ff76:dc12 with SMTP id gz21-20020a170906f2d500b007c0ff76dc12mr21343574ejb.2.1671054435951; Wed, 14 Dec 2022 13:47:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671054435; cv=none; d=google.com; s=arc-20160816; b=n47f9Cr/zXVnD8SiI3iabnFi7XuPuTus2Jmg1fiwFzqTR2aAxZcPpX/qtcr6/beeua 7vuFKXgcwTRmcIMxUa2rqn0+8AYv9ASvnPHHZteUMkTLrkain+pBlDqgQP2JP5qiV+U1 XmeFYhzzHADWFR4/qUhofXKh2O2ApMn7LjLCYz8P4Btig3Mbbnn0XNmKenF6LcD1aouo w9eYf/i6SHv14w5vzvOet3Y3cavK05SnEpOHJXXbBgy5yFd5WfOZ1XA4F5uMR6QEROLU o6gN8JStErkkEWapW4brx8b30GpVVQgYY+zikYwAxDC/xNkZWZ+O0AAktYv6Oz2UQ18V /3hg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from :dkim-signature; bh=9FPkeuu/tb72TkFpoPealY+9mbXBWloi+1hPuMelw60=; b=dSpeQp4dO5E3X8gTGqbQzWNaSdQClSoDUqmJ/DzT5PFBGqE8cYBN4FUGzPaoJJHho3 658vEb+y+NCx/f5F9hoLDDi3UC+No/bJBMz4M/YrepNZEwkzUJaa1ffKuCc2AWoR1EZ3 IuvLxLQmNi3lYJsD9nft2PhNsNgXS7T/hWbIJPvtvKiRZZWzImUOe2zlPIPZxrIqcjcz JRYR4pzs9+37/CLYRbKN0VIKsH2MuC1b7KCaN2jBejeV1m6QquyHeskwMVKtb/nIOTEH yvCbhlQcxFLY/dnzr1+mmFzFn7yemWC2P3lEnibnN7HUNjDHcv5OE9kEXq7/Mjp88fmM c8kw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=HCgusWhz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dm10-20020a170907948a00b007809c50fd78si12004248ejc.262.2022.12.14.13.46.59; Wed, 14 Dec 2022 13:47:15 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=HCgusWhz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229441AbiLNVV6 (ORCPT + 69 others); Wed, 14 Dec 2022 16:21:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56182 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229565AbiLNVVy (ORCPT ); Wed, 14 Dec 2022 16:21:54 -0500 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D297CBBA; Wed, 14 Dec 2022 13:21:53 -0800 (PST) Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2BEJUOgl005572; Wed, 14 Dec 2022 21:21:42 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : mime-version : content-type; s=qcppdkim1; bh=9FPkeuu/tb72TkFpoPealY+9mbXBWloi+1hPuMelw60=; b=HCgusWhzXe1h0OaotMfkAK040uMm0f+jo/zDXCYltg8i2d8J4QV2Z35BwUP62kyhlvX5 6AWYo3JFxN8vJ9dP+2iNz//wDqq02iwwb7MOfS022Y2sAAwa+VOu8F+foBb6n6EQKuu1 TnFQqjXbqQ62G41kmFvIsMUay8bcisXFoi68bc0UKXI+g9tlCsd4TTrYtjztJI5fQ+r5 LL/vlQKumgGgsfXifN+Rsl6HhZ1TWWVbMD2wm1Zx3tTGRQTY24GNi/cpIT1uw3nxw41W s8Oka+Ea8G70Gxytv6f9VHFAHNUfT5LCP6M0lFcWKOaX4MxxWLJoEeg4ejto5POnQ16n HQ== Received: from nalasppmta01.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3mf6rrtgaw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 14 Dec 2022 21:21:42 +0000 Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA01.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 2BELLeM0026770 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 14 Dec 2022 21:21:40 GMT Received: from khsieh-linux1.qualcomm.com (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Wed, 14 Dec 2022 13:21:39 -0800 From: Kuogee Hsieh To: , , , , , , , , , CC: , , , , , , Subject: [PATCH] drm/msm/dp: do not complete dp_aux_cmd_fifo_tx() if irq is not for aux transfer Date: Wed, 14 Dec 2022 13:21:30 -0800 Message-ID: <1671052890-11627-1-git-send-email-quic_khsieh@quicinc.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: BJ9AO6HUuGb9sm_UdJxQiI2-m60TZB-E X-Proofpoint-ORIG-GUID: BJ9AO6HUuGb9sm_UdJxQiI2-m60TZB-E X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-12-14_11,2022-12-14_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 mlxscore=0 spamscore=0 clxscore=1015 adultscore=0 suspectscore=0 phishscore=0 impostorscore=0 bulkscore=0 mlxlogscore=818 lowpriorityscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2212140174 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org There are 3 possible interrupt sources are handled by DP controller, HPDstatus, Controller state changes and Aux read/write transaction. At every irq, DP controller have to check isr status of every interrupt sources and service the interrupt if its isr status bits shows interrupts are pending. There is potential race condition may happen at current aux isr handler implementation since it is always complete dp_aux_cmd_fifo_tx() even irq is not for aux read or write transaction. This may cause aux read transaction return premature if host aux data read is in the middle of waiting for sink to complete transferring data to host while irq happen. This will cause host's receiving buffer contains unexpected data. This patch fixes this problem by checking aux isr and return immediately at aux isr handler if there are no any isr status bits set. Follows are the signature at kernel logs when problem happen, EDID has corrupt header panel-simple-dp-aux aux-aea0000.edp: Couldn't identify panel via EDID panel-simple-dp-aux aux-aea0000.edp: error -EIO: Couldn't detect panel nor find a fallback Signed-off-by: Kuogee Hsieh --- drivers/gpu/drm/msm/dp/dp_aux.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/gpu/drm/msm/dp/dp_aux.c b/drivers/gpu/drm/msm/dp/dp_aux.c index d030a93..8f8b12a 100644 --- a/drivers/gpu/drm/msm/dp/dp_aux.c +++ b/drivers/gpu/drm/msm/dp/dp_aux.c @@ -423,6 +423,13 @@ void dp_aux_isr(struct drm_dp_aux *dp_aux) isr = dp_catalog_aux_get_irq(aux->catalog); + /* + * if this irq is not for aux transfer, + * then return immediately + */ + if (!isr) + return; + if (!aux->cmd_busy) return; -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project