高通平台采用gpu-mmu的时候发生显存耗完而整个系统内存尚有的情况导致crash和重启

当高通平台GPU-MMU限制的256MB显存耗尽,而系统内存仍有剩余时,由于无法触发LMK或OOM释放内存,将引发进程watchdogtimeout,可能导致system server重启并陷入反复重启的循环。解决方案是在Lowmemorykiller.c中添加新函数,并在kgsl_mmu_map中调用来解决显存不足的问题。
摘要由CSDN通过智能技术生成

原因在于kgsl_mmu.c中,定义了gpu使用的内存大小,7x30中限定了256MB,当显存耗光而内存尚剩余很多的时候就会发生问题:不能触发LMK或OOM来释放内存,而又没有显存可用,进而可能引起各进程watchdogtimeout,如果系统进程发生watchdogtimeout,会导致system serverrestart,而restart之后也不能释放gpu显存,会一直反复重启:

unsigned int kgsl_mmu_get_ptsize(void)
{
	/*
	 * For IOMMU, we could do up to 4G virtual range if we wanted to, but
	 * it makes more sense to return a smaller range and leave the rest of
	 * the virtual range for future improvements
	 */

	if (KGSL_MMU_TYPE_GPU == kgsl_mmu_type)
		return CONFIG_MSM_KGSL_PAGE_TABLE_SIZE;
	else if (KGSL_MMU_TYPE_IOMMU == kgsl_mmu_type)
		return SZ_2G - KGSL_PAGETABLE_BASE;
	else
		return 0;
}

Lowmemorykiller.c 添加一个新函数


void lowmem_shrink_gpu(void)
{
	struct task_struct *tsk;
	struct task_struct *selected = NULL;
	int tasksize;
	int
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值