【特性描述】
本特性是基于CONFIG_LIVEPATCH_WO_FTRACE实现下的热补丁激活流程优化,对基于CONFIG_LIVEPATCH_FRACE的实现不影响。特性通过在被打补丁函数入口插入断点异常,引流对旧函数的调用,提升栈检查通过概率,进而提升热补丁激活成功率。
下面描述基于CONFIG_LIVEPATCH_WO_FTRACE实现。
内核热补丁提供了force选项,以调整激活(enable)热补丁时栈检查的宽松程度,当前支持如下设置:
force=2时热补丁激活流程:
基于force=2的实现,可以进一步进行激活流程优化。在某些架构下指令替换区会有几条指令,比如ppc64有8条指令、arm开启module_plt支持时有4条指令等。如果热点函数被反复调用,stop machine时任务可能反复在指令替换区被抢占,热补丁就会反复激活失败。针对这个问题,可先在旧函数入口插一条breakpoing指令,此后内核再调用到旧函数时就会触发breakpoint,breakpoint的handler中拦截执行流,避免反复进入旧函数。此时整体流程大致如下:
同时,要求对需要打补丁的函数全部设置force=2才启用特性优化。
【硬件架构】
x86、arm64、arm32、ppc64、ppc32
Hi lihuafei1, 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) , @jiaoff , @zhengzengkai , @Qiuuuuu , @刘勇强 , @Xie XiuQi
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
这个特性有没有测试方法或者脚本之类的?
登录 后才可以发表评论