[PATCH v2 04/23] drm/amdkfd: add pc sampling mutex
James Zhu
James.Zhu at amd.com
Thu Dec 7 22:54:03 UTC 2023
Add pc sampling mutex per node, and do init/destroy in node init.
Signed-off-by: James Zhu <James.Zhu at amd.com>
---
drivers/gpu/drm/amd/amdkfd/kfd_device.c | 12 ++++++++++++
drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 7 +++++++
2 files changed, 19 insertions(+)
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
index 0a9cf9dfc224..0e24e011f66b 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
@@ -533,6 +533,16 @@ static void kfd_smi_init(struct kfd_node *dev)
spin_lock_init(&dev->smi_lock);
}
+static void kfd_pc_sampling_init(struct kfd_node *dev)
+{
+ mutex_init(&dev->pcs_data.mutex);
+}
+
+static void kfd_pc_sampling_exit(struct kfd_node *dev)
+{
+ mutex_destroy(&dev->pcs_data.mutex);
+}
+
static int kfd_init_node(struct kfd_node *node)
{
int err = -1;
@@ -563,6 +573,7 @@ static int kfd_init_node(struct kfd_node *node)
}
kfd_smi_init(node);
+ kfd_pc_sampling_init(node);
return 0;
@@ -593,6 +604,7 @@ static void kfd_cleanup_nodes(struct kfd_dev *kfd, unsigned int num_nodes)
kfd_topology_remove_device(knode);
if (knode->gws)
amdgpu_amdkfd_free_gws(knode->adev, knode->gws);
+ kfd_pc_sampling_exit(knode);
kfree(knode);
kfd->nodes[i] = NULL;
}
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
index 99426182bfc6..cbaa1bccd94b 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
@@ -269,6 +269,11 @@ struct kfd_vmid_info {
struct kfd_dev;
+/* Per device PC Sampling data */
+struct kfd_dev_pc_sampling {
+ struct mutex mutex;
+};
+
struct kfd_node {
unsigned int node_id;
struct amdgpu_device *adev; /* Duplicated here along with keeping
@@ -322,6 +327,8 @@ struct kfd_node {
struct kfd_local_mem_info local_mem_info;
struct kfd_dev *kfd;
+
+ struct kfd_dev_pc_sampling pcs_data;
};
struct kfd_dev {
--
2.25.1
More information about the amd-gfx
mailing list