Linus 亲手帮英特尔优化 LAM 代码

来源: 投稿
作者: 罗奇奇
2023-05-09 08:48:00

去年年底英特尔将 LAM(Linear Address Masking :线性地址掩码) 功能提交到 Linux 6.2 的合并窗口,但该功能受到 Linus 的批评并拒绝合并。在经历了一段时间的代码改进后,Linus 终于同意将 LAM 代码合并到 Linux 6.4 窗口。

但 Linus 似乎仍对英特尔工程师提交的代码不太满意,在合并了 LAM 代码后,先是写了一个使 access_ok() 独立于 LAM 的新补丁而后又亲手写了多个补丁对 LAM 代码进行了优化。

在最新提交的 LAM 优化补丁中,Linus 解释了自己的动机:

我对此版本中的 LAM(“线性地址掩码”)的 “access_ok()” 的完成方式感到很不爽,而且它实际上也有一些小 Bug ,所以我动手清理了代码。

改动主要集中在以下几方面:

  • 使用 __user 指针的符号位而不是屏蔽地址,并根据 TASK_SIZE 范围检查它。  get/put_user() 端做了这部分,但是 'access_ok()' 做了天真的“掩码和范围检查”,它不仅生成多余的代码,还意味着 __access_ok 本身的任务做得不好, copy_from_user_nmi() 没有得到正确的检查。
  • 将所有 64 位代码仅移动到 64 位版本的头文件中,这样就不会污染共享的 x86 代码,也不会误导用户 LAM 可以在 32 位环境中工作。
  • 修复地址掩码中的 Bug(这不重要,只是完全删除了错误的代码)。
  • 几个简单的清理,并添加了关于 access_ok() 规则的注释。

Linus 重新编写了约一百行代码来清理 LAM ,这意味着如果测试没问题, 就可以在 Linux 6.4 中顺利启用 LAM 功能不过这次 Linus 竟然亲自动手为英特尔工程师修改“有瑕疵的代码”,这种情况相当少见。

展开阅读全文
点击加入讨论🔥(16) 发布并加入讨论🔥
本篇精彩评论
64位代码迁移都要大佬亲自做,intel的工程师是吃什么的?要是没Linus亲自审核,代码的丑陋程度怕是连我都看不下去了。
2023-05-09 09:44
21
举报
linux内核没有linus大佬把关代码质量,估计已经是屎山了
2023-05-09 13:13
12
举报
你这个逼装的湿润、圆滑、有弹性 你这个逼虽然装的很华丽,但是少了那么一丝朴实,没有给我焕然一新的感觉。从专业的角度来说,这个逼装得不是很成功,没有层次感,但是从艺术的角度来看,这个逼装得很有观赏性,我希望在OSC上,看到焕然一新的你,好吗?我给你99分。
2023-05-09 10:00
9
举报
同样是C语言,在大佬手里就像乔峰打太祖长拳🤜,在我手里就像玩乐高积木🤡
2023-05-10 11:10
4
举报
你这个逼装的湿润、圆滑、有弹性 你这个逼虽然装的很华丽,但是少了那么一丝朴实,没有给我焕然一新的感觉。从专业的角度来说,这个逼装得不是很成功,没有层次感,但是从艺术的角度来看,这个逼装得很有观赏性,我希望在OSC上,看到焕然一新的你,好吗?我给你99分。
2023-05-09 10:13
3
举报
16 评论
5 收藏
分享
返回顶部
顶部