以 openEuler-20.03-LTS 驱动列表、兼容性 KABI 白名单为基础,以如下几个方面为白名单移除或新增的输入,得到 openEuler-22.03-LTS 兼容性 KABI 白名单初稿:
ARM64 版本变更统计结果:
X86 版本变更统计结果:
Hi zhangjialin11, welcome to the openEuler Community.
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here.
If you have any questions, please contact the SIG: Kernel, and any of the maintainers: @YangYingliang , @pi3orama , @成坚 (CHENG Jian) , @Qiuuuuu , @zhengzengkai , @Xie XiuQi
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
白名单是怎么校验的?
x86的ko:
amdgpu.ko
bnx2.ko
bnx2x.ko
bnxt_en.ko
bnxt_re.ko
hifc.ko
hinic.ko
i40e.ko
ice.ko
igb.ko
ixgbe.ko
ixgbevf.ko
lpfc.ko
megaraid_sas.ko
mlx4_core.ko
mlx4_ib.ko
mlx5_core.ko
mlx5_ib.ko
mpt3sas.ko
nvidia.ko
nvidia_vgpu_vfio.ko
nouveau.ko
nvme.ko
qed.ko
qede.ko
qla2xxx.ko
smartpqi.ko
tg3.ko
txgbe.ko
arm64的ko
amdgpu.ko
bnx2.ko
bnx2x.ko
bnxt_en.ko
bnxt_re.ko
hclge.ko
hclgevf.ko
hifc.ko
hinic.ko
hnae3.ko
hns3.ko
i40e.ko
ice.ko
igb.ko
ixgbe.ko
ixgbevf.ko
lpfc.ko
megaraid_sas.ko
mlx4_core.ko
mlx4_ib.ko
mlx5_core.ko
mlx5_ib.ko
mpt3sas.ko
nvidia.ko
nvidia_vgpu_vfio.ko
nouveau.ko
nvme.ko
qed.ko
qede.ko
qla2xxx.ko
smartpqi.ko
tg3.ko
txgbe.ko
源码包:m1600-driver
kabi分析工具:https://gitee.com/liqiang1118/share/blob/master/kabi_check.sh
openEuler版本: 22.03-LTS-SP1 x86
1、不在白名单的接口
0x5b8239ca __x86_return_thunk
0xbcb36fe4 hugetlb_optimize_vmemmap_key
0xe783e261 sysfs_emit
0xc3055d20 usleep_range_state
2、驱动接口分析
(1)0xe783e261 sysfs_emit (可整改)
可以通过驱动代码整改掉。
(2)__x86_return_thunk (不可整改)
分析结果:__x86_return_thunk是一个内联汇编基础函数,通过反汇编查看,函数返回即会有调用。
(3)hugetlb_optimize_vmemmap_key (不可整改)
分析结果:反汇编结果中,此函数在跳转表中。
CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP为内核通用特性,openEuler版本默认使能此特性。通用的内核内存模块的函数(PageTail,PageHead,virt_to_head_page,get_page,put_page),即会引用到hugetlb_optimize_vmemmap_key。
如下为一个引用示例:
page_count->
compound_head(page)->
page_fixed_fake_head->hugetlb_optimize_vmemmap_enabled->static_branch_maybe(CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON, &hugetlb_optimize_vmemmap_key);
(4)usleep_range_state (不可整改)
分析结果:驱动确实有函数睡眠的需求,udelay,msleep在白名单,但是不适用于驱动需求,kabi白名单内无可替代的睡眠函数。
内核对于睡眠函数的使用规范:
udelay: 适用于10微妙以下
usleep_range: 适用于10us~20ms
msleep: 适用于> 10ms
源码包:i40e
kabi分析工具:https://gitee.com/liqiang1118/share/blob/master/kabi_check.sh
openEuler版本: 22.03-LTS-SP1 x86
1、不在白名单的接口
0x5b8239ca __x86_return_thunk
0xbcb36fe4 hugetlb_optimize_vmemmap_key
0xc3055d20 usleep_range_state
源码包:!608:Net: ethernet: Support 3snic 3s9xx network card
脚本扫描出usleep_range_state,驱动代码里实际用到的是内联函数 usleep_range。
同nebula_matrix的问题。请问该函数要如何处理?
建议KABI的范围控制在SP内,而不是LTS范围内。如果LTS的某个SP版本有KABI的问题,我们可以推patch解决KABI的问题。
登录 后才可以发表评论