dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Gary Guo" <gary@garyguo.net>
To: "Deborah Brouwer" <deborah.brouwer@collabora.com>,
	"Alice Ryhl" <aliceryhl@google.com>
Cc: "Danilo Krummrich" <dakr@kernel.org>,
	<daniel.almeida@collabora.com>, <boris.brezillon@collabora.com>,
	<gary@garyguo.net>, <dri-devel@lists.freedesktop.org>,
	<rust-for-linux@vger.kernel.org>,
	"Eliot Courtney" <ecourtney@nvidia.com>,
	"Alexandre Courbot" <acourbot@nvidia.com>
Subject: Re: [PATCH v2 2/2] drm/tyr: use IoMem directly instead of Devres
Date: Tue, 02 Jun 2026 11:35:25 +0100	[thread overview]
Message-ID: <DIYHW8MAG0AY.FJ96EJ5RDZK7@garyguo.net> (raw)
In-Reply-To: <ah4t8IPo1L6XZMy_@um790>

On Tue Jun 2, 2026 at 2:12 AM BST, Deborah Brouwer wrote:
> On Mon, Jun 01, 2026 at 09:35:04AM +0000, Alice Ryhl wrote:
>> On Fri, May 29, 2026 at 02:00:54AM +0200, Danilo Krummrich wrote:
>> > Now that IoMem is lifetime-parameterized, use it directly in probe
>> > rather than wrapping it in Devres and Arc. The I/O memory mapping is
>> > only used during probe and not stored in driver data, so device-managed
>> > revocation is unnecessary.
>> > 
>> > This removes the Devres access(dev) pattern from issue_soft_reset(),
>> > GpuInfo::new(), and l2_power_on(), simplifying register access.
>> > 
>> > Reviewed-by: Eliot Courtney <ecourtney@nvidia.com>
>> > Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
>> > Signed-off-by: Danilo Krummrich <dakr@kernel.org>
>> 
>> > -pub(crate) type IoMem = kernel::io::mem::IoMem<'static, SZ_2M>;
>> > +pub(crate) type IoMem<'a> = kernel::io::mem::IoMem<'a, SZ_2M>;
>> 
>> It'd make more sense for me to put 'b or 'bound here.
>> 
>> >          let sram_regulator = Regulator::<regulator::Enabled>::get(pdev.as_ref(), c"sram")?;
>> >  
>> >          let request = pdev.io_request_by_index(0).ok_or(ENODEV)?;
>> > -        let iomem = Arc::new(request.iomap_sized::<SZ_2M>()?.into_devres()?, GFP_KERNEL)?;
>> > +        let iomem = request.iomap_sized::<SZ_2M>()?;
>> >  
>> >          issue_soft_reset(pdev.as_ref(), &iomem)?;
>> >          gpu::l2_power_on(pdev.as_ref(), &iomem)?;
>> >  
>> > -        let gpu_info = GpuInfo::new(pdev.as_ref(), &iomem)?;
>> > +        let gpu_info = GpuInfo::new(&iomem);
>> 
>> 
>> While this change is fine, I notice that we don't actually keep the
>> iomem alive past the probe method. I assume we're going to need that,
>> which leads to the question of whether we can store the iomem in the
>> places we need it.
>> 
>> As far as I can tell, we can store it in TyrPlatformDriverData but not
>> in TyrDrmDeviceData, is that right?
>
> I'm still getting my head around how this applies to tyr's firmware
> series, but yes we stop storing iomem in TyrDrmDeviceData, but we won't
> store it in TyrPlatformDriverData.
> Instead there is a new struct "RegistrationData" that will store the iomem
> like this:
>
> #[vtable]
> impl drm::Driver for TyrDrmDriver {
>     type Data = TyrDrmDeviceData;
>     type RegistrationData = TyrDrmRegistrationData<'static>;
>

I am not sure what the distinction even mean for a class device?

There's 1 device per registration, so they're equal. Am I missing something?

Best,
Gary

> And then in probe something like:
>
>  let reg_data = try_pin_init!(TyrDrmRegistrationData {
>   pdev: platform.clone(),
>   fw: firmware,
>   clks <- new_mutex!(Clocks {
>     core: core_clk,
>     stacks: stacks_clk,
>     coregroup: coregroup_clk,
>   }),
>   regulators <- new_mutex!(Regulators {
>     _mali: mali_regulator,
>     _sram: sram_regulator,
>   }),
>   iomem,
>   gpu_info,
>  });
>
>  drm::driver::Registration::new_foreign_owned(ddev, pdev.as_ref(), reg_data, 0)?;
>
>
>> 
>> I guess it does make sense because the io memory goes away if the
>> underlying platform device (the bus) goes away, even if the drm device
>> still exists due to open fds from userspace.
>> 
>> Alice



  reply	other threads:[~2026-06-02 10:35 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-29  0:00 [PATCH 0/2] drm: tyr: use lifetime-bound IoMem Danilo Krummrich
2026-05-29  0:00 ` [PATCH v2 1/2] drm/tyr: separate driver type from driver data Danilo Krummrich
2026-05-29  1:57   ` Alexandre Courbot
2026-05-29  0:00 ` [PATCH v2 2/2] drm/tyr: use IoMem directly instead of Devres Danilo Krummrich
2026-06-01  9:35   ` Alice Ryhl
2026-06-01  9:54     ` Danilo Krummrich
2026-06-02  1:12     ` Deborah Brouwer
2026-06-02 10:35       ` Gary Guo [this message]
2026-06-02 10:49         ` Danilo Krummrich
2026-06-02  0:50   ` Deborah Brouwer
2026-06-02  6:40   ` Boris Brezillon
2026-06-02 10:55 ` [PATCH 0/2] drm: tyr: use lifetime-bound IoMem Daniel Almeida
2026-06-02 11:01 ` Alice Ryhl

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=DIYHW8MAG0AY.FJ96EJ5RDZK7@garyguo.net \
    --to=gary@garyguo.net \
    --cc=acourbot@nvidia.com \
    --cc=aliceryhl@google.com \
    --cc=boris.brezillon@collabora.com \
    --cc=dakr@kernel.org \
    --cc=daniel.almeida@collabora.com \
    --cc=deborah.brouwer@collabora.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=ecourtney@nvidia.com \
    --cc=rust-for-linux@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox