aboutsummaryrefslogtreecommitdiffstats
path: root/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1568-drm-amdgpu-More-fixes-for-system-userptr-memory-acco.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1568-drm-amdgpu-More-fixes-for-system-userptr-memory-acco.patch')
-rw-r--r--meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1568-drm-amdgpu-More-fixes-for-system-userptr-memory-acco.patch118
1 files changed, 0 insertions, 118 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1568-drm-amdgpu-More-fixes-for-system-userptr-memory-acco.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1568-drm-amdgpu-More-fixes-for-system-userptr-memory-acco.patch
deleted file mode 100644
index de60a670..00000000
--- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1568-drm-amdgpu-More-fixes-for-system-userptr-memory-acco.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From 97c763139b7c2eb879ad4c54b6362de098ae47cc Mon Sep 17 00:00:00 2001
-From: Felix Kuehling <Felix.Kuehling@amd.com>
-Date: Mon, 9 Jan 2017 16:22:53 -0500
-Subject: [PATCH 1568/4131] drm/amdgpu: More fixes for system/userptr memory
- accounting
-
-amdgpu_ttm_tt_get_usermm depends on bo->tbo.ttm, which is already
-destroyed when amdgpu_amdkfd_unreserve_system_memory_limit gets called
-during BO destruction. Add a flag to identify KFD userptr BOs for
-accounting purposes.
-
-Fix memory usage accounting when amdgpu_bo_create fails.
-
-Replace warnings with WARN_ONCE to avoid spamming the logs in case
-accounting is found to be broken.
-
-Change-Id: Icebb442180a174934c066f111644dea127083330
-Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 50 ++++++++++++++++++------
- 1 file changed, 37 insertions(+), 13 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
-index d14550d..e644bb5 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
-@@ -45,6 +45,9 @@
- * a HW bug. */
- #define VI_BO_SIZE_ALIGN (0x8000)
-
-+/* BO flag to indicate a KFD userptr BO */
-+#define AMDGPU_AMDKFD_USERPTR_BO (1ULL << 63)
-+
- /* Impose limit on how much memory KFD can use */
- struct kfd_mem_usage_limit {
- uint64_t max_system_mem_limit;
-@@ -129,7 +132,6 @@ static int amdgpu_amdkfd_reserve_system_mem_limit(struct amdgpu_device *adev,
- goto err_no_mem;
- }
- kfd_mem_limit.system_mem_used += (acc_size + size);
--
- } else if (domain == AMDGPU_GEM_DOMAIN_CPU) {
- if ((kfd_mem_limit.system_mem_used + acc_size >
- kfd_mem_limit.max_system_mem_limit) ||
-@@ -146,25 +148,44 @@ static int amdgpu_amdkfd_reserve_system_mem_limit(struct amdgpu_device *adev,
- return ret;
- }
-
-+static void unreserve_system_mem_limit(struct amdgpu_device *adev,
-+ uint64_t size, u32 domain)
-+{
-+ size_t acc_size;
-+
-+ acc_size = ttm_bo_dma_acc_size(&adev->mman.bdev, size,
-+ sizeof(struct amdgpu_bo));
-+
-+ spin_lock(&kfd_mem_limit.mem_limit_lock);
-+ if (domain == AMDGPU_GEM_DOMAIN_GTT) {
-+ kfd_mem_limit.system_mem_used -= (acc_size + size);
-+ } else if (domain == AMDGPU_GEM_DOMAIN_CPU) {
-+ kfd_mem_limit.system_mem_used -= acc_size;
-+ kfd_mem_limit.userptr_mem_used -= size;
-+ }
-+ WARN_ONCE(kfd_mem_limit.system_mem_used < 0,
-+ "kfd system memory accounting unbalanced");
-+ WARN_ONCE(kfd_mem_limit.userptr_mem_used < 0,
-+ "kfd userptr memory accounting unbalanced");
-+
-+ spin_unlock(&kfd_mem_limit.mem_limit_lock);
-+}
-+
- void amdgpu_amdkfd_unreserve_system_memory_limit(struct amdgpu_bo *bo)
- {
- spin_lock(&kfd_mem_limit.mem_limit_lock);
-
-- if (bo->prefered_domains == AMDGPU_GEM_DOMAIN_GTT)
-- kfd_mem_limit.system_mem_used -=
-- (bo->tbo.acc_size + amdgpu_bo_size(bo));
-- else if (amdgpu_ttm_tt_get_usermm(bo->tbo.ttm)) {
-+ if (bo->flags & AMDGPU_AMDKFD_USERPTR_BO) {
- kfd_mem_limit.system_mem_used -= bo->tbo.acc_size;
- kfd_mem_limit.userptr_mem_used -= amdgpu_bo_size(bo);
-+ } else if (bo->prefered_domains == AMDGPU_GEM_DOMAIN_GTT) {
-+ kfd_mem_limit.system_mem_used -=
-+ (bo->tbo.acc_size + amdgpu_bo_size(bo));
- }
-- if (kfd_mem_limit.system_mem_used < 0) {
-- pr_warn("kfd system memory size ref. error\n");
-- kfd_mem_limit.system_mem_used = 0;
-- }
-- if (kfd_mem_limit.userptr_mem_used < 0) {
-- pr_warn("kfd userptr memory size ref. error\n");
-- kfd_mem_limit.userptr_mem_used = 0;
-- }
-+ WARN_ONCE(kfd_mem_limit.system_mem_used < 0,
-+ "kfd system memory accounting unbalanced");
-+ WARN_ONCE(kfd_mem_limit.userptr_mem_used < 0,
-+ "kfd userptr memory accounting unbalanced");
-
- spin_unlock(&kfd_mem_limit.mem_limit_lock);
- }
-@@ -614,10 +635,13 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va,
- if (ret != 0) {
- pr_err("Failed to create BO on domain %s. ret %d\n",
- domain_string(alloc_domain), ret);
-+ unreserve_system_mem_limit(adev, size, alloc_domain);
- goto err_bo_create;
- }
- bo->kfd_bo = *mem;
- (*mem)->bo = bo;
-+ if (userptr)
-+ bo->flags |= AMDGPU_AMDKFD_USERPTR_BO;
-
- if (domain == AMDGPU_GEM_DOMAIN_VRAM) {
- ret = amdgpu_bo_reserve(bo, true);
---
-2.7.4
-