[RFT PATCH 0/6] drm: drm-misc drivers call drm_atomic_helper_shutdown() at the right times
Doug Anderson
dianders at chromium.org
Thu Sep 14 04:31:53 AEST 2023
Hi,
On Fri, Sep 1, 2023 at 4:40 PM Douglas Anderson <dianders at chromium.org> wrote:
>
>
> NOTE: in order to avoid email sending limits on the cover letter, I've
> split this patch series in two. Patches that target drm-misc and ones
> that don't. The cover letter of the two is identical other than this note.
>
> This patch series came about after a _long_ discussion between me and
> Maxime Ripard in response to a different patch I sent out [1]. As part
> of that discussion, we realized that it would be good if DRM drivers
> consistently called drm_atomic_helper_shutdown() properly at shutdown
> and driver remove time as it's documented that they should do. The
> eventual goal of this would be to enable removing some hacky code from
> panel drivers where they had to hook into shutdown themselves because
> the DRM driver wasn't calling them.
>
> It turns out that quite a lot of drivers seemed to be missing
> drm_atomic_helper_shutdown() in one or both places that it was
> supposed to be. This patch series attempts to fix all the drivers that
> I was able to identify.
>
> NOTE: fixing this wasn't exactly cookie cutter. Each driver has its
> own unique way of setting itself up and tearing itself down. Some
> drivers also use the component model, which adds extra fun. I've made
> my best guess at solving this and I've run a bunch of compile tests
> (specifically, allmodconfig for amd64, arm64, and powerpc). That being
> said, these code changes are not totally trivial and I've done zero
> real testing on them. Making these patches was also a little mind
> numbing and I'm certain my eyes glazed over at several points when
> writing them. What I'm trying to say is to please double-check that I
> didn't do anything too silly, like cast your driver's drvdata to the
> wrong type. Even better, test these patches!
>
> I've organized this series like this:
> 1. One patch for all simple cases of just needing a call at shutdown
> time for drivers that go through drm-misc.
> 2. A separate patch for "drm/vc4", even though it goes through
> drm-misc, since I wanted to leave an extra note for that one.
> 3. Patches for drivers that just needed a call at shutdown time for
> drivers that _don't_ go through drm-misc.
> 4. Patches for the few drivers that had the call at shutdown time but
> lacked it at remove time.
> 5. One patch for all simple cases of needing a call at shutdown and
> remove (or unbind) time for drivers that go through drm-misc.
> 6. A separate patch for "drm/hisilicon/kirin", even though it goes
> through drm-misc, since I wanted to leave an extra note for that
> one.
> 7. Patches for drivers that needed a call at shutdown and remove (or
> unbind) time for drivers that _don't_ go through drm-misc.
>
> I've labeled this patch series as RFT (request for testing) to help
> call attention to the fact that I didn't personally test any of these
> patches.
>
> If you're a maintainer of one of these drivers and you think that the
> patch for your driver looks fabulous, you've tested it, and you'd like
> to land it right away then please do. For non-drm-misc drivers there
> are no dependencies here. Some of the drm-misc drivers depend on the
> first patch, AKA ("drm/atomic-helper: drm_atomic_helper_shutdown(NULL)
> should be a noop"). I've tried to call this out but it also should be
> obvious once you know to look for it.
>
> I'd like to call out a few drivers that I _didn't_ fix in this series
> and why. If any of these drivers should be fixed then please yell.
> - DRM driers backed by usb_driver (like gud, gm12u320, udl): I didn't
> add the call to drm_atomic_helper_shutdown() at shutdown time
> because there's no ".shutdown" callback for them USB drivers. Given
> that USB is hotpluggable, I'm assuming that they are robust against
> this and the special shutdown callback isn't needed.
> - ofdrm and simpledrm: These didn't have drm_atomic_helper_shutdown()
> in either shutdown or remove, but I didn't add it. I think that's OK
> since they're sorta special and not really directly controlling
> hardware power sequencing.
> - virtio, vkms, vmwgfx, xen: I believe these are all virtual (thus
> they wouldn't directly drive a panel) and adding the shutdown
> didn't look straightforward, so I skipped them.
>
> I've let each patch in the series get CCed straight from
> get_maintainer. That means not everyone will have received every patch
> but everyone should be on the cover letter. I know some people dislike
> this but when touching this many drivers there's not much
> choice. dri-devel and lkml have been CCed and lore/lei exist, so
> hopefully that's enough for folks. I'm happy to add people to the
> whole series for future posts.
>
> [1] https://lore.kernel.org/lkml/20230804140605.RFC.4.I930069a32baab6faf46d6b234f89613b5cec0f14@changeid
>
>
> Douglas Anderson (6):
> drm/atomic-helper: drm_atomic_helper_shutdown(NULL) should be a noop
> drm: Call drm_atomic_helper_shutdown() at shutdown time for misc
> drivers
> drm/vc4: Call drm_atomic_helper_shutdown() at shutdown time
> drm/ssd130x: Call drm_atomic_helper_shutdown() at remove time
> drm: Call drm_atomic_helper_shutdown() at shutdown/remove time for
> misc drivers
> drm/hisilicon/kirin: Call drm_atomic_helper_shutdown() at
> shutdown/unbind time
>
> .../gpu/drm/arm/display/komeda/komeda_drv.c | 9 +++++
> .../gpu/drm/arm/display/komeda/komeda_kms.c | 7 ++++
> .../gpu/drm/arm/display/komeda/komeda_kms.h | 1 +
> drivers/gpu/drm/arm/hdlcd_drv.c | 6 ++++
> drivers/gpu/drm/arm/malidp_drv.c | 6 ++++
> drivers/gpu/drm/aspeed/aspeed_gfx_drv.c | 7 ++++
> drivers/gpu/drm/ast/ast_drv.c | 6 ++++
> drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 6 ++++
> drivers/gpu/drm/drm_atomic_helper.c | 3 ++
> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 8 +++++
> .../gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 6 ++++
> .../gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 9 +++++
> drivers/gpu/drm/hyperv/hyperv_drm_drv.c | 6 ++++
> drivers/gpu/drm/logicvc/logicvc_drm.c | 9 +++++
> drivers/gpu/drm/loongson/lsdc_drv.c | 6 ++++
> drivers/gpu/drm/mcde/mcde_drv.c | 9 +++++
> drivers/gpu/drm/mgag200/mgag200_drv.c | 8 +++++
> drivers/gpu/drm/omapdrm/omap_drv.c | 8 +++++
> drivers/gpu/drm/pl111/pl111_drv.c | 7 ++++
> drivers/gpu/drm/qxl/qxl_drv.c | 7 ++++
> drivers/gpu/drm/solomon/ssd130x.c | 1 +
> drivers/gpu/drm/sti/sti_drv.c | 7 ++++
> drivers/gpu/drm/stm/drv.c | 7 ++++
> drivers/gpu/drm/sun4i/sun4i_drv.c | 6 ++++
> drivers/gpu/drm/tilcdc/tilcdc_drv.c | 11 +++++-
> drivers/gpu/drm/tiny/bochs.c | 6 ++++
> drivers/gpu/drm/tiny/cirrus.c | 6 ++++
> drivers/gpu/drm/tve200/tve200_drv.c | 7 ++++
> drivers/gpu/drm/vboxvideo/vbox_drv.c | 10 ++++++
> drivers/gpu/drm/vc4/vc4_drv.c | 36 ++++++++++++-------
> 30 files changed, 217 insertions(+), 14 deletions(-)
Just a heads up to keep folks in the loop: I've landed the first patch
in the drm-misc series, AKA ("drm/atomic-helper:
drm_atomic_helper_shutdown(NULL) should be a noop"), but I haven't
landed any of the others yet. I'm going to give them another ~week
just to be sure there are no objections.
-Doug
More information about the Linux-aspeed
mailing list