From nobody Mon Jun 8 16:31:17 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 64FCB325483 for ; Thu, 28 May 2026 07:10:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779952256; cv=none; b=Ztu3L10u6+Qmej+X8njU8P/Z8J93+hB479EBBGQyA04TEoIym5rG7NGWUxcEN1/g21pidghXmJ63CBNz80FrfImn8g/bu57z3ibKQblbKJmdUS+tN7bFCqsG0ll9ioghuNly4tPOfMheymZoDdMzjUliJRN4x6zyFwxjnsY9OGo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779952256; c=relaxed/simple; bh=phX0hoWrp4DgbArchKl0E80WtBWi5e+YAzu85nwWVGM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WP0PfG1BCOfb832ii0cQCj9XwwZtJ+WOT266yE8PqCgOHiwLG2yB4FrHnfOvO3gp7iiekcaWRJ88KjRpZcvsvyt2rEP9C76l5E5XeXemJJpph5+dYjfZTe9qt85rq3MJYyQwOQ+6pHsp6GOSCM7R0WEuOSKcXKjTWh5FShKyxqs= 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=MBQpi9Xj; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Vbak8uph; arc=none smtp.client-ip=205.220.168.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="MBQpi9Xj"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Vbak8uph" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64S7AaRI1975743 for ; Thu, 28 May 2026 07:10:54 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= z4WR6er5Of2+cYSqZtXfmLTmM3uBh8TuLkr2F/P1cso=; b=MBQpi9XjJL5i/Sh7 DlRy4uBomLJLCvH38w9I3bOuYEI8S+R4WpMIB42ynTP1a5O6BSfZlkhJZcJSv8Ev 71spqNLw8Iuj5Uk6D5quNFE1vbwP51vKStWFRXudDAfWBi3NdteXZzB23n9u3cUp nT4cPnN0WyAos4j9TPk3kbL70EzA9rlfUCyLZL0q9HY//Oj1m6sbWWqhBuvTI1e5 jczzRJzmieSfTEBQAXZTQtbLibE8+v2R8RDN4qw+TvgbLIukXsh8o6edBLSEw/i6 7L9e+wDjMC1yFeVViD9XOGjl+Cj8QhfclBJyM8UGpy9W0Ox2ax0TcbFqT90OBMFk OlNAjA== 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 4ee7y3sqjx-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 28 May 2026 07:10:54 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-516d4a9e852so111204531cf.0 for ; Thu, 28 May 2026 00:10:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1779952254; x=1780557054; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=z4WR6er5Of2+cYSqZtXfmLTmM3uBh8TuLkr2F/P1cso=; b=Vbak8uphKmkdYuo1X3zuOeK6WfxZe2SNwseje94KfzfgsK8asouuSMiGoOql9yBVEv ecnpP01VOnbKgZ13YzgKF1fhgh6wWTB0PwT4hVDRf0bI3ZjZstIpoEyyhdvFOk8bpcXO s/MO9mAkDGuHcqz79657CzfWVPW0ayHZhTfvIt3f+iAV8Hc+Z+J/6ozaWBqkGrYWboqo 9uKE5KrvMw35DOgkmY2KA9Ifr4/r6Bl6+lJq5RLMDgTAg9WSbORJOCIF/iLhgnxkAd1x 0hQ2WAi8X4PrMa478uZt3fLuttHEvhysU12ku6xNZFPLykR//yk832o6jZ7WY/bujQ6Y ynKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779952254; x=1780557054; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=z4WR6er5Of2+cYSqZtXfmLTmM3uBh8TuLkr2F/P1cso=; b=fxpWczj5Krrhc6KxdtBrLfxayNgepvMZBZODXIPpyfPkXFLxbVdtoSBW2oVFq39/p9 KYmUbq4uK9zWmWQtzxLSonZggeEC3HLtTeYlw8ubxLv7lRDX0Mkp7CqinPshpu4wNWTE 7aAkQ3CGyzk/EhBdiLqsQoxN/wnuSyKtpzsEWB5qPRU83kw2zztgvArd2va0ZlcJqXIV 6+rEhF+qOPD1tlzCwIwVvaJst8gcgXo5FA3pbFPkkiJjf67E2fNw+MBEZPGofQyE8ts9 QnTxCCCSCB8Pd/emeGbt3qQGCla63nNWDegtpcgusPxi0PQ7WNpL+FMpUfBFOKwOZwEl u0Zg== X-Forwarded-Encrypted: i=1; AFNElJ/FESAbaWztxXy4ViryWQ0bacOoms9CTfXOF7aqGOSpHDQQAXH2mNVSGxuIiL1eiv6E5F48ophiuMvei/M=@vger.kernel.org X-Gm-Message-State: AOJu0Yw2/AGv4RUrM3IMeGHRzVyMscudxKET7RQ2p1J42Pjln1gN5KLm 8NIz14eCbdMhjhTW7/Lv4HZSHe81wPGLfz3ZPIV8R6r4DcxQm+hqfn14hwyFIKG1b7KgmMZ0Soy AmttLjEzLgJG1DZffL6T5/g3cw3SaKCUO0QyEi/qpzxiAKxm5bVmGXd/M4k98i4shVrQ= X-Gm-Gg: Acq92OHn0RnLfxgLJWtapUIXne9P2hVFaus/U8CSYq+jSxDjnKm7TvMyFFEMA2y9V8F pAN05DjE4Bt/JYIG4CXYQe9f7p7Sl6PPI3vWtxLmjBcItE5GqMuDOKGVsgkqTrJszufUK0V7+j3 04n2spuIYshanJeY4mwQJRaOszNI+77tfoYJuMKLvAooL9Tu9FoFy1YAF/mnUh/XIfVNgl39cyg DDSXjGNuL30r1bfZxIx43wHqwYL41X/+I9LNqvMrsMfIzy6pkSnO6ymiJXZXPE8ynI9kHQkMWhA eE8Jnv8aLTXZEZV5PAJNeJFwVimJ9vWkcLb6ngtsATEmhbtMzqaJDGS0M7+wuyJPZuqUX1Ysddx 7On2WRA2JBXKWlu3wVdfKdITrx5lscTsc9fstoWokxOEyvXDEQSONs8fllInh0cPkxV8pXhWXHe pTEg7eDYC+fgMMvY35Nlr8FJhzG0jJn0uISWCsRUN3dGBe1A== X-Received: by 2002:a05:622a:4887:b0:516:e033:f5ae with SMTP id d75a77b69052e-516e033f8cemr321262521cf.44.1779952253581; Thu, 28 May 2026 00:10:53 -0700 (PDT) X-Received: by 2002:a05:622a:4887:b0:516:e033:f5ae with SMTP id d75a77b69052e-516e033f8cemr321262171cf.44.1779952253158; Thu, 28 May 2026 00:10:53 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-395dcc0a54fsm37416161fa.20.2026.05.28.00.10.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 May 2026 00:10:52 -0700 (PDT) From: Dmitry Baryshkov Date: Thu, 28 May 2026 10:10:48 +0300 Subject: [PATCH v3 1/3] drm/bridge: split hpd_mutex into two mutexes 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: <20260528-dp-connector-hpd-v3-1-d656eb1079b7@oss.qualcomm.com> References: <20260528-dp-connector-hpd-v3-0-d656eb1079b7@oss.qualcomm.com> In-Reply-To: <20260528-dp-connector-hpd-v3-0-d656eb1079b7@oss.qualcomm.com> To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Tomi Valkeinen , Boris Brezillon , Sam Ravnborg , Sebastian Reichel , Yongxing Mou , Jonas Karlman Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3574; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=phX0hoWrp4DgbArchKl0E80WtBWi5e+YAzu85nwWVGM=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBqF+p5IJ+rnEcMiFWwgBOxHfygnrnynCeaYG3Mr zSc4VYPIB6JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCahfqeQAKCRCLPIo+Aiko 1cM5B/4kBpZwfdyjUejj1x1kNZzAO6PqH6cI4EpA/WLFkKgdvJipSUyL+6eLSW51xBKjFndorDX O4b0moLZ2v4VgzEMUppDl4UUsoqhE8+XoIMJ71CPiEBz2rSfug2Mj5ljJv72CoPh9pYgb8P5Vdl 3Xz7G6t8ACnzfSkBj1tpeqc75xZ3ESISh72Pks+XmEH0+FQthTSgGKAhs8OELrJMGjhn+Cup1q8 nEpKOH9n6PL+uqUWHYN5pYmqWF3gYN1XvpaH3ol65wojWIBuuAlJLwVOkNqmWNIi3T/WlHcLZ3C 4+O9dd0lmzq/97lYHye6RfAUDOH1azKM/D+YC/PQFqyFmxR2 X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: G3Wsv7DMeiDREaykOn_tMxZFIQ0x6brN X-Authority-Analysis: v=2.4 cv=JMYLdcKb c=1 sm=1 tr=0 ts=6a17ea7e cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=VwQbUJbxAAAA:8 a=c92rfblmAAAA:8 a=EUspDBNiAAAA:8 a=TrWYt3Gvp2KaBVO9iIIA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 a=GvGzcOZaWPEFPQC_NcjD:22 X-Proofpoint-GUID: G3Wsv7DMeiDREaykOn_tMxZFIQ0x6brN X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTI4MDA2OSBTYWx0ZWRfX7ReJ1h8BpGEA q9RA7HLEGUVwdo60HRvTnHVU5UKAN2Sz/W57eDwHdnj1XKLwEA0YzJrjH9rWvJjRsOJv/oDb7CQ ssCRYTNDeaJ16T/187VMvW4RQ2zPIG5SeJjh0YRCLJQn/ulM4z61A7KPXfcOlGN1iT9W4zUARlw ncNbG6tF8A1o8znHn/HFHKlGdMDBavHRPKlY2bHkBf3YsEy7m4IbLdzpj2E0yr6DhAFQr9SUdyI 3oxEBwhuJAdzoTr2HusgBnBrLiLbBhOTJ9+l7yVaNFXlPrHp0BDHTLgof83B/bP8n4/XCMW3tAQ xhTVqOaYqSngQEOb7f0ZI6RbtaG8J4GiXW2p3jQ+WSTyOYRqIeaILAI2y/PxqkekbouyfFWL4/v o5BIw7Rv9xrRfFAFMT66xBUV6tHjVRx7Ajd74zGowMiICCclCYbq/AiHGNrBwz9wHyfPJigs8M7 i2Uc/Db43zACKZThTYw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-05-28_02,2026-05-26_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 malwarescore=0 suspectscore=0 priorityscore=1501 adultscore=0 phishscore=0 bulkscore=0 impostorscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2605280069 Currently almost all bridge drivers which implement hpd_enable / hpd_disable callbacks simply toggle the hardware registers generating the interrupt. However, as pointed out by Jonas Karlman and Sashiko bot, using those callbacks for enable_irq() / disable_irq() calls or scheduling and cancelling the work can cause a AB-BA deadlock (between hpd_mutex lock and the corresponding lock). Split the hpd_mutex into two locks: one simply making sure that hpd_cb / hpd_data are consistent and another one, hpd_state_mutex, making sure that concurrent drm_bridge_hpd_enable() / drm_bridge_hpd_disable() calls can't end up with inconsistency between hpd_cb/_data and bridge's internal state. Link: https://lore.kernel.org/dri-devel/9aa4bd35-bff6-4009-a959-ce31010c7b3= 5@kwiboo.se Link: https://sashiko.dev/#/patchset/20260513-dp-connector-hpd-v2-0-42f757b= fcbf9%40oss.qualcomm.com Signed-off-by: Dmitry Baryshkov Reviewed-by: Sebastian Reichel --- drivers/gpu/drm/drm_bridge.c | 16 +++++++++++++--- include/drm/drm_bridge.h | 4 ++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index 687b36eea0c7..9a185032a3bd 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -417,6 +417,7 @@ void drm_bridge_add(struct drm_bridge *bridge) if (!list_empty(&bridge->list)) list_del_init(&bridge->list); =20 + mutex_init(&bridge->hpd_state_mutex); mutex_init(&bridge->hpd_mutex); =20 if (bridge->ops & DRM_BRIDGE_OP_HDMI) @@ -469,6 +470,7 @@ void drm_bridge_remove(struct drm_bridge *bridge) mutex_unlock(&bridge_lock); =20 mutex_destroy(&bridge->hpd_mutex); + mutex_destroy(&bridge->hpd_state_mutex); =20 drm_bridge_put(bridge); } @@ -1451,19 +1453,25 @@ void drm_bridge_hpd_enable(struct drm_bridge *bridg= e, if (!(bridge->ops & DRM_BRIDGE_OP_HPD)) return; =20 + mutex_lock(&bridge->hpd_state_mutex); + mutex_lock(&bridge->hpd_mutex); =20 - if (WARN(bridge->hpd_cb, "Hot plug detection already enabled\n")) + if (WARN(bridge->hpd_cb, "Hot plug detection already enabled\n")) { + mutex_unlock(&bridge->hpd_mutex); goto unlock; + } =20 bridge->hpd_cb =3D cb; bridge->hpd_data =3D data; =20 + mutex_unlock(&bridge->hpd_mutex); + if (bridge->funcs->hpd_enable) bridge->funcs->hpd_enable(bridge); =20 unlock: - mutex_unlock(&bridge->hpd_mutex); + mutex_unlock(&bridge->hpd_state_mutex); } EXPORT_SYMBOL_GPL(drm_bridge_hpd_enable); =20 @@ -1484,13 +1492,15 @@ void drm_bridge_hpd_disable(struct drm_bridge *brid= ge) if (!(bridge->ops & DRM_BRIDGE_OP_HPD)) return; =20 - mutex_lock(&bridge->hpd_mutex); + mutex_lock(&bridge->hpd_state_mutex); if (bridge->funcs->hpd_disable) bridge->funcs->hpd_disable(bridge); =20 + mutex_lock(&bridge->hpd_mutex); bridge->hpd_cb =3D NULL; bridge->hpd_data =3D NULL; mutex_unlock(&bridge->hpd_mutex); + mutex_unlock(&bridge->hpd_state_mutex); } EXPORT_SYMBOL_GPL(drm_bridge_hpd_disable); =20 diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index 4ba3a5deef9a..00a95f927e34 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -1256,6 +1256,10 @@ struct drm_bridge { * @hpd_mutex: Protects the @hpd_cb and @hpd_data fields. */ struct mutex hpd_mutex; + /** + * @hpd_state_mutex: Protects the HPD en/disablement state for the bridge. + */ + struct mutex hpd_state_mutex; /** * @hpd_cb: Hot plug detection callback, registered with * drm_bridge_hpd_enable(). --=20 2.47.3 From nobody Mon Jun 8 16:31:17 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 7458B34FF40 for ; Thu, 28 May 2026 07:10:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779952259; cv=none; b=MsqYEl3lajoG8LE6wd0JwGDmM2a8U/IjLBZHqJ7Difq7AYvQs8C9NxBEqXSN6R8UCy6EOurcvE/hKdEl4c/+wHMM1lTqr17DXGkzXOVj9mGAMEiJiMdvzBy29tpI25mFLeNi5F1u+4PDUKAHR3UZn+pKNA7SnLC+zQunkqHAoNY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779952259; c=relaxed/simple; bh=uaisOO81wUqXM57ZY+50E+vgpCZk+fmw3L+QuSoJRis=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=O428dLRVbD1kEubL5m763c+cPCKFZ4zxnSthcbFkbTb14PpW7bT941YEjld5hknusEcbyCJZnuKyLFqPEMYVQnqNNMsbjR3+D4kA9ANtlwJuEccaHWQnD9fxSfqhSZ4jomPW7/SymeAWVKkENA8wMlgvPY2F8orujDI/+qBrgiM= 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=fKgYbzC5; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=dw4jMGiN; arc=none smtp.client-ip=205.220.168.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="fKgYbzC5"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="dw4jMGiN" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64S6jF9F4188865 for ; Thu, 28 May 2026 07:10:57 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= dnqi4A1Nw9iq1rCq6bx9iMLW6imbL+bAYQJUwKQDVEA=; b=fKgYbzC5CpKmUqWd s7XIxzYb1hUGvkCKRZ4W7hY3Sndz0TBo8qQn+8+0+gLO2Y/YILTTtpBqAEd2LV+N 2ztBNFVXtqF1V8PuLuntECmwQRd4Wz7OUmfem0mm3nmMLzxFNQne7oR+KTreQ6Jx DyiIeXEUEoiHG6mKWsE6nL1uHxg41IpOaGuI/nGb2viLmoBxILAGyWZRFg3oE80/ oH3DBCvCQPuxa3TwAoMfZ4mIHPsEtDZ6md45qn1yLhjJNwzlMAnjxs3u/+H/tJY4 EYmL8iENxk6h2lYPhtD/sqBGxJxLOtJwgJbDLnJB/2/4re2bCKQhAPxNyv3vQijO pUXUJg== 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 4ee7y2spye-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 28 May 2026 07:10:57 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-516d58f74b0so72453231cf.0 for ; Thu, 28 May 2026 00:10:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1779952257; x=1780557057; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=dnqi4A1Nw9iq1rCq6bx9iMLW6imbL+bAYQJUwKQDVEA=; b=dw4jMGiNYkWOr+2YCeIhPgiT/QYfowl6+A7AOccVRztmna8P65gmrLk5Tav2Mms+59 MnZ4t0hVIi32zlKFwMi2AkW8S7TR1ELuPc7l+dEeMYMCC4Cb3NOnWjVeb+bwUc7M7wph 5cwgeMeZZlROxjd95VLVfbb7U6n3vvYV9F1RcWoaOgwDeWPS8H83KRGB3ah67ApFmzpO 5aTFheRLvXUr6Zf/rBke+XAMsO5fSEjuY4iInpyonxa2OVQuslB5TeTzlAxMeEN+ywLH 6H9ACyEJtqcBxQqgC7iPfafkUHDLXH/xJ3DkufalrXk0rBDghStL3WHp64daKUO1shaE bKvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779952257; x=1780557057; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=dnqi4A1Nw9iq1rCq6bx9iMLW6imbL+bAYQJUwKQDVEA=; b=KsyVqIySpotHQvn5PM+ImqiRd1AEB0CVHdGt3GjHuJPAbD7jP0n10isW/eclmQy9Q2 r92BXFVJnslXn/RgiuP50IC/tbj130fP+AB95BMjsbZj1yQmOYSZ8qScO4j51jr5vnk+ WCRzPsJ8GfI7bACQD5YQYShBGQh74FLinF1aXvQ6FPaDZ7GiyDprqKg/frOZYP/mbjMj 8pC6hEE6rOdO91I3OsFVyP0dG8PF+QHhxylzIf9TlNx4jOrTnyqfqSz9NEtN64oxs1+e jTUSLR5xeckZiyJHW25ya0CNr9UgIOkQepFu7+McT4PdzjNjbFyxwXKA9cha482sy8yh psXg== X-Forwarded-Encrypted: i=1; AFNElJ+06PlvJlEecuw8qJGt0euSdIBNP0fSNgELdmXoblW8ag82b5Lg2pCtetiiS8DIfjg6v9basQ3MIsVBUpw=@vger.kernel.org X-Gm-Message-State: AOJu0YxV+z3wpRWUDCs2od9GIKMxJNJ0F1J+HwSbhctj9HkJepIAEfvn Jjq4fK6dsaBHxRp/Rcwav9zHRdAH+OFA+ZYMFMVmHo0rTqpjqWbuRBB0I/UDZeg76TryH2dHFUD PuonmTzKmFD6kn4jZP2jXKHXrylgQbyKQleMZ915cb3fXC8Ay/yC80C1zp2QeDsgybnQ= X-Gm-Gg: Acq92OHRJieLWu7JfcQpw9IxaBRWhww6ByFpCfIgl01UPC8cJOv/0nUm4ASG9rjmsrR VHEMsfafADuyYBxo+5/+4erxAHTcP2KW+03lq21DQTCw76D5fp+3JNQAx7ejZiA8euMV8hjYAwv VEeLzyiOs8dzF1w62OPmgMJjADmekKuL6mKuJufWbeeg8lOWb8k3+Dp1lGIA+qitp/uxDeHGhdh bxzYdqRUKswdoJJKg2mePp3xfTzjMuRPis9csFT/IKSDkdXjaLwIuuu6t7t1EzTYJmsOMYTwILM fvAPpMVywzaDZPslNNcnVA/cI3vWWP38maqz7bjteykQl03LOwEgeEclDFyXq4f4owKl+r54gX4 LwX6fOImyhAS30djsKpl/gSxTmp5uJ+HoVTskC8cdOyvmZyRODZFcCiDcHimmT+j9OHs4C7ZZ5s btLejYUdFXmHLh/suEbAOREt2C9/0kJyteynSHCjEnOT883Q== X-Received: by 2002:a05:622a:1e90:b0:516:da42:43df with SMTP id d75a77b69052e-516da424757mr302438551cf.30.1779952256628; Thu, 28 May 2026 00:10:56 -0700 (PDT) X-Received: by 2002:a05:622a:1e90:b0:516:da42:43df with SMTP id d75a77b69052e-516da424757mr302438141cf.30.1779952256114; Thu, 28 May 2026 00:10:56 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-395dcc0a54fsm37416161fa.20.2026.05.28.00.10.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 May 2026 00:10:53 -0700 (PDT) From: Dmitry Baryshkov Date: Thu, 28 May 2026 10:10:49 +0300 Subject: [PATCH v3 2/3] drm/bridge: display-connector: don't autoenable HPD IRQ 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: <20260528-dp-connector-hpd-v3-2-d656eb1079b7@oss.qualcomm.com> References: <20260528-dp-connector-hpd-v3-0-d656eb1079b7@oss.qualcomm.com> In-Reply-To: <20260528-dp-connector-hpd-v3-0-d656eb1079b7@oss.qualcomm.com> To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Tomi Valkeinen , Boris Brezillon , Sam Ravnborg , Sebastian Reichel , Yongxing Mou , Jonas Karlman Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2194; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=uaisOO81wUqXM57ZY+50E+vgpCZk+fmw3L+QuSoJRis=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ5b4q8qq3JJW1qxqoaf3TG7M+vuw07FkuUXaQ71p5utv2 0nxy1d1MhqzMDByMciKKbL4FLRMjdmUHPZhx9R6mEGsTCBTGLg4BWAib804GFoUpdRv7G37xRVT fMz9m7CV3nGJYBHt6x1uGX/+bXjx99nfxd0Rz6w1C906YqTeerdac9e+q2C9F1Azn8Op52aN0vb bL6uXWIip12t3K16+llj2eWeF4NL6vc/1t8acfMk7dUZ6pf2hPKuuGHvbmMNmLFN3yLvYWDM9/3 zkiqDvRCXX/AzfaQvWLbCV62zolUl7/7RccIpyp/vHymWCV763aiVuq1Lq2mGuZLs5PLt4Z7Aes /xsjrC6oo8P3CKZ9rgU3/n7XL5u7YHQ0mNtm5Nb9t5hXNX/mkVr65qWp79XsRnl8x3yUeJKj5S/ Fvz5+qpdErNnqocHcHrd1Ow0E960ZPP9Ek5u+1IrM34A X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=VeXH+lp9 c=1 sm=1 tr=0 ts=6a17ea81 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=n8oM3ScPHa2hF6C7bkkA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTI4MDA2OSBTYWx0ZWRfX20eMqV0qB4qc OBDTl7crl7OOvu8qhOhERaeFl/N/d/VNkhDD9oGIeWvqXpRcbhrnyjoCZM9Y6TQhCDg4hg+c55H KW5Mo24W7aJ7y2s8Z5/JHVcdKxouJ7Tg0MjMupWksC6IsEZpjm1H9zs96opucKBl2MqTHAaUPcb /wSyYa8EvDPtGXUDibc0Kv9bnJzgkNVecVkgzrbNuZLzC7N8U46QEB2izoGbBpgQKm0iSyafNKR 4OqAalx+Sec72Otyek3JIziCWuoNYh9LyZLX3Mk1soFDsI+tCNlQ3pR16uLJUbP8QnlHCZkNwk0 KnSrNrWUFvtIUcoTwN6vEnh6ttIMsJf2h+bmueE6E93NE2HBnLOs3bNAJgl68JcmPwS5P6UZIFv VFYH7WTTUQuWOU0f977natZTOuAGoZyGdT2ocl5g2qdK4KBrftm9fl4y9oiUple7+RBG07iCwfy SeSaJFOrCqlPftVknTA== X-Proofpoint-GUID: XMT0z0ssfkmFW7P3-MSpl5xZ4eYVal28 X-Proofpoint-ORIG-GUID: XMT0z0ssfkmFW7P3-MSpl5xZ4eYVal28 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-05-28_02,2026-05-26_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 malwarescore=0 impostorscore=0 bulkscore=0 suspectscore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2605280069 If HPD IRQ is enabled in the display_connector's probe, it can be triggered too early, before the DRM connector is completely setup. Use the enable_hpd / disable_hpd callbacks to control enablement of the HPD IRQ. Fixes: 0c275c30176b ("drm/bridge: Add bridge driver for display connectors") Signed-off-by: Dmitry Baryshkov Reviewed-by: Neil Armstrong Reviewed-by: Sebastian Reichel --- drivers/gpu/drm/bridge/display-connector.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/gpu/drm/bridge/display-connector.c b/drivers/gpu/drm/b= ridge/display-connector.c index 16c0631adeb1..6bb1134f75c3 100644 --- a/drivers/gpu/drm/bridge/display-connector.c +++ b/drivers/gpu/drm/bridge/display-connector.c @@ -87,6 +87,20 @@ display_connector_bridge_detect(struct drm_bridge *bridg= e, struct drm_connector return display_connector_detect(bridge); } =20 +static void display_connector_hpd_enable(struct drm_bridge *bridge) +{ + struct display_connector *conn =3D to_display_connector(bridge); + + enable_irq(conn->hpd_irq); +} + +static void display_connector_hpd_disable(struct drm_bridge *bridge) +{ + struct display_connector *conn =3D to_display_connector(bridge); + + disable_irq(conn->hpd_irq); +} + static const struct drm_edid *display_connector_edid_read(struct drm_bridg= e *bridge, struct drm_connector *connector) { @@ -178,6 +192,8 @@ static u32 *display_connector_get_input_bus_fmts(struct= drm_bridge *bridge, static const struct drm_bridge_funcs display_connector_bridge_funcs =3D { .attach =3D display_connector_attach, .detect =3D display_connector_bridge_detect, + .hpd_enable =3D display_connector_hpd_enable, + .hpd_disable =3D display_connector_hpd_disable, .edid_read =3D display_connector_edid_read, .atomic_get_output_bus_fmts =3D display_connector_get_output_bus_fmts, .atomic_get_input_bus_fmts =3D display_connector_get_input_bus_fmts, @@ -307,6 +323,7 @@ static int display_connector_probe(struct platform_devi= ce *pdev) NULL, display_connector_hpd_irq, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | + IRQF_NO_AUTOEN | IRQF_ONESHOT, "HPD", conn); if (ret) { --=20 2.47.3 From nobody Mon Jun 8 16:31:17 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 C4C5B348C79 for ; Thu, 28 May 2026 07:11:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779952263; cv=none; b=AqBxp2eXDGrCN5r60MMFqneW2oFFEBAVR9jq1a3bCSxBOQ6Ho1YMN1d19mvNfiOw6kKd53rUCO7y7sbILUknU+b/NKj9dQWo0RdS47/ChdS5xlamV75w/udO8Rw1QsMiIIHwDHBlMxQtRtcIxkCRA0ceYDYipj7+bJZ328XR+RA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779952263; c=relaxed/simple; bh=gXYnVv+et9mKSsRcfzytd7/BMq8iX3aPDHuiutk/ozU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Bzft2PxLESxEHxP+RpRJ1i1P0JPXX0nCVwrI/tZL1Hf7u69RL2EuLGuh/7hTU/08cy+NNvg2HiEq0zg5gN78yDedd4Onbi2giswM432Oq4cWuEctWZFHbJ2WDsjLhoH4dqfdZjP+S7aqJtOsbUOqkUVhrNKX/GwUC7sTaAkHOro= 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=R3gniVIY; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=etsAuXQo; arc=none smtp.client-ip=205.220.168.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="R3gniVIY"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="etsAuXQo" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64S6oxK54188843 for ; Thu, 28 May 2026 07:11:01 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= lteX2KHrPi0Rqr6OUVWRnH5AyAUAaRSxr8uhMk11Hlg=; b=R3gniVIY8gKB2/xl kaThstLE+hIldtvqqoof69I2jojduDc3KQLNDd1pi2zMJXNAzSynV6DUYcH7ZuTx fjMHvRRNMUFr1QL4t+sfLdomiIyhcXSUm8wkIWZVDQRl7PzvrR6qP+Gv9wsiTYgE d7kVmcZhPWYbmf83GI1Sdq72Fzmi5veaZSgugRGeMo3tggarnVf59tYpc1No1nrK JOFgtAgVCqOyQvcjbOEjddqhipF3cwMRItTZPpWTQslHl57jGJKpxSl7jboZA+VS Jt2xTVGePA+I0s16W8EmTJYryR1Ebgd1vV+o8obmfLnL+XMpiwqdDkjYICXLjZ/0 ja9XVA== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ee7y2spym-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 28 May 2026 07:11:00 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-5165d10e036so221122671cf.3 for ; Thu, 28 May 2026 00:11:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1779952260; x=1780557060; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=lteX2KHrPi0Rqr6OUVWRnH5AyAUAaRSxr8uhMk11Hlg=; b=etsAuXQo2gf2TR6dAbaOAJjbmcT3wu7vP9Ni7OKOSH6HOErVYb7CSxCs4xpRt3EOVR +GkZNNckDnGqpo/3g5PftqxRwWKKZKKDIfsrjUej6cJzGegr2PHDaYDkgykGPMHW+4Ep +pwii4B5lonA5oujkEE/EW6G8tAhXNlypgEO4d7zHVIoWiJXAJOHZvMpWztxkIAziDMH AQkB3Rgm8sPlD9hPUPSxhFkfp2j9zXYOH5s14X4RpFznpMF8kT0IX4Ac/tYQvSAxhvXR 7kAE+7L+eqn+y4K3oDyhFElzcfwZjesg5z5Ul3DPRRc1/7ZeG0jAU8JnA3ihZTRTb4h4 hI/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779952260; x=1780557060; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=lteX2KHrPi0Rqr6OUVWRnH5AyAUAaRSxr8uhMk11Hlg=; b=op26a5OKdga819zTk1pzfgguE2AxpMVQhk7Kgv2XW0U7dJ0rEL8rglbtkTPCnTQk6u UHl8ozw/SwW0D/e75r8VpOqA7FkM+o5S3EUMqbXrfzoGIkHEWuKUjOG2GHxl15mppMZO rqn4W6aFKijWV1i07zqIcc54qOgXsM1DJH8bWU7pVAiZ38eOsSQOTKtI/qWzYMyGFjwd uqAdSxf7c2FN5gU93IETOx6WrEqFZz9ubPxq9LbBxefr87+vZZt2WTOhwVL6hd0LuFjj dueWReUn/TUZBZ5I/MxHA/WptIiv/FA3Y5/fPbpiH4DTPpfehErSrf39S1VDwkmEEcrp h3yA== X-Forwarded-Encrypted: i=1; AFNElJ/YaMypSGUORoGsySXPSfm6If9pQeGuSlD052gAyTdc5OgUHkL343CGgv3xOE+4ah030BUxQg2bOz1TKdo=@vger.kernel.org X-Gm-Message-State: AOJu0YzbDmLYNUSQNSyLvSzeF9a2mOFFV/0suQH967sDgCBn+Zr7pr37 HwwBQxXuMNvsSWIuf0BnUgq2skLBBXRUGeLdfb8HDB8urbrTjy5WDKoqxr4NTJRMzer5aKRHvVA 81o41qXblHalUtWsMOFBzfL6I/qDDfUeP8UyNaSAWcnR09jALBeoCO/iyGUKPrgTjj50= X-Gm-Gg: Acq92OFBKZ23s6qAl7N61r/RlwaTVUNPQfHjHbwyH2TbwdOLPiaWTkqEY6XRye6Chul g+/0bM45I7sl7DBpzQaA1OBEQZFZ/GrOTKvh7izSz3wTbxEwT2lLyuuS1O8p80HozAD3ZlU6Zyd YFw0oR50hlxdhOhQpqzLx8fzCaH9lYRynk7+znQ5Z25zZu7rwBtPb+WSUbWEvzGRGR7ABPJuiGx 0bUPVyXD3Q8ofj4VfDt0kH1m9q/ePlDjQvPNmt61B1MvHQzGlmkr74Ika0Q05fibR0qUjG382dH 1tmz1bB9Y9YlRwDg0WeUDigpeT75DpbqOUle6uz3G9jty6O65sSMt8Bk7VclYoXklXN8IgSgG++ J0O8vUXSA/ywB4PqH6PYGFUipbVaBwUTUg0NjeHBAFG5JncNn//KV9Psqg5AwrCY/RLF50PZI05 l7rp1dSlKxfyfcX8TYKQcuFdqhQbtjdb4Afi/2HRHKEBKcOg== X-Received: by 2002:a05:622a:1a81:b0:516:3183:c1fc with SMTP id d75a77b69052e-516d43b30camr367362851cf.50.1779952259925; Thu, 28 May 2026 00:10:59 -0700 (PDT) X-Received: by 2002:a05:622a:1a81:b0:516:3183:c1fc with SMTP id d75a77b69052e-516d43b30camr367362441cf.50.1779952259241; Thu, 28 May 2026 00:10:59 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-395dcc0a54fsm37416161fa.20.2026.05.28.00.10.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 May 2026 00:10:57 -0700 (PDT) From: Dmitry Baryshkov Date: Thu, 28 May 2026 10:10:50 +0300 Subject: [PATCH v3 3/3] drm/bridge: display-connector: trigger initial HPD event for DP 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: <20260528-dp-connector-hpd-v3-3-d656eb1079b7@oss.qualcomm.com> References: <20260528-dp-connector-hpd-v3-0-d656eb1079b7@oss.qualcomm.com> In-Reply-To: <20260528-dp-connector-hpd-v3-0-d656eb1079b7@oss.qualcomm.com> To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Tomi Valkeinen , Boris Brezillon , Sam Ravnborg , Sebastian Reichel , Yongxing Mou , Jonas Karlman Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3380; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=gXYnVv+et9mKSsRcfzytd7/BMq8iX3aPDHuiutk/ozU=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBqF+p5eciFkm/4ibcN/flXWH7mQ7FqQW0gmpGCE nhQAHBs172JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCahfqeQAKCRCLPIo+Aiko 1dDSB/9slePnf8zuZRcb+x7QodsYuVQoLGfur6bPOuuwfYYOt7kcKa3FHM5vx41MXzjhWQmIYtv IXwQvWfxDqnUCZpCulPxGk7PHFYnWW7r0L/EXDic32bPZ00I5VYt8Zdg7nGmKTn0x2DQKclXCMm E/N55aA1v6HwQStpGIFig4PySb9s8QNSiA2TEifJwuf7pxcZE18QOAjge1CeWXimV/psTU84V2Z 1JwU0VMxmEKzjCXc5X5HOaQhAEA+pNsn9EC00nhsJN1lPssWHq1vTrF52mfOCg6U0uuf87D1w/s sp4BcHpqHore9t3QDoJEbamPsjBf6RGIN6i3KJILwbW1Vryy X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=VeXH+lp9 c=1 sm=1 tr=0 ts=6a17ea84 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=vFO7MoRB4rWv4-WZv6sA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTI4MDA2OSBTYWx0ZWRfXzJSAQ8c+uyFs saPyAvLZqJhiMyjHdBLE364XlxwKmwRz+TvXYEeyzInVEQ4eIt43T2G+4mhW26wYlSg/qVCEYau pF1zMlC50c0LhK77eSzEQ/dIe0tXcybzRR+vGMWwVuXhaXeqHCuO4bm9AU8ydxcFzwSYEUhhXSS rn4I8shcYha8EZD/Tq4+OYVHDrbtESnfDCzCFgw915eVzJzxbFt7VbFcSZXcJUjen8N3dS/RtoM 6hVY8mP0zXsYYypmAZz2aWcQB4HF3KxfDEsFfz+xxIco67gIg5pdCcHg6ALhqoWe5bgguspxh1s naoaStnleb1nr8tw4ltOqubXmxc7EQqq/9fqb1vb7uL0TCOHVGsgZYvY4Amr7q54OWJ9IVo6N3b Ni4AxKeJIH4519ZU8hz78CiiHp1NUineN25A9Srv4PD2AUP/joSzZDBSonJcJd9FhqzzELtVbrW 5fFhWy2x8psvFgWilUA== X-Proofpoint-GUID: ovNWkyYvWoabUon95rcp1GVLW-mumr5c X-Proofpoint-ORIG-GUID: ovNWkyYvWoabUon95rcp1GVLW-mumr5c X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-05-28_02,2026-05-26_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 malwarescore=0 impostorscore=0 bulkscore=0 suspectscore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2605280069 If the DisplayPort drivers use display-connector for the HPD detection, the internal HPD state machine might be not active and thus the hardware might be not able to handle cable detection correctly. Instead it will depend on the external HPD notifications to set the cable state, bypassing the internal HPD state machine (for example this is the case for the msm DP driver). However if the cable has been plugged before the HPD IRQ has been enabled, there will be no HPD event coming. The drivers might fail detection in such a case. Trigger the HPD notification after enabling the HPD IRQ, propagating the cable insertion state. Note, this issue only affects drivers which set OP_HPD but not OP_DETECT (like dp-connector). Here DP differs from HDMI. For HDMI there is no additional state or extra "bridge with no sinks plugged" cases. The HPD pin state is equal to the display plugged state. Nor do we have an AUX bus with timeouts, etc. Fixes: 2e2bf3a5584d ("drm/bridge: display-connector: add DP support") Reported-by: Yongxing Mou Signed-off-by: Dmitry Baryshkov Reviewed-by: Sebastian Reichel --- drivers/gpu/drm/bridge/display-connector.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/gpu/drm/bridge/display-connector.c b/drivers/gpu/drm/b= ridge/display-connector.c index 6bb1134f75c3..f7a5bfd9c075 100644 --- a/drivers/gpu/drm/bridge/display-connector.c +++ b/drivers/gpu/drm/bridge/display-connector.c @@ -12,6 +12,7 @@ #include #include #include +#include =20 #include #include @@ -25,6 +26,8 @@ struct display_connector { =20 struct regulator *supply; struct gpio_desc *ddc_en; + + struct work_struct hpd_work; }; =20 static inline struct display_connector * @@ -92,15 +95,29 @@ static void display_connector_hpd_enable(struct drm_bri= dge *bridge) struct display_connector *conn =3D to_display_connector(bridge); =20 enable_irq(conn->hpd_irq); + + if (conn->bridge.type =3D=3D DRM_MODE_CONNECTOR_DisplayPort) + schedule_work(&conn->hpd_work); } =20 static void display_connector_hpd_disable(struct drm_bridge *bridge) { struct display_connector *conn =3D to_display_connector(bridge); =20 + if (conn->bridge.type =3D=3D DRM_MODE_CONNECTOR_DisplayPort) + cancel_work_sync(&conn->hpd_work); + disable_irq(conn->hpd_irq); } =20 +static void display_connector_hpd_work(struct work_struct *work) +{ + struct display_connector *conn =3D container_of(work, struct display_conn= ector, hpd_work); + struct drm_bridge *bridge =3D &conn->bridge; + + drm_bridge_hpd_notify(bridge, display_connector_detect(bridge)); +} + static const struct drm_edid *display_connector_edid_read(struct drm_bridg= e *bridge, struct drm_connector *connector) { @@ -395,6 +412,8 @@ static int display_connector_probe(struct platform_devi= ce *pdev) conn->bridge.ops |=3D DRM_BRIDGE_OP_DETECT; if (conn->hpd_irq >=3D 0) conn->bridge.ops |=3D DRM_BRIDGE_OP_HPD; + if (conn->hpd_irq >=3D 0 && type =3D=3D DRM_MODE_CONNECTOR_DisplayPort) + INIT_WORK(&conn->hpd_work, display_connector_hpd_work); =20 dev_dbg(&pdev->dev, "Found %s display connector '%s' %s DDC bus and %s HPD GPIO (ops 0x%x)\n= ", --=20 2.47.3