diff options
author | Loren Huang <b02279@freescale.com> | 2012-03-16 15:29:06 +0800 |
---|---|---|
committer | Jason Liu <r64343@freescale.com> | 2012-07-20 13:24:15 +0800 |
commit | 217856f4c04b3ea8e964cf591414d561c50fb0dd (patch) | |
tree | 7b7b2c70808839658524cfc2170ef2be708ff3cf /drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c | |
parent | b6cd59a82130ec0c7e1ac56deec1b60e02114612 (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.c | 24 |
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, |