• Neil Armstrong's avatar
    drm/bridge/synopsys: dw-hdmi: fix dw_hdmi_setup_rx_sense · c32048d9
    Neil Armstrong authored
    The dw_hdmi_setup_rx_sense exported function should not use struct device
    to recover the dw-hdmi context using drvdata, but take struct dw_hdmi
    directly like other exported functions.
    
    This caused a regression using Meson DRM on S905X since v4.17-rc1 :
    
    Internal error: Oops: 96000007 [#1] PREEMPT SMP
    [...]
    CPU: 0 PID: 124 Comm: irq/32-dw_hdmi_ Not tainted 4.17.0-rc7 #2
    Hardware name: Libre Technology CC (DT)
    [...]
    pc : osq_lock+0x54/0x188
    lr : __mutex_lock.isra.0+0x74/0x530
    [...]
    Process irq/32-dw_hdmi_ (pid: 124, stack limit = 0x00000000adf418cb)
    Call trace:
      osq_lock+0x54/0x188
      __mutex_lock_slowpath+0x10/0x18
      mutex_lock+0x30/0x38
      __dw_hdmi_setup_rx_sense+0x28/0x98
      dw_hdmi_setup_rx_sense+0x10/0x18
      dw_hdmi_top_thread_irq+0x2c/0x50
      irq_thread_fn+0x28/0x68
      irq_thread+0x10c/0x1a0
      kthread+0x128/0x130
      ret_from_fork+0x10/0x18
     Code: 34000964 d00050a2 51000484 9135c042 (f864d844)
     ---[ end trace 945641e1fbbc07da ]---
     note: irq/32-dw_hdmi_[124] exited with preempt_count 1
     genirq: exiting task "irq/32-dw_hdmi_" (124) is an active IRQ thread (irq 32)
    
    Fixes: eea034af ("drm/bridge/synopsys: dw-hdmi: don't clobber drvdata")
    Signed-off-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
    Tested-by: default avatarKoen Kooi <koen@dominion.thruhere.net>
    Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/1527673438-20643-1-git-send-email-narmstrong@baylibre.com
    c32048d9
dw-hdmi.c 70.2 KB