drm/vc4: hdmi: Warn if we access the controller while disabled
authorMaxime Ripard <maxime@cerno.tech>
Thu, 19 Aug 2021 13:59:31 +0000 (15:59 +0200)
committerMaxime Ripard <maxime@cerno.tech>
Mon, 25 Oct 2021 13:33:41 +0000 (15:33 +0200)
We've had many silent hangs where the kernel would look like it just
stalled due to the access to one of the HDMI registers while the
controller was disabled.

Add a warning if we're about to do that so that it's at least not silent
anymore.

Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20210819135931.895976-7-maxime@cerno.tech
drivers/gpu/drm/vc4/vc4_hdmi_regs.h

index 19d2fdc446bcac738530b9c0732c6ebf4978cece..99dde6e06a3788c4d1da61ff526d286120094c2f 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef _VC4_HDMI_REGS_H_
 #define _VC4_HDMI_REGS_H_
 
+#include <linux/pm_runtime.h>
+
 #include "vc4_hdmi.h"
 
 #define VC4_HDMI_PACKET_STRIDE                 0x24
@@ -412,6 +414,8 @@ static inline u32 vc4_hdmi_read(struct vc4_hdmi *hdmi,
        const struct vc4_hdmi_variant *variant = hdmi->variant;
        void __iomem *base;
 
+       WARN_ON(!pm_runtime_active(&hdmi->pdev->dev));
+
        if (reg >= variant->num_registers) {
                dev_warn(&hdmi->pdev->dev,
                         "Invalid register ID %u\n", reg);
@@ -438,6 +442,8 @@ static inline void vc4_hdmi_write(struct vc4_hdmi *hdmi,
        const struct vc4_hdmi_variant *variant = hdmi->variant;
        void __iomem *base;
 
+       WARN_ON(!pm_runtime_active(&hdmi->pdev->dev));
+
        if (reg >= variant->num_registers) {
                dev_warn(&hdmi->pdev->dev,
                         "Invalid register ID %u\n", reg);