Commit 4fc3ad63 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'amd-drm-fixes-6.18-2025-11-26' of...

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: default avatarDave Airlie <airlied@redhat.com>

From: Alex Deucher <alexander.deucher@amd.com>
Link: https://patch.msgid.link/20251126204925.3316684-1-alexander.deucher@amd.com
parents b31e2e3b 7fa666ab
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2638,6 +2638,8 @@ static int amdgpu_device_parse_gpu_info_fw(struct amdgpu_device *adev)
		chip_name = "navi12";
		break;
	case CHIP_CYAN_SKILLFISH:
		if (adev->mman.discovery_bin)
			return 0;
		chip_name = "cyan_skillfish";
		break;
	}
+3 −0
Original line number Diff line number Diff line
@@ -597,6 +597,9 @@ int amdgpu_gmc_allocate_vm_inv_eng(struct amdgpu_device *adev)
		/* reserve engine 5 for firmware */
		if (adev->enable_mes)
			vm_inv_engs[i] &= ~(1 << 5);
		/* reserve engine 6 for uni mes */
		if (adev->enable_uni_mes)
			vm_inv_engs[i] &= ~(1 << 6);
		/* reserve mmhub engine 3 for firmware */
		if (adev->enable_umsch_mm)
			vm_inv_engs[i] &= ~(1 << 3);
+1 −1
Original line number Diff line number Diff line
@@ -1066,7 +1066,7 @@ amdgpu_vm_tlb_flush(struct amdgpu_vm_update_params *params,
	}

	/* Prepare a TLB flush fence to be attached to PTs */
	if (!params->unlocked && vm->is_compute_context) {
	if (!params->unlocked) {
		amdgpu_vm_tlb_fence_create(params->adev, vm, fence);

		/* Makes sure no PD/PT is freed before the flush */
+15 −0
Original line number Diff line number Diff line
@@ -5052,6 +5052,21 @@ static void amdgpu_dm_backlight_set_level(struct amdgpu_display_manager *dm,
	struct dc_link *link;
	u32 brightness;
	bool rc, reallow_idle = false;
	struct drm_connector *connector;

	list_for_each_entry(connector, &dm->ddev->mode_config.connector_list, head) {
		struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);

		if (aconnector->bl_idx != bl_idx)
			continue;

		/* if connector is off, save the brightness for next time it's on */
		if (!aconnector->base.encoder) {
			dm->brightness[bl_idx] = user_brightness;
			dm->actual_brightness[bl_idx] = 0;
			return;
		}
	}

	amdgpu_dm_update_backlight_caps(dm, bl_idx);
	caps = &dm->backlight_caps[bl_idx];
+4 −4
Original line number Diff line number Diff line
@@ -997,8 +997,8 @@ enum dc_edid_status dm_helpers_read_local_edid(
	struct amdgpu_dm_connector *aconnector = link->priv;
	struct drm_connector *connector = &aconnector->base;
	struct i2c_adapter *ddc;
	int retry = 3;
	enum dc_edid_status edid_status;
	int retry = 25;
	enum dc_edid_status edid_status = EDID_NO_RESPONSE;
	const struct drm_edid *drm_edid;
	const struct edid *edid;

@@ -1028,7 +1028,7 @@ enum dc_edid_status dm_helpers_read_local_edid(
		}

		if (!drm_edid)
			return EDID_NO_RESPONSE;
			continue;

		edid = drm_edid_raw(drm_edid); // FIXME: Get rid of drm_edid_raw()
		if (!edid ||
@@ -1046,7 +1046,7 @@ enum dc_edid_status dm_helpers_read_local_edid(
						&sink->dc_edid,
						&sink->edid_caps);

	} while (edid_status == EDID_BAD_CHECKSUM && --retry > 0);
	} while ((edid_status == EDID_BAD_CHECKSUM || edid_status == EDID_NO_RESPONSE) && --retry > 0);

	if (edid_status != EDID_OK)
		DRM_ERROR("EDID err: %d, on connector: %s",
Loading