Hi, On Fri, Sep 1, 2023 at 4:40 PM Douglas Anderson <dianders@xxxxxxxxxxxx> 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