From: 杜坤明 Date: Tue, 22 Feb 2011 10:14:03 +0000 (+0800) Subject: change gpu's memory from cache to writecombine X-Git-Tag: firefly_0821_release~10756^2~4 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=005c8d358182f0c5feb4efb03bb6a641b37cfbe6;p=firefly-linux-kernel-4.4.55.git change gpu's memory from cache to writecombine --- diff --git a/drivers/staging/rk29/vivante/hal/inc/gc_hal_options.h b/drivers/staging/rk29/vivante/hal/inc/gc_hal_options.h index 69f502aea631..6e480912cd9c 100755 --- a/drivers/staging/rk29/vivante/hal/inc/gc_hal_options.h +++ b/drivers/staging/rk29/vivante/hal/inc/gc_hal_options.h @@ -267,9 +267,12 @@ /* gcdENABLE_MEM_CACHE - ÅäÖÃGPUËùʹÓõÄmemoryÊÇ·ñ±»ARM Cacheס + ÅäÖÃGPUËùʹÓõÄmemoryÊÇ·ñ±»ARM Cache»òWriteCombineס + 1: Cached + 2: WriteCombine + */ -#define gcdENABLE_MEM_CACHE 1 +#define gcdENABLE_MEM_CACHE 2 #endif /* __gc_hal_options_h_ */ diff --git a/drivers/staging/rk29/vivante/hal/os/linux/kernel/gc_hal_kernel_driver.c b/drivers/staging/rk29/vivante/hal/os/linux/kernel/gc_hal_kernel_driver.c index 09eff0c3cd9e..e2b3d9df485f 100755 --- a/drivers/staging/rk29/vivante/hal/os/linux/kernel/gc_hal_kernel_driver.c +++ b/drivers/staging/rk29/vivante/hal/os/linux/kernel/gc_hal_kernel_driver.c @@ -466,7 +466,11 @@ static int drv_mmap(struct file * filp, struct vm_area_struct * vma) return -ENOTTY; } -#if !gcdENABLE_MEM_CACHE +#if (2==gcdENABLE_MEM_CACHE) + vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); +#elif (1==gcdENABLE_MEM_CACHE) + // NULL +#else vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); #endif vma->vm_flags |= VM_IO | VM_DONTCOPY | VM_DONTEXPAND; diff --git a/drivers/staging/rk29/vivante/hal/os/linux/kernel/gc_hal_kernel_os.c b/drivers/staging/rk29/vivante/hal/os/linux/kernel/gc_hal_kernel_os.c old mode 100755 new mode 100644 index 4ff31449956a..e6e62a41d6b9 --- a/drivers/staging/rk29/vivante/hal/os/linux/kernel/gc_hal_kernel_os.c +++ b/drivers/staging/rk29/vivante/hal/os/linux/kernel/gc_hal_kernel_os.c @@ -1023,7 +1023,11 @@ gckOS_MapMemory( } #else -#if !gcdENABLE_MEM_CACHE +#if (2==gcdENABLE_MEM_CACHE) + mdlMap->vma->vm_page_prot = pgprot_writecombine(mdlMap->vma->vm_page_prot); +#elif (1==gcdENABLE_MEM_CACHE) + // NULL +#else mdlMap->vma->vm_page_prot = pgprot_noncached(mdlMap->vma->vm_page_prot); #endif mdlMap->vma->vm_flags |= VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_RESERVED; @@ -1394,7 +1398,11 @@ gckOS_AllocateNonPagedMemory( } #else -#if !gcdENABLE_MEM_CACHE +#if (2==gcdENABLE_MEM_CACHE) + mdlMap->vma->vm_page_prot = pgprot_writecombine(mdlMap->vma->vm_page_prot); +#elif (1==gcdENABLE_MEM_CACHE) + // NULL +#else mdlMap->vma->vm_page_prot = pgprot_noncached(mdlMap->vma->vm_page_prot); #endif mdlMap->vma->vm_flags |= VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_RESERVED; @@ -3014,7 +3022,11 @@ gceSTATUS gckOS_LockPages( mdlMap->vma->vm_flags |= VM_RESERVED; /* Make this mapping non-cached. */ -#if !gcdENABLE_MEM_CACHE +#if (2==gcdENABLE_MEM_CACHE) + mdlMap->vma->vm_page_prot = pgprot_writecombine(mdlMap->vma->vm_page_prot); +#elif (1==gcdENABLE_MEM_CACHE) + // NULL +#else mdlMap->vma->vm_page_prot = pgprot_noncached(mdlMap->vma->vm_page_prot); #endif @@ -5403,7 +5415,7 @@ gckOS_CacheFlush( IN gctSIZE_T Bytes ) { -#if gcdENABLE_MEM_CACHE +#if (1==gcdENABLE_MEM_CACHE) dmac_clean_range(Logical, Logical+Bytes); #endif return gcvSTATUS_OK; @@ -5439,7 +5451,7 @@ gckOS_CacheInvalidate( IN gctSIZE_T Bytes ) { -#if gcdENABLE_MEM_CACHE +#if (1==gcdENABLE_MEM_CACHE) dmac_flush_range(Logical, Logical+Bytes); #endif return gcvSTATUS_OK;