海思-VB被占用导致vb无法去初始化

在每次初始化VB前,都会去先初始化MPP系统,再去初始化VB

1 HI_MPI_SYS_Exit();
2 HI_MPI_VB_Exit();

 但是去初始化不会清楚先前对缓存池的设置,且若有VB被占用,去初始化就会失败

1 HI_MPI_VB_SetConf failed with 0xa0018012!  //系统忙

查看/dev/logmpp, 确实有VB被占用,没有被释放。

1 <3>[    vb] [Func]:vb_set_config [Line]:1719 [Info]:VB is initialized!
2 <3>[    vb] [Func]:destroy_pool [Line]:465 [Info]:blk in this pool(6) occupied by someone, please release first!
3 <3>[    vb] [Func]:destroy_pool [Line]:465 [Info]:blk in this pool(6) occupied by someone, please release first!

方法有二:

1. 找到VB被占用,程序退出时VB没有释放的原因
2. 在程序退出时,由系统强制销毁VB(插入 hi35xx_base.ko 时加上模块参数 vb_force_exit=1)

在程序运行时,查看pool(6),cat proc/umap/vb ,发现pool(6)是AI模块使用的,所以定位到Ai,可能是由于用户手动获取Frame, 程序退出时,没能手动释放Frame,
导致AI占用的VB未能回收导致的。
写测试程序验证,的确是这个原因。

原文地址:https://www.cnblogs.com/y4247464/p/14703929.html