mirror of
https://github.com/hardkernel/kernel_common_drivers.git
synced 2026-06-25 12:03:48 +09:00
codec_mm: CF1 Optimize force_cache_on usage logic. [1/1]
PD#SWPL-161028 Problem: the flag of force_cache_on keep true for a long time in scatter cache. Solution: Optimize force_cache_on usage logic. Verify: S805X2/AH212 Change-Id: I6d4bcf73722fdbcca36a114d8f4efbbf812b4575 Signed-off-by: lele xiang <lele.xiang@amlogic.com>
This commit is contained in:
@@ -2739,10 +2739,11 @@ static void codec_mm_scatter_cache_manage(struct codec_mm_scatter_mgt *smgt)
|
||||
(smgt->force_cache_on &&/*on star cache*/
|
||||
(smgt->total_page_num < smgt->force_cache_page_cnt))
|
||||
) {/*first 500ms ,alloc double.*/
|
||||
int once_alloc = 1024;
|
||||
|
||||
mms = codec_mm_get_next_cache_scatter(smgt, NULL, 0);
|
||||
if (mms) {
|
||||
int need;
|
||||
int once_alloc = 1024;/*once 4M*/
|
||||
|
||||
if (smgt->force_cache_on) {
|
||||
once_alloc = 4096;
|
||||
@@ -2755,9 +2756,7 @@ static void codec_mm_scatter_cache_manage(struct codec_mm_scatter_mgt *smgt)
|
||||
}
|
||||
}
|
||||
need = mms->page_cnt + once_alloc;
|
||||
if ((need - mms->page_cnt) > once_alloc)
|
||||
need = mms->page_cnt + once_alloc;
|
||||
if (need > smgt->force_cache_page_cnt)
|
||||
if (smgt->force_cache_on && need > smgt->force_cache_page_cnt)
|
||||
need = smgt->force_cache_page_cnt;
|
||||
if (need > mms->page_max_cnt)
|
||||
need = mms->page_max_cnt;
|
||||
@@ -2777,12 +2776,14 @@ static void codec_mm_scatter_cache_manage(struct codec_mm_scatter_mgt *smgt)
|
||||
alloced = 0;
|
||||
}
|
||||
/*wake up wait.*/
|
||||
if (alloced &&
|
||||
smgt->force_cache_on &&
|
||||
smgt->cached_pages >= smgt->force_cache_page_cnt) {
|
||||
smgt->force_cache_on = 0;
|
||||
smgt->delay_free_timeout_jiffies64 =
|
||||
get_jiffies_64() + 2000 * HZ / 1000;
|
||||
if (alloced && smgt->force_cache_on) {
|
||||
smgt->force_cache_page_cnt -= once_alloc;
|
||||
if (smgt->force_cache_page_cnt <= 0) {
|
||||
pr_dbg("scatter force_cache off\n");
|
||||
smgt->force_cache_on = 0;
|
||||
smgt->delay_free_timeout_jiffies64 =
|
||||
get_jiffies_64() + 2000 * HZ / 1000;
|
||||
}
|
||||
}
|
||||
} else if ((smgt->cached_pages >
|
||||
(smgt->keep_size_PAGE + 1000)) &&
|
||||
|
||||
Reference in New Issue
Block a user