* [PATCH 6.2 6.1 0/1] Fix regression in 6.2.10
@ 2023-04-14 19:56 Mario Limonciello
2023-04-14 19:56 ` [PATCH 6.2 6.1 1/1] drm/amd/display: Pass the right info to drm_dp_remove_payload Mario Limonciello
2023-04-15 6:50 ` [PATCH 6.2 6.1 0/1] Fix regression in 6.2.10 Greg KH
0 siblings, 2 replies; 3+ messages in thread
From: Mario Limonciello @ 2023-04-14 19:56 UTC (permalink / raw)
To: stable; +Cc: Veronika Schwan, Jerry.Zuo
Veronika Schwan reported an MST regression introduced in 6.2.10 by
a backport of commit d7b5638bd337 ("drm/amd/display: Take FEC Overhead
into Timeslot Calculation") into stable.
This fix was actually correct, but there was a related fix that should
have come back as well. This is a backport of that fix for 6.2.y
and 6.1.y.
Due to another code change, it's not a straight backport, but it's just
a one line change from context that changed in other patches.
Wayne Lin (1):
drm/amd/display: Pass the right info to drm_dp_remove_payload
.../amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 57 ++++++++++++++++---
1 file changed, 50 insertions(+), 7 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 6.2 6.1 1/1] drm/amd/display: Pass the right info to drm_dp_remove_payload
2023-04-14 19:56 [PATCH 6.2 6.1 0/1] Fix regression in 6.2.10 Mario Limonciello
@ 2023-04-14 19:56 ` Mario Limonciello
2023-04-15 6:50 ` [PATCH 6.2 6.1 0/1] Fix regression in 6.2.10 Greg KH
1 sibling, 0 replies; 3+ messages in thread
From: Mario Limonciello @ 2023-04-14 19:56 UTC (permalink / raw)
To: stable; +Cc: Veronika Schwan, Jerry.Zuo
From: Wayne Lin <Wayne.Lin@amd.com>
[Why & How]
drm_dp_remove_payload() interface was changed. Correct amdgpu dm code
to pass the right parameter to the drm helper function.
Reviewed-by: Jerry Zuo <Jerry.Zuo@amd.com>
Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com>
Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry-picked from b8ca445f550a9a079134f836466ddda3bfad6108)
[Hand modified due to missing f0127cb11299df80df45583b216e13f27c408545 which
failed to apply due to missing 94dfeaa46925bb6b4d43645bbb6234e846dec257]
Reported-and-tested-by: Veronika Schwan <veronika@pisquaredover6.de>
Fixes: d7b5638bd337 ("drm/amd/display: Take FEC Overhead into Timeslot Calculation")
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
.../amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 57 ++++++++++++++++---
1 file changed, 50 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
index 657e7c7b59e9..43be27c8d2ff 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
@@ -175,6 +175,40 @@ void dm_helpers_dp_update_branch_info(
const struct dc_link *link)
{}
+static void dm_helpers_construct_old_payload(
+ struct dc_link *link,
+ int pbn_per_slot,
+ struct drm_dp_mst_atomic_payload *new_payload,
+ struct drm_dp_mst_atomic_payload *old_payload)
+{
+ struct link_mst_stream_allocation_table current_link_table =
+ link->mst_stream_alloc_table;
+ struct link_mst_stream_allocation *dc_alloc;
+ int i;
+
+ *old_payload = *new_payload;
+
+ /* Set correct time_slots/PBN of old payload.
+ * other fields (delete & dsc_enabled) in
+ * struct drm_dp_mst_atomic_payload are don't care fields
+ * while calling drm_dp_remove_payload()
+ */
+ for (i = 0; i < current_link_table.stream_count; i++) {
+ dc_alloc =
+ ¤t_link_table.stream_allocations[i];
+
+ if (dc_alloc->vcp_id == new_payload->vcpi) {
+ old_payload->time_slots = dc_alloc->slot_count;
+ old_payload->pbn = dc_alloc->slot_count * pbn_per_slot;
+ break;
+ }
+ }
+
+ /* make sure there is an old payload*/
+ ASSERT(i != current_link_table.stream_count);
+
+}
+
/*
* Writes payload allocation table in immediate downstream device.
*/
@@ -186,7 +220,7 @@ bool dm_helpers_dp_mst_write_payload_allocation_table(
{
struct amdgpu_dm_connector *aconnector;
struct drm_dp_mst_topology_state *mst_state;
- struct drm_dp_mst_atomic_payload *payload;
+ struct drm_dp_mst_atomic_payload *target_payload, *new_payload, old_payload;
struct drm_dp_mst_topology_mgr *mst_mgr;
aconnector = (struct amdgpu_dm_connector *)stream->dm_stream_context;
@@ -202,17 +236,26 @@ bool dm_helpers_dp_mst_write_payload_allocation_table(
mst_state = to_drm_dp_mst_topology_state(mst_mgr->base.state);
/* It's OK for this to fail */
- payload = drm_atomic_get_mst_payload_state(mst_state, aconnector->port);
- if (enable)
- drm_dp_add_payload_part1(mst_mgr, mst_state, payload);
- else
- drm_dp_remove_payload(mst_mgr, mst_state, payload, payload);
+ new_payload = drm_atomic_get_mst_payload_state(mst_state, aconnector->port);
+
+ if (enable) {
+ target_payload = new_payload;
+
+ drm_dp_add_payload_part1(mst_mgr, mst_state, new_payload);
+ } else {
+ /* construct old payload by VCPI*/
+ dm_helpers_construct_old_payload(stream->link, mst_state->pbn_div,
+ new_payload, &old_payload);
+ target_payload = &old_payload;
+
+ drm_dp_remove_payload(mst_mgr, mst_state, &old_payload, new_payload);
+ }
/* mst_mgr->->payloads are VC payload notify MST branch using DPCD or
* AUX message. The sequence is slot 1-63 allocated sequence for each
* stream. AMD ASIC stream slot allocation should follow the same
* sequence. copy DRM MST allocation to dc */
- fill_dc_mst_payload_table_from_drm(stream->link, enable, payload, proposed_table);
+ fill_dc_mst_payload_table_from_drm(stream->link, enable, target_payload, proposed_table);
return true;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 6.2 6.1 0/1] Fix regression in 6.2.10
2023-04-14 19:56 [PATCH 6.2 6.1 0/1] Fix regression in 6.2.10 Mario Limonciello
2023-04-14 19:56 ` [PATCH 6.2 6.1 1/1] drm/amd/display: Pass the right info to drm_dp_remove_payload Mario Limonciello
@ 2023-04-15 6:50 ` Greg KH
1 sibling, 0 replies; 3+ messages in thread
From: Greg KH @ 2023-04-15 6:50 UTC (permalink / raw)
To: Mario Limonciello; +Cc: stable, Veronika Schwan, Jerry.Zuo
On Fri, Apr 14, 2023 at 02:56:33PM -0500, Mario Limonciello wrote:
> Veronika Schwan reported an MST regression introduced in 6.2.10 by
> a backport of commit d7b5638bd337 ("drm/amd/display: Take FEC Overhead
> into Timeslot Calculation") into stable.
>
> This fix was actually correct, but there was a related fix that should
> have come back as well. This is a backport of that fix for 6.2.y
> and 6.1.y.
>
> Due to another code change, it's not a straight backport, but it's just
> a one line change from context that changed in other patches.
> Wayne Lin (1):
> drm/amd/display: Pass the right info to drm_dp_remove_payload
>
> .../amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 57 ++++++++++++++++---
> 1 file changed, 50 insertions(+), 7 deletions(-)
>
> --
> 2.34.1
>
Now queued up, thanks.
greg k-h
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-04-15 6:51 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-14 19:56 [PATCH 6.2 6.1 0/1] Fix regression in 6.2.10 Mario Limonciello
2023-04-14 19:56 ` [PATCH 6.2 6.1 1/1] drm/amd/display: Pass the right info to drm_dp_remove_payload Mario Limonciello
2023-04-15 6:50 ` [PATCH 6.2 6.1 0/1] Fix regression in 6.2.10 Greg KH
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.