summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXianzhong <b07117@freescale.com>2014-03-18 20:40:59 +0800
committerLoren Huang <b02279@freescale.com>2014-03-27 14:11:49 +0800
commitc9d20c3e97d531a601855368465c86fcd1390ca1 (patch)
treeca8aebf1df20aa156aa7a5d6dc232d68b0c16f03
parenteb0db0e90adc21a35ff86260b726aa2468b8e6c8 (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.c31
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;
}