linux-uconsole/drivers/gpu/drm
Guenter Roeck 57b7a3e301 FROMLIST: drm/rockchip: cdn-dp: Do not run worker while suspended
If the driver is in suspended mode, the dp block may be disabled, and
chip registers may not be accessible. Yet, the worker may be triggered
in this situation by an extcon event. If that happens, the following crash
will be seen.

cdn-dp fec00000.dp: [drm:cdn_dp_pd_event_work] *ERROR* Enable dp failed -19
cdn-dp fec00000.dp: [drm:cdn_dp_pd_event_work] Connected, not enabled. Enabling cdn
Bad mode in Error handler detected, code 0xbf000002 -- SError
CPU: 1 PID: 10357 Comm: kworker/1:2 Not tainted 4.4.21-05903-ge0514ea #1
Hardware name: Google Kevin (DT)
Workqueue: events cdn_dp_pd_event_work
task: ffffffc0cda67080 ti: ffffffc0b9b80000 task.ti: ffffffc0b9b80000
PC is at cdn_dp_clock_reset+0x30/0xa8
LR is at cdn_dp_enable+0x1e0/0x69c
...
Call trace:
[<ffffffc0005a7e24>] cdn_dp_pd_event_work+0x58/0x3f4
[<ffffffc0002397f0>] process_one_work+0x240/0x424
[<ffffffc00023a28c>] worker_thread+0x2fc/0x424
[<ffffffc00023f5fc>] kthread+0x10c/0x114
[<ffffffc000203dd0>] ret_from_fork+0x10/0x40

Problem is two-fold: The worker should not run while suspended, and the
suspend function should not call cdn_dp_disable() while the worker is
running.

Signed-off-by: Guenter Roeck <groeck@chromium.org>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
(am from https://patchwork.kernel.org/patch/9442149)
Change-Id: Ic01c6f793281a47c36a90c1be34a5e479ebabb3e
2016-12-20 19:58:04 +08:00
..
amd Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux-linaro-stable.git 2016-12-02 20:31:31 +08:00
armada UPSTREAM: drm: Pass 'name' to drm_universal_plane_init() 2016-03-17 09:42:01 +08:00
ast Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux-linaro-stable.git 2016-03-24 15:45:58 +08:00
atmel-hlcdc Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux-linaro-stable.git 2016-11-04 14:30:24 +08:00
bochs UPSTREAM: drm: Pass 'name' to drm_encoder_init() 2016-03-17 09:42:01 +08:00
bridge drm/rockchip: add loader protect ops to drm connector 2016-12-02 17:06:56 +08:00
cirrus UPSTREAM: drm: Pass 'name' to drm_encoder_init() 2016-03-17 09:42:01 +08:00
exynos Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux-linaro-stable.git 2016-12-02 20:31:31 +08:00
fsl-dcu UPSTREAM: drm: Pass 'name' to drm_encoder_init() 2016-03-17 09:42:01 +08:00
gma500 Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux-linaro-stable.git 2016-11-04 14:30:24 +08:00
i2c UPSTREAM: drm: Do not set connector->encoder in drivers 2016-07-06 15:25:34 +08:00
i810
i915 Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux-linaro-stable.git 2016-12-02 20:31:31 +08:00
imx UPSTREAM: drm: Do not set connector->encoder in drivers 2016-07-06 15:25:34 +08:00
mga drm/irq: Use unsigned int pipe in public API 2015-10-06 12:57:47 +02:00
mgag200 LSK 16.07 v4.4-android 2016-08-10 15:15:47 +08:00
msm Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux-linaro-stable.git 2016-11-04 14:30:24 +08:00
nouveau Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux-linaro-stable.git 2016-11-04 14:30:24 +08:00
omapdrm UPSTREAM: drm: Pass 'name' to drm_encoder_init() 2016-03-17 09:42:01 +08:00
panel drm/panel: support get bus_format from device-tree 2016-12-15 10:32:12 +08:00
qxl Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux-linaro-stable.git 2016-11-04 14:30:24 +08:00
r128 drm/irq: Use unsigned int pipe in public API 2015-10-06 12:57:47 +02:00
radeon Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux-linaro-stable.git 2016-12-06 20:58:56 +08:00
rcar-du UPSTREAM: drm: Pass 'name' to drm_encoder_init() 2016-03-17 09:42:01 +08:00
rockchip FROMLIST: drm/rockchip: cdn-dp: Do not run worker while suspended 2016-12-20 19:58:04 +08:00
savage
shmobile UPSTREAM: drm: Do not set connector->encoder in drivers 2016-07-06 15:25:34 +08:00
sis include/uapi/drm/sis_drm.h: move sis_file_private to drivers/gpu/drm/sis/sis_drv.h 2015-10-16 11:27:46 +10:00
sti UPSTREAM: drm: Pass 'name' to drm_encoder_init() 2016-03-17 09:42:01 +08:00
tdfx
tegra UPSTREAM: drm: Pass 'name' to drm_encoder_init() 2016-03-17 09:42:01 +08:00
tilcdc UPSTREAM: drm: Pass 'name' to drm_encoder_init() 2016-03-17 09:42:01 +08:00
ttm drm/ttm: Make ttm_bo_mem_compat available 2016-07-27 09:47:35 -07:00
udl Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux-linaro-stable.git 2016-05-13 12:20:56 +08:00
vc4 UPSTREAM: drm: Pass 'name' to drm_encoder_init() 2016-03-17 09:42:01 +08:00
vgem drm/vgem: Drop vgem_drm_gem_mmap 2015-10-19 11:00:44 +02:00
via via_drm.h: move struct via_file_private definition to drivers/gpu/drm/via/via_drv.h 2015-10-16 11:27:49 +10:00
virtio UPSTREAM: drm: Pass 'name' to drm_encoder_init() 2016-03-17 09:42:01 +08:00
vmwgfx Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux-linaro-stable.git 2016-11-04 14:30:24 +08:00
ati_pcigart.c
drm_agpsupport.c drm: Remove __OS_HAS_AGP 2015-09-30 10:44:48 +02:00
drm_atomic.c LSK 16.07 v4.4-android 2016-08-10 15:15:47 +08:00
drm_atomic_helper.c Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux-linaro-stable.git 2016-11-04 14:30:24 +08:00
drm_auth.c
drm_bridge.c
drm_bufs.c drm: Remove __OS_HAS_AGP 2015-09-30 10:44:48 +02:00
drm_cache.c drm: Restore double clflush on the last partial cacheline 2016-08-20 18:09:23 +02:00
drm_context.c
drm_crtc.c drm: add 10bit support for yuv format 2016-11-24 12:59:29 +08:00
drm_crtc_helper.c UPSTREAM: drm/atomic-helper: Implement subsystem-level suspend/resume 2016-08-08 14:39:36 +08:00
drm_crtc_internal.h
drm_debugfs.c
drm_dma.c
drm_dp_helper.c drm/dp: move hw_mutex up the call stack 2016-04-20 15:41:55 +09:00
drm_dp_mst_topology.c drm/dp/mst: Check peer device type before attempting EDID read 2016-11-10 16:36:36 +01:00
drm_drv.c UPSTREAM: drm: Introduce DRM_DEV_* log messages 2016-12-19 18:06:20 +08:00
drm_edid.c drm/edid: Add 6 bpc quirk for display AEO model 0. 2016-08-20 18:09:23 +02:00
drm_edid_load.c
drm_encoder_slave.c
drm_fb_cma_helper.c
drm_fb_helper.c drm/fb_helper: Fix references to dev->mode_config.num_connector 2016-06-07 18:14:36 -07:00
drm_flip_work.c
drm_fops.c drm: Fix an unwanted master inheritance v2 2015-12-04 12:28:14 +10:00
drm_gem.c drm: Balance error path for GEM handle allocation 2016-09-15 08:27:47 +02:00
drm_gem_cma_helper.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-11-10 09:33:06 -08:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h
drm_ioc32.c drm: Only use compat ioctl for addfb2 on X86/IA64 2016-09-24 10:07:43 +02:00
drm_ioctl.c drm: support ignore drm ioctl permission 2016-11-07 15:00:17 +08:00
drm_irq.c drm: Fix treatment of drm_vblank_offdelay in drm_vblank_on() (v2) 2016-03-03 15:07:23 -08:00
drm_legacy.h
drm_lock.c signals: kill block_all_signals() and unblock_all_signals() 2015-11-06 17:50:42 -08:00
drm_memory.c drm: Remove __OS_HAS_AGP 2015-09-30 10:44:48 +02:00
drm_mipi_dsi.c
drm_mm.c
drm_modes.c drm: add missing drm_mode_set_crtcinfo call 2016-07-27 09:47:35 -07:00
drm_modeset_lock.c UPSTREAM: drm: Implement drm_modeset_lock_all_ctx() 2016-08-08 14:39:25 +08:00
drm_of.c UPSTREAM: drm: add drm_of_encoder_active_endpoint helpers 2016-06-28 18:40:44 +08:00
drm_panel.c
drm_pci.c drm/doc: Update docs about device instance setup 2015-09-30 10:06:06 +02:00
drm_plane_helper.c UPSTREAM: drm: Pass 'name' to drm_universal_plane_init() 2016-03-17 09:42:01 +08:00
drm_platform.c drm/doc: Update docs about device instance setup 2015-09-30 10:06:06 +02:00
drm_prime.c Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux-linaro-stable.git 2016-11-04 14:30:24 +08:00
drm_probe_helper.c drm: Don't overwrite UNVERFIED mode status to OK 2015-12-15 11:00:10 +10:00
drm_rect.c drm: Use DRM_ROTATE_MASK and DRM_REFLECT_MASK 2015-10-05 15:32:51 +02:00
drm_scatter.c
drm_sync_helper.c CHROMIUM: drm: add helpers for fence and reservation based dma-buf sync 2016-04-08 11:39:49 +08:00
drm_sysfs.c Merge commit '06d1ee32a4' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into drm-next 2015-10-16 10:25:28 +10:00
drm_trace.h
drm_trace_points.c
drm_vm.c drm: Remove __OS_HAS_AGP 2015-09-30 10:44:48 +02:00
drm_vma_manager.c drm/gem: Use kref_get_unless_zero for the weak mmap references 2015-10-19 11:00:44 +02:00
Kconfig drm: support ignore drm ioctl permission 2016-11-07 15:00:17 +08:00
Makefile CHROMIUM: drm: add helpers for fence and reservation based dma-buf sync 2016-04-08 11:39:49 +08:00