[Intel-xe] [PATCH 02/12] drm/xe: Skip calling drm_dev_put on probe error
Michał Winiarski
michal.winiarski at intel.com
Wed Nov 8 17:18:19 UTC 2023
On Wed, Nov 08, 2023 at 09:33:40AM +0000, Matthew Brost wrote:
> On Wed, Nov 08, 2023 at 01:33:34AM +0100, Michał Winiarski wrote:
> > DRM device used by Xe is managed, which means that final ref will be
> > dropped on driver detach.
> >
>
> Where is the detach called if xe_pci_probe() fails? I'm struggling to find that.
By "DRM device used by Xe is managed" I mean that it is allocated using
devres. In other words - devm_drm_dev_init adds
devm_drm_dev_init_release to the parent of DRM device devres stack
(which is the pci device in our case). That's the final ref being
dropped:
https://elixir.bootlin.com/linux/v6.6/source/drivers/gpu/drm/drm_drv.c#L708
Now - on probe in the core device driver model:
https://elixir.bootlin.com/linux/v6.6/source/drivers/base/dd.c#L658
Upon failure, we end up callng device_unbind_cleanup, which then calls
devres_release_all:
https://elixir.bootlin.com/linux/v6.6/source/drivers/base/dd.c#L549
Which then calls all of the "actions" added to the devres stack.
We can then expect to see something like this on probe failure in dmesg:
[27215.580902] xe 0000:00:02.0: DEVRES ADD ffff88810ca9c540 devm_drm_dev_init_release (16 bytes)
(...probe failure happens here...)
[27215.698659] xe 0000:00:02.0: DEVRES REL ffff88810ca9c540 devm_drm_dev_init_release (16 bytes)
[27215.707388] xe 0000:00:02.0: [drm:drm_managed_release [drm]] drmres release begin
(...all DRM-managed resources are released here...)
Thanks,
-Michał
>
> Matt
>
More information about the Intel-xe
mailing list