From: Imre Deak <imre.deak@intel.com> To: Lyude Paul <lyude@redhat.com>, Harry Wentland <harry.wentland@amd.com>, Alex Deucher <alexander.deucher@amd.com>, Jani Nikula <jani.nikula@intel.com>, Daniel Vetter <daniel.vetter@ffwll.ch> Cc: stable@vger.kernel.org, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, "Ville Syrjälä" <ville.syrjala@linux.intel.com>, "Ben Skeggs" <bskeggs@redhat.com>, "Wayne Lin" <Wayne.Lin@amd.com>, "Karol Herbst" <kherbst@redhat.com> Subject: Re: [Intel-gfx] [CI 1/4] drm/i915/dp_mst: Add the MST topology state for modesetted CRTCs Date: Tue, 7 Feb 2023 14:59:45 +0200 [thread overview] Message-ID: <Y+JLQfuSAS6xLPIS@ideak-desk.fi.intel.com> (raw) In-Reply-To: <20230206114856.2665066-1-imre.deak@intel.com> Hi all, On Mon, Feb 06, 2023 at 01:48:53PM +0200, Imre Deak wrote: > Add the MST topology for a CRTC to the atomic state if the driver > needs to force a modeset on the CRTC after the encoder compute config > functions are called. > > Later the MST encoder's disable hook also adds the state, but that isn't > guaranteed to work (since in that hook getting the state may fail, which > can't be handled there). This should fix that, while a later patch fixes > the use of the MST state in the disable hook. > > v2: Add missing forward struct declartions, caught by hdrtest. > v3: Factor out intel_dp_mst_add_topology_state_for_connector() used > later in the patchset. > > Cc: Lyude Paul <lyude@redhat.com> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: stable@vger.kernel.org # 6.1 > Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> # v2 > Reviewed-by: Lyude Paul <lyude@redhat.com> > Signed-off-by: Imre Deak <imre.deak@intel.com> Is it ok to merge these 4 patches (also at [1]), via the i915 tree? If so could it be also acked from the AMD and Nouveau side? [1] https://patchwork.freedesktop.org/series/113703/ > --- > drivers/gpu/drm/i915/display/intel_display.c | 4 ++ > drivers/gpu/drm/i915/display/intel_dp_mst.c | 61 ++++++++++++++++++++ > drivers/gpu/drm/i915/display/intel_dp_mst.h | 4 ++ > 3 files changed, 69 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index 166662ade593c..38106cf63b3b9 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -5936,6 +5936,10 @@ int intel_modeset_all_pipes(struct intel_atomic_state *state, > if (ret) > return ret; > > + ret = intel_dp_mst_add_topology_state_for_crtc(state, crtc); > + if (ret) > + return ret; > + > ret = intel_atomic_add_affected_planes(state, crtc); > if (ret) > return ret; > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c > index 8b0e4defa3f10..f3cb12dcfe0a7 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c > @@ -1223,3 +1223,64 @@ bool intel_dp_mst_is_slave_trans(const struct intel_crtc_state *crtc_state) > return crtc_state->mst_master_transcoder != INVALID_TRANSCODER && > crtc_state->mst_master_transcoder != crtc_state->cpu_transcoder; > } > + > +/** > + * intel_dp_mst_add_topology_state_for_connector - add MST topology state for a connector > + * @state: atomic state > + * @connector: connector to add the state for > + * @crtc: the CRTC @connector is attached to > + * > + * Add the MST topology state for @connector to @state. > + * > + * Returns 0 on success, negative error code on failure. > + */ > +static int > +intel_dp_mst_add_topology_state_for_connector(struct intel_atomic_state *state, > + struct intel_connector *connector, > + struct intel_crtc *crtc) > +{ > + struct drm_dp_mst_topology_state *mst_state; > + > + if (!connector->mst_port) > + return 0; > + > + mst_state = drm_atomic_get_mst_topology_state(&state->base, > + &connector->mst_port->mst_mgr); > + if (IS_ERR(mst_state)) > + return PTR_ERR(mst_state); > + > + mst_state->pending_crtc_mask |= drm_crtc_mask(&crtc->base); > + > + return 0; > +} > + > +/** > + * intel_dp_mst_add_topology_state_for_crtc - add MST topology state for a CRTC > + * @state: atomic state > + * @crtc: CRTC to add the state for > + * > + * Add the MST topology state for @crtc to @state. > + * > + * Returns 0 on success, negative error code on failure. > + */ > +int intel_dp_mst_add_topology_state_for_crtc(struct intel_atomic_state *state, > + struct intel_crtc *crtc) > +{ > + struct drm_connector *_connector; > + struct drm_connector_state *conn_state; > + int i; > + > + for_each_new_connector_in_state(&state->base, _connector, conn_state, i) { > + struct intel_connector *connector = to_intel_connector(_connector); > + int ret; > + > + if (conn_state->crtc != &crtc->base) > + continue; > + > + ret = intel_dp_mst_add_topology_state_for_connector(state, connector, crtc); > + if (ret) > + return ret; > + } > + > + return 0; > +} > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.h b/drivers/gpu/drm/i915/display/intel_dp_mst.h > index f7301de6cdfb3..f1815bb722672 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.h > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.h > @@ -8,6 +8,8 @@ > > #include <linux/types.h> > > +struct intel_atomic_state; > +struct intel_crtc; > struct intel_crtc_state; > struct intel_digital_port; > struct intel_dp; > @@ -18,5 +20,7 @@ int intel_dp_mst_encoder_active_links(struct intel_digital_port *dig_port); > bool intel_dp_mst_is_master_trans(const struct intel_crtc_state *crtc_state); > bool intel_dp_mst_is_slave_trans(const struct intel_crtc_state *crtc_state); > bool intel_dp_mst_source_support(struct intel_dp *intel_dp); > +int intel_dp_mst_add_topology_state_for_crtc(struct intel_atomic_state *state, > + struct intel_crtc *crtc); > > #endif /* __INTEL_DP_MST_H__ */ > -- > 2.37.1 >
WARNING: multiple messages have this Message-ID (diff)
From: Imre Deak <imre.deak@intel.com> To: Lyude Paul <lyude@redhat.com>, Harry Wentland <harry.wentland@amd.com>, Alex Deucher <alexander.deucher@amd.com>, Jani Nikula <jani.nikula@intel.com>, Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Karol Herbst <kherbst@redhat.com>, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, stable@vger.kernel.org, Wayne Lin <Wayne.Lin@amd.com>, Ben Skeggs <bskeggs@redhat.com> Subject: Re: [Intel-gfx] [CI 1/4] drm/i915/dp_mst: Add the MST topology state for modesetted CRTCs Date: Tue, 7 Feb 2023 14:59:45 +0200 [thread overview] Message-ID: <Y+JLQfuSAS6xLPIS@ideak-desk.fi.intel.com> (raw) In-Reply-To: <20230206114856.2665066-1-imre.deak@intel.com> Hi all, On Mon, Feb 06, 2023 at 01:48:53PM +0200, Imre Deak wrote: > Add the MST topology for a CRTC to the atomic state if the driver > needs to force a modeset on the CRTC after the encoder compute config > functions are called. > > Later the MST encoder's disable hook also adds the state, but that isn't > guaranteed to work (since in that hook getting the state may fail, which > can't be handled there). This should fix that, while a later patch fixes > the use of the MST state in the disable hook. > > v2: Add missing forward struct declartions, caught by hdrtest. > v3: Factor out intel_dp_mst_add_topology_state_for_connector() used > later in the patchset. > > Cc: Lyude Paul <lyude@redhat.com> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: stable@vger.kernel.org # 6.1 > Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> # v2 > Reviewed-by: Lyude Paul <lyude@redhat.com> > Signed-off-by: Imre Deak <imre.deak@intel.com> Is it ok to merge these 4 patches (also at [1]), via the i915 tree? If so could it be also acked from the AMD and Nouveau side? [1] https://patchwork.freedesktop.org/series/113703/ > --- > drivers/gpu/drm/i915/display/intel_display.c | 4 ++ > drivers/gpu/drm/i915/display/intel_dp_mst.c | 61 ++++++++++++++++++++ > drivers/gpu/drm/i915/display/intel_dp_mst.h | 4 ++ > 3 files changed, 69 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index 166662ade593c..38106cf63b3b9 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -5936,6 +5936,10 @@ int intel_modeset_all_pipes(struct intel_atomic_state *state, > if (ret) > return ret; > > + ret = intel_dp_mst_add_topology_state_for_crtc(state, crtc); > + if (ret) > + return ret; > + > ret = intel_atomic_add_affected_planes(state, crtc); > if (ret) > return ret; > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c > index 8b0e4defa3f10..f3cb12dcfe0a7 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c > @@ -1223,3 +1223,64 @@ bool intel_dp_mst_is_slave_trans(const struct intel_crtc_state *crtc_state) > return crtc_state->mst_master_transcoder != INVALID_TRANSCODER && > crtc_state->mst_master_transcoder != crtc_state->cpu_transcoder; > } > + > +/** > + * intel_dp_mst_add_topology_state_for_connector - add MST topology state for a connector > + * @state: atomic state > + * @connector: connector to add the state for > + * @crtc: the CRTC @connector is attached to > + * > + * Add the MST topology state for @connector to @state. > + * > + * Returns 0 on success, negative error code on failure. > + */ > +static int > +intel_dp_mst_add_topology_state_for_connector(struct intel_atomic_state *state, > + struct intel_connector *connector, > + struct intel_crtc *crtc) > +{ > + struct drm_dp_mst_topology_state *mst_state; > + > + if (!connector->mst_port) > + return 0; > + > + mst_state = drm_atomic_get_mst_topology_state(&state->base, > + &connector->mst_port->mst_mgr); > + if (IS_ERR(mst_state)) > + return PTR_ERR(mst_state); > + > + mst_state->pending_crtc_mask |= drm_crtc_mask(&crtc->base); > + > + return 0; > +} > + > +/** > + * intel_dp_mst_add_topology_state_for_crtc - add MST topology state for a CRTC > + * @state: atomic state > + * @crtc: CRTC to add the state for > + * > + * Add the MST topology state for @crtc to @state. > + * > + * Returns 0 on success, negative error code on failure. > + */ > +int intel_dp_mst_add_topology_state_for_crtc(struct intel_atomic_state *state, > + struct intel_crtc *crtc) > +{ > + struct drm_connector *_connector; > + struct drm_connector_state *conn_state; > + int i; > + > + for_each_new_connector_in_state(&state->base, _connector, conn_state, i) { > + struct intel_connector *connector = to_intel_connector(_connector); > + int ret; > + > + if (conn_state->crtc != &crtc->base) > + continue; > + > + ret = intel_dp_mst_add_topology_state_for_connector(state, connector, crtc); > + if (ret) > + return ret; > + } > + > + return 0; > +} > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.h b/drivers/gpu/drm/i915/display/intel_dp_mst.h > index f7301de6cdfb3..f1815bb722672 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.h > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.h > @@ -8,6 +8,8 @@ > > #include <linux/types.h> > > +struct intel_atomic_state; > +struct intel_crtc; > struct intel_crtc_state; > struct intel_digital_port; > struct intel_dp; > @@ -18,5 +20,7 @@ int intel_dp_mst_encoder_active_links(struct intel_digital_port *dig_port); > bool intel_dp_mst_is_master_trans(const struct intel_crtc_state *crtc_state); > bool intel_dp_mst_is_slave_trans(const struct intel_crtc_state *crtc_state); > bool intel_dp_mst_source_support(struct intel_dp *intel_dp); > +int intel_dp_mst_add_topology_state_for_crtc(struct intel_atomic_state *state, > + struct intel_crtc *crtc); > > #endif /* __INTEL_DP_MST_H__ */ > -- > 2.37.1 >
next prev parent reply other threads:[~2023-02-07 13:00 UTC|newest] Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-02-06 11:48 [Intel-gfx] [CI 1/4] drm/i915/dp_mst: Add the MST topology state for modesetted CRTCs Imre Deak 2023-02-06 11:48 ` Imre Deak 2023-02-06 11:48 ` [Intel-gfx] [CI 2/4] drm/display/dp_mst: Handle old/new payload states in drm_dp_remove_payload() Imre Deak 2023-02-06 11:48 ` Imre Deak 2023-02-06 11:48 ` Imre Deak 2023-02-06 11:48 ` [Intel-gfx] [CI 3/4] drm/display/dp_mst: Add drm_atomic_get_old_mst_topology_state() Imre Deak 2023-02-06 11:48 ` Imre Deak 2023-02-06 11:48 ` Imre Deak 2023-02-06 11:48 ` [Intel-gfx] [CI 4/4] drm/i915/dp_mst: Fix payload removal during output disabling Imre Deak 2023-02-06 11:48 ` Imre Deak 2023-02-06 15:50 ` [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [CI,1/4] drm/i915/dp_mst: Add the MST topology state for modesetted CRTCs Patchwork 2023-02-06 21:22 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork 2023-02-07 12:59 ` Imre Deak [this message] 2023-02-07 12:59 ` [Intel-gfx] [CI 1/4] " Imre Deak 2023-02-09 21:58 ` [Cc: drm-misc folks] " Lyude Paul 2023-02-09 21:58 ` [Intel-gfx] [Cc: drm-misc folks] " Lyude Paul 2023-02-09 21:58 ` [Cc: drm-misc folks] Re: [Intel-gfx] " Lyude Paul 2023-02-10 10:47 ` Jani Nikula 2023-02-10 10:47 ` [Intel-gfx] [Cc: drm-misc folks] " Jani Nikula 2023-02-10 10:47 ` [Cc: drm-misc folks] Re: [Intel-gfx] " Jani Nikula 2023-02-13 10:41 ` Lin, Wayne 2023-02-13 10:41 ` [Intel-gfx] [Cc: drm-misc folks] " Lin, Wayne 2023-02-13 10:41 ` [Cc: drm-misc folks] Re: [Intel-gfx] " Lin, Wayne 2023-02-14 11:00 ` Imre Deak 2023-02-14 11:00 ` [Intel-gfx] [Cc: drm-misc folks] " Imre Deak 2023-02-14 11:00 ` [Cc: drm-misc folks] Re: [Intel-gfx] " Imre Deak
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=Y+JLQfuSAS6xLPIS@ideak-desk.fi.intel.com \ --to=imre.deak@intel.com \ --cc=Wayne.Lin@amd.com \ --cc=alexander.deucher@amd.com \ --cc=bskeggs@redhat.com \ --cc=daniel.vetter@ffwll.ch \ --cc=dri-devel@lists.freedesktop.org \ --cc=harry.wentland@amd.com \ --cc=intel-gfx@lists.freedesktop.org \ --cc=jani.nikula@intel.com \ --cc=kherbst@redhat.com \ --cc=lyude@redhat.com \ --cc=stable@vger.kernel.org \ --cc=ville.syrjala@linux.intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.