[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