On Mon, Feb 13, 2023 at 10:41:32AM +0000, Lin, Wayne wrote:
[Public]
Add Mario for awareness.
-----Original Message----- From: Jani Nikula jani.nikula@intel.com Sent: Friday, February 10, 2023 6:48 PM To: Lyude Paul lyude@redhat.com; imre.deak@intel.com; Wentland, Harry Harry.Wentland@amd.com; Deucher, Alexander Alexander.Deucher@amd.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; Lin, Wayne Wayne.Lin@amd.com; Karol Herbst kherbst@redhat.com; Thomas Zimmermann tzimmermann@suse.de Subject: Re: [Cc: drm-misc folks] Re: [Intel-gfx] [CI 1/4] drm/i915/dp_mst: Add the MST topology state for modesetted CRTCs
On Thu, 09 Feb 2023, Lyude Paul lyude@redhat.com wrote:
On Tue, 2023-02-07 at 14:59 +0200, Imre Deak wrote:
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?
Whichever branch works best for y'all is fine by me, if it's via i915's tree I guess we might need to back-merge drm-misc at some point so I can write up equivalent fixes for nouveau as well.
(Added Thomas Zimmermann to Cc)
I suggest merging the series via drm-misc-next-fixes branch, to get them to Linus' tree in the upcoming merge window. They all apply cleanly there. The drivers can backmerge them from drm-next in the mean time, or wait for v6.3-rc1.
Daniel acked this (well, any -next-fixes branch) on IRC yesterday, obviously ack from me too.
I take the above as Lyude's ack for nouveau.
Harry, Wayne, do you agree with this, ack for merging the AMD part via drm- misc-next-fixes? (Alex suggested to get your input.)
Thank you Imre, Lyude and Jani. That looks good to me and I agree with that.
Ok, thanks all, pushed the patchset to drm-misc-next-fixes.
Thanks!
Regards, Wayne
BR, Jani.
[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
-- Jani Nikula, Intel Open Source Graphics Center