Commit 11964258 authored by Kent Russell's avatar Kent Russell Committed by Alex Deucher
Browse files

drm/amdkfd: Get unique_id dynamically v2



Instead of caching the value during amdgpu_device_init, just call the
function directly. This avoids issues where the unique_id hasn't been
saved by the time that KFD's topology snapshot is done (e.g. Arcturus).

KFD's topology information from the amdgpu_device was initially cached
at KFD initialization due to amdkfd and amdgpu being separate modules.
Now that they are combined together, we can directly call the functions
that we need and avoid this unnecessary duplication and complexity.

As a side-effect of this change, we also remove unique_id=0 for CPUs,
which is obviously not unique.

v2: Drop previous patch printing unique_id in hex

Signed-off-by: default avatarKent Russell <kent.russell@amd.com>
Reviewed-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 62826b86
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -497,8 +497,6 @@ static ssize_t node_show(struct kobject *kobj, struct attribute *attr,
			      dev->node_props.num_sdma_queues_per_engine);
	sysfs_show_32bit_prop(buffer, offs, "num_cp_queues",
			      dev->node_props.num_cp_queues);
	sysfs_show_64bit_prop(buffer, offs, "unique_id",
			      dev->node_props.unique_id);

	if (dev->gpu) {
		log_max_watch_addr =
@@ -529,6 +527,9 @@ static ssize_t node_show(struct kobject *kobj, struct attribute *attr,
				      dev->node_props.capability);
		sysfs_show_32bit_prop(buffer, offs, "sdma_fw_version",
				      dev->gpu->sdma_fw_version);
		sysfs_show_64bit_prop(buffer, offs, "unique_id",
				      amdgpu_amdkfd_get_unique_id(dev->gpu->kgd));

	}

	return sysfs_show_32bit_prop(buffer, offs, "max_engine_clk_ccompute",
@@ -1340,7 +1341,6 @@ int kfd_topology_add_device(struct kfd_dev *gpu)
		dev->gpu->dqm->sched_policy != KFD_SCHED_POLICY_NO_HWS) ?
		amdgpu_amdkfd_get_num_gws(dev->gpu->kgd) : 0;
	dev->node_props.num_cp_queues = get_cp_queues_num(dev->gpu->dqm);
	dev->node_props.unique_id = amdgpu_amdkfd_get_unique_id(dev->gpu->kgd);

	kfd_fill_mem_clk_max_info(dev);
	kfd_fill_iolink_non_crat_info(dev);
+0 −1
Original line number Diff line number Diff line
@@ -57,7 +57,6 @@

struct kfd_node_properties {
	uint64_t hive_id;
	uint64_t unique_id;
	uint32_t cpu_cores_count;
	uint32_t simd_count;
	uint32_t mem_banks_count;