From: Jani Nikula <jani.nikula@intel.com>
To: Ramya SR <rsr@qti.qualcomm.com>,
Alex Deucher <alexdeucher@gmail.com>,
"imre.deak@intel.com" <imre.deak@intel.com>
Cc: Jeff Layton <jlayton@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>, Wayne Lin <Wayne.Lin@amd.com>,
Alex Deucher <alexander.deucher@amd.com>,
"Ramya SR \(QUIC\)" <quic_rsr@quicinc.com>
Subject: RE: [PATCH v1] drm/dp/mst: fix missing modeset unlock for MST port detect
Date: Fri, 29 Sep 2023 10:53:48 +0300 [thread overview]
Message-ID: <87wmw9ifeb.fsf@intel.com> (raw)
In-Reply-To: <BN0PR02MB79512718F046A8C88BE359F181C0A@BN0PR02MB7951.namprd02.prod.outlook.com>
On Fri, 29 Sep 2023, Ramya SR <rsr@qti.qualcomm.com> wrote:
> Hi All ,
>
> Please review the reply comment.
Please read the responses you do get [1]. Please stop
top-posting. Please fix your mail client.
BR,
Jani.
[1] https://lore.kernel.org/r/877coak8o3.fsf@intel.com
>
> Regards,
> Ramya SR
>
> -----Original Message-----
> From: Ramya SR
> Sent: Thursday, September 28, 2023 7:55 AM
> To: 'Alex Deucher' <alexdeucher@gmail.com>; 'imre.deak@intel.com' <imre.deak@intel.com>
> Cc: 'Lyude Paul' <lyude@redhat.com>; 'Jani Nikula' <jani.nikula@intel.com>; 'Jeff Layton' <jlayton@kernel.org>; 'linux-kernel@vger.kernel.org' <linux-kernel@vger.kernel.org>; 'dri-devel@lists.freedesktop.org' <dri-devel@lists.freedesktop.org>; 'Wayne Lin' <Wayne.Lin@amd.com>; 'Alex Deucher' <alexander.deucher@amd.com>; Ramya SR (QUIC) <quic_rsr@quicinc.com>
> Subject: RE: [PATCH v1] drm/dp/mst: fix missing modeset unlock for MST port detect
>
> Reminder. Please review the reply comment.
>
> Thanks and Regards,
> Ramya SR
>
> -----Original Message-----
> From: Ramya SR
> Sent: Tuesday, September 26, 2023 4:12 PM
> To: Alex Deucher <alexdeucher@gmail.com>; imre.deak@intel.com
> Cc: Lyude Paul <lyude@redhat.com>; Jani Nikula <jani.nikula@intel.com>; Jeff Layton <jlayton@kernel.org>; linux-kernel@vger.kernel.org; dri-devel@lists.freedesktop.org; Wayne Lin <Wayne.Lin@amd.com>; Alex Deucher <alexander.deucher@amd.com>; Ramya SR (QUIC) <quic_rsr@quicinc.com>
> Subject: RE: [PATCH v1] drm/dp/mst: fix missing modeset unlock for MST port detect
>
>
>
> -----Original Message-----
> From: Alex Deucher <alexdeucher@gmail.com>
> Sent: Monday, September 25, 2023 8:27 PM
> To: imre.deak@intel.com
> Cc: Lyude Paul <lyude@redhat.com>; Jani Nikula <jani.nikula@intel.com>; Jeff Layton <jlayton@kernel.org>; linux-kernel@vger.kernel.org; dri-devel@lists.freedesktop.org; Wayne Lin <Wayne.Lin@amd.com>; Alex Deucher <alexander.deucher@amd.com>; Ramya SR (QUIC) <quic_rsr@quicinc.com>
> Subject: Re: [PATCH v1] drm/dp/mst: fix missing modeset unlock for MST port detect
>
> WARNING: This email originated from outside of Qualcomm. Please be wary of any links or attachments, and do not enable macros.
>
> On Fri, Sep 22, 2023 at 3:22 PM Imre Deak <imre.deak@intel.com> wrote:
>>
>> On Fri, Sep 22, 2023 at 03:02:23PM -0400, Lyude Paul wrote:
>> >
>> > Oh! wow thank you for catching this:
>> >
>> > Reviewed-by: Lyude Paul <lyude@redhat.com>
>> >
>> > I will go and push this to drm-misc-next in just a moment
>> >
>> > On Fri, 2023-09-15 at 10:24 +0530, Ramya SR wrote:
>> > > Modeset mutex unlock is missing in drm_dp_mst_detect_port function.
>> > > This will lead to deadlock if calling the function multiple times
>> > > in an atomic operation, for example, getting imultiple MST ports
>> > > status for a DP MST bonding scenario.
>> > >
>> > > Signed-off-by: Ramya SR <quic_rsr@quicinc.com>
>> > > ---
>> > > drivers/gpu/drm/display/drm_dp_mst_topology.c | 4 +++-
>> > > 1 file changed, 3 insertions(+), 1 deletion(-)
>> > >
>> > > diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c
>> > > b/drivers/gpu/drm/display/drm_dp_mst_topology.c
>> > > index ed96cfc..d6512c4 100644
>> > > --- a/drivers/gpu/drm/display/drm_dp_mst_topology.c
>> > > +++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c
>> > > @@ -4154,7 +4154,7 @@ drm_dp_mst_detect_port(struct drm_connector
>> > > *connector,
>> > >
>> > > ret = drm_modeset_lock(&mgr->base.lock, ctx);
>> > > if (ret)
>> > > - goto out;
>> > > + goto fail;
>> > >
>> > > ret = connector_status_disconnected;
>> > >
>> > > @@ -4181,6 +4181,8 @@ drm_dp_mst_detect_port(struct drm_connector *connector,
>> > > break;
>> > > }
>> > > out:
>> > > + drm_modeset_unlock(&mgr->base.lock);
>>
>> Isn't this supposed to be unlocked only by
>> drm_helper_probe_detect_ctx() / drm_helper_probe_detect() ?
>
> Maybe adding a comment to that effect would be helpful for the future.
>
> Alex
>
>>this is different lock, above function mentioned is locking/unlocking the global connection_mutex, that is required always locked during the atomic >check/commit. Here we are talking about MST topology manager mutex "mgr->base.lock".
>
>>For normal non-bond MST, it's ok, the calling sequence for detecting
>>MST connector status is dp_mst_connector_detect
>>->mst->mst_fw_cbs->detect_port_ctx = dp_mst_detect_port
>>->drm_dp_mst_detect_port (where mgr->base.lock is locked)
>
>> Then for the bond MST case, to figure out if the sibling connectors
>> are also connected, so that the bonding is possible, we need detect
>> two or more connectors >in single dp_mst_connector_detect call
>
>>dp_mst_connector_detect ->mst->mst_fw_cbs->detect_port_ctx =
>>dp_mst_detect_port ->drm_dp_mst_detect_port (where mgr->base.lock is
>>locked) dp_mst_find_sibling_connector
>>->mst->mst_fw_cbs->detect_port_ctx = dp_mst_detect_port
>>->drm_dp_mst_detect_port (blocked by mgr->base.lock)
>
>>
>> > > +fail:
>> > > drm_dp_mst_topology_put_port(port);
>> > > return ret;
>> > > }
>> >
>> > --
>> > Cheers,
>> > Lyude Paul (she/her)
>> > Software Engineer at Red Hat
>> >
--
Jani Nikula, Intel
WARNING: multiple messages have this Message-ID (diff)
From: Jani Nikula <jani.nikula@intel.com>
To: Ramya SR <rsr@qti.qualcomm.com>,
Alex Deucher <alexdeucher@gmail.com>,
"imre.deak@intel.com" <imre.deak@intel.com>
Cc: Lyude Paul <lyude@redhat.com>, Jeff Layton <jlayton@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>, Wayne Lin <Wayne.Lin@amd.com>,
Alex Deucher <alexander.deucher@amd.com>,
"Ramya SR (QUIC)" <quic_rsr@quicinc.com>
Subject: RE: [PATCH v1] drm/dp/mst: fix missing modeset unlock for MST port detect
Date: Fri, 29 Sep 2023 10:53:48 +0300 [thread overview]
Message-ID: <87wmw9ifeb.fsf@intel.com> (raw)
In-Reply-To: <BN0PR02MB79512718F046A8C88BE359F181C0A@BN0PR02MB7951.namprd02.prod.outlook.com>
On Fri, 29 Sep 2023, Ramya SR <rsr@qti.qualcomm.com> wrote:
> Hi All ,
>
> Please review the reply comment.
Please read the responses you do get [1]. Please stop
top-posting. Please fix your mail client.
BR,
Jani.
[1] https://lore.kernel.org/r/877coak8o3.fsf@intel.com
>
> Regards,
> Ramya SR
>
> -----Original Message-----
> From: Ramya SR
> Sent: Thursday, September 28, 2023 7:55 AM
> To: 'Alex Deucher' <alexdeucher@gmail.com>; 'imre.deak@intel.com' <imre.deak@intel.com>
> Cc: 'Lyude Paul' <lyude@redhat.com>; 'Jani Nikula' <jani.nikula@intel.com>; 'Jeff Layton' <jlayton@kernel.org>; 'linux-kernel@vger.kernel.org' <linux-kernel@vger.kernel.org>; 'dri-devel@lists.freedesktop.org' <dri-devel@lists.freedesktop.org>; 'Wayne Lin' <Wayne.Lin@amd.com>; 'Alex Deucher' <alexander.deucher@amd.com>; Ramya SR (QUIC) <quic_rsr@quicinc.com>
> Subject: RE: [PATCH v1] drm/dp/mst: fix missing modeset unlock for MST port detect
>
> Reminder. Please review the reply comment.
>
> Thanks and Regards,
> Ramya SR
>
> -----Original Message-----
> From: Ramya SR
> Sent: Tuesday, September 26, 2023 4:12 PM
> To: Alex Deucher <alexdeucher@gmail.com>; imre.deak@intel.com
> Cc: Lyude Paul <lyude@redhat.com>; Jani Nikula <jani.nikula@intel.com>; Jeff Layton <jlayton@kernel.org>; linux-kernel@vger.kernel.org; dri-devel@lists.freedesktop.org; Wayne Lin <Wayne.Lin@amd.com>; Alex Deucher <alexander.deucher@amd.com>; Ramya SR (QUIC) <quic_rsr@quicinc.com>
> Subject: RE: [PATCH v1] drm/dp/mst: fix missing modeset unlock for MST port detect
>
>
>
> -----Original Message-----
> From: Alex Deucher <alexdeucher@gmail.com>
> Sent: Monday, September 25, 2023 8:27 PM
> To: imre.deak@intel.com
> Cc: Lyude Paul <lyude@redhat.com>; Jani Nikula <jani.nikula@intel.com>; Jeff Layton <jlayton@kernel.org>; linux-kernel@vger.kernel.org; dri-devel@lists.freedesktop.org; Wayne Lin <Wayne.Lin@amd.com>; Alex Deucher <alexander.deucher@amd.com>; Ramya SR (QUIC) <quic_rsr@quicinc.com>
> Subject: Re: [PATCH v1] drm/dp/mst: fix missing modeset unlock for MST port detect
>
> WARNING: This email originated from outside of Qualcomm. Please be wary of any links or attachments, and do not enable macros.
>
> On Fri, Sep 22, 2023 at 3:22 PM Imre Deak <imre.deak@intel.com> wrote:
>>
>> On Fri, Sep 22, 2023 at 03:02:23PM -0400, Lyude Paul wrote:
>> >
>> > Oh! wow thank you for catching this:
>> >
>> > Reviewed-by: Lyude Paul <lyude@redhat.com>
>> >
>> > I will go and push this to drm-misc-next in just a moment
>> >
>> > On Fri, 2023-09-15 at 10:24 +0530, Ramya SR wrote:
>> > > Modeset mutex unlock is missing in drm_dp_mst_detect_port function.
>> > > This will lead to deadlock if calling the function multiple times
>> > > in an atomic operation, for example, getting imultiple MST ports
>> > > status for a DP MST bonding scenario.
>> > >
>> > > Signed-off-by: Ramya SR <quic_rsr@quicinc.com>
>> > > ---
>> > > drivers/gpu/drm/display/drm_dp_mst_topology.c | 4 +++-
>> > > 1 file changed, 3 insertions(+), 1 deletion(-)
>> > >
>> > > diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c
>> > > b/drivers/gpu/drm/display/drm_dp_mst_topology.c
>> > > index ed96cfc..d6512c4 100644
>> > > --- a/drivers/gpu/drm/display/drm_dp_mst_topology.c
>> > > +++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c
>> > > @@ -4154,7 +4154,7 @@ drm_dp_mst_detect_port(struct drm_connector
>> > > *connector,
>> > >
>> > > ret = drm_modeset_lock(&mgr->base.lock, ctx);
>> > > if (ret)
>> > > - goto out;
>> > > + goto fail;
>> > >
>> > > ret = connector_status_disconnected;
>> > >
>> > > @@ -4181,6 +4181,8 @@ drm_dp_mst_detect_port(struct drm_connector *connector,
>> > > break;
>> > > }
>> > > out:
>> > > + drm_modeset_unlock(&mgr->base.lock);
>>
>> Isn't this supposed to be unlocked only by
>> drm_helper_probe_detect_ctx() / drm_helper_probe_detect() ?
>
> Maybe adding a comment to that effect would be helpful for the future.
>
> Alex
>
>>this is different lock, above function mentioned is locking/unlocking the global connection_mutex, that is required always locked during the atomic >check/commit. Here we are talking about MST topology manager mutex "mgr->base.lock".
>
>>For normal non-bond MST, it's ok, the calling sequence for detecting
>>MST connector status is dp_mst_connector_detect
>>->mst->mst_fw_cbs->detect_port_ctx = dp_mst_detect_port
>>->drm_dp_mst_detect_port (where mgr->base.lock is locked)
>
>> Then for the bond MST case, to figure out if the sibling connectors
>> are also connected, so that the bonding is possible, we need detect
>> two or more connectors >in single dp_mst_connector_detect call
>
>>dp_mst_connector_detect ->mst->mst_fw_cbs->detect_port_ctx =
>>dp_mst_detect_port ->drm_dp_mst_detect_port (where mgr->base.lock is
>>locked) dp_mst_find_sibling_connector
>>->mst->mst_fw_cbs->detect_port_ctx = dp_mst_detect_port
>>->drm_dp_mst_detect_port (blocked by mgr->base.lock)
>
>>
>> > > +fail:
>> > > drm_dp_mst_topology_put_port(port);
>> > > return ret;
>> > > }
>> >
>> > --
>> > Cheers,
>> > Lyude Paul (she/her)
>> > Software Engineer at Red Hat
>> >
--
Jani Nikula, Intel
next prev parent reply other threads:[~2023-09-29 8:23 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-15 4:54 [PATCH v1] drm/dp/mst: fix missing modeset unlock for MST port detect Ramya SR
2023-09-22 9:41 ` Ramya SR
2023-09-22 19:02 ` Lyude Paul
2023-09-22 19:22 ` Imre Deak
2023-09-22 19:22 ` Imre Deak
2023-09-22 19:23 ` Lyude Paul
2023-09-22 19:23 ` Lyude Paul
2023-09-25 14:57 ` Alex Deucher
2023-09-25 14:57 ` Alex Deucher
2023-09-26 10:41 ` Ramya SR
2023-09-26 10:41 ` Ramya SR
2023-09-28 2:25 ` Ramya SR
2023-09-28 2:25 ` Ramya SR
2023-09-28 8:23 ` Jani Nikula
2023-09-28 8:23 ` Jani Nikula
2023-09-29 4:44 ` Ramya SR
2023-09-29 4:44 ` Ramya SR
2023-09-29 7:53 ` Jani Nikula [this message]
2023-09-29 7:53 ` Jani Nikula
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wmw9ifeb.fsf@intel.com \
--to=jani.nikula@intel.com \
--cc=Wayne.Lin@amd.com \
--cc=alexander.deucher@amd.com \
--cc=alexdeucher@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=imre.deak@intel.com \
--cc=jlayton@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=quic_rsr@quicinc.com \
--cc=rsr@qti.qualcomm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.