All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Danilo Krummrich" <dakr@kernel.org>
To: "Dave Airlie" <airlied@gmail.com>,
	"Simona Vetter" <simona.vetter@ffwll.ch>
Cc: "Alice Ryhl" <aliceryhl@google.com>,
	"Alexandre Courbot" <acourbot@nvidia.com>,
	"Daniel Almeida" <daniel.almeida@collabora.com>,
	"Miguel Ojeda" <ojeda@kernel.org>,
	"Benno Lossin" <lossin@kernel.org>,
	<nouveau@lists.freedesktop.org>,
	<dri-devel@lists.freedesktop.org>,
	<rust-for-linux@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: [GIT PULL] DRM Rust changes for v6.18
Date: Tue, 16 Sep 2025 17:37:59 +0200	[thread overview]
Message-ID: <DCUC4SY6SRBD.1ZLHAIQZOC6KG@kernel.org> (raw)

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

             reply	other threads:[~2025-09-16 15:38 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-16 15:37 Danilo Krummrich [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-09-16 15:33 [GIT PULL] DRM Rust changes for v6.18 Danilo Krummrich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DCUC4SY6SRBD.1ZLHAIQZOC6KG@kernel.org \
    --to=dakr@kernel.org \
    --cc=acourbot@nvidia.com \
    --cc=airlied@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=daniel.almeida@collabora.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lossin@kernel.org \
    --cc=nouveau@lists.freedesktop.org \
    --cc=ojeda@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=simona.vetter@ffwll.ch \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.