History

Merge tag 'amd-drm-fixes-6.18-2025-11-26' of https://gitlab.freedesktop.org/agd5f/linux into drm-fixes

amd-drm-fixes-6.18-2025-11-26: amdgpu: - Unified MES fix - HDMI fix - Cursor fix - Bightness fix - EDID reading improvement - UserQ fix - Cyan Skillfish IP discovery fix Signed-off-by: Dave Airlie <airlied@redhat.com>

Dave Airlie committed 11 months ago

Commit 4fc3ad62 parents b31e2e3 7fa666a11 files · +36 −20Browse files

Unified · Split

11 files
  1. drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +2 −0
  2. drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c +3 −0
  3. drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +1 −1
  4. drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +15 −0
  5. drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c +4 −4
  6. drivers/gpu/drm/amd/display/dc/core/dc_stream.c +8 −3
  7. drivers/gpu/drm/amd/display/dc/hwss/dce110/dce110_hwseq.c +0 −1
  8. drivers/gpu/drm/amd/display/dc/hwss/dcn20/dcn20_hwseq.c +0 −2
  9. drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c +0 −2
  10. drivers/gpu/drm/amd/display/dc/link/link_dpms.c +3 −0
  11. drivers/gpu/drm/amd/display/dc/virtual/virtual_stream_encoder.c +0 −7
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c+2−0
@@ -2638,6 +2638,8 @@ static int amdgpu_device_parse_gpu_info_fw(struct amdgpu_device *adev) · 2637 unmodified lines
26382638 chip_name = "navi12";
26392639 break;
26402640 case CHIP_CYAN_SKILLFISH:
2641+ if (adev->mman.discovery_bin)
2642+ return 0;
26412643 chip_name = "cyan_skillfish";
26422644 break;
26432645 }
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c+3−0
@@ -597,6 +597,9 @@ int amdgpu_gmc_allocate_vm_inv_eng(struct amdgpu_device *adev) · 596 unmodified lines
597597 /* reserve engine 5 for firmware */
598598 if (adev->enable_mes)
599599 vm_inv_engs[i] &= ~(1 << 5);
600+ /* reserve engine 6 for uni mes */
601+ if (adev->enable_uni_mes)
602+ vm_inv_engs[i] &= ~(1 << 6);
600603 /* reserve mmhub engine 3 for firmware */
601604 if (adev->enable_umsch_mm)
602605 vm_inv_engs[i] &= ~(1 << 3);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c+1−1
@@ -1066,7 +1066,7 @@ amdgpu_vm_tlb_flush(struct amdgpu_vm_update_params *params, · 1065 unmodified lines
10661066 }
10671067
10681068 /* Prepare a TLB flush fence to be attached to PTs */
1069− if (!params->unlocked && vm->is_compute_context) {
1069+ if (!params->unlocked) {
10701070 amdgpu_vm_tlb_fence_create(params->adev, vm, fence);
10711071
10721072 /* Makes sure no PD/PT is freed before the flush */
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c+15−0
@@ -5052,6 +5052,21 @@ static void amdgpu_dm_backlight_set_level(struct amdgpu_display_manager *dm, · 5051 unmodified lines
50525052 struct dc_link *link;
50535053 u32 brightness;
50545054 bool rc, reallow_idle = false;
5055+ struct drm_connector *connector;
5056+
5057+ list_for_each_entry(connector, &dm->ddev->mode_config.connector_list, head) {
5058+ struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
5059+
5060+ if (aconnector->bl_idx != bl_idx)
5061+ continue;
5062+
5063+ /* if connector is off, save the brightness for next time it's on */
5064+ if (!aconnector->base.encoder) {
5065+ dm->brightness[bl_idx] = user_brightness;
5066+ dm->actual_brightness[bl_idx] = 0;
5067+ return;
5068+ }
5069+ }
50555070
50565071 amdgpu_dm_update_backlight_caps(dm, bl_idx);
50575072 caps = &dm->backlight_caps[bl_idx];
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c+4−4
@@ -997,8 +997,8 @@ enum dc_edid_status dm_helpers_read_local_edid( · 996 unmodified lines
997997 struct amdgpu_dm_connector *aconnector = link->priv;
998998 struct drm_connector *connector = &aconnector->base;
999999 struct i2c_adapter *ddc;
1000− int retry = 3;
1001− enum dc_edid_status edid_status;
1000+ int retry = 25;
1001+ enum dc_edid_status edid_status = EDID_NO_RESPONSE;
10021002 const struct drm_edid *drm_edid;
10031003 const struct edid *edid;
10041004
@@ -1028,7 +1028,7 @@ enum dc_edid_status dm_helpers_read_local_edid( · 23 unmodified lines
10281028 }
10291029
10301030 if (!drm_edid)
1031− return EDID_NO_RESPONSE;
1031+ continue;
10321032
10331033 edid = drm_edid_raw(drm_edid); // FIXME: Get rid of drm_edid_raw()
10341034 if (!edid ||
@@ -1046,7 +1046,7 @@ enum dc_edid_status dm_helpers_read_local_edid( · 11 unmodified lines
10461046 &sink->dc_edid,
10471047 &sink->edid_caps);
10481048
1049− } while (edid_status == EDID_BAD_CHECKSUM && --retry > 0);
1049+ } while ((edid_status == EDID_BAD_CHECKSUM || edid_status == EDID_NO_RESPONSE) && --retry > 0);
10501050
10511051 if (edid_status != EDID_OK)
10521052 DRM_ERROR("EDID err: %d, on connector: %s",
drivers/gpu/drm/amd/display/dc/core/dc_stream.c+8−3
@@ -705,9 +705,14 @@ bool dc_stream_get_scanoutpos(const struct dc_stream_state *stream, · 704 unmodified lines
705705 {
706706 uint8_t i;
707707 bool ret = false;
708− struct dc *dc = stream->ctx->dc;
709− struct resource_context *res_ctx =
710− &dc->current_state->res_ctx;
708+ struct dc *dc;
709+ struct resource_context *res_ctx;
710+
711+ if (!stream->ctx)
712+ return false;
713+
714+ dc = stream->ctx->dc;
715+ res_ctx = &dc->current_state->res_ctx;
711716
712717 dc_exit_ips_for_hw_access(dc);
713718
drivers/gpu/drm/amd/display/dc/hwss/dce110/dce110_hwseq.c+0−1
@@ -671,7 +671,6 @@ void dce110_enable_stream(struct pipe_ctx *pipe_ctx) · 670 unmodified lines
671671 uint32_t early_control = 0;
672672 struct timing_generator *tg = pipe_ctx->stream_res.tg;
673673
674− link_hwss->setup_stream_attribute(pipe_ctx);
675674 link_hwss->setup_stream_encoder(pipe_ctx);
676675
677676 dc->hwss.update_info_frame(pipe_ctx);
drivers/gpu/drm/amd/display/dc/hwss/dcn20/dcn20_hwseq.c+0−2
@@ -3060,8 +3060,6 @@ void dcn20_enable_stream(struct pipe_ctx *pipe_ctx) · 3059 unmodified lines
30603060 link_enc->transmitter - TRANSMITTER_UNIPHY_A);
30613061 }
30623062
3063− link_hwss->setup_stream_attribute(pipe_ctx);
3064−
30653063 if (dc->res_pool->dccg->funcs->set_pixel_rate_div)
30663064 dc->res_pool->dccg->funcs->set_pixel_rate_div(
30673065 dc->res_pool->dccg,
drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c+0−2
@@ -971,8 +971,6 @@ void dcn401_enable_stream(struct pipe_ctx *pipe_ctx) · 970 unmodified lines
971971 }
972972 }
973973
974− link_hwss->setup_stream_attribute(pipe_ctx);
975−
976974 if (dc->res_pool->dccg->funcs->set_pixel_rate_div) {
977975 dc->res_pool->dccg->funcs->set_pixel_rate_div(
978976 dc->res_pool->dccg,
drivers/gpu/drm/amd/display/dc/link/link_dpms.c+3−0
@@ -2458,6 +2458,7 @@ void link_set_dpms_on( · 2457 unmodified lines
24582458 struct link_encoder *link_enc = pipe_ctx->link_res.dio_link_enc;
24592459 enum otg_out_mux_dest otg_out_dest = OUT_MUX_DIO;
24602460 struct vpg *vpg = pipe_ctx->stream_res.stream_enc->vpg;
2461+ const struct link_hwss *link_hwss = get_link_hwss(link, &pipe_ctx->link_res);
24612462 bool apply_edp_fast_boot_optimization =
24622463 pipe_ctx->stream->apply_edp_fast_boot_optimization;
24632464
@@ -2502,6 +2503,8 @@ void link_set_dpms_on( · 38 unmodified lines
25022503 pipe_ctx->stream_res.tg->funcs->set_out_mux(pipe_ctx->stream_res.tg, otg_out_dest);
25032504 }
25042505
2506+ link_hwss->setup_stream_attribute(pipe_ctx);
2507+
25052508 pipe_ctx->stream->apply_edp_fast_boot_optimization = false;
25062509
25072510 // Enable VPG before building infoframe
drivers/gpu/drm/amd/display/dc/virtual/virtual_stream_encoder.c+0−7
@@ -44,11 +44,6 @@ static void virtual_stream_encoder_dvi_set_stream_attribute( · 43 unmodified lines
4444 struct dc_crtc_timing *crtc_timing,
4545 bool is_dual_link) {}
4646
47−static void virtual_stream_encoder_lvds_set_stream_attribute(
48− struct stream_encoder *enc,
49− struct dc_crtc_timing *crtc_timing)
50−{}
51−
5247 static void virtual_stream_encoder_set_throttled_vcp_size(
5348 struct stream_encoder *enc,
5449 struct fixed31_32 avg_time_slots_per_mtp)
@@ -120,8 +115,6 @@ static const struct stream_encoder_funcs virtual_str_enc_funcs = { · 65 unmodified lines
120115 virtual_stream_encoder_hdmi_set_stream_attribute,
121116 .dvi_set_stream_attribute =
122117 virtual_stream_encoder_dvi_set_stream_attribute,
123− .lvds_set_stream_attribute =
124− virtual_stream_encoder_lvds_set_stream_attribute,
125118 .set_throttled_vcp_size =
126119 virtual_stream_encoder_set_throttled_vcp_size,
127120 .update_hdmi_info_packets =