Messages in this thread | | | Date | Fri, 15 Sep 2023 17:11:11 +0800 | Subject | Re: [RFT PATCH 2/6] drm: Call drm_atomic_helper_shutdown() at shutdown time for misc drivers | From | suijingfeng <> |
| |
Hi,
On 2023/9/2 07:39, Douglas Anderson wrote: > Based on grepping through the source code these drivers appear to be > missing a call to drm_atomic_helper_shutdown() at system shutdown > time. Among other things, this means that if a panel is in use that it > won't be cleanly powered off at system shutdown time. > > The fact that we should call drm_atomic_helper_shutdown() in the case > of OS shutdown/restart comes straight out of the kernel doc "driver > instance overview" in drm_drv.c. > > All of the drivers in this patch were fairly straightforward to fix > since they already had a call to drm_atomic_helper_shutdown() at > remove/unbind time but were just lacking one at system shutdown. The > only hitch is that some of these drivers use the component model to > register/unregister their DRM devices. The shutdown callback is part > of the original device. The typical solution here, based on how other > DRM drivers do this, is to keep track of whether the device is bound > based on drvdata. In most cases the drvdata is the drm_device, so we > can just make sure it is NULL when the device is not bound. In some > drivers, this required minor code changes. To make things simpler, > drm_atomic_helper_shutdown() has been modified to consider a NULL > drm_device as a noop in the patch ("drm/atomic-helper: > drm_atomic_helper_shutdown(NULL) should be a noop"). > > Suggested-by: Maxime Ripard <mripard@kernel.org> > Signed-off-by: Douglas Anderson <dianders@chromium.org> > ---
I have just tested the whole series, thanks for the patch. For drm/loongson only:
Reviewed-by: Sui Jingfeng <suijingfeng@loongson.cn> Tested-by: Sui Jingfeng <suijingfeng@loongson.cn>
By the way, I add 'pr_info("lsdc_pci_shutdown\n");' into the lsdc_pci_shutdown() function, And seeing that lsdc_pci_shutdown() will be called when reboot and shutdown the machine. I did not witness something weird happen at present. As you have said, this is useful for drm panels drivers. But for the rest(drm/hibmc, drm/ast, drm/mgag200 and drm/loongson etc) drivers, you didn't mention what's the benefit for those drivers. Probably, you can mention it with at least one sentence at the next version. I also prefer to alter the lsdc_pci_shutdown() function as the following pattern:
static void lsdc_pci_shutdown(struct pci_dev *pdev) {
struct drm_device *ddev = pci_get_drvdata(pdev);
drm_atomic_helper_shutdown(ddev); }
| |