Hi

Am 26.01.26 um 09:17 schrieb pengfuyuan:
This patch series adds Rust bindings and safe abstractions for the Linux
framebuffer subsystem, enabling framebuffer drivers to be implemented in Rust.

The framebuffer subsystem is obsolete and has been deprecated for a decade. No new drivers accepted. Anything that really wants fbdev already has a driver. Can we please let it die?

Best regards
Thomas


The series consists of 4 patches:

1. rust: io: mem: add ioremap_wc support
    Adds write-combining memory mapping support to the Rust iomem abstraction,
    which is essential for framebuffer memory regions that benefit from
    write-combining semantics.

2. rust: device: add platdata accessors
    Implements generic accessors for platform data, enabling drivers to access
    platform-provided configuration. This is needed for framebuffer drivers
    that use platform data for configuration.

3. rust: fb: add framebuffer driver support
    Adds the core framebuffer framework abstraction, including:
    - Device abstraction (`fb::Device`) with reference counting via 
`AlwaysRefCounted`
    - Driver and Operations traits (`fb::Driver`, `fb::Operations`)
    - Screen information wrappers (`fb::FixScreenInfo`, `fb::VarScreenInfo`)
    - I/O operation helpers (`fb_io_read`, `fb_io_write`, `fb_io_mmap`)
    - Blit operation helpers (`cfb_fillrect`, `cfb_copyarea`, `cfb_imageblit`)

4. rust: fb: add simplefb test driver
    Adds a test driver that validates the framebuffer framework by porting
    the C simplefb driver to Rust. This driver serves as both a validation
    tool and a reference implementation for future Rust framebuffer drivers.

The implementation follows the same patterns established in the DRM subsystem
and maintains full compatibility with the existing C framebuffer subsystem.
All C callbacks are properly bridged to Rust trait methods via the `Operations`
trait, memory safety is ensured through proper use of `Opaque<fb_info>`, `ARef`,
and `AlwaysRefCounted` for reference counting, type invariants are documented
and enforced through the type system, and resource cleanup is handled via RAII
with proper cleanup order.

Testing:
--------
This series has been tested on:
- ARM64 platforms with various display configurations
- AMD RX550 graphics card
- Moore Threads S30 graphics card
- Multiple other graphics cards

All tested configurations show normal display functionality with proper
framebuffer initialization, rendering operations (including I/O, color register
management, and blitting), memory mapping, and resource cleanup. The simplefb
test driver successfully demonstrates the usage of all framebuffer framework
APIs and validates the abstraction's correctness.

The simplefb test driver serves as both a validation tool and a reference
implementation for future Rust framebuffer drivers.


pengfuyuan (4):
   rust: io: mem: add ioremap_wc support
   rust: device: add platdata accessors
   rust: fb: add framebuffer driver support
   rust: fb: add simplefb test driver

  drivers/video/fbdev/Kconfig          |  21 +
  drivers/video/fbdev/Makefile         |   1 +
  drivers/video/fbdev/simplefb_rust.rs | 653 +++++++++++++++++++++++++++
  rust/bindings/bindings_helper.h      |   2 +
  rust/helpers/device.c                |   5 +
  rust/helpers/io.c                    |   5 +
  rust/kernel/device.rs                |  31 ++
  rust/kernel/fb/blit.rs               | 106 +++++
  rust/kernel/fb/device.rs             | 463 +++++++++++++++++++
  rust/kernel/fb/driver.rs             | 169 +++++++
  rust/kernel/fb/io.rs                 |  76 ++++
  rust/kernel/fb/mod.rs                |  23 +
  rust/kernel/fb/screeninfo.rs         | 318 +++++++++++++
  rust/kernel/io/mem.rs                |  71 +++
  rust/kernel/lib.rs                   |   2 +
  15 files changed, 1946 insertions(+)
  create mode 100644 drivers/video/fbdev/simplefb_rust.rs
  create mode 100644 rust/kernel/fb/blit.rs
  create mode 100644 rust/kernel/fb/device.rs
  create mode 100644 rust/kernel/fb/driver.rs
  create mode 100644 rust/kernel/fb/io.rs
  create mode 100644 rust/kernel/fb/mod.rs
  create mode 100644 rust/kernel/fb/screeninfo.rs


--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)


Reply via email to