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


去年年底英特尔将 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 竟然亲自动手为英特尔工程师修改“有瑕疵的代码”,这种情况相当少见。


相關推薦

2022-12-21

英特尔希望将其 LAM(Linear Address Masking :线性地址掩码) 功能合并到 Linux 6.2,但该功能被 Linus 批评了一番,并拒绝了该合并。 英特尔线性地址掩码 (LAM) 允许软件将 64 位线性地址的未转换地址位用于元数据,线性地

2023-05-02

曾被 Linus 点名批评的英特尔 LAM(Linear Address Masking :线性地址掩码) 功能,终于合并到  Linux 6.4 中。 英特尔线性地址掩码 (LAM) 允许软件将 64 位线性地址的未转换地址位用于元数据,可用于用户空间内存清理和标记

2022-10-16

为对长期以来占主导地位的 GCC 编译器目标的补充支持,英特尔的 ICC 编译器也能够用于构建 Linux 内核(尽管没有被广泛使用)。鉴于此,内核开发人员现在正在考虑删除对 ICC 编译器的支持。 Linux 开发人员 Masahiro Yamada 提出

2022-08-16

x 6.0 带来了超百万行代码,这些代码主要来源于 AMD GPU 和英特尔 Habana Labs Gaudi2 支持代码。下面是该版本一些重要的变更: 合并大量 char/misc 代码,提供 Gaudi2 支持 引入 F2FS 低内存模式,用性能减少内存占用  为 LoongArch

2022-10-12

缺且昂贵,无法用合理的价格获取。他为此还公开批评了英特尔的市场营销策略——宣称 ECC 内存是为服务器和嵌入式设备服务的,导致一般用户难以购买到价格合理的 ECC 内存。 延伸阅读 Linus 新年第一怼:英特尔正在扼杀

2023-03-07

多的 ASUS 主板的传感器监控,还有 Btrfs 性能优化、移除英特尔 ICC 编译器支持等。 驱动方面,这个版本合并了 AMD-Xilinx XDMA 驱动程序、一些 AMD Zen 4 性能优化, 8BitDo Pro 2 有线控制器支持。还合并英特尔 TPMI 驱动程序,各种其他

2022-02-21

英特尔的软件定义芯片(SDSi),即我们此前报道的英特尔 CPU 内购功能,已完全准备好与  Linux 5.18 内核合并:intel_sdsi 驱动程序已排入x86 平台驱动程序的 “for-next” Git 分支。除非英特尔突然改变路线,或 Linus Torvalds 对该功

2023-04-17

还买了一份 MINIX。 As and Bs 游戏搞定后,Linus 开始学习英特尔汇编语言,并在某一天向 Lars 展示了他编写的一个执行多任务处理的程序:一个任务或线程会在屏幕上写入字母“A”的流,另一个是“B”;当流 As 变成 Bs 时,上下

2021-12-27

还没认识的 Linus 帮助 DECUS UNISIG 主席 Kurt Reisler 在英特尔电脑上安装好了 GNU/Linux,并在当天晚些时候看到 Linus 发表了两场演讲。Jon 表示自己在使用 Linux 后的感受是十分惊讶,还给出了非常好的评价。 当时 Linus 年仅 24

2022-10-26

近日,Linus Torvalds 在邮件列表回应了对从内核移除英特尔 i486 处理器支持的想法。 Linux 内核十年前移除对 i386 的支持后,i486 一直是内核主线对 x86 架构支持的最低版本。Linus 说道:“我们早在 2012 年就取消了对 i386 支持,也许

2023-05-30

在 Intel自 2015 年左右以来销售的每一个 CPU 上。MINIX 在其英特尔管理引擎上运行,包括网络堆栈、存储驱动程序等。 该事件在 2017 年被首次报道,详情可查看当年的报道:世界上最流行的操作系统 MINIX 暗藏着最大的威胁? 但

2023-03-07

去年我们报道了 Linux 内核拟放弃支持英特尔 ICC 编译器,如今该讨论终于有了结果。在 Linux 6.3 内核合并窗口打开的最后一天,Linus Torvalds 合并了“删除 Intel ICC 编译器支持” 补丁,从内核中移除了 Intel  ICC  编译器的支

2021-11-23

urnal 》的发行量达到了一万本。Linux 系统也能同时适用于英特尔处理器、DEC 的处理器以及 Sun 公司的SPARC处理器了。Linux 跨出了一大步。 几年以后, Linux 社区的开发者已经成千上万,他们依靠邮件列表以及彼此之间制定的规

2023-06-29

Linus Torvalds最近在Linux 6.5合并窗口中对一个性能优化补丁进行了改进。 该补丁旨在为csum_partial函数提供大幅吞吐量提升和降低延迟,该函数在Linux内核中通常被用于校验和(Checksumming)。 csum_partial 函数用于从文件系统到网络的校