On Fri, Feb 13, 2026 at 10:31 AM Tzung-Bi Shih <[email protected]> wrote:
>
> The underlying chip can be removed asynchronously.  `gdev->srcu` is used
> to ensure the synchronization before accessing `gdev->chip`.
>
> Revocable encapsulates the details.  Add revocable provider handle for
> the corresponding struct gpio_chip in struct gpio_device so that it can
> start to hide the synchronization details.
>
> diff --git a/drivers/gpio/gpiolib.h b/drivers/gpio/gpiolib.h
> index 3abb90385829..56643f40e87e 100644
> --- a/drivers/gpio/gpiolib.h
> +++ b/drivers/gpio/gpiolib.h
> @@ -52,6 +52,7 @@
>   * @device_notifier: used to notify character device wait queues about the 
> GPIO
>   *                   device being unregistered
>   * @srcu: protects the pointer to the underlying GPIO chip
> + * @chip_rp: revocable provider handle for the corresponding struct 
> gpio_chip.
>   * @pin_ranges: range of pins served by the GPIO driver
>   *
>   * This state container holds most of the runtime variable data
> @@ -79,6 +80,7 @@ struct gpio_device {
>         struct workqueue_struct *line_state_wq;
>         struct blocking_notifier_head device_notifier;
>         struct srcu_struct      srcu;
> +       struct revocable        *chip_rp;

I like it much better than with __rcu but see my comment under the
revocable series: is there any reason why we can't do:

struct revocable chip_rp;

?

Bartosz

Reply via email to