皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

Tyr 驱动程序作为基于 Rust 的 Arm Mali 驱动程序提交给 Linux 6.18

在即将到来的 Linux 6.18 内核之前,大量基于 Rust 的 DRM 内核图形/显示驱动程序更新已发送到 DRM-Next。其中最引人注目的是合并了 Tyr 驱动程序,这是一个针对 Arm Mali GPU 的新开源 Rust-based DRM 驱动程序。

Tyr 是针对 Mali GPU 的 Rust DRM 驱动程序,支持与当前基于 C 的 Panthor 驱动程序相同的 GPU 集合。Tyr 与 Panthor 一样,也使用了 Arm Mali 命令流固件”CSF”。

Tyr 由 Collabora、Google 和 Arm 共同开发,现在已准备好以初始/实验形式引入 Linux 6.18。

目前,Tyr 驱动程序可以启动 GPU,通过 MMIO 查询 GPU 元数据,并通过 DRM 设备 ioctl 将元数据提供给用户空间。在接下来的 Linux 内核周期中,Tyr 驱动程序的功能将继续逐步构建,直到它成为 Panthor 的可行替代品。

Tyr 驱动程序作为基于 Rust 的 Arm Mali 驱动程序提交给 Linux 6.18

今天的 Rust DRM 拉取请求还包括了其他一些添加,随着 Rust DRM 基础设施的构建,包括为 Nova 开源 NVIDIA 驱动程序:

“Alloc   “分配”
– 添加 BorrowedPage 类型和 AsPageIter 特性
– 实现 Vmalloc::to_page() 和 VmallocPageIter
– 实现 AsPageIter 用于 VBox 和 VVec

DMA & 散列列表
– 添加 dma::DataDirection 和 dma_addr_t 类型别名
– 结构体 scatterlist 和 struct sg_table 的抽象

DRM
– 在 DRM GEM 模块中,简化泛型使用,添加 DriverFile 类型别名并删除 Object::SIZE。

Nova(核心)
– 众多 register!() 宏改进(为将其提升到通用驱动程序基础设施铺路)
– 小幅 VBios 修复和重构
– 小幅固件请求重构
– 提高固件启动阶段;处理 Booter 并修补其签名,处理 GSP 和 GSP 引导加载程序
– 将开发固件版本切换到 r570.144
– 为 r570.144 添加基本固件绑定
– 将 GSP 引导代码移动到自己的模块中
– 清理并利用 pin-init 功能,将驱动的大部分私有数据存储在单个分配中
– 更新 ARef 导入自 sync::aref
– 将网站添加到 MAINTAINERS 条目

Nova (DRM)
– 更新 ARef 导入自 sync::aref
– 将网站添加到 MAINTAINERS 条目

Pin-Init
– 合并 Benno 的 pin-init PR
– `#[pin_data]` 现在生成一个类似于 `pin-project` crate 的 `*Projection` 结构体。

– 为 `[try_][pin_]init!` 宏添加初始化代码块:使初始化宏接受任意数量的 `_: {/* arbitrary code */},` 并在该点运行代码。

– 使 `[try_][pin_]init!` 宏通过 `let` 绑定以 `&mut T` 或 `Pin<&mut T>` 的形式公开已初始化的字段,供后续使用。

Rust
– AsBytes 和 FromBytes 特质的多种方法

Tyr
– ARM Mali GPU 的初始 Rust 驱动骨架。
– 它可以启动 GPU,通过 MMIO 查询 GPU 元数据,并通过 DRM 设备 IOCTL(struct drm_panthor_dev_query)将元数据提供给用户空间。

转自 Tyr Driver Being Submitted For Linux 6.18 As Rust-Based Arm Mali Driver – Phoronix