All of lore.kernel.org
 help / color / mirror / Atom feed
From: Viresh Kumar <viresh.kumar@linaro.org>
To: "Rafael J. Wysocki" <rafael@kernel.org>,
	"Miguel Ojeda" <miguel.ojeda.sandonis@gmail.com>,
	"Danilo Krummrich" <dakr@redhat.com>,
	"Alex Gaynor" <alex.gaynor@gmail.com>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"Andreas Hindborg" <a.hindborg@kernel.org>,
	"Benno Lossin" <benno.lossin@proton.me>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Boqun Feng" <boqun.feng@gmail.com>,
	"Danilo Krummrich" <dakr@kernel.org>,
	"Gary Guo" <gary@garyguo.net>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Miguel Ojeda" <ojeda@kernel.org>, "Nishanth Menon" <nm@ti.com>,
	"Stephen Boyd" <sboyd@kernel.org>,
	"Trevor Gross" <tmgross@umich.edu>,
	"Viresh Kumar" <vireshk@kernel.org>,
	"Viresh Kumar" <viresh.kumar@linaro.org>
Cc: linux-pm@vger.kernel.org,
	"Vincent Guittot" <vincent.guittot@linaro.org>,
	rust-for-linux@vger.kernel.org,
	"Manos Pitsidianakis" <manos.pitsidianakis@linaro.org>,
	"Erik Schilling" <erik.schilling@linaro.org>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Joakim Bech" <joakim.bech@linaro.org>,
	"Rob Herring" <robh@kernel.org>,
	linux-kernel@vger.kernel.org
Subject: [PATCH V6 00/15] Rust bindings for cpufreq and OPP core + sample driver
Date: Tue,  7 Jan 2025 16:51:33 +0530	[thread overview]
Message-ID: <cover.1736248242.git.viresh.kumar@linaro.org> (raw)

Miguel / Danilo,

I would like to get some of this (if not all) merged now into the rust/dev
branch, since this stuff has been around for some time and many other
dependencies are already merged new (like OF, platform, device/driver). Please
suggest how can we move forward to get that done.

-------------------------8<-------------------------

This patch series introduces initial Rust bindings for two subsystems: cpufreq
and Operating Performance Points (OPP). The bindings cover most of the
interfaces exposed by these subsystems.

Included in this series is a sample `cpufreq` driver, `rcpufreq-dt`, which is a
duplicate of the existing `cpufreq-dt` driver. The `cpufreq-dt` driver is a
generic, platform-agnostic, device-tree-based driver used on many ARM platforms.

Currently, the implementation has been tested using QEMU, verifying that
frequency transitions, various configurations, and driver binding/unbinding
functions as expected. However, performance measurements have not been
conducted.

For those interested in trying these patches, along with a few dependencies,
they can be found at:

git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/linux.git rust/cpufreq-dt

The series includes all the patches to make it work:
- few new APIs to cpufreq/OPP frameworks.
- Avoiding using BIT() macro in cpufreq core (we need to make Rust work with
  it).
- Renaming of the cpufreq-dt platform device (this too needs to be fixed in
  Rust).
- Basic Rust bindings for clk and cpumask layers.

The work is based on `staging/dev` from the Rust tree, which is derived
from v6.13-rc3.

V5->V6:
- Rebase over latest rust/dev branch, which changed few interfaces that the
  patches were using.
- Included all other patches, which weren't included until now to focus only on
  core APIs.
- Other minor cleanups, additions.

V4->V5:
- Rename Registration::register() as new().
- Provide a new API: Registration::new_foreign_owned() and use it for
  rcpufreq_dt driver.
- Update MAINTAINERS file.

V3->V4:
- Fix bugs with freeing of OPP structure. Dropped the Drop routine and fixed
  reference counting.
- Registration object of the cpufreq core is modified a bit to remove the
  registered field, and few other cleanups.
- Use Devres for instead of platform data.
- Improve SAFETY comments.

V2->V3:
- Rebased on latest rust-device changes, which removed `Data` and so few changes
  were required to make it work.
- use srctree links (Alice Ryhl).
- Various changes the OPP creation APIs, new APIs: from_raw_opp() and
  from_raw_opp_owned() (Alice Ryhl).
- Inline as_raw() helpers (Alice Ryhl).
- Add new interface (`OPP::Token`) for dynamically created OPPs.
- Add Reviewed-by tag from Manos.
- Modified/simplified cpufreq registration structure / method a bit.

V1->V2:
- Create and use separate bindings for OF, clk, cpumask, etc (not included in
  this patchset but pushed to the above branch). This helped removing direct
  calls from the driver.
- Fix wrong usage of Pinning + Vec.
- Use Token for OPP Config.
- Use Opaque, transparent and Aref for few structures.
- Broken down into smaller patches to make it easy for reviewers.
- Based over staging/rust-device.

Thanks.

Viresh Kumar (15):
  PM / OPP: Expose refcounting helpers for the Rust implementation
  cpufreq: Add cpufreq_table_len()
  cpufreq: Rust implementation doesn't parse BIT() macro
  rust: device: Add few helpers
  rust: Add bindings for cpumask
  rust: Add bare minimal bindings for clk framework
  rust: Add initial bindings for OPP framework
  rust: Extend OPP bindings for the OPP table
  rust: Extend OPP bindings for the configuration options
  rust: Add initial bindings for cpufreq framework
  rust: Extend cpufreq bindings for policy and driver ops
  rust: Extend cpufreq bindings for driver registration
  rust: Extend OPP bindings with CPU frequency table
  cpufreq: Add Rust based cpufreq-dt driver
  DO-NOT_MERGE: cpufreq: Rename cpufreq-dt platdev

 MAINTAINERS                          |    2 +
 drivers/cpufreq/Kconfig              |   12 +
 drivers/cpufreq/Makefile             |    1 +
 drivers/cpufreq/cpufreq-dt-platdev.c |    2 +-
 drivers/cpufreq/rcpufreq_dt.rs       |  232 ++++++
 drivers/opp/core.c                   |   17 +-
 drivers/opp/opp.h                    |    1 -
 include/linux/cpufreq.h              |   27 +-
 include/linux/pm_opp.h               |    6 +
 rust/bindings/bindings_helper.h      |    5 +
 rust/helpers/cpufreq.c               |   16 +
 rust/helpers/cpumask.c               |   35 +
 rust/helpers/helpers.c               |    2 +
 rust/kernel/clk.rs                   |   48 ++
 rust/kernel/cpufreq.rs               | 1079 ++++++++++++++++++++++++++
 rust/kernel/cpumask.rs               |   85 ++
 rust/kernel/device.rs                |   21 +
 rust/kernel/lib.rs                   |    6 +
 rust/kernel/opp.rs                   |  886 +++++++++++++++++++++
 19 files changed, 2468 insertions(+), 15 deletions(-)
 create mode 100644 drivers/cpufreq/rcpufreq_dt.rs
 create mode 100644 rust/helpers/cpufreq.c
 create mode 100644 rust/helpers/cpumask.c
 create mode 100644 rust/kernel/clk.rs
 create mode 100644 rust/kernel/cpufreq.rs
 create mode 100644 rust/kernel/cpumask.rs
 create mode 100644 rust/kernel/opp.rs

-- 
2.31.1.272.g89b43f80a514


             reply	other threads:[~2025-01-07 11:22 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-07 11:21 Viresh Kumar [this message]
2025-01-07 11:21 ` [PATCH V6 01/15] PM / OPP: Expose refcounting helpers for the Rust implementation Viresh Kumar
2025-01-07 11:58   ` Greg KH
2025-01-08  9:11     ` Viresh Kumar
2025-01-08 11:53       ` Greg KH
2025-01-07 11:21 ` [PATCH V6 02/15] cpufreq: Add cpufreq_table_len() Viresh Kumar
2025-01-07 11:59   ` Greg KH
2025-01-08 11:12     ` Viresh Kumar
2025-01-08 11:50       ` Greg KH
2025-01-09  4:41         ` Viresh Kumar
2025-01-09  7:35           ` Greg KH
2025-01-13  7:30             ` Viresh Kumar
2025-01-13  7:53               ` Greg KH
2025-01-07 11:21 ` [PATCH V6 03/15] cpufreq: Rust implementation doesn't parse BIT() macro Viresh Kumar
2025-01-07 12:00   ` Greg KH
2025-01-07 13:29     ` Daniel Almeida
2025-01-08  6:53       ` Viresh Kumar
2025-01-08  9:01         ` Alice Ryhl
2025-01-08  9:27           ` Viresh Kumar
2025-01-08  5:37     ` Viresh Kumar
2025-01-08 14:47   ` Miguel Ojeda
2025-01-07 11:21 ` [PATCH V6 04/15] rust: device: Add few helpers Viresh Kumar
2025-01-07 11:56   ` Greg Kroah-Hartman
2025-01-08 11:02     ` Viresh Kumar
2025-01-08 11:52       ` Greg Kroah-Hartman
2025-01-08 11:55         ` Alice Ryhl
2025-01-08 12:14           ` Greg Kroah-Hartman
2025-01-08 13:42         ` Danilo Krummrich
2025-01-09  6:36           ` Viresh Kumar
2025-01-09  5:14         ` Viresh Kumar
2025-01-07 11:56   ` Danilo Krummrich
2025-01-07 11:21 ` [PATCH V6 05/15] rust: Add bindings for cpumask Viresh Kumar
2025-01-07 12:01   ` Greg KH
2025-01-07 11:21 ` [PATCH V6 06/15] rust: Add bare minimal bindings for clk framework Viresh Kumar
2025-01-07 11:21 ` [PATCH V6 07/15] rust: Add initial bindings for OPP framework Viresh Kumar
2025-01-07 11:21 ` [PATCH V6 08/15] rust: Extend OPP bindings for the OPP table Viresh Kumar
2025-01-07 11:21 ` [PATCH V6 09/15] rust: Extend OPP bindings for the configuration options Viresh Kumar
2025-01-07 11:21 ` [PATCH V6 10/15] rust: Add initial bindings for cpufreq framework Viresh Kumar
2025-01-07 11:21 ` [PATCH V6 11/15] rust: Extend cpufreq bindings for policy and driver ops Viresh Kumar
2025-01-07 11:21 ` [PATCH V6 12/15] rust: Extend cpufreq bindings for driver registration Viresh Kumar
2025-01-07 11:21 ` [PATCH V6 13/15] rust: Extend OPP bindings with CPU frequency table Viresh Kumar
2025-01-07 11:21 ` [PATCH V6 14/15] cpufreq: Add Rust based cpufreq-dt driver Viresh Kumar
2025-01-07 12:04   ` Greg KH
2025-01-07 11:21 ` [PATCH V6 15/15] DO-NOT_MERGE: cpufreq: Rename cpufreq-dt platdev Viresh Kumar
2025-01-07 11:47 ` [PATCH V6 00/15] Rust bindings for cpufreq and OPP core + sample driver Danilo Krummrich
2025-01-08  5:20   ` Viresh Kumar
2025-01-08 15:03     ` Miguel Ojeda
2025-01-09  3:50       ` Viresh Kumar

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=cover.1736248242.git.viresh.kumar@linaro.org \
    --to=viresh.kumar@linaro.org \
    --cc=a.hindborg@kernel.org \
    --cc=alex.bennee@linaro.org \
    --cc=alex.gaynor@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=benno.lossin@proton.me \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=dakr@kernel.org \
    --cc=dakr@redhat.com \
    --cc=erik.schilling@linaro.org \
    --cc=gary@garyguo.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=joakim.bech@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=manos.pitsidianakis@linaro.org \
    --cc=miguel.ojeda.sandonis@gmail.com \
    --cc=nm@ti.com \
    --cc=ojeda@kernel.org \
    --cc=rafael@kernel.org \
    --cc=robh@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=sboyd@kernel.org \
    --cc=tmgross@umich.edu \
    --cc=vincent.guittot@linaro.org \
    --cc=vireshk@kernel.org \
    /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.