diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1637-drm-amdkfd-Use-GFP_NOIO-with-reclaim-safe-locks.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1637-drm-amdkfd-Use-GFP_NOIO-with-reclaim-safe-locks.patch | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1637-drm-amdkfd-Use-GFP_NOIO-with-reclaim-safe-locks.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1637-drm-amdkfd-Use-GFP_NOIO-with-reclaim-safe-locks.patch new file mode 100644 index 00000000..e324c285 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1637-drm-amdkfd-Use-GFP_NOIO-with-reclaim-safe-locks.patch @@ -0,0 +1,82 @@ +From 65252d79ddfcc048b7754dc01894b75d553bbc45 Mon Sep 17 00:00:00 2001 +From: Felix Kuehling <Felix.Kuehling@amd.com> +Date: Tue, 21 Mar 2017 11:31:28 -0400 +Subject: [PATCH 1637/4131] drm/amdkfd: Use GFP_NOIO with reclaim-safe locks + +Locks that are held in reclaim-fs context (in MMU notifiers invoked +under memory pressure) must not themselves cause memory reclaims +while held to prevent deadlocks. Use GFP_NOIO to ensure this. + +Change-Id: Ie922d687c93f7261d2c5f4a5dad2a2e1ea7e6dc9 +Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> +--- + drivers/gpu/drm/amd/amdkfd/kfd_device.c | 2 +- + drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c | 2 +- + drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c | 4 ++-- + drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c | 2 +- + 4 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c +index 32ada3f..1d10eed 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c +@@ -1029,7 +1029,7 @@ int kfd_gtt_sa_allocate(struct kfd_dev *kfd, unsigned int size, + if (size > kfd->gtt_sa_num_of_chunks * kfd->gtt_sa_chunk_size) + return -ENOMEM; + +- *mem_obj = kzalloc(sizeof(struct kfd_mem_obj), GFP_KERNEL); ++ *mem_obj = kzalloc(sizeof(struct kfd_mem_obj), GFP_NOIO); + if ((*mem_obj) == NULL) + return -ENOMEM; + +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 a586c2c..27e62c3 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c +@@ -523,7 +523,7 @@ struct mqd_manager *mqd_manager_init_cik(enum KFD_MQD_TYPE type, + + pr_debug("kfd: In func %s\n", __func__); + +- mqd = kzalloc(sizeof(struct mqd_manager), GFP_KERNEL); ++ mqd = kzalloc(sizeof(struct mqd_manager), GFP_NOIO); + if (!mqd) + return NULL; + +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 c80691e..d185637 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c +@@ -106,7 +106,7 @@ static int init_mqd(struct mqd_manager *mm, void **mqd, + * instead of sub-allocation function. + */ + if (kfd->cwsr_enabled && (q->type == KFD_QUEUE_TYPE_COMPUTE)) { +- *mqd_mem_obj = kzalloc(sizeof(struct kfd_mem_obj), GFP_KERNEL); ++ *mqd_mem_obj = kzalloc(sizeof(struct kfd_mem_obj), GFP_NOIO); + retval = kfd->kfd2kgd->init_gtt_mem_allocation(kfd->kgd, + ALIGN(q->ctl_stack_size, PAGE_SIZE) + + ALIGN(sizeof(struct v9_mqd), PAGE_SIZE), +@@ -458,7 +458,7 @@ struct mqd_manager *mqd_manager_init_v9(enum KFD_MQD_TYPE type, + + pr_debug("kfd: In func %s\n", __func__); + +- mqd = kzalloc(sizeof(struct mqd_manager), GFP_KERNEL); ++ mqd = kzalloc(sizeof(struct mqd_manager), GFP_NOIO); + if (!mqd) + return NULL; + +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 563d37b..58e95d3 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c +@@ -484,7 +484,7 @@ struct mqd_manager *mqd_manager_init_vi(enum KFD_MQD_TYPE type, + + pr_debug("kfd: In func %s\n", __func__); + +- mqd = kzalloc(sizeof(struct mqd_manager), GFP_KERNEL); ++ mqd = kzalloc(sizeof(struct mqd_manager), GFP_NOIO); + if (!mqd) + return NULL; + +-- +2.7.4 + |