summaryrefslogtreecommitdiff
path: root/drivers/mxc/gpu-viv/hal/os/linux/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mxc/gpu-viv/hal/os/linux/kernel')
-rw-r--r--drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_user_memory.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_user_memory.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_user_memory.c
index 4293ac9fbc75..8258cf8597ad 100644
--- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_user_memory.c
+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/allocator/default/gc_hal_kernel_allocator_user_memory.c
@@ -201,6 +201,21 @@ static int import_page_map(struct um_desc *um,
goto error;
}
+ if (addr & ~PAGE_MASK)
+ {
+ dma_sync_single_for_device(galcore_device,
+ page_to_phys(pages[0]),
+ PAGE_SIZE,
+ DMA_TO_DEVICE);
+ }
+ if (page_count > 1 && ((addr + size) & ~PAGE_MASK))
+ {
+ dma_sync_single_for_device(galcore_device,
+ page_to_phys(pages[page_count-1]),
+ PAGE_SIZE,
+ DMA_TO_DEVICE);
+ }
+
um->type = UM_PAGE_MAP;
um->pages = pages;