public inbox for linux-pwm@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/3] Implement Send and Sync for clk
@ 2025-12-18 13:27 Alice Ryhl
  2025-12-18 13:27 ` [PATCH v3 1/3] rust: clk: implement Send and Sync Alice Ryhl
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Alice Ryhl @ 2025-12-18 13:27 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Maarten Lankhorst, Maxime Ripard,
	Drew Fustini, Guo Ren, Fu Wei, Uwe Kleine-König,
	Michal Wilczynski
  Cc: Viresh Kumar, Miguel Ojeda, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Trevor Gross, Danilo Krummrich, Daniel Almeida, linux-clk,
	rust-for-linux, linux-kernel, dri-devel, linux-riscv, linux-pwm,
	Alice Ryhl

The Clk type is thread-safe, so let's mark it as thread-safe in the type
system. This lets us get rid of hacks in drivers.

For Stephen's clk tree.

Signed-off-by: Alice Ryhl <aliceryhl@google.com>
---
Changes in v3:
- Rebase on v6.19-rc1.
- Pick up tags.
- Add fix for pwm driver as well.
- Link to v2: https://lore.kernel.org/r/20251020-clk-send-sync-v2-0-44ab533ae084@google.com

Changes in v2:
- Rebase on v6.18-rc1.
- Add patch to tyr driver.
- Link to v1: https://lore.kernel.org/r/20250904-clk-send-sync-v1-1-48d023320eb8@google.com

---
Alice Ryhl (3):
      rust: clk: implement Send and Sync
      tyr: remove impl Send/Sync for TyrData
      pwm: th1520: remove impl Send/Sync for Th1520PwmDriverData

 drivers/gpu/drm/tyr/driver.rs | 12 ------------
 drivers/pwm/pwm_th1520.rs     | 15 ---------------
 rust/kernel/clk.rs            |  7 +++++++
 3 files changed, 7 insertions(+), 27 deletions(-)
---
base-commit: 8f0b4cce4481fb22653697cced8d0d04027cb1e8
change-id: 20250904-clk-send-sync-3cfa7f4e1ce2

Best regards,
-- 
Alice Ryhl <aliceryhl@google.com>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v3 1/3] rust: clk: implement Send and Sync
  2025-12-18 13:27 [PATCH v3 0/3] Implement Send and Sync for clk Alice Ryhl
@ 2025-12-18 13:27 ` Alice Ryhl
  2025-12-18 13:27 ` [PATCH v3 2/3] tyr: remove impl Send/Sync for TyrData Alice Ryhl
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Alice Ryhl @ 2025-12-18 13:27 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Maarten Lankhorst, Maxime Ripard,
	Drew Fustini, Guo Ren, Fu Wei, Uwe Kleine-König,
	Michal Wilczynski
  Cc: Viresh Kumar, Miguel Ojeda, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Trevor Gross, Danilo Krummrich, Daniel Almeida, linux-clk,
	rust-for-linux, linux-kernel, dri-devel, linux-riscv, linux-pwm,
	Alice Ryhl

These traits are required for drivers to embed the Clk type in their own
data structures because driver data structures are usually required to
be Send. Since the Clk type is thread-safe, implement the relevant
traits.

Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com>
Reviewed-by: Danilo Krummrich <dakr@kernel.org>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Boqun Feng <boqun.feng@gmail.com>
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
---
 rust/kernel/clk.rs | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/rust/kernel/clk.rs b/rust/kernel/clk.rs
index c1cfaeaa36a22be2e3180b1e9142bb608ab276ea..d192fbd97861212d738d24510eebcd99c9177f2c 100644
--- a/rust/kernel/clk.rs
+++ b/rust/kernel/clk.rs
@@ -129,6 +129,13 @@ mod common_clk {
     #[repr(transparent)]
     pub struct Clk(*mut bindings::clk);
 
+    // SAFETY: It is safe to call `clk_put` on another thread than where `clk_get` was called.
+    unsafe impl Send for Clk {}
+
+    // SAFETY: It is safe to call any combination of the `&self` methods in parallel, as the
+    // methods are synchronized internally.
+    unsafe impl Sync for Clk {}
+
     impl Clk {
         /// Gets [`Clk`] corresponding to a [`Device`] and a connection id.
         ///

-- 
2.52.0.351.gbe84eed79e-goog


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v3 2/3] tyr: remove impl Send/Sync for TyrData
  2025-12-18 13:27 [PATCH v3 0/3] Implement Send and Sync for clk Alice Ryhl
  2025-12-18 13:27 ` [PATCH v3 1/3] rust: clk: implement Send and Sync Alice Ryhl
@ 2025-12-18 13:27 ` Alice Ryhl
  2025-12-18 13:27 ` [PATCH v3 3/3] pwm: th1520: remove impl Send/Sync for Th1520PwmDriverData Alice Ryhl
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Alice Ryhl @ 2025-12-18 13:27 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Maarten Lankhorst, Maxime Ripard,
	Drew Fustini, Guo Ren, Fu Wei, Uwe Kleine-König,
	Michal Wilczynski
  Cc: Viresh Kumar, Miguel Ojeda, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Trevor Gross, Danilo Krummrich, Daniel Almeida, linux-clk,
	rust-for-linux, linux-kernel, dri-devel, linux-riscv, linux-pwm,
	Alice Ryhl

Now that clk implements Send and Sync, we no longer need to manually
implement these traits for TyrData. Thus remove the implementations.

The comment also mentions the regulator. However, the regulator had the
traits added in commit 9a200cbdb543 ("rust: regulator: implement Send
and Sync for Regulator<T>"), which is already in mainline.

Reviewed-by: Danilo Krummrich <dakr@kernel.org>
Reviewed-by: Boqun Feng <boqun.feng@gmail.com>
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
---
 drivers/gpu/drm/tyr/driver.rs | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/drivers/gpu/drm/tyr/driver.rs b/drivers/gpu/drm/tyr/driver.rs
index 0389c558c0367522471ea78fcf72a6b58c4a3650..09711fb7fe0b1c83b72bffba06f5a76c53244f4d 100644
--- a/drivers/gpu/drm/tyr/driver.rs
+++ b/drivers/gpu/drm/tyr/driver.rs
@@ -53,18 +53,6 @@ pub(crate) struct TyrData {
     pub(crate) gpu_info: GpuInfo,
 }
 
-// Both `Clk` and `Regulator` do not implement `Send` or `Sync`, but they
-// should. There are patches on the mailing list to address this, but they have
-// not landed yet.
-//
-// For now, add this workaround so that this patch compiles with the promise
-// that it will be removed in a future patch.
-//
-// SAFETY: This will be removed in a future patch.
-unsafe impl Send for TyrData {}
-// SAFETY: This will be removed in a future patch.
-unsafe impl Sync for TyrData {}
-
 fn issue_soft_reset(dev: &Device<Bound>, iomem: &Devres<IoMem>) -> Result {
     regs::GPU_CMD.write(dev, iomem, regs::GPU_CMD_SOFT_RESET)?;
 

-- 
2.52.0.351.gbe84eed79e-goog


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v3 3/3] pwm: th1520: remove impl Send/Sync for Th1520PwmDriverData
  2025-12-18 13:27 [PATCH v3 0/3] Implement Send and Sync for clk Alice Ryhl
  2025-12-18 13:27 ` [PATCH v3 1/3] rust: clk: implement Send and Sync Alice Ryhl
  2025-12-18 13:27 ` [PATCH v3 2/3] tyr: remove impl Send/Sync for TyrData Alice Ryhl
@ 2025-12-18 13:27 ` Alice Ryhl
  2025-12-18 14:13 ` [PATCH v3 0/3] Implement Send and Sync for clk Daniel Almeida
  2026-01-07 17:35 ` Gary Guo
  4 siblings, 0 replies; 6+ messages in thread
From: Alice Ryhl @ 2025-12-18 13:27 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Maarten Lankhorst, Maxime Ripard,
	Drew Fustini, Guo Ren, Fu Wei, Uwe Kleine-König,
	Michal Wilczynski
  Cc: Viresh Kumar, Miguel Ojeda, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Trevor Gross, Danilo Krummrich, Daniel Almeida, linux-clk,
	rust-for-linux, linux-kernel, dri-devel, linux-riscv, linux-pwm,
	Alice Ryhl

Now that clk implements Send and Sync, we no longer need to manually
implement these traits for Th1520PwmDriverData. Thus remove the
implementations.

Signed-off-by: Alice Ryhl <aliceryhl@google.com>
---
 drivers/pwm/pwm_th1520.rs | 15 ---------------
 1 file changed, 15 deletions(-)

diff --git a/drivers/pwm/pwm_th1520.rs b/drivers/pwm/pwm_th1520.rs
index e3b7e77356fc2492077c519073e861beb3e44df9..043dc4dbc6232020195c7b73fad302bbb69652df 100644
--- a/drivers/pwm/pwm_th1520.rs
+++ b/drivers/pwm/pwm_th1520.rs
@@ -97,21 +97,6 @@ struct Th1520PwmDriverData {
     clk: Clk,
 }
 
-// This `unsafe` implementation is a temporary necessity because the underlying `kernel::clk::Clk`
-// type does not yet expose `Send` and `Sync` implementations. This block should be removed
-// as soon as the clock abstraction provides these guarantees directly.
-// TODO: Remove those unsafe impl's when Clk will support them itself.
-
-// SAFETY: The `devres` framework requires the driver's private data to be `Send` and `Sync`.
-// We can guarantee this because the PWM core synchronizes all callbacks, preventing concurrent
-// access to the contained `iomem` and `clk` resources.
-unsafe impl Send for Th1520PwmDriverData {}
-
-// SAFETY: The same reasoning applies as for `Send`. The PWM core's synchronization
-// guarantees that it is safe for multiple threads to have shared access (`&self`)
-// to the driver data during callbacks.
-unsafe impl Sync for Th1520PwmDriverData {}
-
 impl pwm::PwmOps for Th1520PwmDriverData {
     type WfHw = Th1520WfHw;
 

-- 
2.52.0.351.gbe84eed79e-goog


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 0/3] Implement Send and Sync for clk
  2025-12-18 13:27 [PATCH v3 0/3] Implement Send and Sync for clk Alice Ryhl
                   ` (2 preceding siblings ...)
  2025-12-18 13:27 ` [PATCH v3 3/3] pwm: th1520: remove impl Send/Sync for Th1520PwmDriverData Alice Ryhl
@ 2025-12-18 14:13 ` Daniel Almeida
  2026-01-07 17:35 ` Gary Guo
  4 siblings, 0 replies; 6+ messages in thread
From: Daniel Almeida @ 2025-12-18 14:13 UTC (permalink / raw)
  To: Alice Ryhl
  Cc: Michael Turquette, Stephen Boyd, Maarten Lankhorst, Maxime Ripard,
	Drew Fustini, Guo Ren, Fu Wei, Uwe Kleine-König,
	Michal Wilczynski, Viresh Kumar, Miguel Ojeda, Boqun Feng,
	Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Trevor Gross, Danilo Krummrich, linux-clk, rust-for-linux,
	linux-kernel, dri-devel, linux-riscv, linux-pwm



> On 18 Dec 2025, at 10:27, Alice Ryhl <aliceryhl@google.com> wrote:
> 
> The Clk type is thread-safe, so let's mark it as thread-safe in the type
> system. This lets us get rid of hacks in drivers.
> 
> For Stephen's clk tree.
> 
> Signed-off-by: Alice Ryhl <aliceryhl@google.com>
> ---
> Changes in v3:
> - Rebase on v6.19-rc1.
> - Pick up tags.
> - Add fix for pwm driver as well.
> - Link to v2: https://lore.kernel.org/r/20251020-clk-send-sync-v2-0-44ab533ae084@google.com
> 
> Changes in v2:
> - Rebase on v6.18-rc1.
> - Add patch to tyr driver.
> - Link to v1: https://lore.kernel.org/r/20250904-clk-send-sync-v1-1-48d023320eb8@google.com
> 
> ---
> Alice Ryhl (3):
>      rust: clk: implement Send and Sync
>      tyr: remove impl Send/Sync for TyrData
>      pwm: th1520: remove impl Send/Sync for Th1520PwmDriverData
> 
> drivers/gpu/drm/tyr/driver.rs | 12 ------------
> drivers/pwm/pwm_th1520.rs     | 15 ---------------
> rust/kernel/clk.rs            |  7 +++++++
> 3 files changed, 7 insertions(+), 27 deletions(-)
> ---
> base-commit: 8f0b4cce4481fb22653697cced8d0d04027cb1e8
> change-id: 20250904-clk-send-sync-3cfa7f4e1ce2
> 
> Best regards,
> -- 
> Alice Ryhl <aliceryhl@google.com>
> 

I thought this had landed already.

I’ll resume my overhaul of clk .rs during this cycle by the way.

For patch 3:

Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 0/3] Implement Send and Sync for clk
  2025-12-18 13:27 [PATCH v3 0/3] Implement Send and Sync for clk Alice Ryhl
                   ` (3 preceding siblings ...)
  2025-12-18 14:13 ` [PATCH v3 0/3] Implement Send and Sync for clk Daniel Almeida
@ 2026-01-07 17:35 ` Gary Guo
  4 siblings, 0 replies; 6+ messages in thread
From: Gary Guo @ 2026-01-07 17:35 UTC (permalink / raw)
  To: Alice Ryhl
  Cc: Michael Turquette, Stephen Boyd, Maarten Lankhorst, Maxime Ripard,
	Drew Fustini, Guo Ren, Fu Wei, Uwe Kleine-König,
	Michal Wilczynski, Viresh Kumar, Miguel Ojeda, Boqun Feng,
	 Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Trevor Gross, Danilo Krummrich, Daniel Almeida, linux-clk,
	rust-for-linux, linux-kernel, dri-devel, linux-riscv, linux-pwm

On Thu, 18 Dec 2025 13:27:39 +0000
Alice Ryhl <aliceryhl@google.com> wrote:

> The Clk type is thread-safe, so let's mark it as thread-safe in the type
> system. This lets us get rid of hacks in drivers.
> 
> For Stephen's clk tree.
> 
> Signed-off-by: Alice Ryhl <aliceryhl@google.com>

For the series:

Reviewed-by: Gary Guo <gary@garyguo.net>

Best,
Gary

> ---
> Changes in v3:
> - Rebase on v6.19-rc1.
> - Pick up tags.
> - Add fix for pwm driver as well.
> - Link to v2: https://lore.kernel.org/r/20251020-clk-send-sync-v2-0-44ab533ae084@google.com
> 
> Changes in v2:
> - Rebase on v6.18-rc1.
> - Add patch to tyr driver.
> - Link to v1: https://lore.kernel.org/r/20250904-clk-send-sync-v1-1-48d023320eb8@google.com
> 
> ---
> Alice Ryhl (3):
>       rust: clk: implement Send and Sync
>       tyr: remove impl Send/Sync for TyrData
>       pwm: th1520: remove impl Send/Sync for Th1520PwmDriverData
> 
>  drivers/gpu/drm/tyr/driver.rs | 12 ------------
>  drivers/pwm/pwm_th1520.rs     | 15 ---------------
>  rust/kernel/clk.rs            |  7 +++++++
>  3 files changed, 7 insertions(+), 27 deletions(-)
> ---
> base-commit: 8f0b4cce4481fb22653697cced8d0d04027cb1e8
> change-id: 20250904-clk-send-sync-3cfa7f4e1ce2
> 
> Best regards,


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-01-07 17:35 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-18 13:27 [PATCH v3 0/3] Implement Send and Sync for clk Alice Ryhl
2025-12-18 13:27 ` [PATCH v3 1/3] rust: clk: implement Send and Sync Alice Ryhl
2025-12-18 13:27 ` [PATCH v3 2/3] tyr: remove impl Send/Sync for TyrData Alice Ryhl
2025-12-18 13:27 ` [PATCH v3 3/3] pwm: th1520: remove impl Send/Sync for Th1520PwmDriverData Alice Ryhl
2025-12-18 14:13 ` [PATCH v3 0/3] Implement Send and Sync for clk Daniel Almeida
2026-01-07 17:35 ` Gary Guo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox