summaryrefslogtreecommitdiff
path: root/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c
diff options
context:
space:
mode:
authorLoren Huang <b02279@freescale.com>2012-03-16 15:29:06 +0800
committerJason Liu <r64343@freescale.com>2012-07-20 13:24:15 +0800
commit217856f4c04b3ea8e964cf591414d561c50fb0dd (patch)
tree7b7b2c70808839658524cfc2170ef2be708ff3cf /drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c
parentb6cd59a82130ec0c7e1ac56deec1b60e02114612 (diff)
ENGR00177048 Merge vivante 4.6.6 kernel part code
Merge vivante 4.6.6 kernel part code Signed-off-by: Loren Huang <b02279@freescale.com> Acked-by: Lily Zhang
Diffstat (limited to 'drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c')
-rw-r--r--drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c
index dac5e2330397..9fd50e8e5caa 100644
--- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c
+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c
@@ -1013,6 +1013,16 @@ gckVIDMEM_AllocateLinear(
}
#endif
+#if gcdSMALL_BLOCK_SIZE
+ if ((Memory->freeBytes < (Memory->bytes/gcdRATIO_FOR_SMALL_MEMORY))
+ && (Bytes >= gcdSMALL_BLOCK_SIZE)
+ )
+ {
+ /* The left memory is for small memory.*/
+ gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY);
+ }
+#endif
+
/* Find the default bank for this surface type. */
gcmkASSERT((gctINT) Type < gcmCOUNTOF(Memory->mapping));
bank = Memory->mapping[Type];
@@ -1288,7 +1298,11 @@ gckVIDMEM_Free(
__FUNCTION__, __LINE__,
Node->VidMem.kernelVirtual);
- gckOS_UnmapReservedMemoryFromKernel(Node->VidMem.kernelVirtual);
+ gcmkVERIFY_OK(
+ gckOS_UnmapPhysical(memory->os,
+ Node->VidMem.kernelVirtual,
+ Node->VidMem.bytes));
+
Node->VidMem.kernelVirtual = gcvNULL;
}
#endif
@@ -1771,11 +1785,13 @@ gckVIDMEM_Lock(
Node->Virtual.pageTables[Kernel->core]));
#endif
-#if gcdSHARED_PAGETABLE
- gcmkONERROR(gckMMU_FlushAllMmuCache());
+#if gcdENABLE_VG
+ if (Kernel->core != gcvCORE_VG)
#endif
+ {
+ gcmkONERROR(gckMMU_Flush(Kernel->mmu));
+ }
}
-
gcmkTRACE_ZONE(gcvLEVEL_INFO, gcvZONE_VIDMEM,
"Mapped virtual node 0x%x to 0x%08X",
Node,