401 Star 1.4K Fork 1.3K

GVPopenEuler / kernel

 / 详情

openEuler-22.03-LTS 兼容性 KABI 白名单初稿预审

已完成
任务 成员
创建于  
2022-02-17 18:59

以 openEuler-20.03-LTS 驱动列表、兼容性 KABI 白名单为基础,以如下几个方面为白名单移除或新增的输入,得到 openEuler-22.03-LTS 兼容性 KABI 白名单初稿:
ARM64 版本变更统计结果:
输入图片说明
X86 版本变更统计结果:
输入图片说明

评论 (7)

zhangjialin 创建了任务

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

openeuler-ci-bot 添加了
 
sig/Kernel
标签
zhangjialin 修改了描述
zhangjialin 修改了描述
zhangjialin 修改了描述
zhangjialin 修改了标题
zhangjialin 修改了描述
zhangjialin 修改了描述
zhangjialin 修改了描述

白名单是怎么校验的?

sanglipeng 负责人设置为zhangjialin
sanglipeng 任务状态待办的 修改为进行中

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

  1. 脚本扫描出usleep_range_state,驱动代码里实际用到的是内联函数 usleep_range。
    同nebula_matrix的问题。请问该函数要如何处理?

  2. 建议KABI的范围控制在SP内,而不是LTS范围内。如果LTS的某个SP版本有KABI的问题,我们可以推patch解决KABI的问题。

zhangjialin 任务状态进行中 修改为已完成

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(5)
5329419 openeuler ci bot 1632792936 7593378 lindorx 1590069329
C
1
https://gitee.com/openeuler/kernel.git
git@gitee.com:openeuler/kernel.git
openeuler
kernel
kernel

搜索帮助