RE: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-26 Thread Zuo, Jerry
[AMD Official Use Only - Internal Distribution Only]

Reviewed-by: Jerry (Fangzhi) Zuo 

-Original Message-
From: Alex Deucher  
Sent: February 26, 2020 10:40 AM
To: Zuo, Jerry 
Cc: Liu, Zhan ; Wentland, Harry ; 
amd-gfx list ; Maling list - DRI developers 
; Deucher, Alexander 
; Broadworth, Mark 
Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration 
(v3)

On Wed, Feb 26, 2020 at 10:36 AM Zuo, Jerry  wrote:
>
> [AMD Official Use Only - Internal Distribution Only]
>
> Hi Alex:
>
>  The patch set works. Please let me know when you push the change to 
> drm-next.

Can someone give me and R-b or A-b on the patches?

Thanks,

Alex

>
>  Thanks a lot.
>
> Regards,
> Jerry
>
> -Original Message-
> From: Alex Deucher 
> Sent: February 25, 2020 1:42 PM
> To: Zuo, Jerry 
> Cc: Liu, Zhan ; Wentland, Harry 
> ; amd-gfx list 
> ; Maling list - DRI developers 
> ; Deucher, Alexander 
> ; Broadworth, Mark 
> 
> Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector 
> registration (v3)
>
> On Tue, Feb 25, 2020 at 1:32 PM Alex Deucher  wrote:
> >
> > On Tue, Feb 25, 2020 at 1:30 PM Zuo, Jerry  wrote:
> > >
> > > [AMD Official Use Only - Internal Distribution Only]
> > >
> > > Hi Alex:
> > >
> > >  It happened when a MST monitor is attached, either in driver load or 
> > > hotplug later.
> >
> > I think I found the issue.  I'll send a patch shortly.
>
> Attaching two patches.  I think patch 1 should fix it.  Patch 2 is the 
> same patch as before.  I'm not sure
> drm_dp_mst_connector_late_register() is necessary since no other driver calls 
> it.
>
> Alex
>
> >
> > Alex
> >
> >
> > >
> > > Regards,
> > > Jerry
> > >
> > > -Original Message-----
> > > From: Alex Deucher 
> > > Sent: February 25, 2020 1:23 PM
> > > To: Liu, Zhan 
> > > Cc: Wentland, Harry ; Zuo, Jerry 
> > > ; amd-gfx list ; 
> > > Maling list - DRI developers ;
> > > Deucher, Alexander ; Broadworth, Mark 
> > > 
> > > Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector 
> > > registration (v3)
> > >
> > > On Tue, Feb 25, 2020 at 1:20 PM Liu, Zhan  wrote:
> > > >
> > > >
> > > > > -Original Message-
> > > > > From: Liu, Zhan
> > > > > Sent: 2020/February/25, Tuesday 10:10 AM
> > > > > To: Alex Deucher ; Wentland, Harry 
> > > > > 
> > > > > Cc: amd-gfx list ; Maling list 
> > > > > - DRI developers ; Deucher, 
> > > > > Alexander ; Broadworth, Mark 
> > > > > 
> > > > > Subject: RE: [PATCH 13/15] drm/amdgpu/display: split dp 
> > > > > connector registration (v3)
> > > > >
> > > > >
> > > > > > -Original Message-
> > > > > > From: Alex Deucher 
> > > > > > Sent: 2020/February/25, Tuesday 9:07 AM
> > > > > > To: Wentland, Harry 
> > > > > > Cc: amd-gfx list ; Maling 
> > > > > > list
> > > > > > - DRI developers ; Deucher, 
> > > > > > Alexander ; Broadworth, Mark 
> > > > > > ; Liu, Zhan 
> > > > > > Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp 
> > > > > > connector registration (v3)
> > > > > >
> > > > > > On Mon, Feb 24, 2020 at 4:09 PM Harry Wentland 
> > > > > > 
> > > > > > 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
> > > > >

Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-26 Thread Alex Deucher
On Wed, Feb 26, 2020 at 10:36 AM Zuo, Jerry  wrote:
>
> [AMD Official Use Only - Internal Distribution Only]
>
> Hi Alex:
>
>  The patch set works. Please let me know when you push the change to 
> drm-next.

Can someone give me and R-b or A-b on the patches?

Thanks,

Alex

>
>  Thanks a lot.
>
> Regards,
> Jerry
>
> -Original Message-
> From: Alex Deucher 
> Sent: February 25, 2020 1:42 PM
> To: Zuo, Jerry 
> Cc: Liu, Zhan ; Wentland, Harry ; 
> amd-gfx list ; Maling list - DRI developers 
> ; Deucher, Alexander 
> ; Broadworth, Mark 
> Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector 
> registration (v3)
>
> On Tue, Feb 25, 2020 at 1:32 PM Alex Deucher  wrote:
> >
> > On Tue, Feb 25, 2020 at 1:30 PM Zuo, Jerry  wrote:
> > >
> > > [AMD Official Use Only - Internal Distribution Only]
> > >
> > > Hi Alex:
> > >
> > >  It happened when a MST monitor is attached, either in driver load or 
> > > hotplug later.
> >
> > I think I found the issue.  I'll send a patch shortly.
>
> Attaching two patches.  I think patch 1 should fix it.  Patch 2 is the same 
> patch as before.  I'm not sure
> drm_dp_mst_connector_late_register() is necessary since no other driver calls 
> it.
>
> Alex
>
> >
> > Alex
> >
> >
> > >
> > > Regards,
> > > Jerry
> > >
> > > -Original Message-
> > > From: Alex Deucher 
> > > Sent: February 25, 2020 1:23 PM
> > > To: Liu, Zhan 
> > > Cc: Wentland, Harry ; Zuo, Jerry
> > > ; amd-gfx list ;
> > > Maling list - DRI developers ;
> > > Deucher, Alexander ; Broadworth, Mark
> > > 
> > > Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector
> > > registration (v3)
> > >
> > > On Tue, Feb 25, 2020 at 1:20 PM Liu, Zhan  wrote:
> > > >
> > > >
> > > > > -Original Message-
> > > > > From: Liu, Zhan
> > > > > Sent: 2020/February/25, Tuesday 10:10 AM
> > > > > To: Alex Deucher ; Wentland, Harry
> > > > > 
> > > > > Cc: amd-gfx list ; Maling list -
> > > > > DRI developers ; Deucher,
> > > > > Alexander ; Broadworth, Mark
> > > > > 
> > > > > Subject: RE: [PATCH 13/15] drm/amdgpu/display: split dp
> > > > > connector registration (v3)
> > > > >
> > > > >
> > > > > > -Original Message-
> > > > > > From: Alex Deucher 
> > > > > > Sent: 2020/February/25, Tuesday 9:07 AM
> > > > > > To: Wentland, Harry 
> > > > > > Cc: amd-gfx list ; Maling list
> > > > > > - DRI developers ; Deucher,
> > > > > > Alexander ; Broadworth, Mark
> > > > > > ; Liu, Zhan 
> > > > > > Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp
> > > > > > connector registration (v3)
> > > > > >
> > > > > > On Mon, Feb 24, 2020 at 4:09 PM Harry Wentland
> > > > > > 
> > > > > > 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 
> > > > > > > > ---
> > > > > > > >  drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c   | 16
> > > > > > 
> > > > > > > >  drivers/gpu/drm/amd/amdgpu/atombios_dp.c | 10 
> > > > > > > > ++
> > > > > > > >  .../

RE: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-26 Thread Zuo, Jerry
[AMD Official Use Only - Internal Distribution Only]

Hi Alex:

 The patch set works. Please let me know when you push the change to 
drm-next.

 Thanks a lot.

Regards,
Jerry

-Original Message-
From: Alex Deucher 
Sent: February 25, 2020 1:42 PM
To: Zuo, Jerry 
Cc: Liu, Zhan ; Wentland, Harry ; 
amd-gfx list ; Maling list - DRI developers 
; Deucher, Alexander 
; Broadworth, Mark 
Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration 
(v3)

On Tue, Feb 25, 2020 at 1:32 PM Alex Deucher  wrote:
>
> On Tue, Feb 25, 2020 at 1:30 PM Zuo, Jerry  wrote:
> >
> > [AMD Official Use Only - Internal Distribution Only]
> >
> > Hi Alex:
> >
> >  It happened when a MST monitor is attached, either in driver load or 
> > hotplug later.
>
> I think I found the issue.  I'll send a patch shortly.

Attaching two patches.  I think patch 1 should fix it.  Patch 2 is the same 
patch as before.  I'm not sure
drm_dp_mst_connector_late_register() is necessary since no other driver calls 
it.

Alex

>
> Alex
>
>
> >
> > Regards,
> > Jerry
> >
> > -Original Message-
> > From: Alex Deucher 
> > Sent: February 25, 2020 1:23 PM
> > To: Liu, Zhan 
> > Cc: Wentland, Harry ; Zuo, Jerry 
> > ; amd-gfx list ; 
> > Maling list - DRI developers ;
> > Deucher, Alexander ; Broadworth, Mark 
> > 
> > Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector 
> > registration (v3)
> >
> > On Tue, Feb 25, 2020 at 1:20 PM Liu, Zhan  wrote:
> > >
> > >
> > > > -Original Message-
> > > > From: Liu, Zhan
> > > > Sent: 2020/February/25, Tuesday 10:10 AM
> > > > To: Alex Deucher ; Wentland, Harry 
> > > > 
> > > > Cc: amd-gfx list ; Maling list - 
> > > > DRI developers ; Deucher, 
> > > > Alexander ; Broadworth, Mark 
> > > > 
> > > > Subject: RE: [PATCH 13/15] drm/amdgpu/display: split dp 
> > > > connector registration (v3)
> > > >
> > > >
> > > > > -Original Message-----
> > > > > From: Alex Deucher 
> > > > > Sent: 2020/February/25, Tuesday 9:07 AM
> > > > > To: Wentland, Harry 
> > > > > Cc: amd-gfx list ; Maling list
> > > > > - DRI developers ; Deucher, 
> > > > > Alexander ; Broadworth, Mark 
> > > > > ; Liu, Zhan 
> > > > > Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp 
> > > > > connector registration (v3)
> > > > >
> > > > > On Mon, Feb 24, 2020 at 4:09 PM Harry Wentland 
> > > > > 
> > > > > 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 
> > > > > > > ---
> > > > > > >  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
>

RE: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-25 Thread Zuo, Jerry
[AMD Official Use Only - Internal Distribution Only]

Hi Alex:

The patch set is verified on Ubuntu, and I'll try it out on Chrome as well. 

Thanks a lot!

Regards,
Jerry

-Original Message-
From: Alex Deucher 
Sent: February 25, 2020 1:42 PM
To: Zuo, Jerry 
Cc: Liu, Zhan ; Wentland, Harry ; 
amd-gfx list ; Maling list - DRI developers 
; Deucher, Alexander 
; Broadworth, Mark 
Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration 
(v3)

On Tue, Feb 25, 2020 at 1:32 PM Alex Deucher  wrote:
>
> On Tue, Feb 25, 2020 at 1:30 PM Zuo, Jerry  wrote:
> >
> > [AMD Official Use Only - Internal Distribution Only]
> >
> > Hi Alex:
> >
> >  It happened when a MST monitor is attached, either in driver load or 
> > hotplug later.
>
> I think I found the issue.  I'll send a patch shortly.

Attaching two patches.  I think patch 1 should fix it.  Patch 2 is the same 
patch as before.  I'm not sure
drm_dp_mst_connector_late_register() is necessary since no other driver calls 
it.

Alex

>
> Alex
>
>
> >
> > Regards,
> > Jerry
> >
> > -Original Message-
> > From: Alex Deucher 
> > Sent: February 25, 2020 1:23 PM
> > To: Liu, Zhan 
> > Cc: Wentland, Harry ; Zuo, Jerry 
> > ; amd-gfx list ; 
> > Maling list - DRI developers ;
> > Deucher, Alexander ; Broadworth, Mark 
> > 
> > Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector 
> > registration (v3)
> >
> > On Tue, Feb 25, 2020 at 1:20 PM Liu, Zhan  wrote:
> > >
> > >
> > > > -Original Message-
> > > > From: Liu, Zhan
> > > > Sent: 2020/February/25, Tuesday 10:10 AM
> > > > To: Alex Deucher ; Wentland, Harry 
> > > > 
> > > > Cc: amd-gfx list ; Maling list - 
> > > > DRI developers ; Deucher, 
> > > > Alexander ; Broadworth, Mark 
> > > > 
> > > > Subject: RE: [PATCH 13/15] drm/amdgpu/display: split dp 
> > > > connector registration (v3)
> > > >
> > > >
> > > > > -Original Message-----
> > > > > From: Alex Deucher 
> > > > > Sent: 2020/February/25, Tuesday 9:07 AM
> > > > > To: Wentland, Harry 
> > > > > Cc: amd-gfx list ; Maling list
> > > > > - DRI developers ; Deucher, 
> > > > > Alexander ; Broadworth, Mark 
> > > > > ; Liu, Zhan 
> > > > > Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp 
> > > > > connector registration (v3)
> > > > >
> > > > > On Mon, Feb 24, 2020 at 4:09 PM Harry Wentland 
> > > > > 
> > > > > 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 
> > > > > > > ---
> > > > > > >  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
>

Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-25 Thread Alex Deucher
On Tue, Feb 25, 2020 at 1:32 PM Alex Deucher  wrote:
>
> On Tue, Feb 25, 2020 at 1:30 PM Zuo, Jerry  wrote:
> >
> > [AMD Official Use Only - Internal Distribution Only]
> >
> > Hi Alex:
> >
> >  It happened when a MST monitor is attached, either in driver load or 
> > hotplug later.
>
> I think I found the issue.  I'll send a patch shortly.

Attaching two patches.  I think patch 1 should fix it.  Patch 2 is the
same patch as before.  I'm not sure
drm_dp_mst_connector_late_register() is necessary since no other
driver calls it.

Alex

>
> Alex
>
>
> >
> > Regards,
> > Jerry
> >
> > -Original Message-
> > From: Alex Deucher 
> > Sent: February 25, 2020 1:23 PM
> > To: Liu, Zhan 
> > Cc: Wentland, Harry ; Zuo, Jerry 
> > ; amd-gfx list ; Maling 
> > list - DRI developers ; Deucher, Alexander 
> > ; Broadworth, Mark 
> > Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector 
> > registration (v3)
> >
> > On Tue, Feb 25, 2020 at 1:20 PM Liu, Zhan  wrote:
> > >
> > >
> > > > -Original Message-
> > > > From: Liu, Zhan
> > > > Sent: 2020/February/25, Tuesday 10:10 AM
> > > > To: Alex Deucher ; Wentland, Harry
> > > > 
> > > > Cc: amd-gfx list ; Maling list - DRI
> > > > developers ; Deucher, Alexander
> > > > ; Broadworth, Mark
> > > > 
> > > > Subject: RE: [PATCH 13/15] drm/amdgpu/display: split dp connector
> > > > registration (v3)
> > > >
> > > >
> > > > > -----Original Message-
> > > > > From: Alex Deucher 
> > > > > Sent: 2020/February/25, Tuesday 9:07 AM
> > > > > To: Wentland, Harry 
> > > > > Cc: amd-gfx list ; Maling list -
> > > > > DRI developers ; Deucher,
> > > > > Alexander ; Broadworth, Mark
> > > > > ; Liu, Zhan 
> > > > > Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector
> > > > > registration (v3)
> > > > >
> > > > > On Mon, Feb 24, 2020 at 4:09 PM Harry Wentland 
> > > > > 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 
> > > > > > > ---
> > > > > > >  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;
> > > > > > > +
>

Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-25 Thread Alex Deucher
On Tue, Feb 25, 2020 at 1:30 PM Zuo, Jerry  wrote:
>
> [AMD Official Use Only - Internal Distribution Only]
>
> Hi Alex:
>
>  It happened when a MST monitor is attached, either in driver load or 
> hotplug later.

I think I found the issue.  I'll send a patch shortly.

Alex


>
> Regards,
> Jerry
>
> -Original Message-
> From: Alex Deucher 
> Sent: February 25, 2020 1:23 PM
> To: Liu, Zhan 
> Cc: Wentland, Harry ; Zuo, Jerry ; 
> amd-gfx list ; Maling list - DRI developers 
> ; Deucher, Alexander 
> ; Broadworth, Mark 
> Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector 
> registration (v3)
>
> On Tue, Feb 25, 2020 at 1:20 PM Liu, Zhan  wrote:
> >
> >
> > > -Original Message-
> > > From: Liu, Zhan
> > > Sent: 2020/February/25, Tuesday 10:10 AM
> > > To: Alex Deucher ; Wentland, Harry
> > > 
> > > Cc: amd-gfx list ; Maling list - DRI
> > > developers ; Deucher, Alexander
> > > ; Broadworth, Mark
> > > 
> > > Subject: RE: [PATCH 13/15] drm/amdgpu/display: split dp connector
> > > registration (v3)
> > >
> > >
> > > > -Original Message-
> > > > From: Alex Deucher 
> > > > Sent: 2020/February/25, Tuesday 9:07 AM
> > > > To: Wentland, Harry 
> > > > Cc: amd-gfx list ; Maling list -
> > > > DRI developers ; Deucher,
> > > > Alexander ; Broadworth, Mark
> > > > ; Liu, Zhan 
> > > > Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector
> > > > registration (v3)
> > > >
> > > > On Mon, Feb 24, 2020 at 4:09 PM Harry Wentland 
> > > > 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 
> > > > > > ---
> > > > > >  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(_connector->ddc_bus->aux);
> > > > > > + }
> > > > > > +
> > > > > > + return r;
> > > > > > +}
> > > > > > +
> > > > > >  static const struct drm_connector_helper_funcs
> > > > amdgpu_connector_dp_helper_funcs = {
> > > > > >   .get_modes = amdgpu

Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-25 Thread Alex Deucher
On Tue, Feb 25, 2020 at 1:20 PM Liu, Zhan  wrote:
>
>
> > -Original Message-
> > From: Liu, Zhan
> > Sent: 2020/February/25, Tuesday 10:10 AM
> > To: Alex Deucher ; Wentland, Harry
> > 
> > Cc: amd-gfx list ; Maling list - DRI
> > developers ; Deucher, Alexander
> > ; Broadworth, Mark
> > 
> > Subject: RE: [PATCH 13/15] drm/amdgpu/display: split dp connector
> > registration (v3)
> >
> >
> > > -Original Message-
> > > From: Alex Deucher 
> > > Sent: 2020/February/25, Tuesday 9:07 AM
> > > To: Wentland, Harry 
> > > Cc: amd-gfx list ; Maling list - DRI
> > > developers ; Deucher, Alexander
> > > ; Broadworth, Mark
> > > ; Liu, Zhan 
> > > Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector
> > > registration (v3)
> > >
> > > On Mon, Feb 24, 2020 at 4:09 PM Harry Wentland 
> > > 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 
> > > > > ---
> > > > >  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(_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 

RE: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-25 Thread Liu, Zhan


> -Original Message-
> From: Liu, Zhan
> Sent: 2020/February/25, Tuesday 10:10 AM
> To: Alex Deucher ; Wentland, Harry
> 
> Cc: amd-gfx list ; Maling list - DRI
> developers ; Deucher, Alexander
> ; Broadworth, Mark
> 
> Subject: RE: [PATCH 13/15] drm/amdgpu/display: split dp connector
> registration (v3)
> 
> 
> > -Original Message-
> > From: Alex Deucher 
> > Sent: 2020/February/25, Tuesday 9:07 AM
> > To: Wentland, Harry 
> > Cc: amd-gfx list ; Maling list - DRI
> > developers ; Deucher, Alexander
> > ; Broadworth, Mark
> > ; Liu, Zhan 
> > Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector
> > registration (v3)
> >
> > On Mon, Feb 24, 2020 at 4:09 PM Harry Wentland 
> > 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 
> > > > ---
> > > >  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(_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

RE: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-25 Thread Liu, Zhan


> -Original Message-
> From: Alex Deucher 
> Sent: 2020/February/25, Tuesday 9:07 AM
> To: Wentland, Harry 
> Cc: amd-gfx list ; Maling list - DRI
> developers ; Deucher, Alexander
> ; Broadworth, Mark
> ; Liu, Zhan 
> Subject: Re: [PATCH 13/15] drm/amdgpu/display: split dp connector
> registration (v3)
> 
> On Mon, Feb 24, 2020 at 4:09 PM Harry Wentland 
> 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 
> > > ---
> > >  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(_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(_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(_co

Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-25 Thread Alex Deucher
On Mon, Feb 24, 2020 at 4:09 PM Harry Wentland  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 
> > ---
> >  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(_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(_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(_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(_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.

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 = 

Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-24 Thread Harry Wentland
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 
> ---
>  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(_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(_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(_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(_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.

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(>dm_dp_aux.aux);
> + drm_dp_aux_init(>dm_dp_aux.aux);
>   drm_dp_cec_register_connector(>dm_dp_aux.aux,
> >base);
>  
> 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org

Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-14 Thread Alex Deucher
On Fri, Feb 14, 2020 at 1:35 PM Daniel Vetter  wrote:
>
> On Fri, Feb 14, 2020 at 12:39:22PM -0500, Alex Deucher wrote:
> > On Fri, Feb 14, 2020 at 2:39 AM Daniel Vetter  wrote:
> > >
> > > On Fri, Feb 07, 2020 at 04:17:13PM -0500, Alex Deucher wrote:
> > > > Split into init and register functions to avoid a segfault
> > > > in some configs when the load/unload callbacks are removed.
> > > >
> > > > v2:
> > > > - add back accidently dropped has_aux setting
> > > > - set dev in late_register
> > > >
> > > > v3:
> > > > - fix dp cec ordering
> > >
> > > Why did you move this back out of the late_register callback when going
> > > from v2->v3? In i915 we register the cec stuff from ->late_register, like
> >
> > I got a bunch of complaints from the cec code when I had it switched
> > the other way.  They went away when I moved it back.  I don't remember
> > the exact messages off hand.
>
> Would be interesting to learn want went wrong, just in case there's a core
> bug here somewhere that prevents drivers from tdtr. But definitely no
> reason to hold off this patch.

I'll repo it next week and send it out for posterity.  Thanks for the review.

Alex

> -Daniel
>
> >
> > Alex
> >
> > > anything else userspace visible. Maybe follow-up patch (the idea behind
> > > removing the ->load callback is to close all the driver load races,
> > > instead of only open("/dev/dri/0"), which is protected by
> > > drm_global_mutex). On this:
> > >
> > > Reviewed-by: Daniel Vetter 
> > >
> > > Cheers, Daniel
> > >
> > > >
> > > > Signed-off-by: Alex Deucher 
> > > > ---
> > > >  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(_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(_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);
> > > > + 

Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-14 Thread Daniel Vetter
On Fri, Feb 14, 2020 at 12:39:22PM -0500, Alex Deucher wrote:
> On Fri, Feb 14, 2020 at 2:39 AM Daniel Vetter  wrote:
> >
> > On Fri, Feb 07, 2020 at 04:17:13PM -0500, Alex Deucher wrote:
> > > Split into init and register functions to avoid a segfault
> > > in some configs when the load/unload callbacks are removed.
> > >
> > > v2:
> > > - add back accidently dropped has_aux setting
> > > - set dev in late_register
> > >
> > > v3:
> > > - fix dp cec ordering
> >
> > Why did you move this back out of the late_register callback when going
> > from v2->v3? In i915 we register the cec stuff from ->late_register, like
> 
> I got a bunch of complaints from the cec code when I had it switched
> the other way.  They went away when I moved it back.  I don't remember
> the exact messages off hand.

Would be interesting to learn want went wrong, just in case there's a core
bug here somewhere that prevents drivers from tdtr. But definitely no
reason to hold off this patch.
-Daniel

> 
> Alex
> 
> > anything else userspace visible. Maybe follow-up patch (the idea behind
> > removing the ->load callback is to close all the driver load races,
> > instead of only open("/dev/dri/0"), which is protected by
> > drm_global_mutex). On this:
> >
> > Reviewed-by: Daniel Vetter 
> >
> > Cheers, Daniel
> >
> > >
> > > Signed-off-by: Alex Deucher 
> > > ---
> > >  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(_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(_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(_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
> > > --- 

Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-14 Thread Alex Deucher
On Fri, Feb 14, 2020 at 2:39 AM Daniel Vetter  wrote:
>
> On Fri, Feb 07, 2020 at 04:17:13PM -0500, Alex Deucher wrote:
> > Split into init and register functions to avoid a segfault
> > in some configs when the load/unload callbacks are removed.
> >
> > v2:
> > - add back accidently dropped has_aux setting
> > - set dev in late_register
> >
> > v3:
> > - fix dp cec ordering
>
> Why did you move this back out of the late_register callback when going
> from v2->v3? In i915 we register the cec stuff from ->late_register, like

I got a bunch of complaints from the cec code when I had it switched
the other way.  They went away when I moved it back.  I don't remember
the exact messages off hand.

Alex

> anything else userspace visible. Maybe follow-up patch (the idea behind
> removing the ->load callback is to close all the driver load races,
> instead of only open("/dev/dri/0"), which is protected by
> drm_global_mutex). On this:
>
> Reviewed-by: Daniel Vetter 
>
> Cheers, Daniel
>
> >
> > Signed-off-by: Alex Deucher 
> > ---
> >  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(_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(_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(_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(_dm_connector->dm_dp_aux.aux);
> > + if (r)
> > +

Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-13 Thread Daniel Vetter
On Fri, Feb 07, 2020 at 04:17:13PM -0500, Alex Deucher wrote:
> Split into init and register functions to avoid a segfault
> in some configs when the load/unload callbacks are removed.
> 
> v2:
> - add back accidently dropped has_aux setting
> - set dev in late_register
> 
> v3:
> - fix dp cec ordering

Why did you move this back out of the late_register callback when going
from v2->v3? In i915 we register the cec stuff from ->late_register, like
anything else userspace visible. Maybe follow-up patch (the idea behind
removing the ->load callback is to close all the driver load races,
instead of only open("/dev/dri/0"), which is protected by
drm_global_mutex). On this:

Reviewed-by: Daniel Vetter 

Cheers, Daniel

> 
> Signed-off-by: Alex Deucher 
> ---
>  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(_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(_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(_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(_dm_connector->dm_dp_aux.aux);
> + 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(>dm_dp_aux.aux);
> + drm_dp_aux_init(>dm_dp_aux.aux);
>   

Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-13 Thread Alex Deucher
Anyone want to take a shot at this one?

Alex

On Fri, Feb 7, 2020 at 4:17 PM Alex Deucher  wrote:
>
> Split into init and register functions to avoid a segfault
> in some configs when the load/unload callbacks are removed.
>
> v2:
> - add back accidently dropped has_aux setting
> - set dev in late_register
>
> v3:
> - fix dp cec ordering
>
> Signed-off-by: Alex Deucher 
> ---
>  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(_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(_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(_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(_dm_connector->dm_dp_aux.aux);
> +   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(>dm_dp_aux.aux);
> +   drm_dp_aux_init(>dm_dp_aux.aux);
> drm_dp_cec_register_connector(>dm_dp_aux.aux,
>   >base);
>
> --
> 2.24.1
>
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-11 Thread Alex Deucher
Ping?

Alex

On Fri, Feb 7, 2020 at 4:17 PM Alex Deucher  wrote:
>
> Split into init and register functions to avoid a segfault
> in some configs when the load/unload callbacks are removed.
>
> v2:
> - add back accidently dropped has_aux setting
> - set dev in late_register
>
> v3:
> - fix dp cec ordering
>
> Signed-off-by: Alex Deucher 
> ---
>  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(_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(_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(_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(_dm_connector->dm_dp_aux.aux);
> +   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(>dm_dp_aux.aux);
> +   drm_dp_aux_init(>dm_dp_aux.aux);
> drm_dp_cec_register_connector(>dm_dp_aux.aux,
>   >base);
>
> --
> 2.24.1
>
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)

2020-02-07 Thread Alex Deucher
Split into init and register functions to avoid a segfault
in some configs when the load/unload callbacks are removed.

v2:
- add back accidently dropped has_aux setting
- set dev in late_register

v3:
- fix dp cec ordering

Signed-off-by: Alex Deucher 
---
 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(_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(_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(_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(_dm_connector->dm_dp_aux.aux);
+   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(>dm_dp_aux.aux);
+   drm_dp_aux_init(>dm_dp_aux.aux);
drm_dp_cec_register_connector(>dm_dp_aux.aux,
  >base);
 
-- 
2.24.1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel