summaryrefslogtreecommitdiff
path: root/drivers/mxc
diff options
context:
space:
mode:
authorXianzhong <xianzhong.li@nxp.com>2020-08-13 11:24:15 +0800
committerXianzhong <xianzhong.li@nxp.com>2020-08-14 18:22:45 +0800
commitca331e5a4ad2fe95dce0e00149a5ab0c51d99e66 (patch)
treefd92b988fda02f45d1d2559bbefb653747c23de3 /drivers/mxc
parent59501b0f9c9b4471b47d1583b47afe17e7e001a3 (diff)
MGS-5928-2 [#ccc] support virtual memory in normal zone
opencl conformance encounters out of memory on 6qp often Normal free:223540kB, free_cma:180280kB 0 pages HighMem/MovableOnly currently GPU virtual memory allocate highmem only, change to try normal zone first, then go highmem. Signed-off-by: Xianzhong <xianzhong.li@nxp.com>
Diffstat (limited to 'drivers/mxc')
-rw-r--r--drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_gfp.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_gfp.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_gfp.c
index fecc26fded16..2678b9033204 100644
--- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_gfp.c
+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_gfp.c
@@ -474,7 +474,8 @@ _GFPAlloc(
gceSTATUS status;
gctSIZE_T i = 0;
gctBOOL contiguous = Flags & gcvALLOC_FLAG_CONTIGUOUS;
- u32 gfp = (contiguous ? (__GFP_HIGH | __GFP_ATOMIC) : GFP_KERNEL) | __GFP_HIGHMEM | gcdNOWARN;
+ u32 normal_gfp = __GFP_HIGH | __GFP_ATOMIC | __GFP_NORETRY | gcdNOWARN;
+ u32 gfp = (contiguous ? normal_gfp : GFP_KERNEL) | __GFP_HIGHMEM | gcdNOWARN;
struct gfp_alloc *priv = (struct gfp_alloc *)Allocator->privateData;
struct gfp_mdl_priv *mdlPriv = gcvNULL;
@@ -582,7 +583,12 @@ _GFPAlloc(
}
else
{
- gcmkONERROR(_NonContiguousAlloc(mdlPriv, NumPages, gfp));
+ status = _NonContiguousAlloc(mdlPriv, NumPages, normal_gfp);
+
+ if (gcmIS_ERROR(status))
+ {
+ gcmkONERROR(_NonContiguousAlloc(mdlPriv, NumPages, gfp));
+ }
}
#if defined(CONFIG_X86)