虽然直接渲染管理器(DRM)内核图形/显示驱动程序针对Linux 6.8进行了更新令人兴奋的包括新的英特尔“Xe”DRM和PowerVR Imagination驱动程序,AMD色彩管理属性的实验形式,Raspberry PI 5图形支持,以及更多,Linus Torvalds对一些新的Intel Xe驱动程序代码不满意。
多年来,Linus Torvalds一直以偶尔表达对图形驱动程序代码质量的不满而闻名。他是对DRM驱动程序代码质量表示失望多年来,偶尔不得不拒绝DRM代码。对于Linux6.8,他在Linux内核邮件列表上表达了对测试的失望,因为当涉及到新的Intel Xe驱动代码时,测试是“严重缺乏的”。
几分钟前,托瓦尔兹在内核邮件列表上写道:
你的测试严重不足。
这甚至都不能建造。原因似乎是COMMIT b49e894c3fd8(“DRM/i915:用ref_tracker库替换定制的英特尔运行时_PM跟踪器”)将‘intel_wakeref_t’类型从‘depot_Stack_Handle_t’更改为‘unsign long’,结果如下:
-DRM_DBG(&;i915->;DRM,“async_put_wakeref%un”,
+DRM_DBG(&;i915->;DRM,“async_put_wakeref%lun”,
POWER_DOMAINS->;async_put_wakeref);同时,Xe驱动程序具有以下功能:
Drivers/gpu/drm/xe/compat-i915-headers/intel_wakeref.h:
Tyecif bool intel_wakeref_t;这从来都不是有效的,但是现在构建失败了,
drivers/gpu/CPU/i915/display/intel_display_power.c:在函数“print_pixec_put_domains_state”中:
Drivers/gpu/drm/i915/display/intel_display_power.c:408:29:错误:格式‘%lu’需要类型为‘LONG UNSIGNED INT’的参数,但参数5的类型为‘INT’[-WERROR=FORMAT=]因为DRM头文件有一个恶心的东西,其中一个*头*文件包括一个*C*文件:
在./Include/drm/drm_mm.h:51包含的文件中,
来自驱动程序/GPU/DRM/xe/xe_bo_typees.h:11,
来自驱动程序/GPU/DRM/Xe/Xe_bo.h:11,
从…
./ drivers/gpu/xe/compat-i915-headers/gem/i915_gem_object.h:11,
来自./drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h:15,
来自drivers/gpu/drm/i915/display/intel_display_power.c:8:恶心
我通过修复损坏的Xe Compat头文件来构建它,但这绝对不是事情应该如何工作的。在没有任何构建测试的情况下,这怎么会影响到我呢?
为什么%^!@$%的头文件包含C文件?不管这个错误是什么,这都是错误的。
莱纳斯
与托瓦尔兹几年前的一些通信相比,这条消息相当温和,但确实提出了一些合理的问题,即这些Xe驱动程序问题是如何没有得到解决的。他的评论可以在LKML同时等待是否有开发商挺身而出做出回应。
In any event Linus has gone ahead and merged the new code for Linux 6.8. Hopefully this is just a one-off issue for the Intel Xe driver and not part of larger code quality issues.