Commit 1d4624cd authored by Alex Deucher's avatar Alex Deucher
Browse files

drm/amdgpu: handle polaris10/11 overlap asics (v2)



Some special polaris 10 chips overlap with the polaris11
DID range.  Handle this properly in the driver.

v2: use local flags for other function calls.

Acked-by: default avatarLuben Tuikov <luben.tuikov@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
parent 81d0bcf9
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -2039,6 +2039,15 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,
			 "See modparam exp_hw_support\n");
		return -ENODEV;
	}
	/* differentiate between P10 and P11 asics with the same DID */
	if (pdev->device == 0x67FF &&
	    (pdev->revision == 0xE3 ||
	     pdev->revision == 0xE7 ||
	     pdev->revision == 0xF3 ||
	     pdev->revision == 0xF7)) {
		flags &= ~AMD_ASIC_MASK;
		flags |= CHIP_POLARIS10;
	}

	/* Due to hardware bugs, S/G Display on raven requires a 1:1 IOMMU mapping,
	 * however, SME requires an indirect IOMMU mapping because the encryption
@@ -2108,12 +2117,12 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,

	pci_set_drvdata(pdev, ddev);

	ret = amdgpu_driver_load_kms(adev, ent->driver_data);
	ret = amdgpu_driver_load_kms(adev, flags);
	if (ret)
		goto err_pci;

retry_init:
	ret = drm_dev_register(ddev, ent->driver_data);
	ret = drm_dev_register(ddev, flags);
	if (ret == -EAGAIN && ++retry <= 3) {
		DRM_INFO("retry init %d\n", retry);
		/* Don't request EX mode too frequently which is attacking */