All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Daniel Vetter <daniel.vetter@intel.com>,
	Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	DRI Development <dri-devel@lists.freedesktop.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>
Subject: Re: [PATCH 01/44] drivers/base: Always release devres on device_del
Date: Fri, 3 Apr 2020 17:06:51 +0200	[thread overview]
Message-ID: <20200403150651.GB4094993@kroah.com> (raw)
In-Reply-To: <CAKMK7uHuzsrMsB=Pnd4MD3VQyRizvjb7Y-RwAdCPF2ZNrfbhvQ@mail.gmail.com>

On Fri, Apr 03, 2020 at 04:47:04PM +0200, Daniel Vetter wrote:
> On Fri, Apr 3, 2020 at 4:17 PM Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> >
> > On Fri, Apr 03, 2020 at 03:57:45PM +0200, Daniel Vetter wrote:
> > > In drm we've added nice drm_device (the main gpu driver thing, which
> > > also represents the userspace interfaces and has everything else
> > > dangling off it) init functions using devres, devm_drm_dev_init and
> > > soon devm_drm_dev_alloc (this patch series adds that).
> > >
> > > A slight trouble is that drm_device itself holds a reference on the
> > > struct device it's sitting on top (for sysfs links and dmesg debug and
> > > lots of other things), so there's a reference loop. For real drivers
> > > this is broken at remove/unplug time, where all devres resources are
> > > released device_release_driver(), before the final device reference is
> > > dropped. So far so good.
> > >
> > > There's 2 exceptions:
> > > - drm/vkms|vgem: Virtual drivers for which we create a fake/virtual
> > >   platform device to make them look more like normal devices to
> > >   userspace. These aren't drivers in the driver model sense, we simple
> > >   create a platform_device and register it.
> >
> > That's a horrid abuse of platform devices, just use a "virtual" device
> > please, create/remove it when you need it, and all should be fine.
> >
> > > - drm/i915/selftests, where we create minimal mock devices, and again
> > >   the selftests aren't proper drivers in the driver model sense.
> >
> > Again, virtual devices are best to use for this.
> 
> Hm yeah, I guess we should fix that. i915 selftests do use raw struct
> device though, and it's not really the problem.
> 
> > > For these two cases the reference loop isn't broken, because devres is
> > > only cleaned up when the last device reference is dropped. But that's
> > > not happening, because the drm_device holds that last struct device
> > > reference.
> > >
> > > Thus far this wasn't a problem since the above cases simply
> > > hand-rolled their cleanup code. But I want to convert all drivers over
> > > to the devm_ versions, hence it would be really nice if these
> > > virtual/fake/mock uses-cases could also be managed with devres
> > > cleanup.
> > >
> > > I see three possible approaches:
> > >
> > > - Clean up devres from device_del (or platform_device_unregister) even
> > >   when no driver is bound. This seems like the simplest solution, but
> > >   also the one with the widest impact, and what this patch implements.
> > >   We might want to include more of the cleanup than just
> > >   devres_release_all, but this is all I need to get my use case going.
> >
> > After device_del, you should never be using that structure again anyway.
> > So why is there any "resource leak"?  You can't recycle the structure,
> > and you can't assign it to anything else, so eventually you have to do
> > a final put on the thing, which will free up the resources.
> 
> I guess I should have spent more time explaining this. There's two
> references involved:
> 
> - drm_device->dev points at the underlying struct device. The
> drm_device holds a reference until it's fully cleaned up, so that we
> can do nice stuff like use dev_ versions of printk functions, and you
> always know that there's not going to be a use-after free.
> 
> - now the other dependency is that as long as the device exists (not
> just in memory, but in the device model, i.e. between device_add() and
> device_del()) the drm_device should exist. So what we do in the
> bus-specific remove/disconnect callback is that we call
> drm_dev_unregister(). This drops the drm_device refcount that the drm
> chardev was holding, to make sure that an open() on the chardev can
> actually get at the memory without going boom. Then after the
> drm_dev_unregister, again in the remove/disconnect callback of th
> driver, there's a drm_dev_put(). Which might or might not be the final
> drm_dev_put(), since if there's currently some open fd we keep the
> refcount elevated, to avoid oopses and fun stuff like that. And
> drm_device pointers get shared very widely, thanks to fun stuff like
> dma_buf buffer sharing and dma_fence hw syncpt sharing across
> processes and drivers.
> 
> Once the final drm_dev_put() is called we also end up calling
> put_device() and everything is happy.
> 
> So far so good.
> 
> Now the problem is that refcount is hard, and most drm drivers get it
> wrong in some fashion or another, so I'm trying to solve all this with
> more magic.

Wait, no.  Fix the drivers.  Seriously, don't try to "bust" the
reference count logic here.

> Since all drivers need to have a drm_dev_put() at the end of their
> driver's remove/disconnect callback we've added a devm_drm_dev_init
> function which registers a devres action to do that drm_dev_put() at
> device_del time (which might or might not be the final drm_dev_put()).
> Nothing has changed thus far.
> 
> Now this works really well because when you have a real driver model
> driver attached, then device_del ends up calling devres_release_all(),
> which ends up triggering the multi-stage cleanup of drm_devices. But
> if you do _not_ have a real driver attached, then device_del does
> nothing wrt devres cleanup. Instead this is delayed until the final
> put_device().
> 
> Unfortunately that final put_device() will never happen, because
> drm_device is still holding a reference to the struct device. And the
> final drm_dev_put of that drm_device will never happen, because that
> drm_dev_put call is in a devres actions, which wont ever get called.

True, so fix the logic to do the final put_device() :)

> This is the only case where this reference loop happens and doesn't
> get broken. By calling devres_release_all at device_del time,
> irrespective of whether a driver is bound or not, we make both cases
> work the same. And at both cases the devres cleanup happens device_del
> time, and not when the final put_device is called.

So what is so odd about these random drivers that the normal process
does not work for them?

Along these lines, you might look into how the v4l developers finally
fixed this as they had much the same type of issues that you do with
regards to reference counting and resources and userspace file handles.

> Aside: The final put_device has another devres_release_all() call,
> which given your explanation sounds very wrong - at that point the
> physical device is long gone, and cleaning up devres actions at that
> point is way too late. I think a good cleanup patch on top of this
> would be to remove that call, and replace it with an assert that no
> one managed to sneak in a devres_add_action between device_del and the
> final put_device().

The physical device might be gone, but an open handle to the device
might still be around, keeping the structure in place and the driver
thinking it still has access to it's memory structures.

> > And then all should be fine, right?  But, by putting the freeing here,
> > you can still have a "live" device that thinks it has resources availble
> > that it can access, but yet they are now gone.  Yeah, it's probably not
> > ever going to really happen, but the lifecycles of dynamic devices are
> > tough to "prove" at times, and I worry that freeing things this early is
> > going to cause odd disconnect issues.
> 
> Not exactly sure what you mean here, but trying to fix all the driver
> bugs we have in drm is why I'm doing this. We have a massive amount of
> gaps still, but we're slowly closing them all off with stuff like
> drm_dev_enter/exit, to make sure there's no races possible between
> driver hotunplug and concurrent access by userspace.

Again, look at what v4l did, I think it might work out for you all as
well.

thanks,

greg k-h
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Daniel Vetter <daniel.vetter@intel.com>,
	Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	DRI Development <dri-devel@lists.freedesktop.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>
Subject: Re: [Intel-gfx] [PATCH 01/44] drivers/base: Always release devres on device_del
Date: Fri, 3 Apr 2020 17:06:51 +0200	[thread overview]
Message-ID: <20200403150651.GB4094993@kroah.com> (raw)
In-Reply-To: <CAKMK7uHuzsrMsB=Pnd4MD3VQyRizvjb7Y-RwAdCPF2ZNrfbhvQ@mail.gmail.com>

On Fri, Apr 03, 2020 at 04:47:04PM +0200, Daniel Vetter wrote:
> On Fri, Apr 3, 2020 at 4:17 PM Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> >
> > On Fri, Apr 03, 2020 at 03:57:45PM +0200, Daniel Vetter wrote:
> > > In drm we've added nice drm_device (the main gpu driver thing, which
> > > also represents the userspace interfaces and has everything else
> > > dangling off it) init functions using devres, devm_drm_dev_init and
> > > soon devm_drm_dev_alloc (this patch series adds that).
> > >
> > > A slight trouble is that drm_device itself holds a reference on the
> > > struct device it's sitting on top (for sysfs links and dmesg debug and
> > > lots of other things), so there's a reference loop. For real drivers
> > > this is broken at remove/unplug time, where all devres resources are
> > > released device_release_driver(), before the final device reference is
> > > dropped. So far so good.
> > >
> > > There's 2 exceptions:
> > > - drm/vkms|vgem: Virtual drivers for which we create a fake/virtual
> > >   platform device to make them look more like normal devices to
> > >   userspace. These aren't drivers in the driver model sense, we simple
> > >   create a platform_device and register it.
> >
> > That's a horrid abuse of platform devices, just use a "virtual" device
> > please, create/remove it when you need it, and all should be fine.
> >
> > > - drm/i915/selftests, where we create minimal mock devices, and again
> > >   the selftests aren't proper drivers in the driver model sense.
> >
> > Again, virtual devices are best to use for this.
> 
> Hm yeah, I guess we should fix that. i915 selftests do use raw struct
> device though, and it's not really the problem.
> 
> > > For these two cases the reference loop isn't broken, because devres is
> > > only cleaned up when the last device reference is dropped. But that's
> > > not happening, because the drm_device holds that last struct device
> > > reference.
> > >
> > > Thus far this wasn't a problem since the above cases simply
> > > hand-rolled their cleanup code. But I want to convert all drivers over
> > > to the devm_ versions, hence it would be really nice if these
> > > virtual/fake/mock uses-cases could also be managed with devres
> > > cleanup.
> > >
> > > I see three possible approaches:
> > >
> > > - Clean up devres from device_del (or platform_device_unregister) even
> > >   when no driver is bound. This seems like the simplest solution, but
> > >   also the one with the widest impact, and what this patch implements.
> > >   We might want to include more of the cleanup than just
> > >   devres_release_all, but this is all I need to get my use case going.
> >
> > After device_del, you should never be using that structure again anyway.
> > So why is there any "resource leak"?  You can't recycle the structure,
> > and you can't assign it to anything else, so eventually you have to do
> > a final put on the thing, which will free up the resources.
> 
> I guess I should have spent more time explaining this. There's two
> references involved:
> 
> - drm_device->dev points at the underlying struct device. The
> drm_device holds a reference until it's fully cleaned up, so that we
> can do nice stuff like use dev_ versions of printk functions, and you
> always know that there's not going to be a use-after free.
> 
> - now the other dependency is that as long as the device exists (not
> just in memory, but in the device model, i.e. between device_add() and
> device_del()) the drm_device should exist. So what we do in the
> bus-specific remove/disconnect callback is that we call
> drm_dev_unregister(). This drops the drm_device refcount that the drm
> chardev was holding, to make sure that an open() on the chardev can
> actually get at the memory without going boom. Then after the
> drm_dev_unregister, again in the remove/disconnect callback of th
> driver, there's a drm_dev_put(). Which might or might not be the final
> drm_dev_put(), since if there's currently some open fd we keep the
> refcount elevated, to avoid oopses and fun stuff like that. And
> drm_device pointers get shared very widely, thanks to fun stuff like
> dma_buf buffer sharing and dma_fence hw syncpt sharing across
> processes and drivers.
> 
> Once the final drm_dev_put() is called we also end up calling
> put_device() and everything is happy.
> 
> So far so good.
> 
> Now the problem is that refcount is hard, and most drm drivers get it
> wrong in some fashion or another, so I'm trying to solve all this with
> more magic.

Wait, no.  Fix the drivers.  Seriously, don't try to "bust" the
reference count logic here.

> Since all drivers need to have a drm_dev_put() at the end of their
> driver's remove/disconnect callback we've added a devm_drm_dev_init
> function which registers a devres action to do that drm_dev_put() at
> device_del time (which might or might not be the final drm_dev_put()).
> Nothing has changed thus far.
> 
> Now this works really well because when you have a real driver model
> driver attached, then device_del ends up calling devres_release_all(),
> which ends up triggering the multi-stage cleanup of drm_devices. But
> if you do _not_ have a real driver attached, then device_del does
> nothing wrt devres cleanup. Instead this is delayed until the final
> put_device().
> 
> Unfortunately that final put_device() will never happen, because
> drm_device is still holding a reference to the struct device. And the
> final drm_dev_put of that drm_device will never happen, because that
> drm_dev_put call is in a devres actions, which wont ever get called.

True, so fix the logic to do the final put_device() :)

> This is the only case where this reference loop happens and doesn't
> get broken. By calling devres_release_all at device_del time,
> irrespective of whether a driver is bound or not, we make both cases
> work the same. And at both cases the devres cleanup happens device_del
> time, and not when the final put_device is called.

So what is so odd about these random drivers that the normal process
does not work for them?

Along these lines, you might look into how the v4l developers finally
fixed this as they had much the same type of issues that you do with
regards to reference counting and resources and userspace file handles.

> Aside: The final put_device has another devres_release_all() call,
> which given your explanation sounds very wrong - at that point the
> physical device is long gone, and cleaning up devres actions at that
> point is way too late. I think a good cleanup patch on top of this
> would be to remove that call, and replace it with an assert that no
> one managed to sneak in a devres_add_action between device_del and the
> final put_device().

The physical device might be gone, but an open handle to the device
might still be around, keeping the structure in place and the driver
thinking it still has access to it's memory structures.

> > And then all should be fine, right?  But, by putting the freeing here,
> > you can still have a "live" device that thinks it has resources availble
> > that it can access, but yet they are now gone.  Yeah, it's probably not
> > ever going to really happen, but the lifecycles of dynamic devices are
> > tough to "prove" at times, and I worry that freeing things this early is
> > going to cause odd disconnect issues.
> 
> Not exactly sure what you mean here, but trying to fix all the driver
> bugs we have in drm is why I'm doing this. We have a massive amount of
> gaps still, but we're slowly closing them all off with stuff like
> drm_dev_enter/exit, to make sure there's no races possible between
> driver hotunplug and concurrent access by userspace.

Again, look at what v4l did, I think it might work out for you all as
well.

thanks,

greg k-h
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2020-04-03 15:07 UTC|newest]

Thread overview: 262+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-03 13:57 [PATCH 00/44] devm_drm_dev_alloc, no more drmm_add_final_kfree Daniel Vetter
2020-04-03 13:57 ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:57 ` [PATCH 01/44] drivers/base: Always release devres on device_del Daniel Vetter
2020-04-03 13:57   ` [Intel-gfx] " Daniel Vetter
2020-04-03 14:17   ` Greg Kroah-Hartman
2020-04-03 14:17     ` [Intel-gfx] " Greg Kroah-Hartman
2020-04-03 14:47     ` Daniel Vetter
2020-04-03 14:47       ` [Intel-gfx] " Daniel Vetter
2020-04-03 14:51       ` Daniel Vetter
2020-04-03 14:51         ` [Intel-gfx] " Daniel Vetter
2020-04-03 15:01         ` Greg Kroah-Hartman
2020-04-03 15:01           ` [Intel-gfx] " Greg Kroah-Hartman
2020-04-03 15:06       ` Greg Kroah-Hartman [this message]
2020-04-03 15:06         ` Greg Kroah-Hartman
2020-04-03 15:15         ` Daniel Vetter
2020-04-03 15:15           ` [Intel-gfx] " Daniel Vetter
2020-04-03 15:33           ` Daniel Vetter
2020-04-03 15:33             ` [Intel-gfx] " Daniel Vetter
2020-04-06 12:32   ` Daniel Vetter
2020-04-06 12:32     ` [Intel-gfx] " Daniel Vetter
2020-04-06 13:38     ` Greg Kroah-Hartman
2020-04-06 13:38       ` [Intel-gfx] " Greg Kroah-Hartman
2020-04-06 13:55       ` Daniel Vetter
2020-04-06 13:55         ` [Intel-gfx] " Daniel Vetter
2020-04-28 13:15         ` Daniel Vetter
2020-04-28 13:15           ` [Intel-gfx] " Daniel Vetter
2020-05-15 12:55           ` Greg Kroah-Hartman
2020-05-15 12:55             ` [Intel-gfx] " Greg Kroah-Hartman
2020-05-15 14:05             ` Daniel Vetter
2020-05-15 14:05               ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:57 ` [PATCH 02/44] drm: Add devm_drm_dev_alloc macro Daniel Vetter
2020-04-03 13:57   ` [Intel-gfx] " Daniel Vetter
2020-04-05 10:20   ` Noralf Trønnes
2020-04-05 10:20     ` [Intel-gfx] " Noralf Trønnes
2020-04-06 12:00   ` Laurent Pinchart
2020-04-06 12:00     ` [Intel-gfx] " Laurent Pinchart
2020-04-06 12:18     ` Daniel Vetter
2020-04-06 12:18       ` [Intel-gfx] " Daniel Vetter
2020-04-08  6:57   ` Sam Ravnborg
2020-04-08  6:57     ` [Intel-gfx] " Sam Ravnborg
2020-04-08 12:11     ` Daniel Vetter
2020-04-08 12:11       ` [Intel-gfx] " Daniel Vetter
2020-04-08 18:55       ` Sam Ravnborg
2020-04-08 18:55         ` [Intel-gfx] " Sam Ravnborg
2020-04-03 13:57 ` [PATCH 03/44] drm/device: Deprecate dev_private harder Daniel Vetter
2020-04-03 13:57   ` [Intel-gfx] " Daniel Vetter
2020-04-08  7:02   ` Sam Ravnborg
2020-04-08  7:02     ` [Intel-gfx] " Sam Ravnborg
2020-04-14 16:43     ` Daniel Vetter
2020-04-14 16:43       ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:57 ` [PATCH 04/44] drm/vgem: Use devm_drm_dev_alloc Daniel Vetter
2020-04-03 13:57   ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:57 ` [PATCH 05/44] drm/vkms: " Daniel Vetter
2020-04-03 13:57   ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:57 ` [PATCH 06/44] drm/vboxvideo: drop DRM_MTRR_WC #define Daniel Vetter
2020-04-03 13:57   ` [Intel-gfx] " Daniel Vetter
2020-04-08  7:03   ` Sam Ravnborg
2020-04-08  7:03     ` [Intel-gfx] " Sam Ravnborg
2020-04-03 13:57 ` [PATCH 07/44] drm/vboxvideo: Use devm_drm_dev_alloc Daniel Vetter
2020-04-03 13:57   ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:57 ` [PATCH 08/44] drm/vboxvideo: Stop using drm_device->dev_private Daniel Vetter
2020-04-03 13:57   ` [Intel-gfx] " Daniel Vetter
2020-04-06 11:56   ` Thomas Zimmermann
2020-04-06 11:56     ` [Intel-gfx] " Thomas Zimmermann
2020-04-07  7:24     ` Daniel Vetter
2020-04-07  7:24       ` [Intel-gfx] " Daniel Vetter
2020-04-08  6:33       ` Thomas Zimmermann
2020-04-08  6:33         ` [Intel-gfx] " Thomas Zimmermann
2020-04-08  7:19   ` Sam Ravnborg
2020-04-08  7:19     ` [Intel-gfx] " Sam Ravnborg
2020-04-03 13:57 ` [PATCH 09/44] drm/vboxvidoe: use managed pci functions Daniel Vetter
2020-04-03 13:57   ` [Intel-gfx] " Daniel Vetter
2020-04-08  7:21   ` Sam Ravnborg
2020-04-08  7:21     ` [Intel-gfx] " Sam Ravnborg
2020-04-14 16:30     ` Daniel Vetter
2020-04-14 16:30       ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:57 ` [PATCH 10/44] drm/vboxvideo: Use devm_gen_pool_create Daniel Vetter
2020-04-03 13:57   ` [Intel-gfx] " Daniel Vetter
2020-04-08  7:24   ` Sam Ravnborg
2020-04-08  7:24     ` [Intel-gfx] " Sam Ravnborg
2020-04-03 13:57 ` [PATCH 11/44] drm/v3d: Don't set drm_device->dev_private Daniel Vetter
2020-04-03 13:57   ` [Intel-gfx] " Daniel Vetter
2020-04-03 17:39   ` Eric Anholt
2020-04-03 17:39     ` [Intel-gfx] " Eric Anholt
2020-04-03 13:57 ` [PATCH 12/44] drm/v3d: Use devm_drm_dev_alloc Daniel Vetter
2020-04-03 13:57   ` [Intel-gfx] " Daniel Vetter
2020-04-03 17:38   ` Eric Anholt
2020-04-03 17:38     ` [Intel-gfx] " Eric Anholt
2020-04-03 13:57 ` [PATCH 13/44] drm/v3d: Delete v3d_dev->dev Daniel Vetter
2020-04-03 13:57   ` [Intel-gfx] " Daniel Vetter
2020-04-03 17:35   ` Eric Anholt
2020-04-03 17:35     ` [Intel-gfx] " Eric Anholt
2020-04-03 13:57 ` [PATCH 14/44] drm/v3d: Delete v3d_dev->pdev Daniel Vetter
2020-04-03 13:57   ` [Intel-gfx] " Daniel Vetter
2020-04-03 17:35   ` Eric Anholt
2020-04-03 17:35     ` [Intel-gfx] " Eric Anholt
2020-04-08  7:27   ` Sam Ravnborg
2020-04-08  7:27     ` [Intel-gfx] " Sam Ravnborg
2020-04-08 12:13     ` Daniel Vetter
2020-04-08 12:13       ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:57 ` [PATCH 15/44] drm/udl: Use demv_drm_dev_alloc Daniel Vetter
2020-04-03 13:57   ` [Intel-gfx] " Daniel Vetter
2020-04-05 10:18   ` Noralf Trønnes
2020-04-05 10:18     ` [Intel-gfx] " Noralf Trønnes
2020-04-05 13:47     ` Daniel Vetter
2020-04-05 13:47       ` [Intel-gfx] " Daniel Vetter
2020-04-05 14:46       ` Noralf Trønnes
2020-04-05 14:46         ` [Intel-gfx] " Noralf Trønnes
2020-04-06 12:05     ` Thomas Zimmermann
2020-04-06 12:05       ` [Intel-gfx] " Thomas Zimmermann
2020-04-03 13:58 ` [PATCH 16/44] drm/udl: don't set drm_device->dev_private Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-06 11:52   ` Thomas Zimmermann
2020-04-06 11:52     ` [Intel-gfx] " Thomas Zimmermann
2020-04-08  7:29   ` Sam Ravnborg
2020-04-08  7:29     ` [Intel-gfx] " Sam Ravnborg
2020-04-03 13:58 ` [PATCH 17/44] drm/st7735r: Use devm_drm_dev_alloc Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-03 17:00   ` David Lechner
2020-04-03 17:00     ` [Intel-gfx] " David Lechner
2020-04-03 13:58 ` [PATCH 18/44] drm/st7586: " Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-03 17:01   ` David Lechner
2020-04-03 17:01     ` [Intel-gfx] " David Lechner
2020-04-03 13:58 ` [PATCH 19/44] drm/repaper: " Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-05 10:00   ` Noralf Trønnes
2020-04-05 10:00     ` [Intel-gfx] " Noralf Trønnes
2020-04-03 13:58 ` [PATCH 20/44] drm/mi0283qt: " Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-05 10:01   ` Noralf Trønnes
2020-04-05 10:01     ` [Intel-gfx] " Noralf Trønnes
2020-04-03 13:58 ` [PATCH 21/44] drm/ili9486: " Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-05 10:02   ` Noralf Trønnes
2020-04-05 10:02     ` [Intel-gfx] " Noralf Trønnes
2020-04-03 13:58 ` [PATCH 22/44] drm/ili9341: " Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-03 17:02   ` David Lechner
2020-04-03 17:02     ` [Intel-gfx] " David Lechner
2020-04-03 13:58 ` [PATCH 23/44] drm/ili9225: " Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-03 17:02   ` David Lechner
2020-04-03 17:02     ` [Intel-gfx] " David Lechner
2020-04-03 13:58 ` [PATCH 24/44] drm/hx8357d: " Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-03 17:38   ` Eric Anholt
2020-04-03 17:38     ` [Intel-gfx] " Eric Anholt
2020-04-03 13:58 ` [PATCH 25/44] drm/gm12u320: " Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:58 ` [PATCH 26/44] drm/gm12u320: Don't use drm_device->dev_private Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:58 ` [PATCH 27/44] drm/tidss: Use devm_drm_dev_alloc Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-08  7:52   ` Sam Ravnborg
2020-04-08  7:52     ` [Intel-gfx] " Sam Ravnborg
2020-04-14  9:55   ` Jyri Sarha
2020-04-14  9:55     ` [Intel-gfx] " Jyri Sarha
2020-04-03 13:58 ` [PATCH 28/44] drm/tidss: Don't use drm_device->dev_private Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-08  7:52   ` Sam Ravnborg
2020-04-08  7:52     ` [Intel-gfx] " Sam Ravnborg
2020-04-14  9:55   ` Jyri Sarha
2020-04-14  9:55     ` [Intel-gfx] " Jyri Sarha
2020-04-03 13:58 ` [PATCH 29/44] drm/tidss: Delete tidss->saved_state Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-08  7:53   ` Sam Ravnborg
2020-04-08  7:53     ` [Intel-gfx] " Sam Ravnborg
2020-04-14  9:55   ` Jyri Sarha
2020-04-14  9:55     ` [Intel-gfx] " Jyri Sarha
2020-04-03 13:58 ` [PATCH 30/44] drm/qxl: Use devm_drm_dev_alloc Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:58   ` Daniel Vetter
2020-04-06  6:55   ` Gerd Hoffmann
2020-04-06  6:55     ` [Intel-gfx] " Gerd Hoffmann
2020-04-06  6:55     ` Gerd Hoffmann
2020-04-06 12:11   ` Thomas Zimmermann
2020-04-06 12:11     ` [Intel-gfx] " Thomas Zimmermann
2020-04-06 12:11     ` Thomas Zimmermann
2020-04-07  7:19     ` Daniel Vetter
2020-04-07  7:19       ` [Intel-gfx] " Daniel Vetter
2020-04-07  7:19       ` Daniel Vetter
2020-04-03 13:58 ` [PATCH 31/44] drm/qxl: Don't use drm_device->dev_private Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:58   ` Daniel Vetter
2020-04-06  6:55   ` Gerd Hoffmann
2020-04-06  6:55     ` [Intel-gfx] " Gerd Hoffmann
2020-04-06  6:55     ` Gerd Hoffmann
2020-04-03 13:58 ` [PATCH 32/44] drm/mcde: Use devm_drm_dev_alloc Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-08  7:57   ` Sam Ravnborg
2020-04-08  7:57     ` [Intel-gfx] " Sam Ravnborg
2020-04-03 13:58 ` [PATCH 33/44] drm/mcde: Don't use drm_device->dev_private Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-08  7:58   ` Sam Ravnborg
2020-04-08  7:58     ` [Intel-gfx] " Sam Ravnborg
2020-04-12  0:44   ` Linus Walleij
2020-04-12  0:44     ` [Intel-gfx] " Linus Walleij
2020-04-03 13:58 ` [PATCH 34/44] drm/ingenic: Use devm_drm_dev_alloc Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-08  7:59   ` Sam Ravnborg
2020-04-08  7:59     ` [Intel-gfx] " Sam Ravnborg
2020-04-03 13:58 ` [PATCH 35/44] drm/ingenic: Don't set drm_device->dev_private Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-08  8:00   ` Sam Ravnborg
2020-04-08  8:00     ` [Intel-gfx] " Sam Ravnborg
2020-04-03 13:58 ` [PATCH 36/44] drm/komeda: use devm_drm_dev_alloc Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-08  8:40   ` james qian wang (Arm Technology China)
2020-04-08  8:40     ` [Intel-gfx] " james qian wang (Arm Technology China)
2020-04-08  9:03     ` Daniel Vetter
2020-04-08  9:03       ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:58 ` [PATCH 37/44] drm/armada: Use devm_drm_dev_alloc Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:58 ` [PATCH 38/44] drm/armada: Don't use drm_device->dev_private Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:58 ` [PATCH 39/44] drm/cirrus: Use devm_drm_dev_alloc Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:58   ` Daniel Vetter
2020-04-05 10:04   ` Noralf Trønnes
2020-04-05 10:04     ` [Intel-gfx] " Noralf Trønnes
2020-04-05 10:04     ` Noralf Trønnes
2020-04-08  8:01   ` Sam Ravnborg
2020-04-08  8:01     ` [Intel-gfx] " Sam Ravnborg
2020-04-08  8:01     ` Sam Ravnborg
2020-04-03 13:58 ` [PATCH 40/44] drm/cirrus: Don't use drm_device->dev_private Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:58   ` Daniel Vetter
2020-04-03 17:40   ` Eric Anholt
2020-04-03 17:40     ` [Intel-gfx] " Eric Anholt
2020-04-03 17:40     ` Eric Anholt
2020-04-06 11:58   ` Thomas Zimmermann
2020-04-06 11:58     ` [Intel-gfx] " Thomas Zimmermann
2020-04-06 11:58     ` Thomas Zimmermann
2020-04-08  8:04     ` Sam Ravnborg
2020-04-08  8:04       ` [Intel-gfx] " Sam Ravnborg
2020-04-08  8:04       ` Sam Ravnborg
2020-04-08  8:01   ` Sam Ravnborg
2020-04-08  8:01     ` [Intel-gfx] " Sam Ravnborg
2020-04-08  8:01     ` Sam Ravnborg
2020-04-03 13:58 ` [PATCH 41/44] drm/i915: Use devm_drm_dev_alloc Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:58 ` [PATCH 42/44] drm/i915/selftest: Create mock_destroy_device Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-03 22:31   ` [PATCH] " Daniel Vetter
2020-04-03 22:31     ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:58 ` [PATCH 43/44] drm/i915/selftests: align more to real device lifetimes Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-03 22:31   ` [PATCH] " Daniel Vetter
2020-04-03 22:31     ` [Intel-gfx] " Daniel Vetter
2020-04-03 13:58 ` [PATCH 44/44] drm/managed: Cleanup of unused functions and polishing docs Daniel Vetter
2020-04-03 13:58   ` [Intel-gfx] " Daniel Vetter
2020-04-05 10:29   ` Noralf Trønnes
2020-04-05 10:29     ` [Intel-gfx] " Noralf Trønnes
2020-04-03 14:15 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for devm_drm_dev_alloc, no more drmm_add_final_kfree Patchwork
2020-04-03 23:01 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for devm_drm_dev_alloc, no more drmm_add_final_kfree (rev3) Patchwork
2020-04-03 23:26 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2020-04-04 10:39 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2020-04-08  8:08 ` [PATCH 00/44] devm_drm_dev_alloc, no more drmm_add_final_kfree Sam Ravnborg
2020-04-08  8:08   ` [Intel-gfx] " Sam Ravnborg
2020-04-08 12:15   ` Daniel Vetter
2020-04-08 12:15     ` [Intel-gfx] " Daniel Vetter

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=20200403150651.GB4094993@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=daniel.vetter@ffwll.ch \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=rafael@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.