Commit deb68983 authored by Jonathan Kim's avatar Jonathan Kim Committed by Alex Deucher
Browse files

drm/amdkfd: report atomics support in io_links over xgmi



Link atomics support over xGMI should be reported independently of PCIe.
Do not set NO_ATOMICS flags on devices that support xGMI but that do not
have atomics support over PCIe.

Signed-off-by: default avatarJonathan Kim <jonathan.kim@amd.com>
Tested-by: default avatarRamesh Errabolu <ramesh.errabolu@amd.com>
Reviewed-by: default avatarFelix Kuehling <felix.kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent d1dfd370
Loading
Loading
Loading
Loading
+18 −11
Original line number Diff line number Diff line
@@ -1196,6 +1196,7 @@ static void kfd_fill_iolink_non_crat_info(struct kfd_topology_device *dev)
{
	struct kfd_iolink_properties *link, *cpu_link;
	struct kfd_topology_device *cpu_dev;
	struct amdgpu_device *adev;
	uint32_t cap;
	uint32_t cpu_flag = CRAT_IOLINK_FLAGS_ENABLED;
	uint32_t flag = CRAT_IOLINK_FLAGS_ENABLED;
@@ -1203,6 +1204,8 @@ static void kfd_fill_iolink_non_crat_info(struct kfd_topology_device *dev)
	if (!dev || !dev->gpu)
		return;

	adev = (struct amdgpu_device *)(dev->gpu->kgd);
	if (!adev->gmc.xgmi.connected_to_cpu) {
		pcie_capability_read_dword(dev->gpu->pdev,
				PCI_EXP_DEVCAP2, &cap);

@@ -1210,11 +1213,15 @@ static void kfd_fill_iolink_non_crat_info(struct kfd_topology_device *dev)
			     PCI_EXP_DEVCAP2_ATOMIC_COMP64)))
			cpu_flag |= CRAT_IOLINK_FLAGS_NO_ATOMICS_32_BIT |
				CRAT_IOLINK_FLAGS_NO_ATOMICS_64_BIT;
	}

	if (!adev->gmc.xgmi.num_physical_nodes) {
		if (!dev->gpu->pci_atomic_requested ||
	    dev->gpu->device_info->asic_family == CHIP_HAWAII)
				dev->gpu->device_info->asic_family ==
							CHIP_HAWAII)
			flag |= CRAT_IOLINK_FLAGS_NO_ATOMICS_32_BIT |
				CRAT_IOLINK_FLAGS_NO_ATOMICS_64_BIT;
	}

	/* GPU only creates direct links so apply flags setting to all */
	list_for_each_entry(link, &dev->io_link_props, list) {