Subject: linux-next: manual merge of the drm tree with the drm-fixes tree

From: Mark Brown <[email-masked]>
Date: Fri, 3 Apr 2026 14:33:54 +0100

Hi all,

Today's linux-next merge of the drm tree got conflicts in:

  drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
  drivers/gpu/drm/amd/pm/swsmu/smu12/smu_v12_0.c
  drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c

between commit:

  a3ffaa5b397f4 ("drm/amdgpu/pm: drop SMU driver if version not matched messages")

from the drm-fixes tree and commits:

  6b0a6116286ef ("drm/amd/pm: Unify version check in SMUv11")
  353f200825051 ("drm/amd/pm: Unify version check in SMUv12")
  964e532d58378 ("drm/amd/pm: Unify version check in SMUv14")

from the drm tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

diff --combined drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
index 7ca8fdd23206e,d68ceee16d8f1..0000000000000
--- a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
@@@ -192,81 -192,6 +192,6 @@@ int smu_v11_0_check_fw_status(struct sm
  	return -EIO;
  }
  
- int smu_v11_0_check_fw_version(struct smu_context *smu)
- {
- 	struct amdgpu_device *adev = smu->adev;
- 	uint32_t if_version = 0xff, smu_version = 0xff;
- 	uint8_t smu_program, smu_major, smu_minor, smu_debug;
- 	int ret = 0;
- 
- 	ret = smu_cmn_get_smc_version(smu, &if_version, &smu_version);
- 	if (ret)
- 		return ret;
- 
- 	smu_program = (smu_version >> 24) & 0xff;
- 	smu_major = (smu_version >> 16) & 0xff;
- 	smu_minor = (smu_version >> 8) & 0xff;
- 	smu_debug = (smu_version >> 0) & 0xff;
- 	if (smu->is_apu)
- 		adev->pm.fw_version = smu_version;
- 
- 	switch (amdgpu_ip_version(adev, MP1_HWIP, 0)) {
- 	case IP_VERSION(11, 0, 0):
- 		smu->smc_driver_if_version = SMU11_DRIVER_IF_VERSION_NV10;
- 		break;
- 	case IP_VERSION(11, 0, 9):
- 		smu->smc_driver_if_version = SMU11_DRIVER_IF_VERSION_NV12;
- 		break;
- 	case IP_VERSION(11, 0, 5):
- 		smu->smc_driver_if_version = SMU11_DRIVER_IF_VERSION_NV14;
- 		break;
- 	case IP_VERSION(11, 0, 7):
- 		smu->smc_driver_if_version = SMU11_DRIVER_IF_VERSION_Sienna_Cichlid;
- 		break;
- 	case IP_VERSION(11, 0, 11):
- 		smu->smc_driver_if_version = SMU11_DRIVER_IF_VERSION_Navy_Flounder;
- 		break;
- 	case IP_VERSION(11, 5, 0):
- 	case IP_VERSION(11, 5, 2):
- 		smu->smc_driver_if_version = SMU11_DRIVER_IF_VERSION_VANGOGH;
- 		break;
- 	case IP_VERSION(11, 0, 12):
- 		smu->smc_driver_if_version = SMU11_DRIVER_IF_VERSION_Dimgrey_Cavefish;
- 		break;
- 	case IP_VERSION(11, 0, 13):
- 		smu->smc_driver_if_version = SMU11_DRIVER_IF_VERSION_Beige_Goby;
- 		break;
- 	case IP_VERSION(11, 0, 8):
- 		smu->smc_driver_if_version = SMU11_DRIVER_IF_VERSION_Cyan_Skillfish;
- 		break;
- 	case IP_VERSION(11, 0, 2):
- 		smu->smc_driver_if_version = SMU11_DRIVER_IF_VERSION_ARCT;
- 		break;
- 	default:
- 		dev_err(smu->adev->dev, "smu unsupported IP version: 0x%x.\n",
- 			amdgpu_ip_version(adev, MP1_HWIP, 0));
- 		smu->smc_driver_if_version = SMU11_DRIVER_IF_VERSION_INV;
- 		break;
- 	}
- 
- 	/*
- 	 * 1. if_version mismatch is not critical as our fw is designed
- 	 * to be backward compatible.
- 	 * 2. New fw usually brings some optimizations. But that's visible
- 	 * only on the paired driver.
- 	 * Considering above, we just leave user a verbal message instead
- 	 * of halt driver loading.
- 	 */
- 	if (if_version != smu->smc_driver_if_version) {
- 		dev_info(smu->adev->dev, "smu driver if version = 0x%08x, smu fw if version = 0x%08x, "
- 			"smu fw program = %d, version = 0x%08x (%d.%d.%d)\n",
- 			smu->smc_driver_if_version, if_version,
- 			smu_program, smu_version, smu_major, smu_minor, smu_debug);
- 	}
- 
- 	return ret;
- }
- 
  static int smu_v11_0_set_pptable_v2_0(struct smu_context *smu, void **table, uint32_t *size)
  {
  	struct amdgpu_device *adev = smu->adev;
diff --combined drivers/gpu/drm/amd/pm/swsmu/smu12/smu_v12_0.c
index ac5e44dff6c97,f09da4d14510b..0000000000000
--- a/drivers/gpu/drm/amd/pm/swsmu/smu12/smu_v12_0.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu12/smu_v12_0.c
@@@ -70,42 -70,6 +70,6 @@@ int smu_v12_0_check_fw_status(struct sm
  	return -EIO;
  }
  
- int smu_v12_0_check_fw_version(struct smu_context *smu)
- {
- 	struct amdgpu_device *adev = smu->adev;
- 	uint32_t if_version = 0xff, smu_version = 0xff;
- 	uint8_t smu_program, smu_major, smu_minor, smu_debug;
- 	int ret = 0;
- 
- 	ret = smu_cmn_get_smc_version(smu, &if_version, &smu_version);
- 	if (ret)
- 		return ret;
- 
- 	smu_program = (smu_version >> 24) & 0xff;
- 	smu_major = (smu_version >> 16) & 0xff;
- 	smu_minor = (smu_version >> 8) & 0xff;
- 	smu_debug = (smu_version >> 0) & 0xff;
- 	if (smu->is_apu)
- 		adev->pm.fw_version = smu_version;
- 
- 	/*
- 	 * 1. if_version mismatch is not critical as our fw is designed
- 	 * to be backward compatible.
- 	 * 2. New fw usually brings some optimizations. But that's visible
- 	 * only on the paired driver.
- 	 * Considering above, we just leave user a verbal message instead
- 	 * of halt driver loading.
- 	 */
- 	if (if_version != smu->smc_driver_if_version) {
- 		dev_info(smu->adev->dev, "smu driver if version = 0x%08x, smu fw if version = 0x%08x, "
- 			"smu fw program = %d, smu fw version = 0x%08x (%d.%d.%d)\n",
- 			smu->smc_driver_if_version, if_version,
- 			smu_program, smu_version, smu_major, smu_minor, smu_debug);
- 	}
- 
- 	return ret;
- }
- 
  int smu_v12_0_powergate_sdma(struct smu_context *smu, bool gate)
  {
  	if (!smu->is_apu)
diff --combined drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c
index e38354c694c95,d0a8df1aa6b64..0000000000000
--- a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c
@@@ -229,66 -229,6 +229,6 @@@ int smu_v14_0_check_fw_status(struct sm
  	return -EIO;
  }
  
- int smu_v14_0_check_fw_version(struct smu_context *smu)
- {
- 	struct amdgpu_device *adev = smu->adev;
- 	uint32_t if_version = 0xff, smu_version = 0xff;
- 	uint8_t smu_program, smu_major, smu_minor, smu_debug;
- 	int ret = 0;
- 
- 	ret = smu_cmn_get_smc_version(smu, &if_version, &smu_version);
- 	if (ret)
- 		return ret;
- 
- 	smu_program = (smu_version >> 24) & 0xff;
- 	smu_major = (smu_version >> 16) & 0xff;
- 	smu_minor = (smu_version >> 8) & 0xff;
- 	smu_debug = (smu_version >> 0) & 0xff;
- 	if (smu->is_apu)
- 		adev->pm.fw_version = smu_version;
- 
- 	switch (amdgpu_ip_version(adev, MP1_HWIP, 0)) {
- 	case IP_VERSION(14, 0, 0):
- 	case IP_VERSION(14, 0, 4):
- 	case IP_VERSION(14, 0, 5):
- 		smu->smc_driver_if_version = SMU14_DRIVER_IF_VERSION_SMU_V14_0_0;
- 		break;
- 	case IP_VERSION(14, 0, 1):
- 		smu->smc_driver_if_version = SMU14_DRIVER_IF_VERSION_SMU_V14_0_1;
- 		break;
- 	case IP_VERSION(14, 0, 2):
- 	case IP_VERSION(14, 0, 3):
- 		smu->smc_driver_if_version = SMU14_DRIVER_IF_VERSION_SMU_V14_0_2;
- 		break;
- 	default:
- 		dev_err(adev->dev, "smu unsupported IP version: 0x%x.\n",
- 			amdgpu_ip_version(adev, MP1_HWIP, 0));
- 		smu->smc_driver_if_version = SMU14_DRIVER_IF_VERSION_INV;
- 		break;
- 	}
- 
- 	if (adev->pm.fw)
- 		dev_dbg(smu->adev->dev, "smu fw reported program %d, version = 0x%08x (%d.%d.%d)\n",
- 			 smu_program, smu_version, smu_major, smu_minor, smu_debug);
- 
- 	/*
- 	 * 1. if_version mismatch is not critical as our fw is designed
- 	 * to be backward compatible.
- 	 * 2. New fw usually brings some optimizations. But that's visible
- 	 * only on the paired driver.
- 	 * Considering above, we just leave user a verbal message instead
- 	 * of halt driver loading.
- 	 */
- 	if (if_version != smu->smc_driver_if_version) {
- 		dev_info(adev->dev, "smu driver if version = 0x%08x, smu fw if version = 0x%08x, "
- 			 "smu fw program = %d, smu fw version = 0x%08x (%d.%d.%d)\n",
- 			 smu->smc_driver_if_version, if_version,
- 			 smu_program, smu_version, smu_major, smu_minor, smu_debug);
- 	}
- 
- 	return ret;
- }
- 
  static int smu_v14_0_set_pptable_v2_0(struct smu_context *smu, void **table, uint32_t *size)
  {
  	struct amdgpu_device *adev = smu->adev;