From: 杜坤明 Date: Thu, 22 Sep 2011 08:00:38 +0000 (+0800) Subject: gpu : force gcvSURF_TILE_STATUS use contiguous memory X-Git-Tag: firefly_0821_release~9767^2~8 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=1d7eb49758a74f4cb89e27ab5fd29508454a157c;p=firefly-linux-kernel-4.4.55.git gpu : force gcvSURF_TILE_STATUS use contiguous memory --- diff --git a/drivers/staging/rk29/vivante/hal/inc/gc_hal_options.h b/drivers/staging/rk29/vivante/hal/inc/gc_hal_options.h old mode 100644 new mode 100755 index d6baf688680a..72d8086fcf2c --- a/drivers/staging/rk29/vivante/hal/inc/gc_hal_options.h +++ b/drivers/staging/rk29/vivante/hal/inc/gc_hal_options.h @@ -304,14 +304,12 @@ /* - dkm : gcdPAGE_ALLOC_LIMIT & gcdPAGE_ALLOC_LIMIT_SIZE + dkm : gcdPAGE_ALLOC_LIMIT - ÏÞÖÆgckOS_AllocatePagedMemoryExÏòϵͳÉêÇëpageµÄ´óС£¬±ÜÃâϵͳpage²»×ãʱ»áµ¼ÖÂϵͳ¿¨¶Ù - gcdPAGE_ALLOC_LIMIT ÏÞÖÆPageÉêÇë - gcdPAGE_ALLOC_LIMIT_SIZE ÏÞÖÆPageÉêÇëµÄ´óС,µ¥Î»ÎªM + ÏÞÖÆgckOS_AllocatePagedMemoryExÏòϵͳÉêÇëpage£¬±ÜÃâÌ«´óϵͳ·ÖÅä²»³öÀ´Ê±»áµ¼ÖÂϵͳ¿¨¶Ù(»á²»Í£flush cache) + еÄÄÚºËÒѾ­ÐÞÕýÁËÕâÒ»ÎÊÌâ */ #define gcdPAGE_ALLOC_LIMIT 0 -#define gcdPAGE_ALLOC_LIMIT_SIZE 0 /* diff --git a/drivers/staging/rk29/vivante/hal/kernel/gc_hal_kernel.c b/drivers/staging/rk29/vivante/hal/kernel/gc_hal_kernel.c index f76834c6d5ed..ffb10bca4d1f 100755 --- a/drivers/staging/rk29/vivante/hal/kernel/gc_hal_kernel.c +++ b/drivers/staging/rk29/vivante/hal/kernel/gc_hal_kernel.c @@ -290,6 +290,11 @@ _AllocateMemory( default: break; } + +#if (0==gcdPAGE_ALLOC_LIMIT) + // dkm : force gcvSURF_TILE_STATUS use contiguous memory + if(gcvSURF_TILE_STATUS == Type) pool = gcvPOOL_CONTIGUOUS; +#endif do { @@ -388,7 +393,10 @@ _AllocateMemory( while ((*Pool == gcvPOOL_DEFAULT) || (*Pool == gcvPOOL_LOCAL) || (*Pool == gcvPOOL_UNIFIED) - || ((*Pool == gcvPOOL_SYSTEM) && (pool==gcvPOOL_CONTIGUOUS)) +#if (0==gcdPAGE_ALLOC_LIMIT) + // dkm : let gcvPOOL_SYSTEM can use contiguous memory + || ((*Pool == gcvPOOL_SYSTEM) && (pool==gcvPOOL_CONTIGUOUS)) +#endif ); if (gcmIS_SUCCESS(status)) 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 index d5bf1f83cea9..ee93a1c4c40f 100755 --- 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 @@ -3019,16 +3019,17 @@ gceSTATUS gckOS_AllocatePagedMemoryEx( { // dkm: gcdPAGE_ALLOC_LIMIT #if gcdPAGE_ALLOC_LIMIT - if( (g_pages_alloced + numPages) > (256*gcdPAGE_ALLOC_LIMIT_SIZE) ) { +#define PAGE_ALLOC_LIMIT_SIZE 0 + if( (g_pages_alloced + numPages) > (256*PAGE_ALLOC_LIMIT_SIZE) ) { //printk("full %d! \n", g_pages_alloced); addr = NULL; } else { - addr = (char *)__get_free_pages(GFP_ATOMIC | GFP_DMA | __GFP_NOWARN, GetOrder(numPages)); + addr = (char *)__get_free_pages(GFP_ATOMIC | GFP_DMA | __GFP_NOWARN | __GFP_NO_KSWAPD, GetOrder(numPages)); if(addr) { g_pages_alloced += numPages; //printk("alloc %d / %d \n", numPages, g_pages_alloced); } else { - printk("gpu : alloc %d fail! (%d/%d)\n", numPages, g_pages_alloced, (256*gcdPAGE_ALLOC_LIMIT_SIZE) ); + printk("gpu : alloc %d fail! (%d/%d)\n", numPages, g_pages_alloced, (256*PAGE_ALLOC_LIMIT_SIZE) ); } } #else