Received: by 2002:a05:7412:37c9:b0:e2:908c:2ebd with SMTP id jz9csp1002936rdb; Tue, 19 Sep 2023 17:50:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFxNPUFdxrQ7b3vWUpfCuWkqlUS662tkovfCC5p0dIVD+pMnD3p0rb4+gQZAJKoduHQW/+B X-Received: by 2002:a05:6358:430c:b0:139:d5b9:87d3 with SMTP id r12-20020a056358430c00b00139d5b987d3mr1351507rwc.5.1695171052077; Tue, 19 Sep 2023 17:50:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695171052; cv=none; d=google.com; s=arc-20160816; b=kapCF9ygy6ZwZs14V6EYKZRv3JL9EtC3Yko7V8TTNNxLSv+mwwbStiU1Arjlp5+8Ue 5DLaJBPos+cYacrJtzjr9R5pJijplFX+WhMtwQWd9YzWHIbfHYBksCctRbhTJjG3ACts I7f8fMnL/RC2sGgoSVNINLwEd2mDK9O0rMHKPUJ9LPFWy7/of9uySITrqRIrhfnPVHI+ we5EcD9DcDWapzXfRGHeJRLaq9OLpx80rLqjcGToBuTC8KHC/s7kbv86rGH6Hk0GfANt joJSY79Nxj4inBnnlrTXuUFIjkFHLMNtBf4nQVKnc+li38HuDsTI8WfvTvYHn8OrBrYP REUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=Vgc7l96VFQIVoCtTA7xNOne4SDrCRQDnzI9yn2gjvLY=; fh=boLP/6fXLh9N5woEGEZk2SbKyk6WpplQPPgMeujzJjY=; b=xAA+Qiw9aFU9eITRIPAPyDn1atLTHmo5uvjoD0bGnNj4DOJwI8cknpffONIqLrJgG6 J5JKRucGZnhqcHWCKOn0KBamlAJu9Gjc3XzrORVhBiP7DNUt8WU7tyYlWjnlXmaZAhmc 0m514NxpZGxlAsVbU8dk4dTO7GDE808JeYZXQb9j8hcKuHAYlR3I0tUqZrPDKBR3R8N+ tYLFAcloDfnQL1iQRN7DkePhaff9EsTn3usHD57jyPxJStdizK9sgXsiNjdGbNQLkKMJ mvbIHCJsJ9ZjxMEHnrNsfXxQ0fSK6X8h7SNzQHm9/REJO7sCeIAG0vRXC423U+MQMt7f kYMg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=VuilFooG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id q201-20020a632ad2000000b00578e07a8b60si462917pgq.545.2023.09.19.17.50.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Sep 2023 17:50:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=VuilFooG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id CF7CE8289539; Tue, 19 Sep 2023 11:12:48 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232364AbjISSMt (ORCPT + 99 others); Tue, 19 Sep 2023 14:12:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46338 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232237AbjISSMr (ORCPT ); Tue, 19 Sep 2023 14:12:47 -0400 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8EDBB12B for ; Tue, 19 Sep 2023 11:12:38 -0700 (PDT) Received: from pendragon.ideasonboard.com (213-243-189-158.bb.dnainternet.fi [213.243.189.158]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 889DF1257; Tue, 19 Sep 2023 20:10:58 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1695147058; bh=+NEoeKyU5HhZn1rudh2DyliowN0b3u/8EuHdKEGIbf8=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=VuilFooGHpc9vdw/DoKX6IVAOvNEHjb+QnhBb7kHFAYGopkIjGAjDl/hgWLur4imI ZqV5xafDxa4IQEIRfrn2iDZ8CwR7V3ufVlpjIxw1b2y4YlCSwkSeaTKAnhDLp2ADun RYhXtcZczSXG223nOmWQo9mn4HCnXPDH40DnXok4= Date: Tue, 19 Sep 2023 21:12:46 +0300 From: Laurent Pinchart To: Abhinav Kumar Cc: dri-devel@lists.freedesktop.org, Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , freedreno@lists.freedesktop.org, quic_jesszhan@quicinc.com, quic_parellan@quicinc.com, andersson@kernel.org, jani.nikula@linux.intel.com, Dmitry Baryshkov , linux-kernel@vger.kernel.org Subject: Re: [PATCH] drm: remove drm_bridge_hpd_disable() from drm_bridge_connector_destroy() Message-ID: <20230919181246.GA24325@pendragon.ideasonboard.com> References: <20230919174813.26958-1-quic_abhinavk@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20230919174813.26958-1-quic_abhinavk@quicinc.com> X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 19 Sep 2023 11:12:49 -0700 (PDT) Hi Abhinav, Thank you for the patch. On Tue, Sep 19, 2023 at 10:48:12AM -0700, Abhinav Kumar wrote: > drm_bridge_hpd_enable()/drm_bridge_hpd_disable() callbacks call into > the respective driver's hpd_enable()/hpd_disable() ops. These ops control > the HPD enable/disable logic which in some cases like MSM can be a > dedicate hardware block to control the HPD. > > During probe_defer cases, a connector can be initialized and then later > destroyed till the probe is retried. During connector destroy in these > cases, the hpd_disable() callback gets called without a corresponding > hpd_enable() leading to an unbalanced state potentially causing even > a crash. > > This can be avoided by the respective drivers maintaining their own > state logic to ensure that a hpd_disable() without a corresponding > hpd_enable() just returns without doing anything. > > However, to have a generic fix it would be better to avoid the > hpd_disable() callback from the connector destroy path and let > the hpd_enable() / hpd_disable() balance be maintained by the > corresponding drm_bridge_connector_enable_hpd() / > drm_bridge_connector_disable_hpd() APIs which should get called by > drm_kms_helper_disable_hpd(). The change makes sense to me, but I'm a bit worried this could introduce a regression by leaving HPD enabled in some cases. I agree that bridges shouldn't track the HPD state, it should be tracked by the core and the .enable_hpd() and .disable_hpd() operations should be balanced. Their documentation, however, doesn't clearly state this, and the documentation of the callers of these operations is also fairly unclear. Could you perhaps try to improve the documentation ? With that, Reviewed-by: Laurent Pinchart for this patch. > changes in v2: > - minor change in commit text (Dmitry) > > Signed-off-by: Abhinav Kumar > Reviewed-by: Dmitry Baryshkov > --- > drivers/gpu/drm/drm_bridge_connector.c | 6 ------ > 1 file changed, 6 deletions(-) > > diff --git a/drivers/gpu/drm/drm_bridge_connector.c b/drivers/gpu/drm/drm_bridge_connector.c > index 1da93d5a1f61..c4dba39acfd8 100644 > --- a/drivers/gpu/drm/drm_bridge_connector.c > +++ b/drivers/gpu/drm/drm_bridge_connector.c > @@ -187,12 +187,6 @@ static void drm_bridge_connector_destroy(struct drm_connector *connector) > struct drm_bridge_connector *bridge_connector = > to_drm_bridge_connector(connector); > > - if (bridge_connector->bridge_hpd) { > - struct drm_bridge *hpd = bridge_connector->bridge_hpd; > - > - drm_bridge_hpd_disable(hpd); > - } > - > drm_connector_unregister(connector); > drm_connector_cleanup(connector); > -- Regards, Laurent Pinchart