Commit 3ee2d00c authored by Felix Kuehling's avatar Felix Kuehling Committed by Oded Gabbay
Browse files

drm/amdkfd: Conditionally enable PCIe atomics



This will be needed for most dGPUs.

CC: linux-pci@vger.kernel.org
Signed-off-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Reviewed-by: default avatarOded Gabbay <oded.gabbay@gmail.com>
Signed-off-by: default avatarOded Gabbay <oded.gabbay@gmail.com>
parent 3f866f5f
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ static const struct kfd_device_info kaveri_device_info = {
	.num_of_watch_points = 4,
	.mqd_size_aligned = MQD_SIZE_ALIGNED,
	.supports_cwsr = false,
	.needs_pci_atomics = false,
};

static const struct kfd_device_info carrizo_device_info = {
@@ -53,6 +54,7 @@ static const struct kfd_device_info carrizo_device_info = {
	.num_of_watch_points = 4,
	.mqd_size_aligned = MQD_SIZE_ALIGNED,
	.supports_cwsr = true,
	.needs_pci_atomics = false,
};

struct kfd_deviceid {
@@ -127,6 +129,21 @@ struct kfd_dev *kgd2kfd_probe(struct kgd_dev *kgd,
		return NULL;
	}

	if (device_info->needs_pci_atomics) {
		/* Allow BIF to recode atomics to PCIe 3.0
		 * AtomicOps. 32 and 64-bit requests are possible and
		 * must be supported.
		 */
		if (pci_enable_atomic_ops_to_root(pdev,
				PCI_EXP_DEVCAP2_ATOMIC_COMP32 |
				PCI_EXP_DEVCAP2_ATOMIC_COMP64) < 0) {
			dev_info(kfd_device,
				"skipped device %x:%x, PCI rejects atomics",
				 pdev->vendor, pdev->device);
			return NULL;
		}
	}

	kfd = kzalloc(sizeof(*kfd), GFP_KERNEL);
	if (!kfd)
		return NULL;
+1 −0
Original line number Diff line number Diff line
@@ -158,6 +158,7 @@ struct kfd_device_info {
	uint8_t num_of_watch_points;
	uint16_t mqd_size_aligned;
	bool supports_cwsr;
	bool needs_pci_atomics;
};

struct kfd_mem_obj {