amd-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Alex Deucher <alexdeucher@gmail.com>
To: "Liu, Zhan" <Zhan.Liu@amd.com>
Cc: "Broadworth, Mark" <Mark.Broadworth@amd.com>,
	Maling list - DRI developers <dri-devel@lists.freedesktop.org>,
	"Zuo, Jerry" <Jerry.Zuo@amd.com>,
	amd-gfx list <amd-gfx@lists.freedesktop.org>,
	"Deucher, Alexander" <Alexander.Deucher@amd.com>,
	"Wentland, Harry" <Harry.Wentland@amd.com>
Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
Date: Tue, 25 Feb 2020 13:23:13 -0500	[thread overview]
Message-ID: <CADnq5_M8Hb9YJ-cVzr0x8ABUpQjeL5DwOuCwjEWfdTXFJdbGeQ@mail.gmail.com> (raw)
In-Reply-To: <DM5PR1201MB2554768A51B1A4625E67BB899EED0@DM5PR1201MB2554.namprd12.prod.outlook.com>

On Tue, Feb 25, 2020 at 1:20 PM Liu, Zhan <Zhan.Liu@amd.com> wrote:
>
>
> > -----Original Message-----
> > From: Liu, Zhan
> > Sent: 2020/February/25, Tuesday 10:10 AM
> > To: Alex Deucher <alexdeucher@gmail.com>; Wentland, Harry
> > <Harry.Wentland@amd.com>
> > Cc: amd-gfx list <amd-gfx@lists.freedesktop.org>; Maling list - DRI
> > developers <dri-devel@lists.freedesktop.org>; Deucher, Alexander
> > <Alexander.Deucher@amd.com>; Broadworth, Mark
> > <Mark.Broadworth@amd.com>
> > Subject: RE: [PATCH 13/15] drm/amdgpu/display: split dp connector
> > registration (v3)
> >
> >
> > > -----Original Message-----
> > > From: Alex Deucher <alexdeucher@gmail.com>
> > > Sent: 2020/February/25, Tuesday 9:07 AM
> > > To: Wentland, Harry <Harry.Wentland@amd.com>
> > > Cc: amd-gfx list <amd-gfx@lists.freedesktop.org>; Maling list - DRI
> > > developers <dri-devel@lists.freedesktop.org>; Deucher, Alexander
> > > <Alexander.Deucher@amd.com>; Broadworth, Mark
> > > <Mark.Broadworth@amd.com>; Liu, Zhan <Zhan.Liu@amd.com>
> > > Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector
> > > registration (v3)
> > >
> > > On Mon, Feb 24, 2020 at 4:09 PM Harry Wentland <hwentlan@amd.com>
> > > wrote:
> > > >
> > > > On 2020-02-07 4:17 p.m., Alex Deucher wrote:
> > > > > Split into init and register functions to avoid a segfault in some
> > > > > configs when the load/unload callbacks are removed.
> > > > >
> > > >
> > > > Looks like MST is completely broken with this change with a NULL
> > > > pointer dereference in drm_dp_aux_register.
> > > >
> > > > > v2:
> > > > > - add back accidently dropped has_aux setting
> > > > > - set dev in late_register
> > > > >
> > > > > v3:
> > > > > - fix dp cec ordering
> > > > >
> > > > > Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
> > > > > ---
> > > > >  drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c   | 16
> > > ++++++++++++++++
> > > > >  drivers/gpu/drm/amd/amdgpu/atombios_dp.c         | 10 ++--------
> > > > >  .../amd/display/amdgpu_dm/amdgpu_dm_mst_types.c  |  7 ++++++-
> > > > >  3 files changed, 24 insertions(+), 9 deletions(-)
> > > > >
> > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
> > > > > b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
> > > > > index ec1501e3a63a..f355d9a752d2 100644
> > > > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
> > > > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
> > > > > @@ -1461,6 +1461,20 @@ static enum drm_mode_status
> > > amdgpu_connector_dp_mode_valid(struct drm_connector
> > > > >       return MODE_OK;
> > > > >  }
> > > > >
> > > > > +static int
> > > > > +amdgpu_connector_late_register(struct drm_connector *connector) {
> > > > > +     struct amdgpu_connector *amdgpu_connector =
> > > to_amdgpu_connector(connector);
> > > > > +     int r = 0;
> > > > > +
> > > > > +     if (amdgpu_connector->ddc_bus->has_aux) {
> > > > > +             amdgpu_connector->ddc_bus->aux.dev =
> > > > > + amdgpu_connector-
> > > >base.kdev;
> > > > > +             r = drm_dp_aux_register(&amdgpu_connector->ddc_bus->aux);
> > > > > +     }
> > > > > +
> > > > > +     return r;
> > > > > +}
> > > > > +
> > > > >  static const struct drm_connector_helper_funcs
> > > amdgpu_connector_dp_helper_funcs = {
> > > > >       .get_modes = amdgpu_connector_dp_get_modes,
> > > > >       .mode_valid = amdgpu_connector_dp_mode_valid, @@ -1475,6
> > > > > +1489,7 @@ static const struct drm_connector_funcs
> > > amdgpu_connector_dp_funcs = {
> > > > >       .early_unregister = amdgpu_connector_unregister,
> > > > >       .destroy = amdgpu_connector_destroy,
> > > > >       .force = amdgpu_connector_dvi_force,
> > > > > +     .late_register = amdgpu_connector_late_register,
> > > > >  };
> > > > >
> > > > >  static const struct drm_connector_funcs
> > > > > amdgpu_connector_edp_funcs = { @@ -1485,6 +1500,7 @@ static
> > const
> > > > > struct drm_connector_funcs
> > > amdgpu_connector_edp_funcs = {
> > > > >       .early_unregister = amdgpu_connector_unregister,
> > > > >       .destroy = amdgpu_connector_destroy,
> > > > >       .force = amdgpu_connector_dvi_force,
> > > > > +     .late_register = amdgpu_connector_late_register,
> > > > >  };
> > > > >
> > > > >  void
> > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/atombios_dp.c
> > > > > b/drivers/gpu/drm/amd/amdgpu/atombios_dp.c
> > > > > index ea702a64f807..9b74cfdba7b8 100644
> > > > > --- a/drivers/gpu/drm/amd/amdgpu/atombios_dp.c
> > > > > +++ b/drivers/gpu/drm/amd/amdgpu/atombios_dp.c
> > > > > @@ -186,16 +186,10 @@ amdgpu_atombios_dp_aux_transfer(struct
> > > > > drm_dp_aux *aux, struct drm_dp_aux_msg *m
> > > > >
> > > > >  void amdgpu_atombios_dp_aux_init(struct amdgpu_connector
> > > > > *amdgpu_connector)  {
> > > > > -     int ret;
> > > > > -
> > > > >       amdgpu_connector->ddc_bus->rec.hpd = amdgpu_connector-
> > > >hpd.hpd;
> > > > > -     amdgpu_connector->ddc_bus->aux.dev = amdgpu_connector-
> > > >base.kdev;
> > > > >       amdgpu_connector->ddc_bus->aux.transfer =
> > > amdgpu_atombios_dp_aux_transfer;
> > > > > -     ret = drm_dp_aux_register(&amdgpu_connector->ddc_bus->aux);
> > > > > -     if (!ret)
> > > > > -             amdgpu_connector->ddc_bus->has_aux = true;
> > > > > -
> > > > > -     WARN(ret, "drm_dp_aux_register_i2c_bus() failed with error %d\n",
> > > ret);
> > > > > +     drm_dp_aux_init(&amdgpu_connector->ddc_bus->aux);
> > > > > +     amdgpu_connector->ddc_bus->has_aux = true;
> > > > >  }
> > > > >
> > > > >  /***** general DP utility functions *****/ diff --git
> > > > > a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> > > > > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> > > > > index 3959c942c88b..d5b9e72f2649 100644
> > > > > ---
> > > a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> > > > > +++
> > > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> > > > > @@ -155,6 +155,11 @@
> > > amdgpu_dm_mst_connector_late_register(struct drm_connector
> > > *connector)
> > > > >       struct amdgpu_dm_connector *amdgpu_dm_connector =
> > > > >               to_amdgpu_dm_connector(connector);
> > > > >       struct drm_dp_mst_port *port = amdgpu_dm_connector->port;
> > > > > +     int r;
> > > > > +
> > > > > +     r =
> > > > > + drm_dp_aux_register(&amdgpu_dm_connector->dm_dp_aux.aux);
> > > >
> > > > This calls drm_dp_aux_register_devnode which is also called later in
> > > > drm_dp_mst_connector_late_register. Wonder if that's a problem.
> > >
> > > Does this patch help?  I'm not too familiar with the MST code and I
> > > don't have an MST monitor.
> >
> > I have an MST monitor and I can give it a spin. I'll get back to you later.
>
> + Jerry who is following up on this issue
>
> Thank you Alex for your patch. Unfortunately, it doesn't solve the issue.
>
> Jerry is following up on this ticket, and I've added him to this email thread.

Can you send me the full dmesg output?  Also, does it happen as soon
as the driver loads or sometime later?

Alex


>
> Zhan
>
> >
> > Zhan
> >
> > >
> > > Alex
> > >
> > >
> > > >
> > > > Harry
> > > >
> > > > > +     if (r)
> > > > > +             return r;
> > > > >
> > > > >  #if defined(CONFIG_DEBUG_FS)
> > > > >       connector_debugfs_init(amdgpu_dm_connector);
> > > > > @@ -484,7 +489,7 @@ void
> > amdgpu_dm_initialize_dp_connector(struct
> > > amdgpu_display_manager *dm,
> > > > >       aconnector->dm_dp_aux.aux.transfer = dm_dp_aux_transfer;
> > > > >       aconnector->dm_dp_aux.ddc_service =
> > > > > aconnector->dc_link->ddc;
> > > > >
> > > > > -     drm_dp_aux_register(&aconnector->dm_dp_aux.aux);
> > > > > +     drm_dp_aux_init(&aconnector->dm_dp_aux.aux);
> > > > >       drm_dp_cec_register_connector(&aconnector->dm_dp_aux.aux,
> > > > >                                     &aconnector->base);
> > > > >
> > > > >
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

  reply	other threads:[~2020-02-25 18:23 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-07 21:17 [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3) Alex Deucher
2020-02-11 16:13 ` Alex Deucher
2020-02-13 17:03 ` Alex Deucher
2020-02-14  7:39 ` Daniel Vetter
2020-02-14 17:39   ` Alex Deucher
2020-02-14 18:35     ` Daniel Vetter
2020-02-14 20:07       ` Alex Deucher
2020-02-24 21:09 ` Harry Wentland
2020-02-25 14:06   ` Alex Deucher
2020-02-25 15:10     ` Liu, Zhan
2020-02-25 18:20       ` Liu, Zhan
2020-02-25 18:23         ` Alex Deucher [this message]
2020-02-25 18:30           ` Zuo, Jerry
2020-02-25 18:32             ` Alex Deucher
2020-02-25 18:42               ` Alex Deucher
2020-02-25 19:07                 ` Zuo, Jerry
2020-02-26 15:36                 ` Zuo, Jerry
2020-02-26 15:39                   ` Alex Deucher
2020-02-26 15:41                     ` Zuo, Jerry

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=CADnq5_M8Hb9YJ-cVzr0x8ABUpQjeL5DwOuCwjEWfdTXFJdbGeQ@mail.gmail.com \
    --to=alexdeucher@gmail.com \
    --cc=Alexander.Deucher@amd.com \
    --cc=Harry.Wentland@amd.com \
    --cc=Jerry.Zuo@amd.com \
    --cc=Mark.Broadworth@amd.com \
    --cc=Zhan.Liu@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=dri-devel@lists.freedesktop.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).