On Tue May 19, 2026 at 8:59 PM CEST, Boris Brezillon wrote: > On Thu, 14 May 2026 21:07:11 +0200 > "Danilo Krummrich" <[email protected]> wrote: > >> On Thu May 14, 2026 at 8:59 PM CEST, Deborah Brouwer wrote: >> > let unreg_dev = drm::UnregisteredDevice::<TyrDrmDriver>::new(pdev, data)?; >> > >> >> You shouldn't need this anymore as the drm::Registration itself has private >> data >> now that is bound to the lifetime of the underlying bus device, which should >> be >> the correct lifetime for juggling the GPU page tables. > > The problem we have is that, to initialize some of the sub-components > of the driver, we need to be able to allocate GEM objects before the DRM > device is exposed (registered), and because the data we want to attach > to the final registration contains these sub-components, we need to > defer the data assignment to the registration step (which was allowed > by [1], but apparently this was dropped from the latest version of > the series for some reason).
I'm perfectly aware, what I'm saying above is that you probably want to store those GEM objects (that you can create with the previously allocated drm::Device) in the drm::Registration data. This fulfills this requirement *and* ties the lifetime of those GEM objects to the lifetime of the underlying bus device being bound to the driver, which is exactly what you want for GEM objects that contain the device page tables.
