diff options
Diffstat (limited to 'meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5698-drm-amdkfd-Add-CU-masking-ioctl-to-KFD.patch')
-rw-r--r-- | meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5698-drm-amdkfd-Add-CU-masking-ioctl-to-KFD.patch | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5698-drm-amdkfd-Add-CU-masking-ioctl-to-KFD.patch b/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5698-drm-amdkfd-Add-CU-masking-ioctl-to-KFD.patch deleted file mode 100644 index 8697b2ca..00000000 --- a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5698-drm-amdkfd-Add-CU-masking-ioctl-to-KFD.patch +++ /dev/null @@ -1,162 +0,0 @@ -From 1b59abe4ac41fc09e657c6d33b0202bb0a8fa186 Mon Sep 17 00:00:00 2001 -From: Felix Kuehling <Felix.Kuehling@amd.com> -Date: Sat, 14 Jul 2018 19:05:59 -0400 -Subject: [PATCH 5698/5725] drm/amdkfd: Add CU-masking ioctl to KFD - -CU-masking allows a KFD client to control the set of CUs used by a -user mode queue for executing compute dispatches. This can be used -for optimizing the partitioning of the GPU and minimize conflicts -between concurrent tasks. - -Signed-off-by: Flora Cui <flora.cui@amd.com> -Signed-off-by: Kent Russell <kent.russell@amd.com> -Signed-off-by: Eric Huang <JinHuiEric.Huang@amd.com> -Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> -Acked-by: Oded Gabbay <oded.gabbay@gmail.com> -Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com> ---- - drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 1 - - drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c | 41 +++++++++++++++++++++- - drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h | 4 +++ - drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c | 2 ++ - drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c | 2 ++ - drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c | 2 ++ - .../gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 2 ++ - 7 files changed, 52 insertions(+), 2 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c -index 759d59e..8d56004 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c -@@ -2569,7 +2569,6 @@ static const struct amdkfd_ioctl_desc amdkfd_ioctls[] = { - - AMDKFD_IOCTL_DEF(AMDKFD_IOC_GET_QUEUE_WAVE_STATE, - kfd_ioctl_get_queue_wave_state, 0), -- - }; - - #define AMDKFD_CORE_IOCTL_COUNT ARRAY_SIZE(amdkfd_ioctls) -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c -index d39e81c..85b5954 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c -@@ -21,7 +21,7 @@ - * - */ - --#include "kfd_priv.h" -+#include "kfd_mqd_manager.h" - - /* Mapping queue priority to pipe priority, indexed by queue priority */ - int pipe_priority_map[] = { -@@ -91,3 +91,42 @@ struct mqd_manager *mqd_manager_init(enum KFD_MQD_TYPE type, - - return NULL; - } -+ -+void mqd_symmetrically_map_cu_mask(struct mqd_manager *mm, -+ const uint32_t *cu_mask, uint32_t cu_mask_count, -+ uint32_t *se_mask) -+{ -+ struct kfd_cu_info cu_info; -+ uint32_t cu_per_sh[4] = {0}; -+ int i, se, cu = 0; -+ -+ mm->dev->kfd2kgd->get_cu_info(mm->dev->kgd, &cu_info); -+ -+ if (cu_mask_count > cu_info.cu_active_number) -+ cu_mask_count = cu_info.cu_active_number; -+ -+ for (se = 0; se < cu_info.num_shader_engines; se++) -+ for (i = 0; i < 4; i++) -+ cu_per_sh[se] += hweight32(cu_info.cu_bitmap[se][i]); -+ -+ /* Symmetrically map cu_mask to all SEs: -+ * cu_mask[0] bit0 -> se_mask[0] bit0; -+ * cu_mask[0] bit1 -> se_mask[1] bit0; -+ * ... (if # SE is 4) -+ * cu_mask[0] bit4 -> se_mask[0] bit1; -+ * ... -+ */ -+ se = 0; -+ for (i = 0; i < cu_mask_count; i++) { -+ if (cu_mask[i / 32] & (1 << (i % 32))) -+ se_mask[se] |= 1 << cu; -+ -+ do { -+ se++; -+ if (se == cu_info.num_shader_engines) { -+ se = 0; -+ cu++; -+ } -+ } while (cu >= cu_per_sh[se] && cu < 32); -+ } -+} -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h -index 336ea9c..5fd379d 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h -@@ -104,4 +104,8 @@ struct mqd_manager { - struct kfd_dev *dev; - }; - -+void mqd_symmetrically_map_cu_mask(struct mqd_manager *mm, -+ const uint32_t *cu_mask, uint32_t cu_mask_count, -+ uint32_t *se_mask); -+ - #endif /* KFD_MQD_MANAGER_H_ */ -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c -index 6611c7a..2de16bd 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c -@@ -289,6 +289,8 @@ static int __update_mqd(struct mqd_manager *mm, void *mqd, - update_cu_mask(mm, mqd, q); - set_priority(m, q); - -+ update_cu_mask(mm, mqd, q); -+ - q->is_active = (q->queue_size > 0 && - q->queue_address != 0 && - q->queue_percent > 0 && -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c -index ea1d01d..1fcf0c4 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c -@@ -298,6 +298,8 @@ static int update_mqd(struct mqd_manager *mm, void *mqd, - - update_cu_mask(mm, mqd, q); - -+ update_cu_mask(mm, mqd, q); -+ - q->is_active = (q->queue_size > 0 && - q->queue_address != 0 && - q->queue_percent > 0 && -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c -index 9b1eca7..5b800d2 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c -@@ -301,6 +301,8 @@ static int __update_mqd(struct mqd_manager *mm, void *mqd, - update_cu_mask(mm, mqd, q); - set_priority(m, q); - -+ update_cu_mask(mm, mqd, q); -+ - q->is_active = (q->queue_size > 0 && - q->queue_address != 0 && - q->queue_percent > 0 && -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c -index 566e205a..6940db1 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c -@@ -328,6 +328,8 @@ int pqm_destroy_queue(struct process_queue_manager *pqm, unsigned int qid) - if (retval != -ETIME) - goto err_destroy_queue; - } -+ kfree(pqn->q->properties.cu_mask); -+ pqn->q->properties.cu_mask = NULL; - uninit_queue(pqn->q); - } - --- -2.7.4 - |