Am 08.02.2018 um 05:51 schrieb Zhang, Hawking:
Apart from the allocation failure, reserving 1024M cma is also not realistic....

Sure it is, I just tried it and it works perfectly fine. The option even accepts a G postfix for gigabytes, e.g. I can specify cma=8G on my 32GB Ryzen box and get exactly 8GB CMA space reserved.

Regarding the allocation failure using the DMA path there was a thread quite some time ago. IIRC the argument was that TTM only allocates a single page at a time and so should never run into any CMA allocator and according to my tests at least with IOMMU enabled that seems to be fixed now.

The key point is that CMA was specially crafted to avoid all those mem= workarounds and I think this is now a must have. See here as well.



-----Original Message-----
From: amd-gfx [] On Behalf Of 
Chunming Zhou
Sent: Thursday, February 08, 2018 12:35
To: Koenig, Christian <>; Xu, Feifei 
Subject: Re: [PATCH 3/9] drm/amdgpu: add amdgpu module parameter for zfb

On 2018年02月08日 02:48, Christian König wrote:
Hi Feifei,

ok the correct approach of doing this:
1. Compile the kernel with CONFIG_DMA_CMA.
2. Specify cma=1025M on the kernel command line.
3. Call dma_alloc_coherent() to allocate up to 1GB of memory for ZFB.
Have you tried CMA? In early time, I tried it. If CMA is enabled, then ttm dma 
pool allocation will use cma, and when cma is used up, then ttm dma pool 
allocation will fail.
Not sure if the issue is fixed now.

David Zhou
Couldn't figure out of hand what alignment is necessary here, but that
should just be a typing exercise.


Am 07.02.2018 um 14:18 schrieb Christian König:
Hi Feifei,

mhm, so you're approach is to limit the memory the Linux kernel grab
using the mem= parameter and then give that memory to amdgpu, correct?

If that's the case then this is most likely a NAK. Cause this sounds
like a perfect example for the CMA.

Never worked with that subsystem before, but in theory you should be
able to give the cma=1G parameter to the kernel and by doing so you
reserve 1GB of contiguous memory for use by device drivers.

Going to dig a bit deeper into that and trying to find to
documentation about it, Christian.

Am 07.02.2018 um 13:34 schrieb Feifei Xu:
Users can pass in an array to decide enable/disable Zero Frame Buffer.
zfb[0] = zfb_size(MB), zfb[1] = zfb_phys_addr(MB).
If zbf_size > 0, zfb is enabled. Otherwise disabled.
Usage for example:
      modprobe amdgpu zfb={256,4096}

Change-Id: I340fcb36b5655f24551056e685b74559d7599680
Signed-off-by: Feifei Xu <>
   drivers/gpu/drm/amd/amdgpu/amdgpu.h     | 1 +
   drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 5 +++++
   2 files changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index 1b4c5ad..be79cb1 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -129,6 +129,7 @@ extern int amdgpu_job_hang_limit;
   extern int amdgpu_lbpw;
   extern int amdgpu_compute_multipipe;
   extern int amdgpu_gpu_recovery;
+extern ulong amdgpu_zfb[];
   extern int amdgpu_si_support;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 3897179..af84815 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -132,6 +132,7 @@ int amdgpu_job_hang_limit = 0;
   int amdgpu_lbpw = -1;
   int amdgpu_compute_multipipe = -1;
   int amdgpu_gpu_recovery = -1; /* auto */
+ulong amdgpu_zfb[2] = {0,4096UL}; /* {0,0x100000000} */
     MODULE_PARM_DESC(vramlimit, "Restrict VRAM for testing, in
   module_param_named(vramlimit, amdgpu_vram_limit, int, 0600); @@
-290,6 +291,10 @@ module_param_named(compute_multipipe,
amdgpu_compute_multipipe, int, 0444);
   MODULE_PARM_DESC(gpu_recovery, "Enable GPU recovery mechanism, (1
= enable, 0 = disable, -1 = auto");
   module_param_named(gpu_recovery, amdgpu_gpu_recovery, int, 0444);
+         "Enable Zero Frame Buffer feature (zfb will be set like
xxxx,xxxx(zfb_size MB,zfb_phys_addr MB),default disabled)");
+module_param_array_named(zfb, amdgpu_zfb, ulong, NULL, 0444);
     int amdgpu_si_support = 1;
amd-gfx mailing list
amd-gfx mailing list

amd-gfx mailing list

Reply via email to