On Wed, Nov 04, 2020 at 01:52:00PM +0100, Marek Vasut wrote: > Enable runtime PM before registering the fbdev emulation and disable it > afterward, otherwise register access to the LTDC IP during the fbdev > emulation registration might hang the system. > > The problem happens because RPM is activated at the end of ltdc_load(), > but the fbdev emulation registration happens only after that, and ends > up calling ltdc_crtc_mode_set_nofb(), which checks whether RPM is active > and only if it is not active, calls pm_runtime_get_sync() to enable the > clock and so on. If the clock are not enabled, any register access in > ltdc_crtc_mode_set_nofb() could hang the platform completely. > > This patch makes sure that ltdc_crtc_mode_set_nofb() is called within > pm_runtime_get_sync(), so with clock enabled. > > Signed-off-by: Marek Vasut <marex@xxxxxxx> > Cc: Alexandre Torgue <alexandre.torgue@xxxxxx> > Cc: Benjamin Gaignard <benjamin.gaignard@xxxxxx> > Cc: Philippe Cornu <philippe.cornu@xxxxxx> > Cc: Yannick Fertré <yannick.fertre@xxxxxx> > Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx > Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > Cc: linux-stm32@xxxxxxxxxxxxxxxxxxxxxxxxxxxx This looks like you're papering over a bug in your modeset code. If userspace later on does a setpar on the fbdev chardev, the exact same thing could happen. You need to fix your modeset code to avoid this, not sprinkle temporary rpm_get/put all over some top level entry points, because you can't even patch those all. -Daniel > --- > drivers/gpu/drm/stm/drv.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c > index 411103f013e2..d8921edc83db 100644 > --- a/drivers/gpu/drm/stm/drv.c > +++ b/drivers/gpu/drm/stm/drv.c > @@ -197,7 +197,9 @@ static int stm_drm_platform_probe(struct platform_device *pdev) > if (ret) > goto err_put; > > + pm_runtime_get_sync(ddev->dev); > drm_fbdev_generic_setup(ddev, 16); > + pm_runtime_put_sync(ddev->dev); > > return 0; > > -- > 2.28.0 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel