amd-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
@ 2020-02-07 21:17 Alex Deucher
  2020-02-11 16:13 ` Alex Deucher
                   ` (3 more replies)
  0 siblings, 4 replies; 19+ messages in thread
From: Alex Deucher @ 2020-02-07 21:17 UTC (permalink / raw)
  To: amd-gfx, dri-devel; +Cc: 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 <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);
+	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);
 
-- 
2.24.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  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
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 19+ messages in thread
From: Alex Deucher @ 2020-02-11 16:13 UTC (permalink / raw)
  To: amd-gfx list, Maling list - DRI developers; +Cc: Alex Deucher

Ping?

Alex

On Fri, Feb 7, 2020 at 4:17 PM Alex Deucher <alexdeucher@gmail.com> 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 <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);
> +       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);
>
> --
> 2.24.1
>
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  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-24 21:09 ` Harry Wentland
  3 siblings, 0 replies; 19+ messages in thread
From: Alex Deucher @ 2020-02-13 17:03 UTC (permalink / raw)
  To: amd-gfx list, Maling list - DRI developers; +Cc: Alex Deucher

Anyone want to take a shot at this one?

Alex

On Fri, Feb 7, 2020 at 4:17 PM Alex Deucher <alexdeucher@gmail.com> 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 <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);
> +       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);
>
> --
> 2.24.1
>
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  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-24 21:09 ` Harry Wentland
  3 siblings, 1 reply; 19+ messages in thread
From: Daniel Vetter @ 2020-02-14  7:39 UTC (permalink / raw)
  To: Alex Deucher; +Cc: Alex Deucher, dri-devel, amd-gfx

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 <daniel.vetter@ffwll.ch>

Cheers, Daniel

> 
> 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);
> +	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);
>  
> -- 
> 2.24.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  2020-02-14  7:39 ` Daniel Vetter
@ 2020-02-14 17:39   ` Alex Deucher
  2020-02-14 18:35     ` Daniel Vetter
  0 siblings, 1 reply; 19+ messages in thread
From: Alex Deucher @ 2020-02-14 17:39 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: Alex Deucher, Maling list - DRI developers, amd-gfx list

On Fri, Feb 14, 2020 at 2:39 AM Daniel Vetter <daniel@ffwll.ch> 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 <daniel.vetter@ffwll.ch>
>
> Cheers, Daniel
>
> >
> > 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);
> > +     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);
> >
> > --
> > 2.24.1
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  2020-02-14 17:39   ` Alex Deucher
@ 2020-02-14 18:35     ` Daniel Vetter
  2020-02-14 20:07       ` Alex Deucher
  0 siblings, 1 reply; 19+ messages in thread
From: Daniel Vetter @ 2020-02-14 18:35 UTC (permalink / raw)
  To: Alex Deucher
  Cc: Alex Deucher, Maling list - DRI developers, amd-gfx list, 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 <daniel@ffwll.ch> 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 <daniel.vetter@ffwll.ch>
> >
> > Cheers, Daniel
> >
> > >
> > > 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);
> > > +     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);
> > >
> > > --
> > > 2.24.1
> > >
> > > _______________________________________________
> > > dri-devel mailing list
> > > dri-devel@lists.freedesktop.org
> > > https://lists.freedesktop.org/mailman/listinfo/dri-devel
> >
> > --
> > Daniel Vetter
> > Software Engineer, Intel Corporation
> > http://blog.ffwll.ch

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  2020-02-14 18:35     ` Daniel Vetter
@ 2020-02-14 20:07       ` Alex Deucher
  0 siblings, 0 replies; 19+ messages in thread
From: Alex Deucher @ 2020-02-14 20:07 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: Alex Deucher, Maling list - DRI developers, amd-gfx list

On Fri, Feb 14, 2020 at 1:35 PM Daniel Vetter <daniel@ffwll.ch> 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 <daniel@ffwll.ch> 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 <daniel.vetter@ffwll.ch>
> > >
> > > Cheers, Daniel
> > >
> > > >
> > > > 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);
> > > > +     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);
> > > >
> > > > --
> > > > 2.24.1
> > > >
> > > > _______________________________________________
> > > > dri-devel mailing list
> > > > dri-devel@lists.freedesktop.org
> > > > https://lists.freedesktop.org/mailman/listinfo/dri-devel
> > >
> > > --
> > > Daniel Vetter
> > > Software Engineer, Intel Corporation
> > > http://blog.ffwll.ch
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  2020-02-07 21:17 [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3) Alex Deucher
                   ` (2 preceding siblings ...)
  2020-02-14  7:39 ` Daniel Vetter
@ 2020-02-24 21:09 ` Harry Wentland
  2020-02-25 14:06   ` Alex Deucher
  3 siblings, 1 reply; 19+ messages in thread
From: Harry Wentland @ 2020-02-24 21:09 UTC (permalink / raw)
  To: Alex Deucher, amd-gfx, dri-devel
  Cc: Alex Deucher, Broadworth, Mark, Liu, Zhan

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.

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  2020-02-24 21:09 ` Harry Wentland
@ 2020-02-25 14:06   ` Alex Deucher
  2020-02-25 15:10     ` Liu, Zhan
  0 siblings, 1 reply; 19+ messages in thread
From: Alex Deucher @ 2020-02-25 14:06 UTC (permalink / raw)
  To: Harry Wentland
  Cc: Alex Deucher, Broadworth, Mark, Liu, Zhan,
	Maling list - DRI developers, amd-gfx list

[-- Attachment #1: Type: text/plain, Size: 5346 bytes --]

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.

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);
> >
> >

[-- Attachment #2: 0001-drm-amdgpu-display-don-t-call-drm_dp_mst_connector_l.patch --]
[-- Type: text/x-patch, Size: 1036 bytes --]

From a192b54df250f1ad5057b2dd24e3046ec476edd8 Mon Sep 17 00:00:00 2001
From: Alex Deucher <alexander.deucher@amd.com>
Date: Tue, 25 Feb 2020 09:04:52 -0500
Subject: [PATCH] drm/amdgpu/display: don't call
 drm_dp_mst_connector_late_register

Nothing else calls it.  May fix a crash with MST displays.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 d5b9e72f2649..2faee320f857 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
@@ -165,7 +165,7 @@ amdgpu_dm_mst_connector_late_register(struct drm_connector *connector)
 	connector_debugfs_init(amdgpu_dm_connector);
 #endif
 
-	return drm_dp_mst_connector_late_register(connector, port);
+	return r;
 }
 
 static void
-- 
2.24.1


[-- Attachment #3: Type: text/plain, Size: 154 bytes --]

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* RE: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  2020-02-25 14:06   ` Alex Deucher
@ 2020-02-25 15:10     ` Liu, Zhan
  2020-02-25 18:20       ` Liu, Zhan
  0 siblings, 1 reply; 19+ messages in thread
From: Liu, Zhan @ 2020-02-25 15:10 UTC (permalink / raw)
  To: Alex Deucher, Wentland, Harry
  Cc: Deucher, Alexander, Broadworth, Mark,
	Maling list - DRI developers, amd-gfx list


> -----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.

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* RE: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  2020-02-25 15:10     ` Liu, Zhan
@ 2020-02-25 18:20       ` Liu, Zhan
  2020-02-25 18:23         ` Alex Deucher
  0 siblings, 1 reply; 19+ messages in thread
From: Liu, Zhan @ 2020-02-25 18:20 UTC (permalink / raw)
  To: 'Alex Deucher', Wentland, Harry, Zuo, Jerry
  Cc: Deucher, Alexander, Broadworth, Mark,
	'Maling list - DRI developers', 'amd-gfx list'


> -----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.

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  2020-02-25 18:20       ` Liu, Zhan
@ 2020-02-25 18:23         ` Alex Deucher
  2020-02-25 18:30           ` Zuo, Jerry
  0 siblings, 1 reply; 19+ messages in thread
From: Alex Deucher @ 2020-02-25 18:23 UTC (permalink / raw)
  To: Liu, Zhan
  Cc: Broadworth, Mark, Maling list - DRI developers, Zuo, Jerry,
	amd-gfx list, Deucher, Alexander, Wentland, Harry

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* RE: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  2020-02-25 18:23         ` Alex Deucher
@ 2020-02-25 18:30           ` Zuo, Jerry
  2020-02-25 18:32             ` Alex Deucher
  0 siblings, 1 reply; 19+ messages in thread
From: Zuo, Jerry @ 2020-02-25 18:30 UTC (permalink / raw)
  To: Alex Deucher, Liu, Zhan
  Cc: Deucher, Alexander, Broadworth, Mark, Wentland, Harry,
	Maling list - DRI developers, amd-gfx list

[-- Attachment #1: Type: text/plain, Size: 8760 bytes --]

[AMD Official Use Only - Internal Distribution Only]

Hi Alex:

     It happened when a MST monitor is attached, either in driver load or hotplug later. 

Regards,
Jerry

-----Original Message-----
From: Alex Deucher <alexdeucher@gmail.com> 
Sent: February 25, 2020 1:23 PM
To: Liu, Zhan <Zhan.Liu@amd.com>
Cc: Wentland, Harry <Harry.Wentland@amd.com>; Zuo, Jerry <Jerry.Zuo@amd.com>; 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)

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);
> > > > >
> > > > >

[-- Attachment #2: dmesg.log --]
[-- Type: application/octet-stream, Size: 104650 bytes --]

[    0.000000] Linux version 5.5.0-rc7-jerry-build-drm-next+ (jzuo@jzuo-linux) (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #1 SMP Mon Feb 24 11:18:24 EST 2020
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.5.0-rc7-jerry-build-drm-next+ root=UUID=9474962a-e79a-4653-bb15-285f35a6b990 ro amdgpu.dc_log=1 drm.debug=0x4 log_buf_len=25M crashkernel=384M-2G:128M,2G-:256M quiet splash vt.handoff=1
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Hygon HygonGenuine
[    0.000000]   Centaur CentaurHauls
[    0.000000]   zhaoxin   Shanghai  
[    0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'compacted' format.
[    0.000000] BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x0000000009cfffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000009d00000-0x0000000009ffffff] reserved
[    0.000000] BIOS-e820: [mem 0x000000000a000000-0x00000000d2b7ffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000d2b80000-0x00000000d2b98fff] ACPI data
[    0.000000] BIOS-e820: [mem 0x00000000d2b99000-0x00000000da835fff] usable
[    0.000000] BIOS-e820: [mem 0x00000000da836000-0x00000000da9adfff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000da9ae000-0x00000000da9b6fff] ACPI data
[    0.000000] BIOS-e820: [mem 0x00000000da9b7000-0x00000000daabcfff] usable
[    0.000000] BIOS-e820: [mem 0x00000000daabd000-0x00000000dae7bfff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x00000000dae7c000-0x00000000dbe82fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000dbe83000-0x00000000ddffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000de000000-0x00000000dfffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000f8000000-0x00000000fbffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fdf00000-0x00000000fdffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fea00000-0x00000000fea0ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000feb80000-0x00000000fec01fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec10000-0x00000000fec10fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec30000-0x00000000fec30fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed00000-0x00000000fed00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed40000-0x00000000fed44fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed80000-0x00000000fed8ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fedc2000-0x00000000fedcffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fedd4000-0x00000000fedd5fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000feefffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000041f37ffff] usable
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] SMBIOS 3.0.0 present.
[    0.000000] DMI: System manufacturer System Product Name/PRIME X370-PRO, BIOS 0515 03/30/2017
[    0.000000] tsc: Fast TSC calibration failed
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] last_pfn = 0x41f380 max_arch_pfn = 0x400000000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF write-through
[    0.000000]   C0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 000000000000 mask FFFF80000000 write-back
[    0.000000]   1 base 000080000000 mask FFFFC0000000 write-back
[    0.000000]   2 base 0000C0000000 mask FFFFE0000000 write-back
[    0.000000]   3 base 0000DE000000 mask FFFFFE000000 uncachable
[    0.000000]   4 disabled
[    0.000000]   5 disabled
[    0.000000]   6 disabled
[    0.000000]   7 disabled
[    0.000000] TOM2: 0000000420000000 aka 16896M
[    0.000000] x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- WT  
[    0.000000] total RAM covered: 3552M
[    0.000000] Found optimal setting for mtrr clean up
[    0.000000]  gran_size: 64K 	chunk_size: 1G 	num_reg: 3  	lose cover RAM: 0G
[    0.000000] e820: update [mem 0xde000000-0xffffffff] usable ==> reserved
[    0.000000] last_pfn = 0xde000 max_arch_pfn = 0x400000000
[    0.000000] check: Scanning 1 areas for low memory corruption
[    0.000000] kexec: Reserving the low 1M of memory for crashkernel
[    0.000000] Using GB pages for direct mapping
[    0.000000] BRK [0x196001000, 0x196001fff] PGTABLE
[    0.000000] BRK [0x196002000, 0x196002fff] PGTABLE
[    0.000000] BRK [0x196003000, 0x196003fff] PGTABLE
[    0.000000] BRK [0x196004000, 0x196004fff] PGTABLE
[    0.000000] BRK [0x196005000, 0x196005fff] PGTABLE
[    0.000000] BRK [0x196006000, 0x196006fff] PGTABLE
[    0.000000] BRK [0x196007000, 0x196007fff] PGTABLE
[    0.000000] BRK [0x196008000, 0x196008fff] PGTABLE
[    0.000000] BRK [0x196009000, 0x196009fff] PGTABLE
[    0.000000] BRK [0x19600a000, 0x19600afff] PGTABLE
[    0.000000] BRK [0x19600b000, 0x19600bfff] PGTABLE
[    0.000000] BRK [0x19600c000, 0x19600cfff] PGTABLE
[    0.000000] printk: log_buf_len: 33554432 bytes
[    0.000000] printk: early log buf free: 256312(97%)
[    0.000000] RAMDISK: [mem 0x33513000-0x35a80fff]
[    0.000000] ACPI: Early table checksum verification disabled
[    0.000000] ACPI: RSDP 0x00000000000F05B0 000024 (v02 ALASKA)
[    0.000000] ACPI: XSDT 0x00000000D2B80098 0000AC (v01 ALASKA A M I    01072009 AMI  00010013)
[    0.000000] ACPI: FACP 0x00000000D2B894B8 000114 (v06 ALASKA A M I    01072009 AMI  00010013)
[    0.000000] ACPI BIOS Warning (bug): Optional FADT field Pm2ControlBlock has valid Length but zero Address: 0x0000000000000000/0x1 (20191018/tbfadt-624)
[    0.000000] ACPI: DSDT 0x00000000D2B801E0 0092D3 (v02 ALASKA A M I    01072009 INTL 20120913)
[    0.000000] ACPI: FACS 0x00000000DAE79C80 000040
[    0.000000] ACPI: APIC 0x00000000D2B895D0 0000DE (v03 ALASKA A M I    01072009 AMI  00010013)
[    0.000000] ACPI: FPDT 0x00000000D2B896B0 000044 (v01 ALASKA A M I    01072009 AMI  00010013)
[    0.000000] ACPI: SSDT 0x00000000D2B97030 001664 (v01 AMD    CPMCMN   00000001 INTL 20120913)
[    0.000000] ACPI: SSDT 0x00000000D2B89750 008C4C (v02                 00000002 MSFT 04000000)
[    0.000000] ACPI: FIDT 0x00000000D2B923A0 00009C (v01 ALASKA A M I    01072009 AMI  00010013)
[    0.000000] ACPI: SSDT 0x00000000D2B92440 0020E4 (v01 AMD    AmdTable 00000001 AMD  00000001)
[    0.000000] ACPI: SRAT 0x00000000D2B94528 000130 (v03 AMD    AmdTable 00000001 AMD  00000001)
[    0.000000] ACPI: CRAT 0x00000000D2B94658 000F50 (v01 AMD    AmdTable 00000001 AMD  00000001)
[    0.000000] ACPI: CDIT 0x00000000D2B955A8 000029 (v01 AMD    AmdTable 00000001 AMD  00000001)
[    0.000000] ACPI: SSDT 0x00000000D2B955D8 0017A1 (v01 AMD    AOD      00000001 INTL 20120913)
[    0.000000] ACPI: MCFG 0x00000000D2B96D80 00003C (v01 ALASKA A M I    01072009 MSFT 00010013)
[    0.000000] ACPI: HPET 0x00000000D2B96DC0 000038 (v01 ALASKA A M I    01072009 AMI  00000005)
[    0.000000] ACPI: SSDT 0x00000000D2B96DF8 000024 (v01 AMDFCH FCHZP    00001000 INTL 20120913)
[    0.000000] ACPI: UEFI 0x00000000D2B96E20 000042 (v01                 00000000      00000000)
[    0.000000] ACPI: IVRS 0x00000000D2B96E68 0000D0 (v02                 00000001 AMD  00000000)
[    0.000000] ACPI: SSDT 0x00000000D2B96F38 0000F8 (v01 AMDFCH FCHPT    00001000 INTL 20120913)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] SRAT: PXM 0 -> APIC 0x00 -> Node 0
[    0.000000] SRAT: PXM 0 -> APIC 0x01 -> Node 0
[    0.000000] SRAT: PXM 0 -> APIC 0x02 -> Node 0
[    0.000000] SRAT: PXM 0 -> APIC 0x03 -> Node 0
[    0.000000] SRAT: PXM 0 -> APIC 0x04 -> Node 0
[    0.000000] SRAT: PXM 0 -> APIC 0x05 -> Node 0
[    0.000000] SRAT: PXM 0 -> APIC 0x06 -> Node 0
[    0.000000] SRAT: PXM 0 -> APIC 0x07 -> Node 0
[    0.000000] SRAT: PXM 0 -> APIC 0x08 -> Node 0
[    0.000000] SRAT: PXM 0 -> APIC 0x09 -> Node 0
[    0.000000] SRAT: PXM 0 -> APIC 0x0a -> Node 0
[    0.000000] SRAT: PXM 0 -> APIC 0x0b -> Node 0
[    0.000000] SRAT: PXM 0 -> APIC 0x0c -> Node 0
[    0.000000] SRAT: PXM 0 -> APIC 0x0d -> Node 0
[    0.000000] SRAT: PXM 0 -> APIC 0x0e -> Node 0
[    0.000000] SRAT: PXM 0 -> APIC 0x0f -> Node 0
[    0.000000] No NUMA configuration found
[    0.000000] Faking a node at [mem 0x0000000000000000-0x000000041f37ffff]
[    0.000000] NODE_DATA(0) allocated [mem 0x41d355000-0x41d37ffff]
[    0.000000] Reserving 256MB of memory at 3104MB for crashkernel (System RAM: 16314MB)
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
[    0.000000]   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
[    0.000000]   Normal   [mem 0x0000000100000000-0x000000041f37ffff]
[    0.000000]   Device   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000001000-0x000000000009cfff]
[    0.000000]   node   0: [mem 0x0000000000100000-0x0000000009cfffff]
[    0.000000]   node   0: [mem 0x000000000a000000-0x00000000d2b7ffff]
[    0.000000]   node   0: [mem 0x00000000d2b99000-0x00000000da835fff]
[    0.000000]   node   0: [mem 0x00000000da9b7000-0x00000000daabcfff]
[    0.000000]   node   0: [mem 0x00000000dbe83000-0x00000000ddffffff]
[    0.000000]   node   0: [mem 0x0000000100000000-0x000000041f37ffff]
[    0.000000] Zeroed struct page in unavailable ranges: 14532 pages
[    0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000041f37ffff]
[    0.000000] On node 0 totalpages: 4176572
[    0.000000]   DMA zone: 64 pages used for memmap
[    0.000000]   DMA zone: 156 pages reserved
[    0.000000]   DMA zone: 3996 pages, LIFO batch:0
[    0.000000]   DMA32 zone: 14047 pages used for memmap
[    0.000000]   DMA32 zone: 898976 pages, LIFO batch:63
[    0.000000]   Normal zone: 51150 pages used for memmap
[    0.000000]   Normal zone: 3273600 pages, LIFO batch:63
[    0.000000] ACPI: PM-Timer IO Port: 0x808
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0xff] high edge lint[0x1])
[    0.000000] IOAPIC[0]: apic_id 17, version 33, address 0xfec00000, GSI 0-23
[    0.000000] IOAPIC[1]: apic_id 18, version 33, address 0xfec01000, GSI 24-55
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x10228201 base: 0xfed00000
[    0.000000] smpboot: Allowing 16 CPUs, 0 hotplug CPUs
[    0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff]
[    0.000000] PM: Registered nosave memory: [mem 0x0009d000-0x0009dfff]
[    0.000000] PM: Registered nosave memory: [mem 0x0009e000-0x0009ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000dffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000e0000-0x000fffff]
[    0.000000] PM: Registered nosave memory: [mem 0x09d00000-0x09ffffff]
[    0.000000] PM: Registered nosave memory: [mem 0xd2b80000-0xd2b98fff]
[    0.000000] PM: Registered nosave memory: [mem 0xda836000-0xda9adfff]
[    0.000000] PM: Registered nosave memory: [mem 0xda9ae000-0xda9b6fff]
[    0.000000] PM: Registered nosave memory: [mem 0xdaabd000-0xdae7bfff]
[    0.000000] PM: Registered nosave memory: [mem 0xdae7c000-0xdbe82fff]
[    0.000000] PM: Registered nosave memory: [mem 0xde000000-0xdfffffff]
[    0.000000] PM: Registered nosave memory: [mem 0xe0000000-0xf7ffffff]
[    0.000000] PM: Registered nosave memory: [mem 0xf8000000-0xfbffffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfc000000-0xfdefffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfdf00000-0xfdffffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfe000000-0xfe9fffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfea00000-0xfea0ffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfea10000-0xfeb7ffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfeb80000-0xfec01fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfec02000-0xfec0ffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfec10000-0xfec10fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfec11000-0xfec2ffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfec30000-0xfec30fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfec31000-0xfecfffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed00000-0xfed00fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed01000-0xfed3ffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed40000-0xfed44fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed45000-0xfed7ffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed80000-0xfed8ffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed90000-0xfedc1fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfedc2000-0xfedcffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfedd0000-0xfedd3fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfedd4000-0xfedd5fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfedd6000-0xfedfffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfee00000-0xfeefffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfef00000-0xfeffffff]
[    0.000000] PM: Registered nosave memory: [mem 0xff000000-0xffffffff]
[    0.000000] [mem 0xe0000000-0xf7ffffff] available for PCI devices
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns
[    0.000000] setup_percpu: NR_CPUS:8192 nr_cpumask_bits:16 nr_cpu_ids:16 nr_node_ids:1
[    0.000000] percpu: Embedded 56 pages/cpu s192512 r8192 d28672 u262144
[    0.000000] pcpu-alloc: s192512 r8192 d28672 u262144 alloc=1*2097152
[    0.000000] pcpu-alloc: [0] 00 01 02 03 04 05 06 07 [0] 08 09 10 11 12 13 14 15 
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 4111155
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.5.0-rc7-jerry-build-drm-next+ root=UUID=9474962a-e79a-4653-bb15-285f35a6b990 ro amdgpu.dc_log=1 drm.debug=0x4 log_buf_len=25M crashkernel=384M-2G:128M,2G-:256M quiet splash vt.handoff=1
[    0.000000] Dentry cache hash table entries: 2097152 (order: 12, 16777216 bytes, linear)
[    0.000000] Inode-cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:on, heap free:off
[    0.000000] Memory: 15983144K/16706288K available (14339K kernel code, 2378K rwdata, 4996K rodata, 2624K init, 5100K bss, 723144K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=16, Nodes=1
[    0.000000] ftrace: allocating 43725 entries in 171 pages
[    0.000000] ftrace: allocated 171 pages with 5 groups
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=8192 to nr_cpu_ids=16.
[    0.000000] 	Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=16
[    0.000000] NR_IRQS: 524544, nr_irqs: 1096, preallocated irqs: 16
[    0.000000] random: crng done (trusting CPU's manufacturer)
[    0.000000] spurious 8259A interrupt: IRQ7.
[    0.000000] Console: colour dummy device 80x25
[    0.000000] printk: console [tty0] enabled
[    0.000000] ACPI: Core revision 20191018
[    0.000000] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 133484873504 ns
[    0.000000] APIC: Switch to symmetric I/O mode setup
[    0.004000] Switched APIC routing to physical flat.
[    0.008000] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.036000] tsc: PIT calibration matches HPET. 2 loops
[    0.036000] tsc: Detected 3393.546 MHz processor
[    0.000003] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x30ea7dd8cfb, max_idle_ns: 440795310428 ns
[    0.000006] Calibrating delay loop (skipped), value calculated using timer frequency.. 6787.09 BogoMIPS (lpj=13574184)
[    0.000007] pid_max: default: 32768 minimum: 301
[    0.000047] LSM: Security Framework initializing
[    0.000055] Yama: becoming mindful.
[    0.000074] AppArmor: AppArmor initialized
[    0.000124] Mount-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.000146] Mountpoint-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.000159] *** VALIDATE tmpfs ***
[    0.000281] *** VALIDATE proc ***
[    0.000324] *** VALIDATE cgroup1 ***
[    0.000325] *** VALIDATE cgroup2 ***
[    0.000383] LVT offset 1 assigned for vector 0xf9
[    0.000462] LVT offset 2 assigned for vector 0xf4
[    0.000479] Last level iTLB entries: 4KB 1024, 2MB 1024, 4MB 512
[    0.000480] Last level dTLB entries: 4KB 1536, 2MB 1536, 4MB 768, 1GB 0
[    0.000482] Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
[    0.000483] Spectre V2 : Mitigation: Full AMD retpoline
[    0.000484] Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch
[    0.000485] Speculative Store Bypass: Mitigation: Speculative Store Bypass disabled via prctl and seccomp
[    0.000660] Freeing SMP alternatives memory: 40K
[    0.113249] smpboot: CPU0: AMD Ryzen 7 1700X Eight-Core Processor (family: 0x17, model: 0x1, stepping: 0x1)
[    0.113344] Performance Events: Fam17h core perfctr, AMD PMU driver.
[    0.113347] ... version:                0
[    0.113347] ... bit width:              48
[    0.113347] ... generic registers:      6
[    0.113348] ... value mask:             0000ffffffffffff
[    0.113348] ... max period:             00007fffffffffff
[    0.113349] ... fixed-purpose events:   0
[    0.113349] ... event mask:             000000000000003f
[    0.113372] rcu: Hierarchical SRCU implementation.
[    0.113800] NMI watchdog: Enabled. Permanently consumes one hw-PMU counter.
[    0.113915] smp: Bringing up secondary CPUs ...
[    0.113996] x86: Booting SMP configuration:
[    0.113997] .... node  #0, CPUs:        #1  #2  #3  #4  #5  #6  #7  #8  #9 #10 #11 #12 #13 #14 #15
[    0.146237] smp: Brought up 1 node, 16 CPUs
[    0.146237] smpboot: Max logical packages: 1
[    0.146237] smpboot: Total of 16 processors activated (108593.47 BogoMIPS)
[    0.148511] devtmpfs: initialized
[    0.148511] x86/mm: Memory block size: 128MB
[    0.149134] PM: Registering ACPI NVS region [mem 0xdaabd000-0xdae7bfff] (3928064 bytes)
[    0.149136] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.149136] futex hash table entries: 4096 (order: 6, 262144 bytes, linear)
[    0.149136] pinctrl core: initialized pinctrl subsystem
[    0.149136] PM: RTC time: 18:26:15, date: 2020-02-25
[    0.149136] thermal_sys: Registered thermal governor 'fair_share'
[    0.149136] thermal_sys: Registered thermal governor 'bang_bang'
[    0.149136] thermal_sys: Registered thermal governor 'step_wise'
[    0.149136] thermal_sys: Registered thermal governor 'user_space'
[    0.149136] NET: Registered protocol family 16
[    0.149136] audit: initializing netlink subsys (disabled)
[    0.149136] audit: type=2000 audit(1582655174.184:1): state=initialized audit_enabled=0 res=1
[    0.149136] EISA bus registered
[    0.149136] cpuidle: using governor ladder
[    0.149136] cpuidle: using governor menu
[    0.149136] ACPI: bus type PCI registered
[    0.149136] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[    0.149136] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xf8000000-0xfbffffff] (base 0xf8000000)
[    0.149136] PCI: MMCONFIG at [mem 0xf8000000-0xfbffffff] reserved in E820
[    0.149136] pmd_set_huge: Cannot satisfy [mem 0xf8000000-0xf8200000] with a huge-page mapping due to MTRR override.
[    0.149136] PCI: Using configuration type 1 for base access
[    0.152238] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[    0.152238] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.156113] ACPI: Added _OSI(Module Device)
[    0.156114] ACPI: Added _OSI(Processor Device)
[    0.156115] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.156115] ACPI: Added _OSI(Processor Aggregator Device)
[    0.156116] ACPI: Added _OSI(Linux-Dell-Video)
[    0.156117] ACPI: Added _OSI(Linux-Lenovo-NV-HDMI-Audio)
[    0.156118] ACPI: Added _OSI(Linux-HPI-Hybrid-Graphics)
[    0.157034] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
[    0.169109] ACPI: 7 ACPI AML tables successfully acquired and loaded
[    0.173994] ACPI: Interpreter enabled
[    0.174008] ACPI: (supports S0 S3 S4 S5)
[    0.174009] ACPI: Using IOAPIC for interrupt routing
[    0.174137] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.174406] ACPI: Enabled 4 GPEs in block 00 to 1F
[    0.181408] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.181412] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI HPX-Type3]
[    0.181604] acpi PNP0A08:00: _OSC: platform does not support [PCIeHotplug SHPCHotplug PME LTR]
[    0.181786] acpi PNP0A08:00: _OSC: OS now controls [AER PCIeCapability]
[    0.181798] acpi PNP0A08:00: [Firmware Info]: MMCONFIG for domain 0000 [bus 00-3f] only partially covers this bridge
[    0.182156] PCI host bridge to bus 0000:00
[    0.182158] pci_bus 0000:00: root bus resource [io  0x0000-0x03af window]
[    0.182160] pci_bus 0000:00: root bus resource [io  0x03e0-0x0cf7 window]
[    0.182160] pci_bus 0000:00: root bus resource [io  0x03b0-0x03df window]
[    0.182161] pci_bus 0000:00: root bus resource [io  0x0d00-0xefff window]
[    0.182162] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
[    0.182163] pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000dffff window]
[    0.182164] pci_bus 0000:00: root bus resource [mem 0xe0000000-0xfec2ffff window]
[    0.182165] pci_bus 0000:00: root bus resource [mem 0xfee00000-0xffffffff window]
[    0.182166] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.182173] pci 0000:00:00.0: [1022:1450] type 00 class 0x060000
[    0.182266] pci 0000:00:00.2: [1022:1451] type 00 class 0x080600
[    0.182368] pci 0000:00:01.0: [1022:1452] type 00 class 0x060000
[    0.182440] pci 0000:00:01.3: [1022:1453] type 01 class 0x060400
[    0.182489] pci 0000:00:01.3: PME# supported from D0 D3hot D3cold
[    0.182574] pci 0000:00:02.0: [1022:1452] type 00 class 0x060000
[    0.182648] pci 0000:00:03.0: [1022:1452] type 00 class 0x060000
[    0.182717] pci 0000:00:03.2: [1022:1453] type 01 class 0x060400
[    0.182765] pci 0000:00:03.2: PME# supported from D0 D3hot D3cold
[    0.182854] pci 0000:00:04.0: [1022:1452] type 00 class 0x060000
[    0.182930] pci 0000:00:07.0: [1022:1452] type 00 class 0x060000
[    0.182998] pci 0000:00:07.1: [1022:1454] type 01 class 0x060400
[    0.183019] pci 0000:00:07.1: enabling Extended Tags
[    0.183043] pci 0000:00:07.1: PME# supported from D0 D3hot D3cold
[    0.183123] pci 0000:00:08.0: [1022:1452] type 00 class 0x060000
[    0.183191] pci 0000:00:08.1: [1022:1454] type 01 class 0x060400
[    0.183214] pci 0000:00:08.1: enabling Extended Tags
[    0.183239] pci 0000:00:08.1: PME# supported from D0 D3hot D3cold
[    0.183336] pci 0000:00:14.0: [1022:790b] type 00 class 0x0c0500
[    0.183461] pci 0000:00:14.3: [1022:790e] type 00 class 0x060100
[    0.183589] pci 0000:00:18.0: [1022:1460] type 00 class 0x060000
[    0.183650] pci 0000:00:18.1: [1022:1461] type 00 class 0x060000
[    0.183708] pci 0000:00:18.2: [1022:1462] type 00 class 0x060000
[    0.183766] pci 0000:00:18.3: [1022:1463] type 00 class 0x060000
[    0.183824] pci 0000:00:18.4: [1022:1464] type 00 class 0x060000
[    0.183881] pci 0000:00:18.5: [1022:1465] type 00 class 0x060000
[    0.183940] pci 0000:00:18.6: [1022:1466] type 00 class 0x060000
[    0.183997] pci 0000:00:18.7: [1022:1467] type 00 class 0x060000
[    0.184108] pci 0000:03:00.0: [1022:43b9] type 00 class 0x0c0330
[    0.184129] pci 0000:03:00.0: reg 0x10: [mem 0xfe6a0000-0xfe6a7fff 64bit]
[    0.184206] pci 0000:03:00.0: PME# supported from D3hot D3cold
[    0.184290] pci 0000:03:00.1: [1022:43b5] type 00 class 0x010601
[    0.184334] pci 0000:03:00.1: reg 0x24: [mem 0xfe680000-0xfe69ffff]
[    0.184341] pci 0000:03:00.1: reg 0x30: [mem 0xfe600000-0xfe67ffff pref]
[    0.184380] pci 0000:03:00.1: PME# supported from D3hot D3cold
[    0.184430] pci 0000:03:00.2: [1022:43b0] type 01 class 0x060400
[    0.184509] pci 0000:03:00.2: PME# supported from D3hot D3cold
[    0.184598] pci 0000:00:01.3: PCI bridge to [bus 03-27]
[    0.184601] pci 0000:00:01.3:   bridge window [io  0xe000-0xefff]
[    0.184602] pci 0000:00:01.3:   bridge window [mem 0xfe400000-0xfe6fffff]
[    0.184687] pci 0000:1d:00.0: [1022:43b4] type 01 class 0x060400
[    0.184781] pci 0000:1d:00.0: PME# supported from D3hot D3cold
[    0.184862] pci 0000:1d:02.0: [1022:43b4] type 01 class 0x060400
[    0.184956] pci 0000:1d:02.0: PME# supported from D3hot D3cold
[    0.185035] pci 0000:1d:03.0: [1022:43b4] type 01 class 0x060400
[    0.185130] pci 0000:1d:03.0: PME# supported from D3hot D3cold
[    0.185210] pci 0000:1d:04.0: [1022:43b4] type 01 class 0x060400
[    0.185304] pci 0000:1d:04.0: PME# supported from D3hot D3cold
[    0.185385] pci 0000:1d:06.0: [1022:43b4] type 01 class 0x060400
[    0.185479] pci 0000:1d:06.0: PME# supported from D3hot D3cold
[    0.185561] pci 0000:1d:07.0: [1022:43b4] type 01 class 0x060400
[    0.185655] pci 0000:1d:07.0: PME# supported from D3hot D3cold
[    0.185755] pci 0000:03:00.2: PCI bridge to [bus 1d-27]
[    0.185760] pci 0000:03:00.2:   bridge window [io  0xe000-0xefff]
[    0.185762] pci 0000:03:00.2:   bridge window [mem 0xfe400000-0xfe5fffff]
[    0.185807] pci 0000:1d:00.0: PCI bridge to [bus 21]
[    0.185853] pci 0000:1d:02.0: PCI bridge to [bus 23]
[    0.185898] pci 0000:1d:03.0: PCI bridge to [bus 24]
[    0.185979] pci 0000:25:00.0: [1b21:1343] type 00 class 0x0c0330
[    0.186019] pci 0000:25:00.0: reg 0x10: [mem 0xfe500000-0xfe507fff 64bit]
[    0.186240] pci 0000:25:00.0: PME# supported from D3hot D3cold
[    0.186416] pci 0000:1d:04.0: PCI bridge to [bus 25]
[    0.186422] pci 0000:1d:04.0:   bridge window [mem 0xfe500000-0xfe5fffff]
[    0.186492] pci 0000:26:00.0: [8086:1539] type 00 class 0x020000
[    0.186536] pci 0000:26:00.0: reg 0x10: [mem 0xfe400000-0xfe41ffff]
[    0.186569] pci 0000:26:00.0: reg 0x18: [io  0xe000-0xe01f]
[    0.186585] pci 0000:26:00.0: reg 0x1c: [mem 0xfe420000-0xfe423fff]
[    0.186760] pci 0000:26:00.0: PME# supported from D0 D3hot D3cold
[    0.186923] pci 0000:1d:06.0: PCI bridge to [bus 26]
[    0.186928] pci 0000:1d:06.0:   bridge window [io  0xe000-0xefff]
[    0.186930] pci 0000:1d:06.0:   bridge window [mem 0xfe400000-0xfe4fffff]
[    0.186971] pci 0000:1d:07.0: PCI bridge to [bus 27]
[    0.187043] pci 0000:28:00.0: [1002:14a0] type 01 class 0x060400
[    0.187064] pci 0000:28:00.0: reg 0x10: [mem 0xfe800000-0xfe803fff]
[    0.187146] pci 0000:28:00.0: PME# supported from D0 D3hot D3cold
[    0.187205] pci 0000:28:00.0: 63.008 Gb/s available PCIe bandwidth, limited by 8 GT/s x8 link at 0000:00:03.2 (capable of 126.016 Gb/s with 8 GT/s x16 link)
[    0.187258] pci 0000:00:03.2: PCI bridge to [bus 28-2a]
[    0.187261] pci 0000:00:03.2:   bridge window [io  0xd000-0xdfff]
[    0.187262] pci 0000:00:03.2:   bridge window [mem 0xfe700000-0xfe8fffff]
[    0.187265] pci 0000:00:03.2:   bridge window [mem 0xe0000000-0xf01fffff 64bit pref]
[    0.187298] pci 0000:29:00.0: [1002:14a1] type 01 class 0x060400
[    0.187385] pci 0000:29:00.0: PME# supported from D0 D3hot D3cold
[    0.187462] pci 0000:28:00.0: PCI bridge to [bus 29-2a]
[    0.187466] pci 0000:28:00.0:   bridge window [io  0xd000-0xdfff]
[    0.187468] pci 0000:28:00.0:   bridge window [mem 0xfe700000-0xfe7fffff]
[    0.187472] pci 0000:28:00.0:   bridge window [mem 0xe0000000-0xf01fffff 64bit pref]
[    0.187506] pci 0000:2a:00.0: [1002:66af] type 00 class 0x030000
[    0.187530] pci 0000:2a:00.0: reg 0x10: [mem 0xe0000000-0xefffffff 64bit pref]
[    0.187540] pci 0000:2a:00.0: reg 0x18: [mem 0xf0000000-0xf01fffff 64bit pref]
[    0.187546] pci 0000:2a:00.0: reg 0x20: [io  0xd000-0xd0ff]
[    0.187552] pci 0000:2a:00.0: reg 0x24: [mem 0xfe700000-0xfe77ffff]
[    0.187559] pci 0000:2a:00.0: reg 0x30: [mem 0xfe780000-0xfe79ffff pref]
[    0.187623] pci 0000:2a:00.0: PME# supported from D1 D2 D3hot D3cold
[    0.187675] pci 0000:2a:00.0: 63.008 Gb/s available PCIe bandwidth, limited by 8 GT/s x8 link at 0000:00:03.2 (capable of 126.016 Gb/s with 8 GT/s x16 link)
[    0.187704] pci 0000:2a:00.1: [1002:ab20] type 00 class 0x040300
[    0.187721] pci 0000:2a:00.1: reg 0x10: [mem 0xfe7a0000-0xfe7a3fff]
[    0.187801] pci 0000:2a:00.1: PME# supported from D1 D2 D3hot D3cold
[    0.187889] pci 0000:29:00.0: PCI bridge to [bus 2a]
[    0.187893] pci 0000:29:00.0:   bridge window [io  0xd000-0xdfff]
[    0.187895] pci 0000:29:00.0:   bridge window [mem 0xfe700000-0xfe7fffff]
[    0.187899] pci 0000:29:00.0:   bridge window [mem 0xe0000000-0xf01fffff 64bit pref]
[    0.187946] pci 0000:2b:00.0: [1022:145a] type 00 class 0x130000
[    0.187977] pci 0000:2b:00.0: enabling Extended Tags
[    0.188037] pci 0000:2b:00.2: [1022:1456] type 00 class 0x108000
[    0.188053] pci 0000:2b:00.2: reg 0x18: [mem 0xfe200000-0xfe2fffff]
[    0.188063] pci 0000:2b:00.2: reg 0x24: [mem 0xfe300000-0xfe301fff]
[    0.188069] pci 0000:2b:00.2: enabling Extended Tags
[    0.188140] pci 0000:2b:00.3: [1022:145c] type 00 class 0x0c0330
[    0.188151] pci 0000:2b:00.3: reg 0x10: [mem 0xfe100000-0xfe1fffff 64bit]
[    0.188170] pci 0000:2b:00.3: enabling Extended Tags
[    0.188194] pci 0000:2b:00.3: PME# supported from D0 D3hot D3cold
[    0.188249] pci 0000:00:07.1: PCI bridge to [bus 2b]
[    0.188252] pci 0000:00:07.1:   bridge window [mem 0xfe100000-0xfe3fffff]
[    0.188298] pci 0000:2c:00.0: [1022:1455] type 00 class 0x130000
[    0.188331] pci 0000:2c:00.0: enabling Extended Tags
[    0.188392] pci 0000:2c:00.2: [1022:7901] type 00 class 0x010601
[    0.188419] pci 0000:2c:00.2: reg 0x24: [mem 0xfe908000-0xfe908fff]
[    0.188426] pci 0000:2c:00.2: enabling Extended Tags
[    0.188453] pci 0000:2c:00.2: PME# supported from D3hot D3cold
[    0.188500] pci 0000:2c:00.3: [1022:1457] type 00 class 0x040300
[    0.188510] pci 0000:2c:00.3: reg 0x10: [mem 0xfe900000-0xfe907fff]
[    0.188534] pci 0000:2c:00.3: enabling Extended Tags
[    0.188559] pci 0000:2c:00.3: PME# supported from D0 D3hot D3cold
[    0.188617] pci 0000:00:08.1: PCI bridge to [bus 2c]
[    0.188620] pci 0000:00:08.1:   bridge window [mem 0xfe900000-0xfe9fffff]
[    0.189019] ACPI: PCI Interrupt Link [LNKA] (IRQs 4 5 7 10 11 14 15) *0
[    0.189074] ACPI: PCI Interrupt Link [LNKB] (IRQs 4 5 7 10 11 14 15) *0
[    0.189122] ACPI: PCI Interrupt Link [LNKC] (IRQs 4 5 7 10 11 14 15) *0
[    0.189180] ACPI: PCI Interrupt Link [LNKD] (IRQs 4 5 7 10 11 14 15) *0
[    0.189232] ACPI: PCI Interrupt Link [LNKE] (IRQs 4 5 7 10 11 14 15) *0
[    0.189276] ACPI: PCI Interrupt Link [LNKF] (IRQs 4 5 7 10 11 14 15) *0
[    0.189320] ACPI: PCI Interrupt Link [LNKG] (IRQs 4 5 7 10 11 14 15) *0
[    0.189363] ACPI: PCI Interrupt Link [LNKH] (IRQs 4 5 7 10 11 14 15) *0
[    0.189889] iommu: Default domain type: Translated 
[    0.192017] pci 0000:2a:00.0: vgaarb: setting as boot VGA device
[    0.192019] pci 0000:2a:00.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
[    0.192020] pci 0000:2a:00.0: vgaarb: bridge control possible
[    0.192021] vgaarb: loaded
[    0.192193] SCSI subsystem initialized
[    0.192217] libata version 3.00 loaded.
[    0.192217] ACPI: bus type USB registered
[    0.192217] usbcore: registered new interface driver usbfs
[    0.192217] usbcore: registered new interface driver hub
[    0.192217] usbcore: registered new device driver usb
[    0.192217] pps_core: LinuxPPS API ver. 1 registered
[    0.192217] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.192217] PTP clock support registered
[    0.192217] EDAC MC: Ver: 3.0.0
[    0.192217] PCI: Using ACPI for IRQ routing
[    0.193432] PCI: pci_cache_line_size set to 64 bytes
[    0.193495] e820: reserve RAM buffer [mem 0x0009d400-0x0009ffff]
[    0.193496] e820: reserve RAM buffer [mem 0x09d00000-0x0bffffff]
[    0.193497] e820: reserve RAM buffer [mem 0xd2b80000-0xd3ffffff]
[    0.193497] e820: reserve RAM buffer [mem 0xda836000-0xdbffffff]
[    0.193497] e820: reserve RAM buffer [mem 0xdaabd000-0xdbffffff]
[    0.193497] e820: reserve RAM buffer [mem 0xde000000-0xdfffffff]
[    0.193497] e820: reserve RAM buffer [mem 0x41f380000-0x41fffffff]
[    0.193497] NetLabel: Initializing
[    0.193497] NetLabel:  domain hash size = 128
[    0.193497] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
[    0.193497] NetLabel:  unlabeled traffic allowed by default
[    0.193497] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[    0.193497] hpet0: 3 comparators, 32-bit 14.318180 MHz counter
[    0.196630] clocksource: Switched to clocksource tsc-early
[    0.205732] *** VALIDATE bpf ***
[    0.205840] VFS: Disk quotas dquot_6.6.0
[    0.205856] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.205881] *** VALIDATE ramfs ***
[    0.205885] *** VALIDATE hugetlbfs ***
[    0.205952] AppArmor: AppArmor Filesystem Enabled
[    0.205979] pnp: PnP ACPI init
[    0.206133] system 00:00: [mem 0xf8000000-0xfbffffff] has been reserved
[    0.206138] system 00:00: Plug and Play ACPI device, IDs PNP0c01 (active)
[    0.206210] system 00:01: [mem 0xfeb80000-0xfebfffff] could not be reserved
[    0.206213] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.206327] pnp 00:02: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.206500] system 00:03: [io  0x0300-0x030f] has been reserved
[    0.206501] system 00:03: [io  0x0230-0x023f] has been reserved
[    0.206502] system 00:03: [io  0x0290-0x029f] has been reserved
[    0.206505] system 00:03: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.206786] pnp 00:04: [dma 0 disabled]
[    0.206819] pnp 00:04: Plug and Play ACPI device, IDs PNP0501 (active)
[    0.207055] system 00:05: [io  0x04d0-0x04d1] has been reserved
[    0.207056] system 00:05: [io  0x040b] has been reserved
[    0.207057] system 00:05: [io  0x04d6] has been reserved
[    0.207058] system 00:05: [io  0x0c00-0x0c01] has been reserved
[    0.207059] system 00:05: [io  0x0c14] has been reserved
[    0.207060] system 00:05: [io  0x0c50-0x0c51] has been reserved
[    0.207061] system 00:05: [io  0x0c52] has been reserved
[    0.207062] system 00:05: [io  0x0c6c] has been reserved
[    0.207063] system 00:05: [io  0x0c6f] has been reserved
[    0.207063] system 00:05: [io  0x0cd0-0x0cd1] has been reserved
[    0.207064] system 00:05: [io  0x0cd2-0x0cd3] has been reserved
[    0.207065] system 00:05: [io  0x0cd4-0x0cd5] has been reserved
[    0.207066] system 00:05: [io  0x0cd6-0x0cd7] has been reserved
[    0.207067] system 00:05: [io  0x0cd8-0x0cdf] has been reserved
[    0.207067] system 00:05: [io  0x0800-0x089f] has been reserved
[    0.207068] system 00:05: [io  0x0b00-0x0b0f] has been reserved
[    0.207069] system 00:05: [io  0x0b20-0x0b3f] has been reserved
[    0.207070] system 00:05: [io  0x0900-0x090f] has been reserved
[    0.207072] system 00:05: [io  0x0910-0x091f] has been reserved
[    0.207073] system 00:05: [mem 0xfec00000-0xfec00fff] could not be reserved
[    0.207074] system 00:05: [mem 0xfec01000-0xfec01fff] could not be reserved
[    0.207075] system 00:05: [mem 0xfedc0000-0xfedc0fff] has been reserved
[    0.207076] system 00:05: [mem 0xfee00000-0xfee00fff] has been reserved
[    0.207077] system 00:05: [mem 0xfed80000-0xfed8ffff] could not be reserved
[    0.207078] system 00:05: [mem 0xfec10000-0xfec10fff] has been reserved
[    0.207079] system 00:05: [mem 0xff000000-0xffffffff] has been reserved
[    0.207082] system 00:05: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.207477] pnp: PnP ACPI: found 6 devices
[    0.213151] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[    0.213180] pci 0000:1d:02.0: bridge window [io  0x1000-0x0fff] to [bus 23] add_size 1000
[    0.213183] pci 0000:1d:02.0: bridge window [mem 0x00100000-0x000fffff 64bit pref] to [bus 23] add_size 200000 add_align 100000
[    0.213184] pci 0000:1d:02.0: bridge window [mem 0x00100000-0x000fffff] to [bus 23] add_size 200000 add_align 100000
[    0.213186] pci 0000:1d:06.0: bridge window [mem 0x00100000-0x000fffff 64bit pref] to [bus 26] add_size 200000 add_align 100000
[    0.213189] pci 0000:03:00.2: bridge window [mem 0x00100000-0x002fffff 64bit pref] to [bus 1d-27] add_size 400000 add_align 100000
[    0.213191] pci 0000:00:01.3: bridge window [mem 0x00100000-0x002fffff 64bit pref] to [bus 03-27] add_size 400000 add_align 100000
[    0.213199] pci 0000:00:01.3: BAR 15: assigned [mem 0xf0200000-0xf07fffff 64bit pref]
[    0.213201] pci 0000:03:00.2: BAR 15: assigned [mem 0xf0200000-0xf07fffff 64bit pref]
[    0.213203] pci 0000:1d:02.0: BAR 14: no space for [mem size 0x00200000]
[    0.213204] pci 0000:1d:02.0: BAR 14: failed to assign [mem size 0x00200000]
[    0.213206] pci 0000:1d:02.0: BAR 15: assigned [mem 0xf0200000-0xf03fffff 64bit pref]
[    0.213207] pci 0000:1d:06.0: BAR 15: assigned [mem 0xf0400000-0xf05fffff 64bit pref]
[    0.213208] pci 0000:1d:02.0: BAR 13: no space for [io  size 0x1000]
[    0.213209] pci 0000:1d:02.0: BAR 13: failed to assign [io  size 0x1000]
[    0.213210] pci 0000:1d:02.0: BAR 14: no space for [mem size 0x00200000]
[    0.213211] pci 0000:1d:02.0: BAR 14: failed to assign [mem size 0x00200000]
[    0.213212] pci 0000:1d:02.0: BAR 13: no space for [io  size 0x1000]
[    0.213212] pci 0000:1d:02.0: BAR 13: failed to assign [io  size 0x1000]
[    0.213214] pci 0000:1d:00.0: PCI bridge to [bus 21]
[    0.213223] pci 0000:1d:02.0: PCI bridge to [bus 23]
[    0.213229] pci 0000:1d:02.0:   bridge window [mem 0xf0200000-0xf03fffff 64bit pref]
[    0.213233] pci 0000:1d:03.0: PCI bridge to [bus 24]
[    0.213242] pci 0000:1d:04.0: PCI bridge to [bus 25]
[    0.213246] pci 0000:1d:04.0:   bridge window [mem 0xfe500000-0xfe5fffff]
[    0.213252] pci 0000:1d:06.0: PCI bridge to [bus 26]
[    0.213254] pci 0000:1d:06.0:   bridge window [io  0xe000-0xefff]
[    0.213257] pci 0000:1d:06.0:   bridge window [mem 0xfe400000-0xfe4fffff]
[    0.213259] pci 0000:1d:06.0:   bridge window [mem 0xf0400000-0xf05fffff 64bit pref]
[    0.213264] pci 0000:1d:07.0: PCI bridge to [bus 27]
[    0.213272] pci 0000:03:00.2: PCI bridge to [bus 1d-27]
[    0.213274] pci 0000:03:00.2:   bridge window [io  0xe000-0xefff]
[    0.213277] pci 0000:03:00.2:   bridge window [mem 0xfe400000-0xfe5fffff]
[    0.213279] pci 0000:03:00.2:   bridge window [mem 0xf0200000-0xf07fffff 64bit pref]
[    0.213283] pci 0000:00:01.3: PCI bridge to [bus 03-27]
[    0.213284] pci 0000:00:01.3:   bridge window [io  0xe000-0xefff]
[    0.213286] pci 0000:00:01.3:   bridge window [mem 0xfe400000-0xfe6fffff]
[    0.213288] pci 0000:00:01.3:   bridge window [mem 0xf0200000-0xf07fffff 64bit pref]
[    0.213291] pci 0000:29:00.0: PCI bridge to [bus 2a]
[    0.213292] pci 0000:29:00.0:   bridge window [io  0xd000-0xdfff]
[    0.213295] pci 0000:29:00.0:   bridge window [mem 0xfe700000-0xfe7fffff]
[    0.213298] pci 0000:29:00.0:   bridge window [mem 0xe0000000-0xf01fffff 64bit pref]
[    0.213301] pci 0000:28:00.0: PCI bridge to [bus 29-2a]
[    0.213303] pci 0000:28:00.0:   bridge window [io  0xd000-0xdfff]
[    0.213306] pci 0000:28:00.0:   bridge window [mem 0xfe700000-0xfe7fffff]
[    0.213308] pci 0000:28:00.0:   bridge window [mem 0xe0000000-0xf01fffff 64bit pref]
[    0.213312] pci 0000:00:03.2: PCI bridge to [bus 28-2a]
[    0.213313] pci 0000:00:03.2:   bridge window [io  0xd000-0xdfff]
[    0.213315] pci 0000:00:03.2:   bridge window [mem 0xfe700000-0xfe8fffff]
[    0.213316] pci 0000:00:03.2:   bridge window [mem 0xe0000000-0xf01fffff 64bit pref]
[    0.213319] pci 0000:00:07.1: PCI bridge to [bus 2b]
[    0.213321] pci 0000:00:07.1:   bridge window [mem 0xfe100000-0xfe3fffff]
[    0.213325] pci 0000:00:08.1: PCI bridge to [bus 2c]
[    0.213327] pci 0000:00:08.1:   bridge window [mem 0xfe900000-0xfe9fffff]
[    0.213332] pci_bus 0000:00: resource 4 [io  0x0000-0x03af window]
[    0.213332] pci_bus 0000:00: resource 5 [io  0x03e0-0x0cf7 window]
[    0.213333] pci_bus 0000:00: resource 6 [io  0x03b0-0x03df window]
[    0.213334] pci_bus 0000:00: resource 7 [io  0x0d00-0xefff window]
[    0.213335] pci_bus 0000:00: resource 8 [mem 0x000a0000-0x000bffff window]
[    0.213336] pci_bus 0000:00: resource 9 [mem 0x000c0000-0x000dffff window]
[    0.213336] pci_bus 0000:00: resource 10 [mem 0xe0000000-0xfec2ffff window]
[    0.213337] pci_bus 0000:00: resource 11 [mem 0xfee00000-0xffffffff window]
[    0.213338] pci_bus 0000:03: resource 0 [io  0xe000-0xefff]
[    0.213339] pci_bus 0000:03: resource 1 [mem 0xfe400000-0xfe6fffff]
[    0.213339] pci_bus 0000:03: resource 2 [mem 0xf0200000-0xf07fffff 64bit pref]
[    0.213340] pci_bus 0000:1d: resource 0 [io  0xe000-0xefff]
[    0.213341] pci_bus 0000:1d: resource 1 [mem 0xfe400000-0xfe5fffff]
[    0.213341] pci_bus 0000:1d: resource 2 [mem 0xf0200000-0xf07fffff 64bit pref]
[    0.213342] pci_bus 0000:23: resource 2 [mem 0xf0200000-0xf03fffff 64bit pref]
[    0.213343] pci_bus 0000:25: resource 1 [mem 0xfe500000-0xfe5fffff]
[    0.213344] pci_bus 0000:26: resource 0 [io  0xe000-0xefff]
[    0.213345] pci_bus 0000:26: resource 1 [mem 0xfe400000-0xfe4fffff]
[    0.213345] pci_bus 0000:26: resource 2 [mem 0xf0400000-0xf05fffff 64bit pref]
[    0.213346] pci_bus 0000:28: resource 0 [io  0xd000-0xdfff]
[    0.213347] pci_bus 0000:28: resource 1 [mem 0xfe700000-0xfe8fffff]
[    0.213348] pci_bus 0000:28: resource 2 [mem 0xe0000000-0xf01fffff 64bit pref]
[    0.213349] pci_bus 0000:29: resource 0 [io  0xd000-0xdfff]
[    0.213349] pci_bus 0000:29: resource 1 [mem 0xfe700000-0xfe7fffff]
[    0.213350] pci_bus 0000:29: resource 2 [mem 0xe0000000-0xf01fffff 64bit pref]
[    0.213351] pci_bus 0000:2a: resource 0 [io  0xd000-0xdfff]
[    0.213351] pci_bus 0000:2a: resource 1 [mem 0xfe700000-0xfe7fffff]
[    0.213352] pci_bus 0000:2a: resource 2 [mem 0xe0000000-0xf01fffff 64bit pref]
[    0.213353] pci_bus 0000:2b: resource 1 [mem 0xfe100000-0xfe3fffff]
[    0.213353] pci_bus 0000:2c: resource 1 [mem 0xfe900000-0xfe9fffff]
[    0.213438] NET: Registered protocol family 2
[    0.213608] tcp_listen_portaddr_hash hash table entries: 8192 (order: 5, 131072 bytes, linear)
[    0.213722] TCP established hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.213917] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes, linear)
[    0.213993] TCP: Hash tables configured (established 131072 bind 65536)
[    0.214041] UDP hash table entries: 8192 (order: 6, 262144 bytes, linear)
[    0.214080] UDP-Lite hash table entries: 8192 (order: 6, 262144 bytes, linear)
[    0.214142] NET: Registered protocol family 1
[    0.214147] NET: Registered protocol family 44
[    0.214459] pci 0000:2a:00.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
[    0.214468] pci 0000:2a:00.1: D0 power state depends on 0000:2a:00.0
[    0.214631] PCI: CLS 64 bytes, default 64
[    0.214669] Trying to unpack rootfs image as initramfs...
[    0.639492] Freeing initrd memory: 38328K
[    0.639515] pci 0000:00:00.2: AMD-Vi: IOMMU performance counters supported
[    0.639626] pci 0000:00:00.2: can't derive routing for PCI INT A
[    0.639627] pci 0000:00:00.2: PCI INT A: not connected
[    0.639677] pci 0000:00:01.0: Adding to iommu group 0
[    0.639839] pci 0000:00:01.3: Adding to iommu group 0
[    0.639862] pci 0000:00:02.0: Adding to iommu group 1
[    0.639979] pci 0000:00:03.0: Adding to iommu group 2
[    0.640106] pci 0000:00:03.2: Adding to iommu group 2
[    0.640128] pci 0000:00:04.0: Adding to iommu group 3
[    0.640242] pci 0000:00:07.0: Adding to iommu group 4
[    0.640371] pci 0000:00:07.1: Adding to iommu group 4
[    0.640391] pci 0000:00:08.0: Adding to iommu group 5
[    0.640530] pci 0000:00:08.1: Adding to iommu group 5
[    0.640554] pci 0000:00:14.0: Adding to iommu group 6
[    0.640654] pci 0000:00:14.3: Adding to iommu group 6
[    0.640709] pci 0000:00:18.0: Adding to iommu group 7
[    0.640859] pci 0000:00:18.1: Adding to iommu group 7
[    0.640875] pci 0000:00:18.2: Adding to iommu group 7
[    0.640888] pci 0000:00:18.3: Adding to iommu group 7
[    0.640906] pci 0000:00:18.4: Adding to iommu group 7
[    0.640921] pci 0000:00:18.5: Adding to iommu group 7
[    0.640937] pci 0000:00:18.6: Adding to iommu group 7
[    0.640953] pci 0000:00:18.7: Adding to iommu group 7
[    0.640971] pci 0000:03:00.0: Adding to iommu group 0
[    0.640982] pci 0000:03:00.1: Adding to iommu group 0
[    0.640993] pci 0000:03:00.2: Adding to iommu group 0
[    0.641006] pci 0000:1d:00.0: Adding to iommu group 0
[    0.641020] pci 0000:1d:02.0: Adding to iommu group 0
[    0.641033] pci 0000:1d:03.0: Adding to iommu group 0
[    0.641045] pci 0000:1d:04.0: Adding to iommu group 0
[    0.641057] pci 0000:1d:06.0: Adding to iommu group 0
[    0.641069] pci 0000:1d:07.0: Adding to iommu group 0
[    0.641087] pci 0000:25:00.0: Adding to iommu group 0
[    0.641105] pci 0000:26:00.0: Adding to iommu group 0
[    0.641122] pci 0000:28:00.0: Adding to iommu group 2
[    0.641138] pci 0000:29:00.0: Adding to iommu group 2
[    0.641260] pci 0000:2a:00.0: Adding to iommu group 2
[    0.641356] pci 0000:2a:00.1: Adding to iommu group 2
[    0.641368] pci 0000:2b:00.0: Adding to iommu group 4
[    0.641378] pci 0000:2b:00.2: Adding to iommu group 4
[    0.641389] pci 0000:2b:00.3: Adding to iommu group 4
[    0.641400] pci 0000:2c:00.0: Adding to iommu group 5
[    0.641412] pci 0000:2c:00.2: Adding to iommu group 5
[    0.641423] pci 0000:2c:00.3: Adding to iommu group 5
[    0.641673] pci 0000:00:00.2: AMD-Vi: Found IOMMU cap 0x40
[    0.641674] pci 0000:00:00.2: AMD-Vi: Extended features (0xf77ef22294ada):
[    0.641674]  PPR NX GT IA GA PC GA_vAPIC
[    0.641677] AMD-Vi: Interrupt remapping enabled
[    0.641677] AMD-Vi: Virtual APIC enabled
[    0.641798] AMD-Vi: Lazy IO/TLB flushing enabled
[    0.642683] amd_uncore: AMD NB counters detected
[    0.642687] amd_uncore: AMD LLC counters detected
[    0.642972] perf/amd_iommu: Detected AMD IOMMU #0 (2 banks, 4 counters/bank).
[    0.643024] check: Scanning for low memory corruption every 60 seconds
[    0.644159] Initialise system trusted keyrings
[    0.644170] Key type blacklist registered
[    0.644211] workingset: timestamp_bits=36 max_order=22 bucket_order=0
[    0.645251] zbud: loaded
[    0.645497] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.645661] fuse: init (API version 7.31)
[    0.645677] *** VALIDATE fuse ***
[    0.645679] *** VALIDATE fuse ***
[    0.645823] Platform Keyring initialized
[    0.649739] Key type asymmetric registered
[    0.649740] Asymmetric key parser 'x509' registered
[    0.649747] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245)
[    0.649801] io scheduler mq-deadline registered
[    0.651840] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[    0.651889] vesafb: mode is 2560x1440x32, linelength=10240, pages=0
[    0.651889] vesafb: scrolling: redraw
[    0.651890] vesafb: Truecolor: size=0:8:8:8, shift=0:16:8:0
[    0.651913] vesafb: framebuffer at 0xe0000000, mapped to 0x0000000097c1fd2a, using 14400k, total 14400k
[    0.651948] fbcon: Deferring console take-over
[    0.651949] fb0: VESA VGA frame buffer device
[    0.652076] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
[    0.652091] ACPI: Power Button [PWRB]
[    0.652122] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
[    0.652151] ACPI: Power Button [PWRF]
[    0.653704] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    0.674403] 00:04: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    0.676070] Linux agpgart interface v0.103
[    0.679425] loop: module loaded
[    0.679585] libphy: Fixed MDIO Bus: probed
[    0.679586] tun: Universal TUN/TAP device driver, 1.6
[    0.679607] PPP generic driver version 2.4.2
[    0.679636] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.679638] ehci-pci: EHCI PCI platform driver
[    0.679648] ehci-platform: EHCI generic platform driver
[    0.679654] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.679655] ohci-pci: OHCI PCI platform driver
[    0.679663] ohci-platform: OHCI generic platform driver
[    0.679667] uhci_hcd: USB Universal Host Controller Interface driver
[    0.679751] xhci_hcd 0000:03:00.0: xHCI Host Controller
[    0.679757] xhci_hcd 0000:03:00.0: new USB bus registered, assigned bus number 1
[    0.735115] xhci_hcd 0000:03:00.0: hcc params 0x0200ef81 hci version 0x110 quirks 0x0000000008000410
[    0.735290] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.05
[    0.735292] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.735293] usb usb1: Product: xHCI Host Controller
[    0.735294] usb usb1: Manufacturer: Linux 5.5.0-rc7-jerry-build-drm-next+ xhci-hcd
[    0.735295] usb usb1: SerialNumber: 0000:03:00.0
[    0.735394] hub 1-0:1.0: USB hub found
[    0.735409] hub 1-0:1.0: 14 ports detected
[    0.742670] xhci_hcd 0000:03:00.0: xHCI Host Controller
[    0.742673] xhci_hcd 0000:03:00.0: new USB bus registered, assigned bus number 2
[    0.742674] xhci_hcd 0000:03:00.0: Host supports USB 3.1 Enhanced SuperSpeed
[    0.742702] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[    0.742723] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.05
[    0.742725] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.742726] usb usb2: Product: xHCI Host Controller
[    0.742727] usb usb2: Manufacturer: Linux 5.5.0-rc7-jerry-build-drm-next+ xhci-hcd
[    0.742728] usb usb2: SerialNumber: 0000:03:00.0
[    0.742813] hub 2-0:1.0: USB hub found
[    0.742824] hub 2-0:1.0: 8 ports detected
[    0.747096] xhci_hcd 0000:25:00.0: xHCI Host Controller
[    0.747099] xhci_hcd 0000:25:00.0: new USB bus registered, assigned bus number 3
[    0.806025] xhci_hcd 0000:25:00.0: hcc params 0x0200eec1 hci version 0x110 quirks 0x0000000000000010
[    0.806268] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.05
[    0.806269] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.806270] usb usb3: Product: xHCI Host Controller
[    0.806270] usb usb3: Manufacturer: Linux 5.5.0-rc7-jerry-build-drm-next+ xhci-hcd
[    0.806271] usb usb3: SerialNumber: 0000:25:00.0
[    0.806350] hub 3-0:1.0: USB hub found
[    0.806358] hub 3-0:1.0: 2 ports detected
[    0.806461] xhci_hcd 0000:25:00.0: xHCI Host Controller
[    0.806464] xhci_hcd 0000:25:00.0: new USB bus registered, assigned bus number 4
[    0.806466] xhci_hcd 0000:25:00.0: Host supports USB 3.1 Enhanced SuperSpeed
[    0.806493] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
[    0.806512] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.05
[    0.806513] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.806514] usb usb4: Product: xHCI Host Controller
[    0.806515] usb usb4: Manufacturer: Linux 5.5.0-rc7-jerry-build-drm-next+ xhci-hcd
[    0.806516] usb usb4: SerialNumber: 0000:25:00.0
[    0.806571] hub 4-0:1.0: USB hub found
[    0.806577] hub 4-0:1.0: 2 ports detected
[    0.806681] xhci_hcd 0000:2b:00.3: xHCI Host Controller
[    0.806684] xhci_hcd 0000:2b:00.3: new USB bus registered, assigned bus number 5
[    0.806783] xhci_hcd 0000:2b:00.3: hcc params 0x0270f665 hci version 0x100 quirks 0x0000000000000410
[    0.806892] usb usb5: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.05
[    0.806894] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.806894] usb usb5: Product: xHCI Host Controller
[    0.806895] usb usb5: Manufacturer: Linux 5.5.0-rc7-jerry-build-drm-next+ xhci-hcd
[    0.806896] usb usb5: SerialNumber: 0000:2b:00.3
[    0.806963] hub 5-0:1.0: USB hub found
[    0.806970] hub 5-0:1.0: 4 ports detected
[    0.807118] xhci_hcd 0000:2b:00.3: xHCI Host Controller
[    0.807120] xhci_hcd 0000:2b:00.3: new USB bus registered, assigned bus number 6
[    0.807121] xhci_hcd 0000:2b:00.3: Host supports USB 3.0 SuperSpeed
[    0.807131] usb usb6: We don't know the algorithms for LPM for this host, disabling LPM.
[    0.807144] usb usb6: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.05
[    0.807145] usb usb6: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.807146] usb usb6: Product: xHCI Host Controller
[    0.807146] usb usb6: Manufacturer: Linux 5.5.0-rc7-jerry-build-drm-next+ xhci-hcd
[    0.807147] usb usb6: SerialNumber: 0000:2b:00.3
[    0.807208] hub 6-0:1.0: USB hub found
[    0.807214] hub 6-0:1.0: 4 ports detected
[    0.807376] i8042: PNP: No PS/2 controller found.
[    0.807416] mousedev: PS/2 mouse device common for all mice
[    0.807488] rtc_cmos 00:02: RTC can wake from S4
[    0.807627] rtc_cmos 00:02: registered as rtc0
[    0.807639] rtc_cmos 00:02: alarms up to one month, y3k, 114 bytes nvram, hpet irqs
[    0.807645] i2c /dev entries driver
[    0.807685] device-mapper: uevent: version 1.0.3
[    0.807732] device-mapper: ioctl: 4.41.0-ioctl (2019-09-16) initialised: dm-devel@redhat.com
[    0.807747] platform eisa.0: Probing EISA bus 0
[    0.807748] platform eisa.0: EISA: Cannot allocate resource for mainboard
[    0.807750] platform eisa.0: Cannot allocate resource for EISA slot 1
[    0.807751] platform eisa.0: Cannot allocate resource for EISA slot 2
[    0.807752] platform eisa.0: Cannot allocate resource for EISA slot 3
[    0.807753] platform eisa.0: Cannot allocate resource for EISA slot 4
[    0.807754] platform eisa.0: Cannot allocate resource for EISA slot 5
[    0.807755] platform eisa.0: Cannot allocate resource for EISA slot 6
[    0.807756] platform eisa.0: Cannot allocate resource for EISA slot 7
[    0.807757] platform eisa.0: Cannot allocate resource for EISA slot 8
[    0.807758] platform eisa.0: EISA: Detected 0 cards
[    0.807938] ledtrig-cpu: registered to indicate activity on CPUs
[    0.808058] drop_monitor: Initializing network drop monitor service
[    0.808226] NET: Registered protocol family 10
[    0.811772] Segment Routing with IPv6
[    0.811786] NET: Registered protocol family 17
[    0.811829] Key type dns_resolver registered
[    0.812783] RAS: Correctable Errors collector initialized.
[    0.812822] microcode: CPU0: patch_level=0x08001105
[    0.812828] microcode: CPU1: patch_level=0x08001105
[    0.812843] microcode: CPU2: patch_level=0x08001105
[    0.812850] microcode: CPU3: patch_level=0x08001105
[    0.812856] microcode: CPU4: patch_level=0x08001105
[    0.812861] microcode: CPU5: patch_level=0x08001105
[    0.812867] microcode: CPU6: patch_level=0x08001105
[    0.812873] microcode: CPU7: patch_level=0x08001105
[    0.812879] microcode: CPU8: patch_level=0x08001105
[    0.812883] microcode: CPU9: patch_level=0x08001105
[    0.812885] microcode: CPU10: patch_level=0x08001105
[    0.812890] microcode: CPU11: patch_level=0x08001105
[    0.812896] microcode: CPU12: patch_level=0x08001105
[    0.812901] microcode: CPU13: patch_level=0x08001105
[    0.812906] microcode: CPU14: patch_level=0x08001105
[    0.812911] microcode: CPU15: patch_level=0x08001105
[    0.812937] microcode: Microcode Update Driver: v2.2.
[    0.812941] IPI shorthand broadcast: enabled
[    0.812947] sched_clock: Marking stable (848928417, -35995291)->(1031486403, -218553277)
[    0.813049] registered taskstats version 1
[    0.813057] Loading compiled-in X.509 certificates
[    0.814060] Loaded X.509 cert 'Build time autogenerated kernel key: 9fbfd6d9aef71d8af072dec0b3fdc63edc71abff'
[    0.814110] zswap: loaded using pool lzo/zbud
[    0.814217] Key type ._fscrypt registered
[    0.814217] Key type .fscrypt registered
[    0.817346] Key type big_key registered
[    0.818819] Key type encrypted registered
[    0.818821] AppArmor: AppArmor sha1 policy hashing enabled
[    0.818826] ima: No TPM chip found, activating TPM-bypass!
[    0.818829] ima: Allocated hash algorithm: sha1
[    0.818834] ima: No architecture policies found
[    0.818841] evm: Initialising EVM extended attributes:
[    0.818842] evm: security.selinux
[    0.818842] evm: security.SMACK64
[    0.818842] evm: security.SMACK64EXEC
[    0.818843] evm: security.SMACK64TRANSMUTE
[    0.818843] evm: security.SMACK64MMAP
[    0.818843] evm: security.apparmor
[    0.818843] evm: security.ima
[    0.818844] evm: security.capability
[    0.818844] evm: HMAC attrs: 0x1
[    0.819168] PM:   Magic number: 8:139:444
[    0.819303] rtc_cmos 00:02: setting system clock to 2020-02-25T18:26:15 UTC (1582655175)
[    0.819600] acpi_cpufreq: overriding BIOS provided _PSD data
[    0.821282] Freeing unused decrypted memory: 2040K
[    0.821683] Freeing unused kernel image (initmem) memory: 2624K
[    0.836198] Write protecting the kernel read-only data: 22528k
[    0.836691] Freeing unused kernel image (text/rodata gap) memory: 2044K
[    0.836884] Freeing unused kernel image (rodata/data gap) memory: 1148K
[    0.845843] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[    0.845846] Run /init as init process
[    0.899691] acpi PNP0C14:02: duplicate WMI GUID 05901221-D566-11D1-B2F0-00A0C9062910 (first instance was on PNP0C14:01)
[    0.906584] ahci 0000:03:00.1: version 3.0
[    0.906661] dca service started, version 1.12.1
[    0.906787] ahci 0000:03:00.1: SSS flag set, parallel bus scan disabled
[    0.906844] ahci 0000:03:00.1: AHCI 0001.0301 32 slots 8 ports 6 Gbps 0xff impl SATA mode
[    0.906847] ahci 0000:03:00.1: flags: 64bit ncq sntf stag pm led clo only pmp pio slum part sxs deso sadm sds apst 
[    0.907532] scsi host0: ahci
[    0.907687] scsi host1: ahci
[    0.907937] scsi host2: ahci
[    0.908077] scsi host3: ahci
[    0.908207] scsi host4: ahci
[    0.908327] scsi host5: ahci
[    0.908467] scsi host6: ahci
[    0.908583] scsi host7: ahci
[    0.908629] ata1: SATA max UDMA/133 abar m131072@0xfe680000 port 0xfe680100 irq 49
[    0.908631] ata2: SATA max UDMA/133 abar m131072@0xfe680000 port 0xfe680180 irq 49
[    0.908633] ata3: SATA max UDMA/133 abar m131072@0xfe680000 port 0xfe680200 irq 49
[    0.908634] ata4: SATA max UDMA/133 abar m131072@0xfe680000 port 0xfe680280 irq 49
[    0.908636] ata5: SATA max UDMA/133 abar m131072@0xfe680000 port 0xfe680300 irq 49
[    0.908638] ata6: SATA max UDMA/133 abar m131072@0xfe680000 port 0xfe680380 irq 49
[    0.908639] ata7: SATA max UDMA/133 abar m131072@0xfe680000 port 0xfe680400 irq 49
[    0.908641] ata8: SATA max UDMA/133 abar m131072@0xfe680000 port 0xfe680480 irq 49
[    0.908871] ahci 0000:2c:00.2: AHCI 0001.0301 32 slots 1 ports 6 Gbps 0x1 impl SATA mode
[    0.908873] ahci 0000:2c:00.2: flags: 64bit ncq sntf ilck pm led clo only pmp fbs pio slum part 
[    0.909050] scsi host8: ahci
[    0.909124] ata9: SATA max UDMA/133 abar m4096@0xfe908000 port 0xfe908100 irq 51
[    0.909175] piix4_smbus 0000:00:14.0: SMBus Host Controller at 0xb00, revision 0
[    0.909176] piix4_smbus 0000:00:14.0: Using register 0x02 for SMBus port selection
[    0.910409] igb: Intel(R) Gigabit Ethernet Network Driver - version 5.6.0-k
[    0.910410] igb: Copyright (c) 2007-2014 Intel Corporation.
[    0.941180] pps pps0: new PPS source ptp0
[    0.941210] igb 0000:26:00.0: added PHC on eth0
[    0.941211] igb 0000:26:00.0: Intel(R) Gigabit Ethernet Network Connection
[    0.941212] igb 0000:26:00.0: eth0: (PCIe:2.5Gb/s:Width x1) 60:45:cb:9b:47:b5
[    0.941213] igb 0000:26:00.0: eth0: PBA No: FFFFFF-0FF
[    0.941214] igb 0000:26:00.0: Using MSI-X interrupts. 2 rx queue(s), 2 tx queue(s)
[    0.941904] igb 0000:26:00.0 enp38s0: renamed from eth0
[    1.140040] usb 5-1: new low-speed USB device number 2 using xhci_hcd
[    1.218815] ata1: SATA link down (SStatus 0 SControl 300)
[    1.218816] ata9: SATA link down (SStatus 0 SControl 300)
[    1.330278] usb 5-1: New USB device found, idVendor=046d, idProduct=c077, bcdDevice=72.00
[    1.330280] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    1.330281] usb 5-1: Product: USB Optical Mouse
[    1.330282] usb 5-1: Manufacturer: Logitech
[    1.352766] hid: raw HID events driver (C) Jiri Kosina
[    1.363360] usbcore: registered new interface driver usbhid
[    1.363360] usbhid: USB HID core driver
[    1.364795] input: Logitech USB Optical Mouse as /devices/pci0000:00/0000:00:07.1/0000:2b:00.3/usb5/5-1/5-1:1.0/0003:046D:C077.0001/input/input2
[    1.364874] hid-generic 0003:046D:C077.0001: input,hidraw0: USB HID v1.11 Mouse [Logitech USB Optical Mouse] on usb-0000:2b:00.3-1/input0
[    1.472041] usb 5-2: new low-speed USB device number 3 using xhci_hcd
[    1.535107] ata2: SATA link down (SStatus 0 SControl 300)
[    1.656039] tsc: Refined TSC clocksource calibration: 3393.625 MHz
[    1.656046] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x30eac89f71e, max_idle_ns: 440795373609 ns
[    1.656164] clocksource: Switched to clocksource tsc
[    1.656235] usb 5-2: New USB device found, idVendor=046d, idProduct=c31c, bcdDevice=64.00
[    1.656237] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    1.656238] usb 5-2: Product: USB Keyboard
[    1.656239] usb 5-2: Manufacturer: Logitech
[    1.853606] ata3: SATA link down (SStatus 0 SControl 300)
[    1.986155] input: Logitech USB Keyboard as /devices/pci0000:00/0000:00:07.1/0000:2b:00.3/usb5/5-2/5-2:1.0/0003:046D:C31C.0002/input/input3
[    2.044539] hid-generic 0003:046D:C31C.0002: input,hidraw1: USB HID v1.10 Keyboard [Logitech USB Keyboard] on usb-0000:2b:00.3-2/input0
[    2.073912] input: Logitech USB Keyboard Consumer Control as /devices/pci0000:00/0000:00:07.1/0000:2b:00.3/usb5/5-2/5-2:1.1/0003:046D:C31C.0003/input/input4
[    2.132516] input: Logitech USB Keyboard System Control as /devices/pci0000:00/0000:00:07.1/0000:2b:00.3/usb5/5-2/5-2:1.1/0003:046D:C31C.0003/input/input5
[    2.132574] hid-generic 0003:046D:C31C.0003: input,hidraw2: USB HID v1.10 Device [Logitech USB Keyboard] on usb-0000:2b:00.3-2/input1
[    2.168467] ata4: SATA link down (SStatus 0 SControl 300)
[    2.484459] ata5: SATA link down (SStatus 0 SControl 300)
[    2.800982] ata6: SATA link down (SStatus 0 SControl 300)
[    3.116962] ata7: SATA link down (SStatus 0 SControl 300)
[    3.592394] ata8: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    3.594608] ata8.00: supports DRM functions and may not be fully accessible
[    3.595497] ata8.00: ATA-11: Samsung SSD 860 PRO 256GB, RVM01B6Q, max UDMA/133
[    3.595498] ata8.00: 500118192 sectors, multi 1: LBA48 NCQ (depth 32), AA
[    3.597897] ata8.00: supports DRM functions and may not be fully accessible
[    3.600741] ata8.00: configured for UDMA/133
[    3.600893] scsi 7:0:0:0: Direct-Access     ATA      Samsung SSD 860  1B6Q PQ: 0 ANSI: 5
[    3.601057] ata8.00: Enabling discard_zeroes_data
[    3.601081] sd 7:0:0:0: [sda] 500118192 512-byte logical blocks: (256 GB/238 GiB)
[    3.601086] sd 7:0:0:0: [sda] Write Protect is off
[    3.601087] sd 7:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    3.601094] sd 7:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    3.601193] sd 7:0:0:0: Attached scsi generic sg0 type 0
[    3.616639] ata8.00: Enabling discard_zeroes_data
[    3.616945]  sda: sda1
[    3.617147] ata8.00: Enabling discard_zeroes_data
[    3.618637] sd 7:0:0:0: [sda] supports TCG Opal
[    3.618639] sd 7:0:0:0: [sda] Attached SCSI disk
[    3.670545] fbcon: Taking over console
[    3.670618] Console: switching to colour frame buffer device 160x45
[    3.788133] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
[    3.866905] systemd[1]: systemd 237 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
[    3.885048] systemd[1]: Detected architecture x86-64.
[    3.905690] systemd[1]: Set hostname to <jzuo-target>.
[    3.907611] systemd[1]: Couldn't move remaining userspace processes, ignoring: Input/output error
[    3.968016] systemd[1]: Created slice User and Session Slice.
[    3.968267] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[    3.968277] systemd[1]: Reached target User and Group Name Lookups.
[    3.968282] systemd[1]: Reached target Remote File Systems.
[    3.968369] systemd[1]: Created slice System Slice.
[    3.968382] systemd[1]: Reached target Slices.
[    3.979493] lp: driver loaded but no devices found
[    3.980258] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro
[    3.981864] ppdev: user-space parallel port driver
[    4.060038] Adding 2097148k swap on /swapfile.  Priority:-2 extents:6 across:2260988k SSFS
[    4.123329] systemd-journald[438]: Received request to flush runtime journal from PID 1
[    4.128273] ccp 0000:2b:00.2: ccp enabled
[    4.132923] systemd-journald[438]: File /var/log/journal/27d70c846b2d419abf7b3556272351a7/system.journal corrupted or uncleanly shut down, renaming and replacing.
[    4.142127] cryptd: max_cpu_qlen set to 1000
[    4.195040] audit: type=1400 audit(1582655178.868:2): apparmor="STATUS" operation="profile_load" profile="unconfined" name="libreoffice-xpdfimport" pid=633 comm="apparmor_parser"
[    4.195303] audit: type=1400 audit(1582655178.868:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name="libreoffice-senddoc" pid=631 comm="apparmor_parser"
[    4.196088] audit: type=1400 audit(1582655178.872:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="libreoffice-oopslash" pid=630 comm="apparmor_parser"
[    4.196276] audit: type=1400 audit(1582655178.872:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/ippusbxd" pid=637 comm="apparmor_parser"
[    4.197218] audit: type=1400 audit(1582655178.872:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/bin/man" pid=629 comm="apparmor_parser"
[    4.197221] audit: type=1400 audit(1582655178.872:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="man_filter" pid=629 comm="apparmor_parser"
[    4.197224] audit: type=1400 audit(1582655178.872:8): apparmor="STATUS" operation="profile_load" profile="unconfined" name="man_groff" pid=629 comm="apparmor_parser"
[    4.197885] audit: type=1400 audit(1582655178.872:9): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/sbin/cups-browsed" pid=635 comm="apparmor_parser"
[    4.199678] audit: type=1400 audit(1582655178.872:10): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/snapd/snap-confine" pid=634 comm="apparmor_parser"
[    4.200604] AVX2 version of gcm_enc/dec engaged.
[    4.200605] AES CTR mode by8 optimization enabled
[    4.220602] AMD-Vi: AMD IOMMUv2 driver by Joerg Roedel <jroedel@suse.de>
[    4.223943] asus_wmi: ASUS WMI generic driver loaded
[    4.226266] asus_wmi: Initialization: 0x0
[    4.226300] asus_wmi: BIOS WMI version: 0.9
[    4.226416] asus_wmi: SFUN value: 0x0
[    4.226419] eeepc-wmi eeepc-wmi: Detected ASUSWMI, use DCTS
[    4.227003] input: Eee PC WMI hotkeys as /devices/platform/eeepc-wmi/input/input6
[    4.241558] snd_hda_intel 0000:2a:00.1: Force to non-snoop mode
[    4.251947] input: HDA ATI HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.2/0000:28:00.0/0000:29:00.0/0000:2a:00.1/sound/card0/input7
[    4.252003] input: HDA ATI HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.2/0000:28:00.0/0000:29:00.0/0000:2a:00.1/sound/card0/input8
[    4.252058] input: HDA ATI HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.2/0000:28:00.0/0000:29:00.0/0000:2a:00.1/sound/card0/input9
[    4.252104] input: HDA ATI HDMI HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:03.2/0000:28:00.0/0000:29:00.0/0000:2a:00.1/sound/card0/input10
[    4.252152] input: HDA ATI HDMI HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:03.2/0000:28:00.0/0000:29:00.0/0000:2a:00.1/sound/card0/input11
[    4.252202] input: HDA ATI HDMI HDMI/DP,pcm=11 as /devices/pci0000:00/0000:00:03.2/0000:28:00.0/0000:29:00.0/0000:2a:00.1/sound/card0/input12
[    4.258374] snd_hda_codec_realtek hdaudioC1D0: autoconfig for ALC1220: line_outs=3 (0x14/0x15/0x16/0x0/0x0) type:line
[    4.258376] snd_hda_codec_realtek hdaudioC1D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    4.258377] snd_hda_codec_realtek hdaudioC1D0:    hp_outs=1 (0x1b/0x0/0x0/0x0/0x0)
[    4.258378] snd_hda_codec_realtek hdaudioC1D0:    mono: mono_out=0x0
[    4.258378] snd_hda_codec_realtek hdaudioC1D0:    dig-out=0x1e/0x0
[    4.258379] snd_hda_codec_realtek hdaudioC1D0:    inputs:
[    4.258380] snd_hda_codec_realtek hdaudioC1D0:      Front Mic=0x19
[    4.258381] snd_hda_codec_realtek hdaudioC1D0:      Rear Mic=0x18
[    4.258381] snd_hda_codec_realtek hdaudioC1D0:      Line=0x1a
[    4.271514] input: HD-Audio Generic Front Mic as /devices/pci0000:00/0000:00:08.1/0000:2c:00.3/sound/card1/input13
[    4.271564] input: HD-Audio Generic Rear Mic as /devices/pci0000:00/0000:00:08.1/0000:2c:00.3/sound/card1/input14
[    4.271602] input: HD-Audio Generic Line as /devices/pci0000:00/0000:00:08.1/0000:2c:00.3/sound/card1/input15
[    4.271647] input: HD-Audio Generic Line Out Front as /devices/pci0000:00/0000:00:08.1/0000:2c:00.3/sound/card1/input16
[    4.271689] input: HD-Audio Generic Line Out Surround as /devices/pci0000:00/0000:00:08.1/0000:2c:00.3/sound/card1/input17
[    4.271727] input: HD-Audio Generic Line Out CLFE as /devices/pci0000:00/0000:00:08.1/0000:2c:00.3/sound/card1/input18
[    4.271768] input: HD-Audio Generic Front Headphone as /devices/pci0000:00/0000:00:08.1/0000:2c:00.3/sound/card1/input19
[    4.271831] snd_hda_intel 0000:2c:00.3: device 1043:8733 is on the power_save blacklist, forcing power_save to 0
[    4.276018] amdgpu: unknown parameter 'dc_log' ignored
[    4.276289] [drm] amdgpu kernel modesetting enabled.
[    4.276341] Parsing CRAT table with 1 nodes
[    4.276346] Ignoring ACPI CRAT on non-APU system
[    4.276352] Virtual CRAT table created for CPU
[    4.276353] Parsing CRAT table with 1 nodes
[    4.276353] Creating topology SYSFS entries
[    4.276363] Topology: Add CPU node
[    4.276363] Finished initializing topology
[    4.276466] checking generic (e0000000 e10000) vs hw (e0000000 10000000)
[    4.276467] fb0: switching to amdgpudrmfb from VESA VGA
[    4.292934] snd_hda_intel 0000:2a:00.1: refused to change power state from D0 to D3hot
[    4.319027] Console: switching to colour dummy device 80x25
[    4.319106] amdgpu 0000:2a:00.0: vgaarb: deactivate vga console
[    4.319420] [drm] initializing kernel modesetting (VEGA20 0x1002:0x66AF 0x1002:0x081E 0xC1).
[    4.319444] [drm] register mmio base: 0xFE700000
[    4.319445] [drm] register mmio size: 524288
[    4.319461] [drm] add ip block number 0 <soc15_common>
[    4.319462] [drm] add ip block number 1 <gmc_v9_0>
[    4.319463] [drm] add ip block number 2 <vega10_ih>
[    4.319464] [drm] add ip block number 3 <psp>
[    4.319465] [drm] add ip block number 4 <gfx_v9_0>
[    4.319466] [drm] add ip block number 5 <sdma_v4_0>
[    4.319467] [drm] add ip block number 6 <powerplay>
[    4.319468] [drm] add ip block number 7 <dm>
[    4.319468] [drm] add ip block number 8 <uvd_v7_0>
[    4.319469] [drm] add ip block number 9 <vce_v4_0>
[    4.319497] amdgpu 0000:2a:00.0: No more image in the PCI ROM
[    4.319522] ATOM BIOS: 113-D3600200-030
[    4.321076] [drm] UVD(0) is enabled in VM mode
[    4.321077] [drm] UVD(1) is enabled in VM mode
[    4.321078] [drm] UVD(0) ENC is enabled in VM mode
[    4.321079] [drm] UVD(1) ENC is enabled in VM mode
[    4.321079] [drm] VCE enabled in VM mode
[    4.321105] [drm] vm size is 262144 GB, 4 levels, block size is 9-bit, fragment size is 9-bit
[    4.321112] amdgpu 0000:2a:00.0: VRAM: 16368M 0x0000008000000000 - 0x00000083FEFFFFFF (16368M used)
[    4.321114] amdgpu 0000:2a:00.0: GART: 512M 0x0000000000000000 - 0x000000001FFFFFFF
[    4.321115] amdgpu 0000:2a:00.0: AGP: 267894784M 0x0000008400000000 - 0x0000FFFFFFFFFFFF
[    4.321120] [drm] Detected VRAM RAM=16368M, BAR=256M
[    4.321120] [drm] RAM width 4096bits HBM
[    4.321184] [TTM] Zone  kernel: Available graphics memory: 8047644 KiB
[    4.321185] [TTM] Zone   dma32: Available graphics memory: 2097152 KiB
[    4.321186] [TTM] Initializing pool allocator
[    4.321194] [TTM] Initializing DMA pool allocator
[    4.321590] [drm] amdgpu: 16368M of VRAM memory ready
[    4.321594] [drm] amdgpu: 11788M of GTT memory ready.
[    4.321598] [drm] GART: num cpu pages 131072, num gpu pages 131072
[    4.321722] [drm] PCIE GART of 512M enabled (table at 0x0000008000E10000).
[    4.325269] [drm] CP firmware version too old, please update!
[    4.326843] [drm] use_doorbell being set to: [true]
[    4.327840] [drm] use_doorbell being set to: [true]
[    4.327957] amdgpu: [powerplay] hwmgr_sw_init smu backed is vega20_smu
[    4.329787] [drm] Found UVD firmware ENC: 1.1 DEC: .23 Family ID: 19
[    4.329794] [drm] PSP loading UVD firmware
[    4.331458] [drm] Found VCE firmware Version: 55.5 Binary ID: 4
[    4.331497] [drm] PSP loading VCE firmware
[    4.887717] [drm] reserve 0x400000 from 0x83fe800000 for PSP TMR
[    4.967966] kvm: disabled by bios
[    5.072850] kvm: disabled by bios
[    5.074587] MCE: In-kernel MCE decoding enabled.
[    5.075788] EDAC amd64: F17h detected (node 0).
[    5.075825] EDAC amd64: Node 0: DRAM ECC disabled.
[    5.112383] [drm] psp command (0x1) failed and response status is (0xFFFF0000)
[    5.112388] amdgpu 0000:2a:00.0: HDCP: hdcp ta ucode is not available
[    5.112389] amdgpu 0000:2a:00.0: DTM: dtm ta ucode is not available
[    5.114142] [drm] kiq ring mec 2 pipe 1 q 0
[    5.140746] [drm:amdgpu_dm_irq_init [amdgpu]] DM_IRQ
[    5.140901] [drm:dc_create [amdgpu]] DC: create_links: connectors_num: physical:4, virtual:0
[    5.140964] [drm:dc_link_construct [amdgpu]] Connector[0] description:signal 32
[    5.141036] [drm:dc_link_construct [amdgpu]] Connector[1] description:signal 32
[    5.141106] [drm:dc_link_construct [amdgpu]] Connector[2] description:signal 32
[    5.141177] [drm:dc_link_construct [amdgpu]] Connector[3] description:signal 4
[    5.141241] [drm:dc_create [amdgpu]] Display Core initialized
[    5.141242] [drm] Display Core initialized with v3.2.72!
[    5.164618] snd_hda_intel 0000:2a:00.1: bound 0000:2a:00.0 (ops amdgpu_dm_audio_component_bind_ops [amdgpu])
[    5.201432] EDAC amd64: F17h detected (node 0).
[    5.201434] kvm: disabled by bios
[    5.201470] EDAC amd64: Node 0: DRAM ECC disabled.
[    5.220910] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    5.225520] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    5.236567] [drm:dc_conn_log_hex_linux [amdgpu]] 12 
[    5.236628] [drm:dc_conn_log_hex_linux [amdgpu]] 14 
[    5.236687] [drm:dc_conn_log_hex_linux [amdgpu]] C4 
[    5.236744] [drm:dc_conn_log_hex_linux [amdgpu]] 01 
[    5.236800] [drm:dc_conn_log_hex_linux [amdgpu]] 01 
[    5.236856] [drm:dc_conn_log_hex_linux [amdgpu]] 01 
[    5.236912] [drm:dc_conn_log_hex_linux [amdgpu]] 01 
[    5.236967] [drm:dc_conn_log_hex_linux [amdgpu]] 81 
[    5.237021] [drm:dc_conn_log_hex_linux [amdgpu]] 02 
[    5.237076] [drm:dc_conn_log_hex_linux [amdgpu]] 00 
[    5.237131] [drm:dc_conn_log_hex_linux [amdgpu]] 06 
[    5.237186] [drm:dc_conn_log_hex_linux [amdgpu]] 00 
[    5.237240] [drm:dc_conn_log_hex_linux [amdgpu]] 00 
[    5.237295] [drm:dc_conn_log_hex_linux [amdgpu]] 00 
[    5.237349] [drm:dc_conn_log_hex_linux [amdgpu]] 00 
[    5.237404] [drm:dc_conn_log_hex_linux [amdgpu]] 00 
[    5.237459] [drm:retrieve_link_cap [amdgpu]] Rx Caps: 
[    5.241804] [drm] DM_MST: Differing MST start on aconnector: 0000000005a6471f [id: 59]
[    5.241860] [drm:dc_link_detect_helper [amdgpu]] link=0, mst branch is now Connected
[    5.242056] [drm:dc_link_detect_helper [amdgpu]] link=1, dc_sink_in=000000004614c21c is now Disconnected prev_sink=000000004614c21c dpcd same=1 edid same=0
[    5.242177] [drm:dc_link_detect_helper [amdgpu]] link=2, dc_sink_in=000000004614c21c is now Disconnected prev_sink=000000004614c21c dpcd same=1 edid same=0
[    5.242294] [drm:dc_link_detect_helper [amdgpu]] link=3, dc_sink_in=000000004614c21c is now Disconnected prev_sink=000000004614c21c dpcd same=1 edid same=0
[    5.242355] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 00000000bfe97024 for: dal_src=78, irq context=1
[    5.242413] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 0000000017ad59e3 for: dal_src=79, irq context=1
[    5.242469] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 00000000bd18edb9 for: dal_src=80, irq context=1
[    5.242525] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 00000000092c76a6 for: dal_src=81, irq context=1
[    5.242581] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 0000000050ecf4d2 for: dal_src=82, irq context=1
[    5.242637] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 000000003f41e04b for: dal_src=83, irq context=1
[    5.242693] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 00000000d87d99f5 for: dal_src=72, irq context=1
[    5.242748] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 0000000029bf339a for: dal_src=73, irq context=1
[    5.242803] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 00000000361277db for: dal_src=74, irq context=1
[    5.242858] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 00000000a1442fae for: dal_src=75, irq context=1
[    5.242913] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 00000000b91e6fb5 for: dal_src=76, irq context=1
[    5.242968] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 0000000031bd2cd1 for: dal_src=77, irq context=1
[    5.243024] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 00000000e4e6c683 for: dal_src=26, irq context=1
[    5.243078] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 00000000e240689f for: dal_src=27, irq context=1
[    5.243134] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 00000000cffa13d9 for: dal_src=28, irq context=1
[    5.243188] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 0000000092413166 for: dal_src=29, irq context=1
[    5.243243] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 0000000008e09dc1 for: dal_src=30, irq context=1
[    5.243298] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 0000000093f8d57d for: dal_src=31, irq context=1
[    5.243354] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 00000000d104848a for: dal_src=5, irq context=0
[    5.243408] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 00000000116d7b8d for: dal_src=11, irq context=0
[    5.243464] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 000000003dde8466 for: dal_src=4, irq context=0
[    5.243518] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 0000000088ee1045 for: dal_src=10, irq context=0
[    5.243573] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 00000000efb38c44 for: dal_src=3, irq context=0
[    5.243628] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 00000000d822a0d8 for: dal_src=9, irq context=0
[    5.243683] [drm:amdgpu_dm_irq_register_interrupt [amdgpu]] DM_IRQ: added irq handler: 00000000d84c52dd for: dal_src=2, irq context=0
[    5.243685] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    5.243685] [drm] Driver supports precise vblank timestamp query.
[    5.285602] [drm] UVD and UVD ENC initialized successfully.
[    5.385176] [drm] VCE initialized successfully.
[    5.386516] kfd kfd: Allocated 3969056 bytes on gart
[    5.387199] Virtual CRAT table created for GPU
[    5.387200] Parsing CRAT table with 1 nodes
[    5.387210] Creating topology SYSFS entries
[    5.387334] Topology: Add dGPU node [0x66af:0x1002]
[    5.387337] kfd kfd: added device 1002:66af
[    5.387371] [drm:drm_client_modeset_probe [drm]] 
[    5.387378] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:59:DP-1]
[    5.387384] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:59:DP-1] status updated from unknown to disconnected
[    5.387388] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:59:DP-1] disconnected
[    5.387393] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:63:DP-2]
[    5.387397] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:63:DP-2] status updated from unknown to disconnected
[    5.387401] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:63:DP-2] disconnected
[    5.387405] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:67:DP-3]
[    5.387409] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:67:DP-3] status updated from unknown to disconnected
[    5.387413] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:67:DP-3] disconnected
[    5.387417] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:71:HDMI-A-1]
[    5.387421] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:71:HDMI-A-1] status updated from unknown to disconnected
[    5.387425] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:71:HDMI-A-1] disconnected
[    5.387433] [drm:drm_client_modeset_probe [drm]] No connectors reported connected with modes
[    5.387441] [drm:drm_client_modeset_probe [drm]] connector 59 enabled? no
[    5.387449] [drm:drm_client_modeset_probe [drm]] connector 63 enabled? no
[    5.387457] [drm:drm_client_modeset_probe [drm]] connector 67 enabled? no
[    5.387465] [drm:drm_client_modeset_probe [drm]] connector 71 enabled? no
[    5.387475] [drm:drm_client_modeset_probe [drm]] Not using firmware configuration
[    5.387483] [drm:drm_client_modeset_probe [drm]] picking CRTCs for 16384x16384 config
[    5.387489] amdgpu 0000:2a:00.0: [drm:__drm_fb_helper_initial_config_and_unlock [drm_kms_helper]] test CRTC 0 primary plane
[    5.387495] amdgpu 0000:2a:00.0: [drm:__drm_fb_helper_initial_config_and_unlock [drm_kms_helper]] test CRTC 1 primary plane
[    5.387500] amdgpu 0000:2a:00.0: [drm:__drm_fb_helper_initial_config_and_unlock [drm_kms_helper]] test CRTC 2 primary plane
[    5.387505] amdgpu 0000:2a:00.0: [drm:__drm_fb_helper_initial_config_and_unlock [drm_kms_helper]] test CRTC 3 primary plane
[    5.387510] amdgpu 0000:2a:00.0: [drm:__drm_fb_helper_initial_config_and_unlock [drm_kms_helper]] test CRTC 4 primary plane
[    5.387514] amdgpu 0000:2a:00.0: [drm:__drm_fb_helper_initial_config_and_unlock [drm_kms_helper]] test CRTC 5 primary plane
[    5.387515] amdgpu 0000:2a:00.0: [drm] Cannot find any crtc or sizes
[    5.387637] amdgpu 0000:2a:00.0: ring gfx uses VM inv eng 0 on hub 0
[    5.387638] amdgpu 0000:2a:00.0: ring comp_1.0.0 uses VM inv eng 1 on hub 0
[    5.387639] amdgpu 0000:2a:00.0: ring comp_1.1.0 uses VM inv eng 4 on hub 0
[    5.387639] amdgpu 0000:2a:00.0: ring comp_1.2.0 uses VM inv eng 5 on hub 0
[    5.387640] amdgpu 0000:2a:00.0: ring comp_1.3.0 uses VM inv eng 6 on hub 0
[    5.387641] amdgpu 0000:2a:00.0: ring comp_1.0.1 uses VM inv eng 7 on hub 0
[    5.387642] amdgpu 0000:2a:00.0: ring comp_1.1.1 uses VM inv eng 8 on hub 0
[    5.387642] amdgpu 0000:2a:00.0: ring comp_1.2.1 uses VM inv eng 9 on hub 0
[    5.387643] amdgpu 0000:2a:00.0: ring comp_1.3.1 uses VM inv eng 10 on hub 0
[    5.387644] amdgpu 0000:2a:00.0: ring kiq_2.1.0 uses VM inv eng 11 on hub 0
[    5.387645] amdgpu 0000:2a:00.0: ring sdma0 uses VM inv eng 0 on hub 1
[    5.387646] amdgpu 0000:2a:00.0: ring page0 uses VM inv eng 1 on hub 1
[    5.387647] amdgpu 0000:2a:00.0: ring sdma1 uses VM inv eng 4 on hub 1
[    5.387647] amdgpu 0000:2a:00.0: ring page1 uses VM inv eng 5 on hub 1
[    5.387648] amdgpu 0000:2a:00.0: ring uvd_0 uses VM inv eng 6 on hub 1
[    5.387649] amdgpu 0000:2a:00.0: ring uvd_enc_0.0 uses VM inv eng 7 on hub 1
[    5.387649] amdgpu 0000:2a:00.0: ring uvd_enc_0.1 uses VM inv eng 8 on hub 1
[    5.387650] amdgpu 0000:2a:00.0: ring uvd_1 uses VM inv eng 9 on hub 1
[    5.387651] amdgpu 0000:2a:00.0: ring uvd_enc_1.0 uses VM inv eng 10 on hub 1
[    5.387652] amdgpu 0000:2a:00.0: ring uvd_enc_1.1 uses VM inv eng 11 on hub 1
[    5.387652] amdgpu 0000:2a:00.0: ring vce0 uses VM inv eng 12 on hub 1
[    5.387653] amdgpu 0000:2a:00.0: ring vce1 uses VM inv eng 13 on hub 1
[    5.387654] amdgpu 0000:2a:00.0: ring vce2 uses VM inv eng 14 on hub 1
[    5.387654] [drm] ECC is not present.
[    5.387655] [drm] SRAM ECC is not present.
[    5.390371] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.105515] [drm:drm_dp_mst_link_probe_work [drm_kms_helper]] Clearing payload ID table
[    6.105545] Detected AMDGPU DF Counters. # of Counters = 4.
[    6.105667] [drm] Initialized amdgpu 3.36.0 20150101 for 0000:2a:00.0 on minor 0
[    6.111790] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: work_func: for dal_src=11
[    6.111860] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: schedule_work: for dal_src=11
[    6.111926] [drm:dc_link_handle_hpd_rx_irq [amdgpu]] dc_link_handle_hpd_rx_irq: Got short pulse HPD on link 0
[    6.118560] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.169402] kvm: disabled by bios
[    6.169840] EDAC amd64: F17h detected (node 0).
[    6.169884] EDAC amd64: Node 0: DRAM ECC disabled.
[    6.227886] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: work_func: for dal_src=11
[    6.227946] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: schedule_work: for dal_src=11
[    6.228000] [drm:dc_link_handle_hpd_rx_irq [amdgpu]] dc_link_handle_hpd_rx_irq: Got short pulse HPD on link 0
[    6.234669] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.237019] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.243997] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: work_func: for dal_src=11
[    6.244059] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: schedule_work: for dal_src=11
[    6.244135] [drm:dc_link_handle_hpd_rx_irq [amdgpu]] dc_link_handle_hpd_rx_irq: Got short pulse HPD on link 0
[    6.250781] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.253110] [drm:drm_dp_send_link_address [drm_kms_helper]] link address reply: 3
[    6.253117] [drm:drm_dp_send_link_address [drm_kms_helper]] port 0: input 1, pdt: 1, pn: 0, dpcd_rev: 00, mcs: 1, ddps: 1, ldps 0, sdp 0/0
[    6.253123] [drm:drm_dp_send_link_address [drm_kms_helper]] port 1: input 0, pdt: 3, pn: 8, dpcd_rev: 12, mcs: 0, ddps: 1, ldps 0, sdp 1/1
[    6.253129] [drm:drm_dp_send_link_address [drm_kms_helper]] port 2: input 0, pdt: 0, pn: 1, dpcd_rev: 00, mcs: 0, ddps: 0, ldps 0, sdp 0/0
[    6.308423] kvm: disabled by bios
[    6.308680] EDAC amd64: F17h detected (node 0).
[    6.308720] EDAC amd64: Node 0: DRAM ECC disabled.
[    6.360763] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: work_func: for dal_src=11
[    6.360816] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: schedule_work: for dal_src=11
[    6.360864] [drm:dc_link_handle_hpd_rx_irq [amdgpu]] dc_link_handle_hpd_rx_irq: Got short pulse HPD on link 0
[    6.367497] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.367565] [drm:drm_dp_send_enum_path_resources [drm_kms_helper]] enum path resources 8: 2560 2560
[    6.367812] [drm] DM_MST: added connector: 000000009c2813ed [id: 74] [master: 0000000005a6471f]
[    6.367866] [drm:dm_dp_add_mst_connector [amdgpu]] :74
[    6.437186] kvm: disabled by bios
[    6.437395] EDAC amd64: F17h detected (node 0).
[    6.437433] EDAC amd64: Node 0: DRAM ECC disabled.
[    6.474918] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: work_func: for dal_src=11
[    6.474983] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: schedule_work: for dal_src=11
[    6.475042] [drm:dc_link_handle_hpd_rx_irq [amdgpu]] dc_link_handle_hpd_rx_irq: Got short pulse HPD on link 0
[    6.481693] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.521039] EDAC amd64: F17h detected (node 0).
[    6.521077] EDAC amd64: Node 0: DRAM ECC disabled.
[    6.521249] kvm: disabled by bios
[    6.590016] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: work_func: for dal_src=11
[    6.590082] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: schedule_work: for dal_src=11
[    6.590141] [drm:dc_link_handle_hpd_rx_irq [amdgpu]] dc_link_handle_hpd_rx_irq: Got short pulse HPD on link 0
[    6.596801] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.599149] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.605990] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: work_func: for dal_src=11
[    6.606050] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: schedule_work: for dal_src=11
[    6.606104] [drm:dc_link_handle_hpd_rx_irq [amdgpu]] dc_link_handle_hpd_rx_irq: Got short pulse HPD on link 0
[    6.609028] EDAC amd64: F17h detected (node 0).
[    6.609052] kvm: disabled by bios
[    6.609061] EDAC amd64: Node 0: DRAM ECC disabled.
[    6.612737] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.615091] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.616014] [drm] Fence fallback timer expired on ring gfx
[    6.622883] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.625243] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.630724] [drm] amdgpu_dm_irq_schedule_work FAILED src 11
[    6.634699] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.640222] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: work_func: for dal_src=11
[    6.640272] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: schedule_work: for dal_src=11
[    6.640316] [drm:dc_link_handle_hpd_rx_irq [amdgpu]] dc_link_handle_hpd_rx_irq: Got short pulse HPD on link 0
[    6.725100] EDAC amd64: F17h detected (node 0).
[    6.725101] kvm: disabled by bios
[    6.725138] EDAC amd64: Node 0: DRAM ECC disabled.
[    6.744135] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: work_func: for dal_src=11
[    6.744204] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: schedule_work: for dal_src=11
[    6.744263] [drm:dc_link_handle_hpd_rx_irq [amdgpu]] dc_link_handle_hpd_rx_irq: Got short pulse HPD on link 0
[    6.750925] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.753281] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.760159] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: work_func: for dal_src=11
[    6.760224] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: schedule_work: for dal_src=11
[    6.760282] [drm:dc_link_handle_hpd_rx_irq [amdgpu]] dc_link_handle_hpd_rx_irq: Got short pulse HPD on link 0
[    6.766911] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.769262] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.778717] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.781068] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.787291] [drm] amdgpu_dm_irq_schedule_work FAILED src 11
[    6.790529] [drm:generic_reg_wait [amdgpu]] REG_WAIT taking a while: 1ms in get_channel_status line:344
[    6.792901] BUG: kernel NULL pointer dereference, address: 0000000000000050
[    6.792906] #PF: supervisor read access in kernel mode
[    6.792908] #PF: error_code(0x0000) - not-present page
[    6.792909] PGD 0 P4D 0 
[    6.792912] Oops: 0000 [#1] SMP NOPTI
[    6.792915] CPU: 12 PID: 235 Comm: kworker/12:1 Not tainted 5.5.0-rc7-jerry-build-drm-next+ #1
[    6.792917] Hardware name: System manufacturer System Product Name/PRIME X370-PRO, BIOS 0515 03/30/2017
[    6.792927] Workqueue: events_long drm_dp_mst_link_probe_work [drm_kms_helper]
[    6.792935] RIP: 0010:drm_dp_aux_register+0x83/0xa0 [drm_kms_helper]
[    6.792938] Code: 07 48 83 c4 08 5b 5d c3 48 8d 7b 08 e8 b6 c5 7f e1 85 c0 74 ec 48 89 df 89 45 f4 e8 07 53 01 00 8b 45 f4 48 83 c4 08 5b 5d c3 <48> 8b 70 50 48 85 f6 75 b1 48 8b 30 eb ac e8 ca f9 ff ff eb 80 0f
[    6.792942] RSP: 0018:ffffb14880523bb0 EFLAGS: 00010246
[    6.792944] RAX: 0000000000000000 RBX: ffff9dbec496e9c8 RCX: 0000000000000002
[    6.792946] RDX: ffffffffc0a88980 RSI: 0000000000000000 RDI: ffff9dbec496ee40
[    6.792948] RBP: ffffb14880523bc0 R08: ffff9dbebfc1a6e0 R09: 0000000000000000
[    6.792950] R10: ffffffffc059867e R11: 0000000000000000 R12: ffff9dbec496e050
[    6.792952] R13: 0000000000000000 R14: ffff9dbec6c1dc80 R15: 0000000000000001
[    6.792954] FS:  0000000000000000(0000) GS:ffff9dbecd100000(0000) knlGS:0000000000000000
[    6.792957] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[    6.792958] CR2: 0000000000000050 CR3: 00000004030aa000 CR4: 00000000003406e0
[    6.792960] Call Trace:
[    6.793030]  amdgpu_dm_mst_connector_late_register+0x1d/0x40 [amdgpu]
[    6.793046]  drm_connector_register.part.10+0x73/0xb0 [drm]
[    6.793112]  ? dm_dp_add_mst_connector+0x1b3/0x1c0 [amdgpu]
[    6.793125]  drm_connector_register+0x1a/0x20 [drm]
[    6.793190]  dm_dp_mst_register_connector+0x26/0x40 [amdgpu]
[    6.793197]  drm_dp_mst_port_add_connector+0x15f/0x1e0 [drm_kms_helper]
[    6.793202]  ? klist_next+0xd9/0x130
[    6.793206]  ? i2c_detect+0x330/0x330
[    6.793209]  ? bus_for_each_drv+0x87/0xb0
[    6.793212]  ? i2c_register_adapter+0x1c6/0x440
[    6.793215]  ? i2c_add_adapter+0x5a/0x80
[    6.793220]  ? drm_dp_port_set_pdt+0x1e7/0x2c0 [drm_kms_helper]
[    6.793226]  drm_dp_send_link_address+0x3b8/0x800 [drm_kms_helper]
[    6.793232]  drm_dp_check_and_send_link_address+0xe8/0x110 [drm_kms_helper]
[    6.793238]  drm_dp_mst_link_probe_work+0xb1/0x170 [drm_kms_helper]
[    6.793241]  process_one_work+0x1fd/0x3f0
[    6.793243]  worker_thread+0x34/0x410
[    6.793245]  kthread+0x121/0x140
[    6.793247]  ? process_one_work+0x3f0/0x3f0
[    6.793249]  ? kthread_park+0x90/0x90
[    6.793252]  ret_from_fork+0x22/0x40
[    6.793253] Modules linked in: amd64_edac_mod(-) edac_mce_amd kvm irqbypass amdgpu snd_hda_codec_realtek snd_hda_codec_generic ledtrig_audio snd_hda_codec_hdmi snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hda_core snd_hwdep eeepc_wmi asus_wmi snd_pcm sparse_keymap video amd_iommu_v2 crct10dif_pclmul gpu_sched crc32_pclmul snd_seq_midi ttm snd_seq_midi_event ghash_clmulni_intel snd_rawmidi drm_kms_helper snd_seq input_leds cec drm aesni_intel joydev crypto_simd snd_seq_device cryptd glue_helper fb_sys_fops snd_timer syscopyarea sysfillrect sysimgblt mxm_wmi wmi_bmof snd k10temp soundcore ccp mac_hid sch_fq_codel parport_pc ppdev lp parport ip_tables x_tables autofs4 hid_generic usbhid hid igb i2c_piix4 i2c_algo_bit dca ahci libahci gpio_amdpt wmi gpio_generic
[    6.793285] CR2: 0000000000000050
[    6.793287] ---[ end trace ac20e3f03b16741b ]---
[    6.793292] RIP: 0010:drm_dp_aux_register+0x83/0xa0 [drm_kms_helper]
[    6.793294] Code: 07 48 83 c4 08 5b 5d c3 48 8d 7b 08 e8 b6 c5 7f e1 85 c0 74 ec 48 89 df 89 45 f4 e8 07 53 01 00 8b 45 f4 48 83 c4 08 5b 5d c3 <48> 8b 70 50 48 85 f6 75 b1 48 8b 30 eb ac e8 ca f9 ff ff eb 80 0f
[    6.793297] RSP: 0018:ffffb14880523bb0 EFLAGS: 00010246
[    6.793299] RAX: 0000000000000000 RBX: ffff9dbec496e9c8 RCX: 0000000000000002
[    6.793300] RDX: ffffffffc0a88980 RSI: 0000000000000000 RDI: ffff9dbec496ee40
[    6.793302] RBP: ffffb14880523bc0 R08: ffff9dbebfc1a6e0 R09: 0000000000000000
[    6.793303] R10: ffffffffc059867e R11: 0000000000000000 R12: ffff9dbec496e050
[    6.793305] R13: 0000000000000000 R14: ffff9dbec6c1dc80 R15: 0000000000000001
[    6.793306] FS:  0000000000000000(0000) GS:ffff9dbecd100000(0000) knlGS:0000000000000000
[    6.793308] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[    6.793310] CR2: 0000000000000050 CR3: 00000004030aa000 CR4: 00000000003406e0
[    6.796068] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: work_func: for dal_src=11
[    6.796121] [drm:dm_irq_work_func [amdgpu]] DM_IRQ: schedule_work: for dal_src=11
[    6.796170] [drm:dc_link_handle_hpd_rx_irq [amdgpu]] dc_link_handle_hpd_rx_irq: Got short pulse HPD on link 0
[    6.828973] EDAC amd64: F17h detected (node 0).
[    6.829034] EDAC amd64: Node 0: DRAM ECC disabled.
[    6.829270] kvm: disabled by bios
[    6.932954] EDAC amd64: F17h detected (node 0).
[    6.932978] kvm: disabled by bios
[    6.933001] EDAC amd64: Node 0: DRAM ECC disabled.
[    7.037399] EDAC amd64: F17h detected (node 0).
[    7.037444] EDAC amd64: Node 0: DRAM ECC disabled.
[    7.037612] kvm: disabled by bios
[    7.128354] [drm] Fence fallback timer expired on ring comp_1.0.0
[    7.145270] kvm: disabled by bios
[    7.145666] EDAC amd64: F17h detected (node 0).
[    7.145709] EDAC amd64: Node 0: DRAM ECC disabled.
[    7.241511] EDAC amd64: F17h detected (node 0).
[    7.241597] EDAC amd64: Node 0: DRAM ECC disabled.
[    7.241642] kvm: disabled by bios
[    7.340887] EDAC amd64: F17h detected (node 0).
[    7.340933] EDAC amd64: Node 0: DRAM ECC disabled.
[    7.341196] kvm: disabled by bios
[    7.449370] EDAC amd64: F17h detected (node 0).
[    7.449415] EDAC amd64: Node 0: DRAM ECC disabled.
[    7.449621] kvm: disabled by bios
[    7.537614] EDAC amd64: F17h detected (node 0).
[    7.537654] EDAC amd64: Node 0: DRAM ECC disabled.
[    7.640373] [drm] Fence fallback timer expired on ring comp_1.1.0
[    7.916499] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:59:DP-1]
[    7.916511] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:59:DP-1] disconnected
[    7.916525] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:63:DP-2]
[    7.916533] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:63:DP-2] disconnected
[    7.916544] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:67:DP-3]
[    7.916551] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:67:DP-3] disconnected
[    7.916563] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:71:HDMI-A-1]
[    7.916570] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:71:HDMI-A-1] disconnected
[    8.059671] systemd-journald[438]: File /var/log/journal/27d70c846b2d419abf7b3556272351a7/user-1000.journal corrupted or uncleanly shut down, renaming and replacing.
[    8.368548] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:59:DP-1]
[    8.368555] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:59:DP-1] disconnected
[    8.368648] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:63:DP-2]
[    8.368653] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:63:DP-2] disconnected
[    8.368694] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:67:DP-3]
[    8.368698] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:67:DP-3] disconnected
[    8.368740] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:71:HDMI-A-1]
[    8.368745] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:71:HDMI-A-1] disconnected
[    8.369057] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:59:DP-1]
[    8.369062] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:59:DP-1] disconnected
[    8.369082] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:63:DP-2]
[    8.369086] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:63:DP-2] disconnected
[    8.369100] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:67:DP-3]
[    8.369105] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:67:DP-3] disconnected
[    8.369117] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:71:HDMI-A-1]
[    8.369121] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:71:HDMI-A-1] disconnected
[    8.432127] [drm:drm_mode_addfb2 [drm]] [FB:91]
[    8.436817] [drm:drm_mode_setcrtc [drm]] [CRTC:47:crtc-0]
[    8.436874] [drm:drm_mode_setcrtc [drm]] [CRTC:49:crtc-1]
[    8.436906] [drm:drm_mode_setcrtc [drm]] [CRTC:51:crtc-2]
[    8.436937] [drm:drm_mode_setcrtc [drm]] [CRTC:53:crtc-3]
[    8.436969] [drm:drm_mode_setcrtc [drm]] [CRTC:55:crtc-4]
[    8.437002] [drm:drm_mode_setcrtc [drm]] [CRTC:57:crtc-5]
[    8.983764] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:59:DP-1]
[    8.983771] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:59:DP-1] disconnected
[    8.983788] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:63:DP-2]
[    8.983793] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:63:DP-2] disconnected
[    8.983803] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:67:DP-3]
[    8.983807] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:67:DP-3] disconnected
[    8.983817] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:71:HDMI-A-1]
[    8.983822] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:71:HDMI-A-1] disconnected
[    9.184254] [drm:amdgpu_dm_audio_component_get_eld [amdgpu]] Get ELD : idx=0 ret=0 en=0
[    9.184308] [drm:amdgpu_dm_audio_component_get_eld [amdgpu]] Get ELD : idx=1 ret=0 en=0
[    9.184360] [drm:amdgpu_dm_audio_component_get_eld [amdgpu]] Get ELD : idx=2 ret=0 en=0
[    9.184411] [drm:amdgpu_dm_audio_component_get_eld [amdgpu]] Get ELD : idx=3 ret=0 en=0
[    9.184461] [drm:amdgpu_dm_audio_component_get_eld [amdgpu]] Get ELD : idx=4 ret=0 en=0
[    9.184511] [drm:amdgpu_dm_audio_component_get_eld [amdgpu]] Get ELD : idx=5 ret=0 en=0
[   10.488467] rfkill: input handler disabled
[   17.952969] igb 0000:26:00.0 enp38s0: igb: enp38s0 NIC Link is Up 100 Mbps Full Duplex, Flow Control: RX/TX
[   17.953224] IPv6: ADDRCONF(NETDEV_CHANGE): enp38s0: link becomes ready

[-- Attachment #3: Type: text/plain, Size: 154 bytes --]

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  2020-02-25 18:30           ` Zuo, Jerry
@ 2020-02-25 18:32             ` Alex Deucher
  2020-02-25 18:42               ` Alex Deucher
  0 siblings, 1 reply; 19+ messages in thread
From: Alex Deucher @ 2020-02-25 18:32 UTC (permalink / raw)
  To: Zuo, Jerry
  Cc: Broadworth, Mark, Liu, Zhan, Maling list - DRI developers,
	amd-gfx list, Deucher, Alexander, Wentland, Harry

On Tue, Feb 25, 2020 at 1:30 PM Zuo, Jerry <Jerry.Zuo@amd.com> 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 <alexdeucher@gmail.com>
> Sent: February 25, 2020 1:23 PM
> To: Liu, Zhan <Zhan.Liu@amd.com>
> Cc: Wentland, Harry <Harry.Wentland@amd.com>; Zuo, Jerry <Jerry.Zuo@amd.com>; 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)
>
> 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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  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
  0 siblings, 2 replies; 19+ messages in thread
From: Alex Deucher @ 2020-02-25 18:42 UTC (permalink / raw)
  To: Zuo, Jerry
  Cc: Broadworth, Mark, Liu, Zhan, Maling list - DRI developers,
	amd-gfx list, Deucher, Alexander, Wentland, Harry

[-- Attachment #1: Type: text/plain, Size: 10042 bytes --]

On Tue, Feb 25, 2020 at 1:32 PM Alex Deucher <alexdeucher@gmail.com> wrote:
>
> On Tue, Feb 25, 2020 at 1:30 PM Zuo, Jerry <Jerry.Zuo@amd.com> 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 <alexdeucher@gmail.com>
> > Sent: February 25, 2020 1:23 PM
> > To: Liu, Zhan <Zhan.Liu@amd.com>
> > Cc: Wentland, Harry <Harry.Wentland@amd.com>; Zuo, Jerry <Jerry.Zuo@amd.com>; 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)
> >
> > 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);
> > > > > > >
> > > > > > >

[-- Attachment #2: 0002-drm-amdgpu-display-don-t-call-drm_dp_mst_connector_l.patch --]
[-- Type: text/x-patch, Size: 1386 bytes --]

From ccf3ad1f1afcc3d32399bdc584b619199582a84e Mon Sep 17 00:00:00 2001
From: Alex Deucher <alexander.deucher@amd.com>
Date: Tue, 25 Feb 2020 13:39:44 -0500
Subject: [PATCH 2/2] drm/amdgpu/display: don't call
 drm_dp_mst_connector_late_register (v2)

Nothing else calls it.  Not sure it's necessary.

v2: remove unused port variable.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

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 d7a7dc0c256e..0ef0eeb16778 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
@@ -154,7 +154,6 @@ 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;
 
 	amdgpu_dm_connector->dm_dp_aux.aux.dev = connector->kdev;
@@ -166,7 +165,7 @@ amdgpu_dm_mst_connector_late_register(struct drm_connector *connector)
 	connector_debugfs_init(amdgpu_dm_connector);
 #endif
 
-	return drm_dp_mst_connector_late_register(connector, port);
+	return r;
 }
 
 static void
-- 
2.24.1


[-- Attachment #3: 0001-drm-amdgpu-display-move-the-setting-of-the-aux-dev.patch --]
[-- Type: text/x-patch, Size: 1498 bytes --]

From 4eee6f2de66c885199084113e2e60c6a28859e37 Mon Sep 17 00:00:00 2001
From: Alex Deucher <alexander.deucher@amd.com>
Date: Tue, 25 Feb 2020 13:36:26 -0500
Subject: [PATCH 1/2] drm/amdgpu/display: move the setting of the aux dev

We need to move this into late init to avoid it being NULL
once we switch the init order.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 d5b9e72f2649..d7a7dc0c256e 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
@@ -157,6 +157,7 @@ amdgpu_dm_mst_connector_late_register(struct drm_connector *connector)
 	struct drm_dp_mst_port *port = amdgpu_dm_connector->port;
 	int r;
 
+	amdgpu_dm_connector->dm_dp_aux.aux.dev = connector->kdev;
 	r = drm_dp_aux_register(&amdgpu_dm_connector->dm_dp_aux.aux);
 	if (r)
 		return r;
@@ -485,7 +486,6 @@ void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm,
 				       struct amdgpu_dm_connector *aconnector)
 {
 	aconnector->dm_dp_aux.aux.name = "dmdc";
-	aconnector->dm_dp_aux.aux.dev = aconnector->base.kdev;
 	aconnector->dm_dp_aux.aux.transfer = dm_dp_aux_transfer;
 	aconnector->dm_dp_aux.ddc_service = aconnector->dc_link->ddc;
 
-- 
2.24.1


[-- Attachment #4: Type: text/plain, Size: 154 bytes --]

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* RE: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  2020-02-25 18:42               ` Alex Deucher
@ 2020-02-25 19:07                 ` Zuo, Jerry
  2020-02-26 15:36                 ` Zuo, Jerry
  1 sibling, 0 replies; 19+ messages in thread
From: Zuo, Jerry @ 2020-02-25 19:07 UTC (permalink / raw)
  To: Alex Deucher
  Cc: Broadworth, Mark, Liu, Zhan, Maling list - DRI developers,
	amd-gfx list, Deucher,  Alexander, Wentland, Harry

[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 <alexdeucher@gmail.com>
Sent: February 25, 2020 1:42 PM
To: Zuo, Jerry <Jerry.Zuo@amd.com>
Cc: Liu, Zhan <Zhan.Liu@amd.com>; Wentland, Harry <Harry.Wentland@amd.com>; 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)

On Tue, Feb 25, 2020 at 1:32 PM Alex Deucher <alexdeucher@gmail.com> wrote:
>
> On Tue, Feb 25, 2020 at 1:30 PM Zuo, Jerry <Jerry.Zuo@amd.com> 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 <alexdeucher@gmail.com>
> > Sent: February 25, 2020 1:23 PM
> > To: Liu, Zhan <Zhan.Liu@amd.com>
> > Cc: Wentland, Harry <Harry.Wentland@amd.com>; Zuo, Jerry 
> > <Jerry.Zuo@amd.com>; 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)
> >
> > 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_type
> > > > > > > s.c
> > > > > > > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_type
> > > > > > > s.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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* RE: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  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
  1 sibling, 1 reply; 19+ messages in thread
From: Zuo, Jerry @ 2020-02-26 15:36 UTC (permalink / raw)
  To: Alex Deucher
  Cc: Broadworth, Mark, Liu, Zhan, Maling list - DRI developers,
	amd-gfx list, Deucher,  Alexander, Wentland, Harry

[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 <alexdeucher@gmail.com>
Sent: February 25, 2020 1:42 PM
To: Zuo, Jerry <Jerry.Zuo@amd.com>
Cc: Liu, Zhan <Zhan.Liu@amd.com>; Wentland, Harry <Harry.Wentland@amd.com>; 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)

On Tue, Feb 25, 2020 at 1:32 PM Alex Deucher <alexdeucher@gmail.com> wrote:
>
> On Tue, Feb 25, 2020 at 1:30 PM Zuo, Jerry <Jerry.Zuo@amd.com> 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 <alexdeucher@gmail.com>
> > Sent: February 25, 2020 1:23 PM
> > To: Liu, Zhan <Zhan.Liu@amd.com>
> > Cc: Wentland, Harry <Harry.Wentland@amd.com>; Zuo, Jerry 
> > <Jerry.Zuo@amd.com>; 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)
> >
> > 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_type
> > > > > > > s.c
> > > > > > > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_type
> > > > > > > s.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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  2020-02-26 15:36                 ` Zuo, Jerry
@ 2020-02-26 15:39                   ` Alex Deucher
  2020-02-26 15:41                     ` Zuo, Jerry
  0 siblings, 1 reply; 19+ messages in thread
From: Alex Deucher @ 2020-02-26 15:39 UTC (permalink / raw)
  To: Zuo, Jerry
  Cc: Broadworth, Mark, Liu, Zhan, Maling list - DRI developers,
	amd-gfx list, Deucher, Alexander, Wentland, Harry

On Wed, Feb 26, 2020 at 10:36 AM Zuo, Jerry <Jerry.Zuo@amd.com> 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 <alexdeucher@gmail.com>
> Sent: February 25, 2020 1:42 PM
> To: Zuo, Jerry <Jerry.Zuo@amd.com>
> Cc: Liu, Zhan <Zhan.Liu@amd.com>; Wentland, Harry <Harry.Wentland@amd.com>; 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)
>
> On Tue, Feb 25, 2020 at 1:32 PM Alex Deucher <alexdeucher@gmail.com> wrote:
> >
> > On Tue, Feb 25, 2020 at 1:30 PM Zuo, Jerry <Jerry.Zuo@amd.com> 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 <alexdeucher@gmail.com>
> > > Sent: February 25, 2020 1:23 PM
> > > To: Liu, Zhan <Zhan.Liu@amd.com>
> > > Cc: Wentland, Harry <Harry.Wentland@amd.com>; Zuo, Jerry
> > > <Jerry.Zuo@amd.com>; 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)
> > >
> > > 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_type
> > > > > > > > s.c
> > > > > > > > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_type
> > > > > > > > s.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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* RE: [PATCH 13/15] drm/amdgpu/display: split dp connector registration (v3)
  2020-02-26 15:39                   ` Alex Deucher
@ 2020-02-26 15:41                     ` Zuo, Jerry
  0 siblings, 0 replies; 19+ messages in thread
From: Zuo, Jerry @ 2020-02-26 15:41 UTC (permalink / raw)
  To: Alex Deucher
  Cc: Broadworth, Mark, Liu, Zhan, Maling list - DRI developers,
	amd-gfx list, Deucher,  Alexander, Wentland, Harry

[AMD Official Use Only - Internal Distribution Only]

Reviewed-by: Jerry (Fangzhi) Zuo <Jerry.Zuo@amd.com>

-----Original Message-----
From: Alex Deucher <alexdeucher@gmail.com> 
Sent: February 26, 2020 10:40 AM
To: Zuo, Jerry <Jerry.Zuo@amd.com>
Cc: Liu, Zhan <Zhan.Liu@amd.com>; Wentland, Harry <Harry.Wentland@amd.com>; 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)

On Wed, Feb 26, 2020 at 10:36 AM Zuo, Jerry <Jerry.Zuo@amd.com> 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 <alexdeucher@gmail.com>
> Sent: February 25, 2020 1:42 PM
> To: Zuo, Jerry <Jerry.Zuo@amd.com>
> Cc: Liu, Zhan <Zhan.Liu@amd.com>; Wentland, Harry 
> <Harry.Wentland@amd.com>; 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)
>
> On Tue, Feb 25, 2020 at 1:32 PM Alex Deucher <alexdeucher@gmail.com> wrote:
> >
> > On Tue, Feb 25, 2020 at 1:30 PM Zuo, Jerry <Jerry.Zuo@amd.com> 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 <alexdeucher@gmail.com>
> > > Sent: February 25, 2020 1:23 PM
> > > To: Liu, Zhan <Zhan.Liu@amd.com>
> > > Cc: Wentland, Harry <Harry.Wentland@amd.com>; Zuo, Jerry 
> > > <Jerry.Zuo@amd.com>; 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)
> > >
> > > 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_ty
> > > > > > > > pe
> > > > > > > > s.c
> > > > > > > > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_ty
> > > > > > > > pe s.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.au
> > > > > > > > + x)
> > > > > > > > + ;
> > > > > > >
> > > > > > > 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

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2020-02-26 15:42 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
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

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).