lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-Id: <DCUC1PQWPSQJ.1LEHJPN9T49Z5@dakr.org>
Date: Tue, 16 Sep 2025 17:33:57 +0200
From: "Danilo Krummrich" <me@...r.org>
To: "Dave Airlie" <airlied@...il.com>, "Simona Vetter"
 <simona.vetter@...ll.ch>
Cc: "Alice Ryhl" <aliceryhl@...gle.com>, "Alexandre Courbot"
 <acourbot@...dia.com>, "Daniel Almeida" <daniel.almeida@...labora.com>,
 "Miguel Ojeda" <ojeda@...nel.org>, "Benno Lossin" <lossin@...nel.org>,
 <nouveau@...ts.freedesktop.org>, <dri-devel@...ts.freedesktop.org>,
 <rust-for-linux@...r.kernel.org>, <linux-kernel@...r.kernel.org>
Subject: [GIT PULL] DRM Rust changes for v6.18

Hi Dave and Sima,

Please pull the following DRM Rust changes.

Besides the DRM changes, this PR also contains some new DMA & scatterlist
infrastructure (incl. some alloc dependencies), with Nova as a first user.

It also includes a few AsBytes and FromBytes additions needed by Nova.

I merged this cycle's pin-init PR from Benno, since Nova is the first user
taking advantage of the new features included.

There are a couple of conflicts with other trees (Rust, MM, Driver Core, Linus),
but they are mostly around includes and all trivial [1..8] -- no semantic
conflicts.

All changes have been in -next for a couple of rounds; the latest nova-core
series from Alex for one cycle.

- Danilo

[1] https://lore.kernel.org/all/20250905124634.68da9a1e@canb.auug.org.au/
[2] https://lore.kernel.org/all/20250905125139.109081b2@canb.auug.org.au/
[3] https://lore.kernel.org/all/20250905125653.0ebc7580@canb.auug.org.au/
[4] https://lore.kernel.org/all/20250905144449.437ef3cf@canb.auug.org.au/
[5] https://lore.kernel.org/all/20250912120159.1d6518cc@canb.auug.org.au/
[6] https://lore.kernel.org/all/20250912135146.0c3ea18f@canb.auug.org.au/
[7] https://lore.kernel.org/all/aMlfiBynRQrbW3BT@sirena.org.uk/
[8] https://lore.kernel.org/all/aMlhpIhjbrDR4C8L@sirena.org.uk/

The following changes since commit 043d9c6928b010be7902a01b5cdfa7d754535b1a:

  drm/bridge: anx7625: register content protect property (2025-08-20 08:22:01 -0700)

are available in the Git repository at:

  https://gitlab.freedesktop.org/drm/rust/kernel.git tags/drm-rust-next-2025-09-16

for you to fetch changes up to 299eb32863e584cfff7c6b667c3e92ae7d4d2bf9:

  gpu: nova-core: Add base files for r570.144 firmware bindings (2025-09-13 23:17:48 +0900)

----------------------------------------------------------------
DRM Rust changes for v6.18

Alloc
  - Add BorrowedPage type and AsPageIter trait
  - Implement Vmalloc::to_page() and VmallocPageIter
  - Implement AsPageIter for VBox and VVec

DMA & Scatterlist
  - Add dma::DataDirection and type alias for dma_addr_t
  - Abstraction for struct scatterlist and struct sg_table

DRM
  - In the DRM GEM module, simplify overall use of generics, add
    DriverFile type alias and drop Object::SIZE.

Nova (Core)
  - Various register!() macro improvements (paving the way for lifting
    it to common driver infrastructure)
  - Minor VBios fixes and refactoring
  - Minor firmware request refactoring
  - Advance firmware boot stages; process Booter and patch its
    signature, process GSP and GSP bootloader
  - Switch development fimrware version to r570.144
  - Add basic firmware bindings for r570.144
  - Move GSP boot code to its own module
  - Clean up and take advantage of pin-init features to store most of
    the driver's private data within a single allocation
  - Update ARef import from sync::aref
  - Add website to MAINTAINERS entry

Nova (DRM)
  - Update ARef import from sync::aref
  - Add website to MAINTAINERS entry

Pin-Init
  - Merge pin-init PR from Benno
    - `#[pin_data]` now generates a `*Projection` struct similar to the
      `pin-project` crate.

    - Add initializer code blocks to `[try_][pin_]init!` macros: make
      initializer macros accept any number of `_: {/* arbitrary code
      */},` & make them run the code at that point.

    - Make the `[try_][pin_]init!` macros expose initialized fields via
      a `let` binding as `&mut T` or `Pin<&mut T>` for later fields.

Rust
  - Various methods for AsBytes and FromBytes traits

Tyr
  - Initial Rust driver skeleton for ARM Mali GPUs.
    - It can power up the GPU, query for GPU metatdata through MMIO and
      provide the metadata to userspace via DRM device IOCTL (struct
      drm_panthor_dev_query).

----------------------------------------------------------------
Alexandre Courbot (33):
      gpu: nova-core: register: add missing space in register!()
      gpu: nova-core: register: allow fields named `offset`
      gpu: nova-core: register: improve documentation for basic registers
      gpu: nova-core: register: simplify @leaf_accessor rule
      gpu: nova-core: register: remove `try_` accessors for relative registers
      gpu: nova-core: register: move OFFSET declaration to I/O impl block
      gpu: nova-core: register: fix documentation and indentation
      gpu: nova-core: register: add missing doccomments for fixed registers I/O accessors
      gpu: nova-core: register: add fields dispatcher internal rule
      gpu: nova-core: register: improve `Debug` implementation
      gpu: nova-core: register: generate correct `Default` implementation
      gpu: nova-core: register: split @io rule into fixed and relative versions
      gpu: nova-core: register: use #[inline(always)] for all methods
      gpu: nova-core: register: redesign relative registers
      gpu: nova-core: falcon: add distinct base address for PFALCON2
      gpu: nova-core: register: add support for register arrays
      gpu: nova-core: falcon: use register arrays for FUSE registers
      gpu: nova-core: register: add support for relative array registers
      gpu: nova-core: falcon: align DMA transfers to 256 bytes
      rust: transmute: add `as_bytes` method for `AsBytes` trait
      rust: transmute: add `as_bytes_mut` method to `AsBytes` trait
      rust: transmute: add `from_bytes_copy` method to `FromBytes` trait
      gpu: nova-core: vbios: replace pci::Device with device::Device
      gpu: nova-core: vbios: store reference to Device where relevant
      gpu: nova-core: require `Send` on `FalconEngine` and `FalconHal`
      gpu: nova-core: move GSP boot code to its own module
      gpu: nova-core: add Chipset::name() method
      gpu: nova-core: firmware: move firmware request code into a function
      gpu: nova-core: firmware: add support for common firmware header
      gpu: nova-core: firmware: process Booter and patch its signature
      gpu: nova-core: firmware: process and prepare the GSP firmware
      gpu: nova-core: firmware: process the GSP bootloader
      gpu: nova-core: firmware: use 570.144 firmware

Alistair Popple (1):
      gpu: nova-core: Add base files for r570.144 firmware bindings

Benno Lossin (6):
      rust: pin-init: examples: error: use `Error` in `fn main()`
      rust: pin-init: README: add information banner on the rename to `pin-init`
      rust: pin-init: rename `project` -> `project_this` in doctest
      rust: pin-init: add pin projections to `#[pin_data]`
      rust: pin-init: add code blocks to `[try_][pin_]init!` macros
      rust: pin-init: add references to previously initialized fields

Christian S. Lima (1):
      rust: transmute: Add methods for FromBytes trait

Daniel Almeida (1):
      rust: drm: Introduce the Tyr driver for Arm Mali GPUs

Danilo Krummrich (15):
      rust: page: implement BorrowedPage
      rust: alloc: vmalloc: implement Vmalloc::to_page()
      rust: alloc: implement VmallocPageIter
      rust: page: define trait AsPageIter
      rust: alloc: kbox: implement AsPageIter for VBox
      rust: alloc: layout: implement ArrayLayout::size()
      rust: alloc: kvec: implement AsPageIter for VVec
      rust: dma: implement DataDirection
      rust: dma: add type alias for bindings::dma_addr_t
      rust: scatterlist: Add abstraction for sg_table
      samples: rust: dma: add sample code for SGTable
      MAINTAINERS: rust: dma: add scatterlist files
      gpu: nova-core: take advantage of pci::Device::unbind()
      Merge drm-misc-next-2025-08-21 into drm-rust-next
      Merge tag 'pin-init-v6.18' of https://github.com/Rust-for-Linux/linux into drm-rust-next

John Hubbard (1):
      gpu: nova-core: register: minor grammar and spelling fixes

Lyude Paul (3):
      rust: drm: gem: Simplify use of generics
      rust: drm: gem: Add DriverFile type alias
      rust: drm: gem: Drop Object::SIZE

Philipp Stanner (1):
      MAINTAINERS: Add website of Nova GPU driver

Rhys Lloyd (2):
      gpu: nova-core: vbios: use size_of instead of magic number
      gpu: nova-core: vbios: change PmuLookupTableEntry to use size_of

Shankari Anand (2):
      drm: nova: update ARef import from sync::aref
      gpu: nova-core: Update ARef imports from sync::aref

 Documentation/gpu/nova/core/todo.rst              |  19 -
 MAINTAINERS                                       |  19 +-
 drivers/gpu/drm/Kconfig                           |   2 +
 drivers/gpu/drm/Makefile                          |   1 +
 drivers/gpu/drm/nova/driver.rs                    |   4 +-
 drivers/gpu/drm/nova/gem.rs                       |  10 +-
 drivers/gpu/drm/tyr/Kconfig                       |  19 +
 drivers/gpu/drm/tyr/Makefile                      |   3 +
 drivers/gpu/drm/tyr/driver.rs                     | 205 ++++++
 drivers/gpu/drm/tyr/file.rs                       |  56 ++
 drivers/gpu/drm/tyr/gem.rs                        |  18 +
 drivers/gpu/drm/tyr/gpu.rs                        | 219 ++++++
 drivers/gpu/drm/tyr/regs.rs                       | 108 +++
 drivers/gpu/drm/tyr/tyr.rs                        |  22 +
 drivers/gpu/nova-core/driver.rs                   |  13 +-
 drivers/gpu/nova-core/falcon.rs                   | 113 ++--
 drivers/gpu/nova-core/falcon/gsp.rs               |  16 +-
 drivers/gpu/nova-core/falcon/hal.rs               |   2 +-
 drivers/gpu/nova-core/falcon/hal/ga102.rs         |  47 +-
 drivers/gpu/nova-core/falcon/sec2.rs              |  13 +-
 drivers/gpu/nova-core/fb.rs                       |   2 +-
 drivers/gpu/nova-core/firmware.rs                 | 107 ++-
 drivers/gpu/nova-core/firmware/booter.rs          | 375 ++++++++++
 drivers/gpu/nova-core/firmware/fwsec.rs           |  17 +-
 drivers/gpu/nova-core/firmware/gsp.rs             | 243 +++++++
 drivers/gpu/nova-core/firmware/riscv.rs           |  91 +++
 drivers/gpu/nova-core/gpu.rs                      | 216 ++----
 drivers/gpu/nova-core/gsp.rs                      |  22 +
 drivers/gpu/nova-core/gsp/boot.rs                 | 137 ++++
 drivers/gpu/nova-core/gsp/fw.rs                   |   7 +
 drivers/gpu/nova-core/gsp/fw/r570_144.rs          |  29 +
 drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs |   1 +
 drivers/gpu/nova-core/nova_core.rs                |   1 +
 drivers/gpu/nova-core/regs.rs                     |  84 +--
 drivers/gpu/nova-core/regs/macros.rs              | 789 ++++++++++++++++++----
 drivers/gpu/nova-core/util.rs                     |  20 -
 drivers/gpu/nova-core/vbios.rs                    | 176 +++--
 rust/bindings/bindings_helper.h                   |   2 +
 rust/helpers/helpers.c                            |   1 +
 rust/helpers/scatterlist.c                        |  24 +
 rust/kernel/alloc/allocator.rs                    |  52 ++
 rust/kernel/alloc/allocator/iter.rs               | 102 +++
 rust/kernel/alloc/allocator_test.rs               |  29 +
 rust/kernel/alloc/kbox.rs                         |  40 +-
 rust/kernel/alloc/kvec.rs                         |  40 +-
 rust/kernel/alloc/layout.rs                       |   5 +
 rust/kernel/devres.rs                             |   6 +-
 rust/kernel/dma.rs                                |  86 ++-
 rust/kernel/drm/driver.rs                         |   3 +
 rust/kernel/drm/gem/mod.rs                        |  93 ++-
 rust/kernel/lib.rs                                |   2 +
 rust/kernel/page.rs                               |  87 ++-
 rust/kernel/scatterlist.rs                        | 491 ++++++++++++++
 rust/kernel/transmute.rs                          | 114 +++-
 rust/kernel/workqueue.rs                          |   9 +-
 rust/pin-init/README.md                           |  12 +
 rust/pin-init/examples/error.rs                   |   4 +-
 rust/pin-init/src/lib.rs                          |   4 +-
 rust/pin-init/src/macros.rs                       | 239 ++++++-
 rust/uapi/uapi_helper.h                           |   1 +
 samples/rust/rust_dma.rs                          |  35 +-
 samples/rust/rust_driver_pci.rs                   |   2 +-
 62 files changed, 4022 insertions(+), 687 deletions(-)
 create mode 100644 drivers/gpu/drm/tyr/Kconfig
 create mode 100644 drivers/gpu/drm/tyr/Makefile
 create mode 100644 drivers/gpu/drm/tyr/driver.rs
 create mode 100644 drivers/gpu/drm/tyr/file.rs
 create mode 100644 drivers/gpu/drm/tyr/gem.rs
 create mode 100644 drivers/gpu/drm/tyr/gpu.rs
 create mode 100644 drivers/gpu/drm/tyr/regs.rs
 create mode 100644 drivers/gpu/drm/tyr/tyr.rs
 create mode 100644 drivers/gpu/nova-core/firmware/booter.rs
 create mode 100644 drivers/gpu/nova-core/firmware/gsp.rs
 create mode 100644 drivers/gpu/nova-core/firmware/riscv.rs
 create mode 100644 drivers/gpu/nova-core/gsp.rs
 create mode 100644 drivers/gpu/nova-core/gsp/boot.rs
 create mode 100644 drivers/gpu/nova-core/gsp/fw.rs
 create mode 100644 drivers/gpu/nova-core/gsp/fw/r570_144.rs
 create mode 100644 drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs
 create mode 100644 rust/helpers/scatterlist.c
 create mode 100644 rust/kernel/alloc/allocator/iter.rs
 create mode 100644 rust/kernel/scatterlist.rs

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ