All of lore.kernel.org
 help / color / mirror / Atom feed
From: Doug Anderson <dianders@chromium.org>
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: Abhinav Kumar <quic_abhinavk@quicinc.com>,
	"Sankeerth Billakanti (QUIC)" <quic_sbillaka@quicinc.com>,
	quic_kalyant <quic_kalyant@quicinc.com>,
	"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" 
	<devicetree@vger.kernel.org>,
	quic_vproddut <quic_vproddut@quicinc.com>,
	David Airlie <airlied@linux.ie>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	"Kuogee Hsieh (QUIC)" <quic_khsieh@quicinc.com>,
	freedreno <freedreno@lists.freedesktop.org>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	"bjorn.andersson@linaro.org" <bjorn.andersson@linaro.org>,
	Sean Paul <seanpaul@chromium.org>,
	"Aravind Venkateswaran (QUIC)" <quic_aravindh@quicinc.com>,
	Stephen Boyd <swboyd@chromium.org>, Sean Paul <sean@poorly.run>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v6 1/8] drm/msm/dp: Add eDP support via aux_bus
Date: Fri, 8 Apr 2022 06:56:08 -0700	[thread overview]
Message-ID: <CAD=FV=XS8h8GwL11CmJou31hTbf=mS77-j1y66uY+2YuGAUpzQ@mail.gmail.com> (raw)
In-Reply-To: <CAA8EJprvSy1PuYCXMr-TxBF1XwcAZaErSmzH2Tw5-NAovxHY7A@mail.gmail.com>

Hi,

On Fri, Apr 8, 2022 at 5:13 AM Dmitry Baryshkov
<dmitry.baryshkov@linaro.org> wrote:
>
> On Fri, 8 Apr 2022 at 03:28, Doug Anderson <dianders@chromium.org> wrote:
> >
> > Hi,
> >
> > On Thu, Apr 7, 2022 at 4:36 PM Dmitry Baryshkov
> > <dmitry.baryshkov@linaro.org> wrote:
> > >
> > > The ps8640 driver looks 'working by coincidence'. It calls
> > > dp_aux_populate, then immediately after the function returns it checks
> > > for the panel. If panel-edp is built as a module, the probe might fail
> > > easily.
> > > The anx7625 driver has the same kind of issue. The DP AUX bus is
> > > populated from the probe() and after some additional work the panel is
> > > being checked.
> > > This design is fragile and from my quick glance it can break (or be
> > > broken) too easy. It reminds me of our drm msm 'probe' loops
> > > preventing the device to boot completely if the dsi bridge/panel could
> > > not be probed in time.
> >
> > I did spend some time thinking about this, at least for ps8640. I
> > believe that as long as the panel's probe isn't asynchronous.
>
> By panel probe (as a probe of any device) is potentially asynchronous.
> As in your example, the PWM might not be present, the regulator probe
> might have been delayed, the panel-edp might be built as a module,
> which is not present for some reason.

Well, in those cases it's not exactly asynchronous, or at least not in
the way I was thinking about. Either it will work now, or we should
try again later when more drivers have probed. The case I was worried
about was:

1. We call devm_of_dp_aux_populate_ep_devices()

2. devm_of_dp_aux_populate_ep_devices() kicks off a probe to the panel
in the background

3. devm_of_dp_aux_populate_ep_devices() returns to us without waiting
for the panel's probe to finish.

I think that's possible if the panel driver sets PROBE_PREFER_ASYNCHRONOUS.

I was less worried about the resources missing since I thought that
would be handled by the normal probe deferral case. IIRC the "infinite
loop" that we used to end up with MSM's probe was because something
about the way the MSM DRM driver worked would cause the deferral
mechanisms to retry instantly each time we deferred. I don't remember
exactly what triggered it, but I don't _think_ that's true for ps8640?


> > Basically if the panel isn't ready then ps8640 should return and we'll
> > retry later. I do remember the probe loops that we used to have with
> > msm and I don't _think_ this would trigger it.
>
> I don't have proof here. But as I wrote, this thing might break at some point.
>
> > That being said, if we need to separate out the AUX bus into a
> > sub-device like we did in sn65dsi86 we certainly could.
>
> Ideally we should separate the "bridge" subdevice, like it was done in
> sn65dsi86.
> So that the aux host probes, registers the EP device, then the bridge
> device can not be probed (and thus the drm_bridge is not created)
> until the next  bridge becomes available.

You're definitely right, that's best. I was hesitant to force the
issue during review of the ps8640 because it adds a bunch of
complexity and didn't _seem_ to be needed. Maybe it makes sense to
just code it up, though...

-Doug

WARNING: multiple messages have this Message-ID (diff)
From: Doug Anderson <dianders@chromium.org>
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: quic_kalyant <quic_kalyant@quicinc.com>,
	"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
	<devicetree@vger.kernel.org>,
	"Sankeerth Billakanti \(QUIC\)" <quic_sbillaka@quicinc.com>,
	quic_vproddut <quic_vproddut@quicinc.com>,
	David Airlie <airlied@linux.ie>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	Stephen Boyd <swboyd@chromium.org>,
	Abhinav Kumar <quic_abhinavk@quicinc.com>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	"Kuogee Hsieh \(QUIC\)" <quic_khsieh@quicinc.com>,
	Sean Paul <sean@poorly.run>, Sean Paul <seanpaul@chromium.org>,
	"Aravind Venkateswaran \(QUIC\)" <quic_aravindh@quicinc.com>,
	"bjorn.andersson@linaro.org" <bjorn.andersson@linaro.org>,
	freedreno <freedreno@lists.freedesktop.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v6 1/8] drm/msm/dp: Add eDP support via aux_bus
Date: Fri, 8 Apr 2022 06:56:08 -0700	[thread overview]
Message-ID: <CAD=FV=XS8h8GwL11CmJou31hTbf=mS77-j1y66uY+2YuGAUpzQ@mail.gmail.com> (raw)
In-Reply-To: <CAA8EJprvSy1PuYCXMr-TxBF1XwcAZaErSmzH2Tw5-NAovxHY7A@mail.gmail.com>

Hi,

On Fri, Apr 8, 2022 at 5:13 AM Dmitry Baryshkov
<dmitry.baryshkov@linaro.org> wrote:
>
> On Fri, 8 Apr 2022 at 03:28, Doug Anderson <dianders@chromium.org> wrote:
> >
> > Hi,
> >
> > On Thu, Apr 7, 2022 at 4:36 PM Dmitry Baryshkov
> > <dmitry.baryshkov@linaro.org> wrote:
> > >
> > > The ps8640 driver looks 'working by coincidence'. It calls
> > > dp_aux_populate, then immediately after the function returns it checks
> > > for the panel. If panel-edp is built as a module, the probe might fail
> > > easily.
> > > The anx7625 driver has the same kind of issue. The DP AUX bus is
> > > populated from the probe() and after some additional work the panel is
> > > being checked.
> > > This design is fragile and from my quick glance it can break (or be
> > > broken) too easy. It reminds me of our drm msm 'probe' loops
> > > preventing the device to boot completely if the dsi bridge/panel could
> > > not be probed in time.
> >
> > I did spend some time thinking about this, at least for ps8640. I
> > believe that as long as the panel's probe isn't asynchronous.
>
> By panel probe (as a probe of any device) is potentially asynchronous.
> As in your example, the PWM might not be present, the regulator probe
> might have been delayed, the panel-edp might be built as a module,
> which is not present for some reason.

Well, in those cases it's not exactly asynchronous, or at least not in
the way I was thinking about. Either it will work now, or we should
try again later when more drivers have probed. The case I was worried
about was:

1. We call devm_of_dp_aux_populate_ep_devices()

2. devm_of_dp_aux_populate_ep_devices() kicks off a probe to the panel
in the background

3. devm_of_dp_aux_populate_ep_devices() returns to us without waiting
for the panel's probe to finish.

I think that's possible if the panel driver sets PROBE_PREFER_ASYNCHRONOUS.

I was less worried about the resources missing since I thought that
would be handled by the normal probe deferral case. IIRC the "infinite
loop" that we used to end up with MSM's probe was because something
about the way the MSM DRM driver worked would cause the deferral
mechanisms to retry instantly each time we deferred. I don't remember
exactly what triggered it, but I don't _think_ that's true for ps8640?


> > Basically if the panel isn't ready then ps8640 should return and we'll
> > retry later. I do remember the probe loops that we used to have with
> > msm and I don't _think_ this would trigger it.
>
> I don't have proof here. But as I wrote, this thing might break at some point.
>
> > That being said, if we need to separate out the AUX bus into a
> > sub-device like we did in sn65dsi86 we certainly could.
>
> Ideally we should separate the "bridge" subdevice, like it was done in
> sn65dsi86.
> So that the aux host probes, registers the EP device, then the bridge
> device can not be probed (and thus the drm_bridge is not created)
> until the next  bridge becomes available.

You're definitely right, that's best. I was hesitant to force the
issue during review of the ps8640 because it adds a bunch of
complexity and didn't _seem_ to be needed. Maybe it makes sense to
just code it up, though...

-Doug

  reply	other threads:[~2022-04-08 13:56 UTC|newest]

Thread overview: 140+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-30 16:02 [PATCH v6 0/8] Add support for the eDP panel over aux_bus Sankeerth Billakanti
2022-03-30 16:02 ` Sankeerth Billakanti
2022-03-30 16:02 ` [PATCH v6 1/8] drm/msm/dp: Add eDP support via aux_bus Sankeerth Billakanti
2022-03-30 16:02   ` Sankeerth Billakanti
2022-03-30 23:19   ` Dmitry Baryshkov
2022-03-30 23:19     ` Dmitry Baryshkov
2022-03-31  0:33     ` Doug Anderson
2022-03-31  0:33       ` Doug Anderson
2022-03-31 23:22   ` Doug Anderson
2022-03-31 23:22     ` Doug Anderson
2022-04-02 10:37     ` Dmitry Baryshkov
2022-04-02 10:37       ` Dmitry Baryshkov
2022-04-02 17:06       ` Doug Anderson
2022-04-02 17:06         ` Doug Anderson
2022-04-02 20:26         ` Dmitry Baryshkov
2022-04-02 20:26           ` Dmitry Baryshkov
2022-04-04 20:53           ` Doug Anderson
2022-04-04 20:53             ` Doug Anderson
2022-04-05 12:53             ` Dmitry Baryshkov
2022-04-05 12:53               ` Dmitry Baryshkov
2022-04-05 17:02               ` Doug Anderson
2022-04-05 17:02                 ` Doug Anderson
2022-04-05 17:36                 ` Dmitry Baryshkov
2022-04-05 17:36                   ` Dmitry Baryshkov
2022-04-05 18:11                   ` Doug Anderson
2022-04-05 18:11                     ` Doug Anderson
2022-04-07 14:19                     ` Sankeerth Billakanti (QUIC)
2022-04-07 14:19                       ` Sankeerth Billakanti (QUIC)
2022-04-07 17:07                       ` Doug Anderson
2022-04-07 17:07                         ` Doug Anderson
2022-04-07 20:11                         ` Abhinav Kumar
2022-04-07 20:11                           ` Abhinav Kumar
2022-04-07 20:47                           ` Doug Anderson
2022-04-07 20:47                             ` Doug Anderson
2022-04-07 22:03                             ` Abhinav Kumar
2022-04-07 22:03                               ` Abhinav Kumar
2022-04-07 23:34                               ` Doug Anderson
2022-04-07 23:34                                 ` Doug Anderson
2022-04-07 23:46                                 ` Dmitry Baryshkov
2022-04-07 23:46                                   ` Dmitry Baryshkov
2022-04-08  0:21                                   ` Doug Anderson
2022-04-08  0:21                                     ` Doug Anderson
2022-04-08 12:19                                     ` Dmitry Baryshkov
2022-04-08 12:19                                       ` Dmitry Baryshkov
2022-04-08 13:43                                       ` Doug Anderson
2022-04-08 13:43                                         ` Doug Anderson
2022-04-08 14:58                                         ` Dmitry Baryshkov
2022-04-08 14:58                                           ` Dmitry Baryshkov
2022-04-08 17:23                                           ` Abhinav Kumar
2022-04-08 17:23                                             ` Abhinav Kumar
2022-04-07 23:35                           ` Dmitry Baryshkov
2022-04-07 23:35                             ` Dmitry Baryshkov
2022-04-08  0:20                             ` Doug Anderson
2022-04-08  0:20                               ` Doug Anderson
2022-04-08 12:13                               ` Dmitry Baryshkov
2022-04-08 12:13                                 ` Dmitry Baryshkov
2022-04-08 13:56                                 ` Doug Anderson [this message]
2022-04-08 13:56                                   ` Doug Anderson
2022-04-08 14:17                                   ` Dmitry Baryshkov
2022-04-08 14:17                                     ` Dmitry Baryshkov
2022-03-30 16:02 ` [PATCH v6 2/8] drm/msm/dp: wait for hpd high before aux transaction Sankeerth Billakanti
2022-03-30 16:02   ` Sankeerth Billakanti
2022-03-31 23:22   ` Doug Anderson
2022-03-31 23:22     ` Doug Anderson
2022-04-04 12:43     ` Sankeerth Billakanti (QUIC)
2022-04-04 12:43       ` Sankeerth Billakanti (QUIC)
2022-03-30 16:02 ` [PATCH v6 3/8] drm/msm/dp: Support only IRQ_HPD and REPLUG interrupts for eDP Sankeerth Billakanti
2022-03-30 16:02   ` Sankeerth Billakanti
2022-03-31 23:22   ` Doug Anderson
2022-03-31 23:22     ` Doug Anderson
2022-04-04 12:56     ` Sankeerth Billakanti (QUIC)
2022-04-04 12:56       ` Sankeerth Billakanti (QUIC)
2022-03-30 16:02 ` [PATCH v6 4/8] drm/msm/dp: avoid handling masked interrupts Sankeerth Billakanti
2022-03-30 16:02   ` Sankeerth Billakanti
2022-03-30 22:16   ` Dmitry Baryshkov
2022-03-30 22:16     ` Dmitry Baryshkov
2022-03-31  5:53     ` Sankeerth Billakanti (QUIC)
2022-03-31  5:53       ` Sankeerth Billakanti (QUIC)
2022-03-31 10:10       ` Dmitry Baryshkov
2022-03-31 10:10         ` Dmitry Baryshkov
2022-03-31 11:04         ` Sankeerth Billakanti
2022-03-31 11:04           ` Sankeerth Billakanti
2022-03-31 11:06           ` Dmitry Baryshkov
2022-03-31 11:06             ` Dmitry Baryshkov
2022-04-04 17:56             ` Sankeerth Billakanti (QUIC)
2022-04-04 17:56               ` Sankeerth Billakanti (QUIC)
2022-03-30 16:02 ` [PATCH v6 5/8] drm/msm/dp: prevent multiple votes for dp resources Sankeerth Billakanti
2022-03-30 16:02   ` Sankeerth Billakanti
2022-03-31 23:23   ` Doug Anderson
2022-03-31 23:23     ` Doug Anderson
2022-04-08 16:14     ` Dmitry Baryshkov
2022-04-08 16:14       ` Dmitry Baryshkov
2022-04-08 17:12       ` Sankeerth Billakanti
2022-04-08 17:12         ` Sankeerth Billakanti
2022-04-08 18:02         ` Dmitry Baryshkov
2022-04-08 18:02           ` Dmitry Baryshkov
2022-03-30 16:02 ` [PATCH v6 6/8] drm/msm/dp: remove unnecessary delay during boot Sankeerth Billakanti
2022-03-30 16:02   ` Sankeerth Billakanti
2022-03-31 23:23   ` Doug Anderson
2022-03-31 23:23     ` Doug Anderson
2022-04-04 13:52     ` Sankeerth Billakanti (QUIC)
2022-04-04 13:52       ` Sankeerth Billakanti (QUIC)
2022-04-04 21:13       ` Dmitry Baryshkov
2022-04-04 21:13         ` Dmitry Baryshkov
2022-04-07 12:40         ` Sankeerth Billakanti (QUIC)
2022-04-07 12:40           ` Sankeerth Billakanti (QUIC)
2022-03-30 16:02 ` [PATCH v6 7/8] drm/msm/dp: Support edp/dp without hpd Sankeerth Billakanti
2022-03-30 16:02   ` Sankeerth Billakanti
2022-03-31 23:23   ` Doug Anderson
2022-03-31 23:23     ` Doug Anderson
2022-04-04 18:32     ` Sankeerth Billakanti (QUIC)
2022-04-04 18:32       ` Sankeerth Billakanti (QUIC)
2022-04-04 21:15       ` Dmitry Baryshkov
2022-04-04 21:15         ` Dmitry Baryshkov
2022-04-07 12:41         ` Sankeerth Billakanti (QUIC)
2022-04-07 12:41           ` Sankeerth Billakanti (QUIC)
2022-03-30 16:02 ` [PATCH v6 8/8] drm/msm/dp: Handle eDP mode_valid differently from dp Sankeerth Billakanti
2022-03-30 16:02   ` Sankeerth Billakanti
2022-03-30 22:08   ` Dmitry Baryshkov
2022-03-30 22:08     ` Dmitry Baryshkov
2022-03-31  6:02     ` Sankeerth Billakanti (QUIC)
2022-03-31  6:02       ` Sankeerth Billakanti (QUIC)
2022-03-31 23:24       ` Doug Anderson
2022-03-31 23:24         ` Doug Anderson
2022-04-04 18:20         ` Sankeerth Billakanti (QUIC)
2022-04-04 18:20           ` Sankeerth Billakanti (QUIC)
2022-04-04 21:29           ` Dmitry Baryshkov
2022-04-04 21:29             ` Dmitry Baryshkov
2022-04-07 14:05             ` Sankeerth Billakanti (QUIC)
2022-04-07 14:05               ` Sankeerth Billakanti (QUIC)
2022-04-08 12:08               ` Dmitry Baryshkov
2022-04-08 12:08                 ` Dmitry Baryshkov
2022-04-08 15:50                 ` Sankeerth Billakanti
2022-04-08 15:50                   ` Sankeerth Billakanti
2022-04-08 16:47                   ` Dmitry Baryshkov
2022-04-08 16:47                     ` Dmitry Baryshkov
2022-04-08 17:38                     ` Sankeerth Billakanti
2022-04-08 17:38                       ` Sankeerth Billakanti
2022-04-08 18:06                       ` Dmitry Baryshkov
2022-04-08 18:06                         ` Dmitry Baryshkov

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='CAD=FV=XS8h8GwL11CmJou31hTbf=mS77-j1y66uY+2YuGAUpzQ@mail.gmail.com' \
    --to=dianders@chromium.org \
    --cc=airlied@linux.ie \
    --cc=bjorn.andersson@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=quic_abhinavk@quicinc.com \
    --cc=quic_aravindh@quicinc.com \
    --cc=quic_kalyant@quicinc.com \
    --cc=quic_khsieh@quicinc.com \
    --cc=quic_sbillaka@quicinc.com \
    --cc=quic_vproddut@quicinc.com \
    --cc=sean@poorly.run \
    --cc=seanpaul@chromium.org \
    --cc=swboyd@chromium.org \
    /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.