alistair23-linux/drivers/gpu/drm
Sandy Huang 6456314ff1 drm/rockchip: vop: fix irq disabled after vop driver probed
The vop irq is shared between vop and iommu and irq probing in the
iommu driver moved to the probe function recently. This can in some
cases lead to a stall if the irq is triggered while the vop driver
still has it disabled, but the vop irq handler gets called.

But there is no real need to disable the irq, as the vop can simply
also track its enabled state and ignore irqs in that case.
For this we can simply check the power-domain state of the vop,
similar to how the iommu driver does it.

So remove the enable/disable handling and add appropriate condition
to the irq handler.

changes in v2:
- move to just check the power-domain state
- add clock handling
changes in v3:
- clarify comment to speak of runtime-pm not power-domain
changes in v4:
- address Marc's comments (clk-enable WARN_ON and style improvement)

Fixes: d0b912bd4c ("iommu/rockchip: Request irqs in rk_iommu_probe()")
Cc: stable@vger.kernel.org
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Tested-by: Ezequiel Garcia <ezequiel@collabora.com>
Reviewed-by: Tomasz Figa <tfiga@chromium.org>
Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180612132028.27490-3-heiko@sntech.de
2018-06-18 14:59:32 +02:00
..
amd drm/amdgpu/dc: Stop updating plane->fb 2018-06-11 20:22:44 +03:00
arc drm/arc: Stop consulting plane->fb 2018-05-25 20:08:27 +03:00
arm drm: mali-dp: Add YUV->RGB conversion support for video layers 2018-03-14 11:41:01 +00:00
armada drm/armada: Move GEM BO to drm_framebuffer 2018-05-18 14:52:36 +01:00
ast drm/ast: fix mode_valid's return type 2018-04-25 09:09:22 +02:00
atmel-hlcdc drm/atmel-hlcdc: Stop using plane->fb 2018-05-25 21:21:39 +03:00
bochs drm/bochs: fix mode_valid's return type 2018-04-25 09:34:00 +02:00
bridge drm/bridge: sil_sii8620: do not have a dependency of RC_CORE 2018-06-14 14:32:11 +02:00
cirrus drm/cirrus: cirrus_framebuffer -> drm_framebuffer 2018-05-18 14:52:30 +01:00
etnaviv drm/etnaviv: bump HW job limit to 4 2018-03-22 11:08:48 +01:00
exynos drm/exynos: Stop updating plane->crtc 2018-06-11 20:22:44 +03:00
fsl-dcu
gma500 drm/gma500: Remove VLA 2018-05-23 10:45:02 +02:00
hisilicon drm/hisilicon: fix mode_valid's return type 2018-04-25 09:09:22 +02:00
i2c drm/i2c: tda998x: Remove VLA usage 2018-05-23 10:45:22 +02:00
i810
i915 drm/i915: Stop updating plane->fb/crtc 2018-06-11 20:22:44 +03:00
imx Linux 4.16-rc7 2018-03-28 14:30:41 +10:00
lib
mediatek drm/mtk: mtk_drm_fb -> drm_framebuffer 2018-05-18 15:56:16 +01:00
meson Linux 4.16-rc7 2018-03-28 14:30:41 +10:00
mga
mgag200 drm/mgag200: fix mode_valid's return type 2018-04-25 09:09:22 +02:00
msm drm/msm: Stop updating plane->fb/crtc 2018-06-11 20:22:44 +03:00
mxsfb drm/mxsfb: Use simple_display_pipe prepare_fb helper 2018-04-24 13:58:43 +02:00
nouveau drm: Don't pass the index to drm_property_add_enum() 2018-04-27 16:46:50 +03:00
omapdrm drm/omapdrm: Nuke omap_framebuffer_get_next_connector() 2018-05-25 21:21:39 +03:00
panel display: panel: Add AUO g070vvn01 display support (800x480) 2018-05-29 16:22:43 +02:00
pl111 drm/pl111: Fix module probe bug 2018-05-04 00:13:41 +02:00
qxl gpu: drm: qxl: Adding new typedef vm_fault_t 2018-05-14 11:01:30 +02:00
r128
radeon drm/radeon: add PX quirk for Asus K73TK 2018-04-11 13:11:50 -05:00
rcar-du drm/rcar-du: Convert to the new generic alpha property 2018-04-16 21:20:59 +02:00
rockchip drm/rockchip: vop: fix irq disabled after vop driver probed 2018-06-18 14:59:32 +02:00
savage
scheduler Revert 190c462d5be19ba622a82f5fd0625087c870a1e6..bf3012ada1b2222e770de5c35c1bb16f73b3a01d" 2018-05-03 12:38:39 +02:00
selftests drm/mm: Add a search-by-address variant to only inspect a single hole 2018-05-24 15:04:30 +01:00
shmobile
sis
sti drm/sti: Stop consulting plane->crtc 2018-05-25 20:08:27 +03:00
stm drm/stm: ltdc: fix warnings in ltdc_plane_create() 2018-04-27 11:02:58 +02:00
sun4i drm/sun4i: mark PM functions as __maybe_unused 2018-05-28 10:47:27 +02:00
tdfx
tegra drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
tilcdc drm/tilcdc: tilcdc_panel: Rename device from "panel" to "tilcdc-panel" 2018-02-28 11:48:25 +02:00
tinydrm drm/tinydrm/mi0283qt: Always set rotation value 2018-04-30 11:00:19 +02:00
ttm drm/ttm: Export the ttm_k[un]map_atomic_prot API. 2018-03-22 11:10:06 +01:00
tve200 drm/tve200: Use simple_display_pipe prepare_fb helper 2018-04-24 13:58:06 +02:00
udl gpu: drm: udl: Adding new typedef vm_fault_t 2018-05-23 10:48:46 +02:00
v3d drm/v3d: Checking for NULL vs IS_ERR() 2018-05-21 10:44:33 -07:00
vc4 drm/vc4: Stop updating plane->fb/crtc 2018-06-11 20:22:44 +03:00
vgem gpu: drm: vgem: Change return type to vm_fault_t 2018-05-24 14:56:57 +02:00
via
virtio drm/virtio: Stop updating plane->crtc 2018-06-11 20:22:44 +03:00
vmwgfx drm/vmwgfx: Stop messing about with plane->fb/old_fb/crtc 2018-06-11 20:22:44 +03:00
xen drm/xen-front: fix pointer casts 2018-05-25 08:28:41 +03:00
zte drm/zte: Stop consulting plane->crtc 2018-03-29 19:14:21 +03:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic.c drm/atomic: Set current atomic state in drm_private_state 2018-06-15 23:35:41 +03:00
drm_atomic_helper.c drm: Stop updating plane->crtc/fb/old_fb on atomic drivers 2018-06-11 20:22:44 +03:00
drm_auth.c
drm_blend.c drm/blend: Add a generic alpha property 2018-04-16 21:17:29 +02:00
drm_bridge.c
drm_bufs.c drm: dma_bufs: Fixed checkpatch issues 2018-03-19 09:31:20 -04:00
drm_cache.c
drm_color_mgmt.c kernel.h: Retain constant expression output for max()/min() 2018-04-05 14:17:16 -07:00
drm_connector.c drm: Add checks for atomic_[duplicate/destroy]_state with atomic drivers 2018-06-18 09:20:51 +02:00
drm_context.c
drm_crtc.c drm: Add checks for atomic_[duplicate/destroy]_state with atomic drivers 2018-06-18 09:20:51 +02:00
drm_crtc_helper.c
drm_crtc_helper_internal.h
drm_crtc_internal.h drm: Print bad user modes 2018-06-15 23:31:07 +03:00
drm_debugfs.c
drm_debugfs_crc.c
drm_dma.c
drm_dp_aux_dev.c sched/wait, drivers/drm: Convert wait_on_atomic_t() usage to the new wait_var_event() API 2018-03-20 08:23:18 +01:00
drm_dp_dual_mode_helper.c drm/i915: Fix LSPCON TMDS output buffer enabling from low-power state 2018-04-18 16:33:14 +03:00
drm_dp_helper.c drm/dp: Correctly mask DP_TRAINING_AUX_RD_INTERVAL values for DP 1.4 2018-05-08 12:18:43 -07:00
drm_dp_mst_topology.c drm/dp/mst: Fix off-by-one typo when dump payload table 2018-03-28 09:12:16 +03:00
drm_drv.c drm: remove all control node code 2018-05-03 21:26:32 +02:00
drm_dumb_buffers.c
drm_edid.c drm/edid: Quirk Vive Pro VR headset non-desktop. 2018-06-02 09:46:49 +01:00
drm_edid_load.c
drm_encoder.c
drm_encoder_slave.c
drm_fb_cma_helper.c
drm_fb_helper.c drm: Stop updating plane->crtc/fb/old_fb on atomic drivers 2018-06-11 20:22:44 +03:00
drm_file.c
drm_flip_work.c
drm_fourcc.c
drm_framebuffer.c drm: Stop updating plane->crtc/fb/old_fb on atomic drivers 2018-06-11 20:22:44 +03:00
drm_gem.c drm/gem: Document that handle_create must be the last step 2018-03-26 17:42:06 +02:00
drm_gem_cma_helper.c
drm_gem_framebuffer_helper.c drm: Move simple_display_pipe prepare_fb helper into gem fb helpers 2018-04-24 13:57:22 +02:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h
drm_ioc32.c drm: Drop DRM_CONTROL_ALLOW from ioctls 2018-05-03 11:28:02 +02:00
drm_ioctl.c drm: Add DRM client cap for aspect-ratio 2018-05-11 09:05:03 +02:00
drm_irq.c
drm_kms_helper_common.c
drm_lease.c gpu: drm/lease:: Use list_{next/prev}_entry instead of list_entry 2018-03-26 10:38:06 +02:00
drm_legacy.h
drm_lock.c
drm_memory.c
drm_mipi_dsi.c
drm_mm.c drm/mm: Add a search-by-address variant to only inspect a single hole 2018-05-24 15:04:30 +01:00
drm_mode_config.c
drm_mode_object.c
drm_modes.c drm: Print bad user modes 2018-06-15 23:31:07 +03:00
drm_modeset_helper.c
drm_modeset_lock.c drm/atomic: Call ww_acquire_done after drm_modeset_lock_all 2018-03-05 10:35:32 +01:00
drm_of.c drm: of: simplify component probe code 2018-03-06 14:05:00 +05:30
drm_panel.c drm/panel: Add device_link from panel device to DRM device 2018-05-18 11:22:06 +02:00
drm_panel_orientation_quirks.c drm: panel-orientation-quirks: Convert to use match_string() helper 2018-05-10 11:36:25 -04:00
drm_pci.c
drm_plane.c drm: Add checks for atomic_[duplicate/destroy]_state with atomic drivers 2018-06-18 09:20:51 +02:00
drm_plane_helper.c drm: Stop updating plane->crtc/fb/old_fb on atomic drivers 2018-06-11 20:22:44 +03:00
drm_prime.c drm: Make the prime vmap/vunmap hooks optional. 2018-04-30 10:42:03 -07:00
drm_print.c drm: Reduce object size of DRM_DEV_<LEVEL> uses 2018-03-19 15:15:42 +01:00
drm_probe_helper.c Linux 4.16-rc7 2018-03-28 14:30:41 +10:00
drm_property.c drm: Don't pass the index to drm_property_add_enum() 2018-04-27 16:46:50 +03:00
drm_rect.c drm/rect: Handle rounding errors in drm_rect_clip_scaled, v3. 2018-05-04 11:09:54 +02:00
drm_scatter.c
drm_scdc_helper.c drm/scdc-helper: Convert errors into debug messages 2018-03-26 21:37:24 +03:00
drm_simple_kms_helper.c drm/simple-kms-helper: Plumb plane state to the enable hook 2018-03-28 19:19:32 +03:00
drm_syncobj.c Revert 190c462d5be19ba622a82f5fd0625087c870a1e6..bf3012ada1b2222e770de5c35c1bb16f73b3a01d" 2018-05-03 12:38:39 +02:00
drm_sysfs.c drm: remove all control node code 2018-05-03 21:26:32 +02:00
drm_trace.h
drm_trace_points.c
drm_vblank.c Merge tag 'drm-intel-next-2018-03-08' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-14 14:53:01 +10:00
drm_vm.c gpu: drm: drm_vm: Adding new typedef vm_fault_t 2018-05-29 08:58:46 +02:00
drm_vma_manager.c
Kconfig drm/selftests: Add drm helper selftest 2018-05-04 11:36:45 +02:00
Makefile drm/selftests: Rename the Kconfig option to CONFIG_DRM_DEBUG_SELFTEST 2018-05-04 11:36:34 +02:00