Commit df23d1bb authored by Oak Zeng's avatar Oak Zeng Committed by Alex Deucher

drm/amdgpu: Use free system memory size for kfd memory accounting

With the current kfd memory accounting scheme, kfd applications
can use up to 15/16 of total system memory. For system which
has small total system memory size it leaves small system memory
for OS. For example, if the system has totally 16GB of system
memory, this scheme leave OS and non-kfd applications only 1GB
of system memory. In many cases, this leads to OOM killer.

This patch changed the KFD system memory accounting scheme.
15/16 of free system memory when kfd driver load. This deduct
the system memory that OS already use.
Signed-off-by: default avatarOak Zeng <Oak.Zeng@amd.com>
Suggested-by: default avatarPhilip Yang <Philip.Yang@amd.com>
Reviewed-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent b335f289
...@@ -44,7 +44,7 @@ int amdgpu_amdkfd_init(void) ...@@ -44,7 +44,7 @@ int amdgpu_amdkfd_init(void)
int ret; int ret;
si_meminfo(&si); si_meminfo(&si);
amdgpu_amdkfd_total_mem_size = si.totalram - si.totalhigh; amdgpu_amdkfd_total_mem_size = si.freeram - si.freehigh;
amdgpu_amdkfd_total_mem_size *= si.mem_unit; amdgpu_amdkfd_total_mem_size *= si.mem_unit;
ret = kgd2kfd_init(); ret = kgd2kfd_init();
......
...@@ -97,7 +97,7 @@ void amdgpu_amdkfd_gpuvm_init_mem_limits(void) ...@@ -97,7 +97,7 @@ void amdgpu_amdkfd_gpuvm_init_mem_limits(void)
uint64_t mem; uint64_t mem;
si_meminfo(&si); si_meminfo(&si);
mem = si.totalram - si.totalhigh; mem = si.freeram - si.freehigh;
mem *= si.mem_unit; mem *= si.mem_unit;
spin_lock_init(&kfd_mem_limit.mem_limit_lock); spin_lock_init(&kfd_mem_limit.mem_limit_lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment