drm/rockchip: shutdown drm subsystem on shutdown

A patch from »drm/rockchip: shutdown drm subsystem on shutdown« in state Mainline for linux-kernel

From: Vicente Bergas <vicencb@...> Date: Sun, 5 Aug 2018 16:09:11 +0200

Commit-Message

As explained by Robin Murphy: > the IOMMU shutdown disables paging, so if the VOP is still > scanning out then that will result in whatever IOVAs it was using now going > straight out onto the bus as physical addresses. We had a more radical approach before in commit 7f3ef5dedb14 ("drm/rockchip: Allow driver to be shutdown on reboot/kexec") but that resulted in new warnings and oopses on shutdown on rk3399 chromeos devices. So second try is resurrecting Vicentes shutdown change which should achieve the same result but in a less drastic way. Fixes: 63238173b2fa ("Revert drm/rockchip: Allow driver to be shutdown on reboot/kexec") Cc: Jeffy Chen <jeffy.chen@...> Cc: Robin Murphy <robin.murphy@...> Cc: Marc Zyngier <marc.zyngier@...> Cc: Brian Norris <briannorris@...> Cc: Doug Anderson <dianders@...> Cc: stable@vger.kernel.org Suggested-by: JeffyChen <jeffy.chen@...> Suggested-by: Robin Murphy <robin.murphy@...> Signed-off-by: Vicente Bergas <vicencb@...> [adapted commit message to explain the history] Signed-off-by: Heiko Stuebner <heiko@...>

Patch-Comment

drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 9 +++++++++ 1 file changed, 9 insertions(+)

Statistics

  • 9 lines added
  • 0 lines removed

Changes

----------------- drivers/gpu/drm/rockchip/rockchip_drm_drv.c ------------------
index 8d7a634c12c2..cb938d3cd3c2 100644
@@ -448,6 +448,14 @@ static int rockchip_drm_platform_remove(struct platform_device *pdev)
return 0;
}
+static void rockchip_drm_platform_shutdown(struct platform_device *pdev)
+{
+ struct drm_device *drm = platform_get_drvdata(pdev);
+
+ if (drm)
+ drm_atomic_helper_shutdown(drm);
+}
+
static const struct of_device_id rockchip_drm_dt_ids[] = {
{ .compatible = "rockchip,display-subsystem", },
{ /* sentinel */ },
@@ -457,6 +465,7 @@ MODULE_DEVICE_TABLE(of, rockchip_drm_dt_ids);
static struct platform_driver rockchip_drm_platform_driver = {
.probe = rockchip_drm_platform_probe,
.remove = rockchip_drm_platform_remove,
+ .shutdown = rockchip_drm_platform_shutdown,
.driver = {
.name = "rockchip-drm",
.of_match_table = rockchip_drm_dt_ids,
 
 

Recent Patches

About Us

Sed lacus. Donec lectus. Nullam pretium nibh ut turpis. Nam bibendum. In nulla tortor, elementum vel, tempor at, varius non, purus. Mauris vitae nisl nec metus placerat consectetuer.

Read More...