diff options
author | Xianzhong <b07117@freescale.com> | 2014-03-18 20:40:59 +0800 |
---|---|---|
committer | Loren Huang <b02279@freescale.com> | 2014-03-27 14:11:49 +0800 |
commit | c9d20c3e97d531a601855368465c86fcd1390ca1 (patch) | |
tree | ca8aebf1df20aa156aa7a5d6dc232d68b0c16f03 | |
parent | eb0db0e90adc21a35ff86260b726aa2468b8e6c8 (diff) |
ENGR00303820 [#887] refine physical address check for external memory
2G above address will cause system reboot and fixed in original patch,
error check code is added based on the original logic.
Signed-off-by: Xianzhong <b07117@freescale.com>
Acked-by: Jason Liu
(cherry picked from commit 7d85c98bf781eb047c2000bd82ea7559c24a2446)
(cherry picked from commit 04911cf737a4a40e7914ad94fd58bf92dcfa4a92)
-rw-r--r-- | drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c index 8b9d3c789cd3..879d467e3620 100644 --- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c +++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c @@ -736,22 +736,27 @@ _AllocateMemory_Retry: gctUINT32 physAddr=0; gctUINT32 baseAddress = 0; - gckOS_LockPages(Kernel->os, - node->Virtual.physical, - node->Virtual.bytes, - gcvFALSE, - &node->Virtual.logical, - &node->Virtual.pageCount); + gcmkONERROR( + gckOS_LockPages(Kernel->os, + node->Virtual.physical, + node->Virtual.bytes, + gcvFALSE, + &node->Virtual.logical, + &node->Virtual.pageCount)); /* Convert logical address into a physical address. */ - gckOS_GetPhysicalAddress(Kernel->os, node->Virtual.logical, &physAddr); + gcmkONERROR( + gckOS_GetPhysicalAddress(Kernel->os, + node->Virtual.logical, + &physAddr)); - gckOS_UnlockPages(Kernel->os, - node->Virtual.physical, - node->Virtual.bytes, - node->Virtual.logical); + gcmkONERROR( + gckOS_UnlockPages(Kernel->os, + node->Virtual.physical, + node->Virtual.bytes, + node->Virtual.logical)); - gckOS_GetBaseAddress(Kernel->os, &baseAddress); + gcmkONERROR(gckOS_GetBaseAddress(Kernel->os, &baseAddress)); gcmkASSERT(physAddr >= baseAddress); @@ -762,7 +767,7 @@ _AllocateMemory_Retry: { gckOS_Print("gpu virtual memory 0x%x cannot be allocated in force contiguous request!\n", physAddr); - gckVIDMEM_Free(node); + gcmkONERROR(gckVIDMEM_Free(node)); node = gcvNULL; } |