diff options
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1447-drm-amdkfd-Add-kfd-hqds-entry-to-debugfs.patch')
-rw-r--r-- | meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1447-drm-amdkfd-Add-kfd-hqds-entry-to-debugfs.patch | 152 |
1 files changed, 0 insertions, 152 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1447-drm-amdkfd-Add-kfd-hqds-entry-to-debugfs.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1447-drm-amdkfd-Add-kfd-hqds-entry-to-debugfs.patch deleted file mode 100644 index 67ed02ec..00000000 --- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1447-drm-amdkfd-Add-kfd-hqds-entry-to-debugfs.patch +++ /dev/null @@ -1,152 +0,0 @@ -From 2e193eddc6a1b66d8fa43b724660221d63d5769b Mon Sep 17 00:00:00 2001 -From: Felix Kuehling <Felix.Kuehling@amd.com> -Date: Mon, 6 Jun 2016 21:25:04 -0400 -Subject: [PATCH 1447/4131] drm/amdkfd: Add kfd/hqds entry to debugfs - -This dumps all HQDs on all GPUs for KFD-controlled compute and -SDMA RLC queues. - -Change-Id: I89f18a9f9b65ce1761ccef6bbc5712fbb71a001a -Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> ---- - drivers/gpu/drm/amd/amdkfd/kfd_device.c | 6 +++ - .../gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 61 ++++++++++++++++++++++ - drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 2 + - drivers/gpu/drm/amd/amdkfd/kfd_topology.c | 25 +++++++++ - 4 files changed, 94 insertions(+) - -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c -index 64f41d6..58ed979 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c -@@ -365,6 +365,12 @@ static void kfd_debugfs_init(struct kfd_dev *kfd) - &kfd_debugfs_fops); - if (ent == NULL) - dev_warn(kfd_device, "Failed to create mqds in kfd debugfs\n"); -+ -+ ent = debugfs_create_file("hqds", S_IFREG | S_IRUGO, kfd->debugfs_root, -+ kfd_debugfs_hqds_by_device, -+ &kfd_debugfs_fops); -+ if (ent == NULL) -+ dev_warn(kfd_device, "Failed to create hqds in kfd debugfs\n"); - } - - static void kfd_debugfs_fini(struct kfd_dev *kfd) -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c -index 6f01393..d5672b9 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c -@@ -1562,3 +1562,64 @@ int kfd_process_vm_fault(struct device_queue_manager *dqm, - - return ret; - } -+ -+static void seq_reg_dump(struct seq_file *m, -+ uint32_t (*dump)[2], uint32_t n_regs) -+{ -+ uint32_t i, count; -+ -+ for (i = 0, count = 0; i < n_regs; i++) { -+ if (count == 0 || -+ dump[i-1][0] + sizeof(uint32_t) != dump[i][0]) { -+ seq_printf(m, "%s %08x: %08x", -+ i ? "\n" : "", -+ dump[i][0], dump[i][1]); -+ count = 7; -+ } else { -+ seq_printf(m, " %08x", dump[i][1]); -+ count--; -+ } -+ } -+ -+ seq_puts(m, "\n"); -+} -+ -+int device_queue_manager_debugfs_hqds(struct seq_file *m, void *data) -+{ -+ struct device_queue_manager *dqm = data; -+ uint32_t (*dump)[2], n_regs; -+ int pipe, queue; -+ int r = 0; -+ -+ for (pipe = 0; pipe < get_pipes_per_mec(dqm); pipe++) { -+ for (queue = 0; queue < get_queues_per_pipe(dqm); queue++) { -+ r = dqm->dev->kfd2kgd->hqd_dump( -+ dqm->dev->kgd, pipe, queue, &dump, &n_regs); -+ if (r != 0) -+ break; -+ -+ seq_printf(m, " CP Pipe %d, Queue %d\n", -+ pipe, queue); -+ seq_reg_dump(m, dump, n_regs); -+ -+ kfree(dump); -+ } -+ } -+ -+ for (pipe = 0; pipe < CIK_SDMA_ENGINE_NUM; pipe++) { -+ for (queue = 0; queue < CIK_SDMA_QUEUES_PER_ENGINE; queue++) { -+ r = dqm->dev->kfd2kgd->hqd_sdma_dump( -+ dqm->dev->kgd, pipe, queue, &dump, &n_regs); -+ if (r != 0) -+ break; -+ -+ seq_printf(m, " SDMA Engine %d, RLC %d\n", -+ pipe, queue); -+ seq_reg_dump(m, dump, n_regs); -+ -+ kfree(dump); -+ } -+ } -+ -+ return r; -+} -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h -index 5e7b4d2..0ea9581 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h -@@ -922,6 +922,8 @@ void kfd_close_peer_direct(void); - - int kfd_debugfs_mqds_by_process(struct seq_file *m, void *data); - int pqm_debugfs_mqds(struct seq_file *m, void *data); -+int kfd_debugfs_hqds_by_device(struct seq_file *m, void *data); -+int device_queue_manager_debugfs_hqds(struct seq_file *m, void *data); - - #endif - -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c -index ba12d00..9d1976c 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c -@@ -1240,3 +1240,28 @@ int kfd_get_proximity_domain(const struct pci_bus *bus) - - return proximity_domain; - } -+ -+int kfd_debugfs_hqds_by_device(struct seq_file *m, void *data) -+{ -+ struct kfd_topology_device *dev; -+ unsigned i = 0; -+ int r = 0; -+ -+ down_read(&topology_lock); -+ -+ list_for_each_entry(dev, &topology_device_list, list) { -+ if (!dev->gpu) { -+ i++; -+ continue; -+ } -+ -+ seq_printf(m, "Node %u, gpu_id %x:\n", i++, dev->gpu->id); -+ r = device_queue_manager_debugfs_hqds(m, dev->gpu->dqm); -+ if (r != 0) -+ break; -+ } -+ -+ up_read(&topology_lock); -+ -+ return r; -+} --- -2.7.4 - |