linux_dsm_epyc7002/drivers/gpu/drm
Gabriel Krisman Bertazi 429030bc94 drm: qxl: Delay entering atomic context during cursor update
qxl_release_map will enter an atomic context, but since we still need to
alloc memory for BOs, we better delay that until we have everything we
need, in case we need to sleep inside the allocation.  This avoids the
Sleep in atomic state below, which was reported by Mike.

 [   43.910362] BUG: sleeping function called from invalid context at mm/slab.h:432
 [   43.910955] in_atomic(): 1, irqs_disabled(): 0, pid: 2077, name: Xorg
 [   43.911472] Preemption disabled at:
 [   43.911478] [<ffffffffa02b1c45>] qxl_bo_kmap_atomic_page+0xa5/0x100 [qxl]
 [   43.912103] CPU: 0 PID: 2077 Comm: Xorg Tainted: G            E   4.12.0-master #38
 [ 43.912550] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
 rel-1.8.1-0-g4adadbd-20161202_174313-build11a 04/01/2014
 [   43.913202] Call Trace:
 [   43.913371]  dump_stack+0x65/0x89
 [   43.913581]  ? qxl_bo_kmap_atomic_page+0xa5/0x100 [qxl]
 [   43.913876]  ___might_sleep+0x11a/0x190
 [   43.914095]  __might_sleep+0x4a/0x80
 [   43.914319]  ? qxl_bo_create+0x50/0x190 [qxl]
 [   43.914565]  kmem_cache_alloc_trace+0x46/0x180
 [   43.914836]  qxl_bo_create+0x50/0x190 [qxl]
 [   43.915082]  ? refcount_dec_and_test+0x11/0x20
 [   43.915332]  ? ttm_mem_io_reserve+0x41/0xe0 [ttm]
 [   43.915595]  qxl_alloc_bo_reserved+0x37/0xb0 [qxl]
 [   43.915884]  qxl_cursor_atomic_update+0x8f/0x260 [qxl]
 [   43.916172]  ? drm_atomic_helper_update_legacy_modeset_state+0x1d6/0x210 [drm_kms_helper]
 [   43.916623]  drm_atomic_helper_commit_planes+0xec/0x230 [drm_kms_helper]
 [   43.916995]  drm_atomic_helper_commit_tail+0x2b/0x60 [drm_kms_helper]
 [   43.917398]  commit_tail+0x65/0x70 [drm_kms_helper]
 [   43.917693]  drm_atomic_helper_commit+0xa9/0x100 [drm_kms_helper]
 [   43.918039]  drm_atomic_commit+0x4b/0x50 [drm]
 [   43.918334]  drm_atomic_helper_update_plane+0xf1/0x110 [drm_kms_helper]
 [   43.918902]  __setplane_internal+0x19f/0x280 [drm]
 [   43.919240]  drm_mode_cursor_universal+0x101/0x1c0 [drm]
 [   43.919541]  drm_mode_cursor_common+0x15b/0x1d0 [drm]
 [   43.919858]  drm_mode_cursor2_ioctl+0xe/0x10 [drm]
 [   43.920157]  drm_ioctl+0x211/0x460 [drm]
 [   43.920383]  ? drm_mode_cursor_ioctl+0x50/0x50 [drm]
 [   43.920664]  ? handle_mm_fault+0x93/0x160
 [   43.920893]  do_vfs_ioctl+0x96/0x6e0
 [   43.921117]  ? __fget+0x73/0xa0
 [   43.921322]  SyS_ioctl+0x41/0x70
 [   43.921545]  entry_SYSCALL_64_fastpath+0x1a/0xa5
 [   43.922188] RIP: 0033:0x7f1145804bc7
 [   43.922526] RSP: 002b:00007ffcd3e50508 EFLAGS: 00003246 ORIG_RAX: 0000000000000010
 [   43.923367] RAX: ffffffffffffffda RBX: 0000000000000040 RCX: 00007f1145804bc7
 [   43.923852] RDX: 00007ffcd3e50540 RSI: 00000000c02464bb RDI: 000000000000000b
 [   43.924299] RBP: 0000000000000040 R08: 0000000000000040 R09: 000000000000000c
 [   43.924694] R10: 00007ffcd3e50340 R11: 0000000000003246 R12: 0000000000000018
 [   43.925128] R13: 00000000022bc390 R14: 0000000000000040 R15: 00007ffcd3e5062c

Reported-by: Mike Galbraith <efault@gmx.de>
Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/20170519175819.15682-1-krisman@collabora.co.uk
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2017-05-23 09:17:04 +02:00
..
amd Merge branch 'drm-next-4.12' of git://people.freedesktop.org/~agd5f/linux into drm-next 2017-05-12 13:58:29 +10:00
arc drm: remove drm_vblank_no_hw_counter assignment from driver code 2017-02-07 21:43:55 +01:00
arm Merge branch 'for-upstream/hdlcd' of git://linux-arm.org/linux-ld into drm-fixes 2017-05-20 06:00:49 +10:00
armada dma-buf: Rename dma-ops to prevent conflict with kunmap_atomic macro 2017-04-20 13:47:46 +05:30
ast Merge tag 'drm-misc-next-2017-04-07' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-04-11 07:41:10 +10:00
atmel-hlcdc drm/atmel-hlcdc: Fix output initialization 2017-05-18 10:56:43 -04:00
bochs drm/ttm: add io_mem_pfn callback 2017-04-04 23:33:42 -04:00
bridge drm: dw-hdmi: Implement the mode_fixup drm helper 2017-04-10 14:53:10 +05:30
cirrus Merge tag 'drm-misc-next-2017-04-07' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-04-11 07:41:10 +10:00
etnaviv Merge branch 'etnaviv/fixes' of https://git.pengutronix.de/git/lst/linux into drm-fixes 2017-05-19 10:16:06 +10:00
exynos media updates for v4.12-rc1 2017-05-05 17:34:57 -07:00
fsl-dcu drm: convert drivers to use drm_of_find_panel_or_bridge 2017-04-06 17:00:27 -04:00
gma500 drm: use set_memory.h header 2017-05-08 17:15:14 -07:00
hisilicon drm: convert drivers to use drm_of_find_panel_or_bridge 2017-04-06 17:00:27 -04:00
i2c
i810
i915 drm/i915: don't do allocate_va_range again on PIN_UPDATE 2017-05-15 14:44:33 +03:00
imx Merge tag 'drm-misc-next-2017-04-07' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-04-11 07:41:10 +10:00
lib
mediatek Merge tag 'drm-misc-next-2017-04-07' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-04-11 07:41:10 +10:00
meson drm: convert drivers to use of_graph_get_remote_node 2017-04-06 17:00:27 -04:00
mga lib/vsprintf.c: remove %Z support 2017-02-27 18:43:47 -08:00
mgag200 Merge tag 'drm-misc-next-2017-04-07' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-04-11 07:41:10 +10:00
msm Merge branch 'msm-next' of git://people.freedesktop.org/~robclark/linux into drm-next 2017-04-11 07:47:02 +10:00
mxsfb drm: convert drivers to use drm_of_find_panel_or_bridge 2017-04-06 17:00:27 -04:00
nouveau Merge branch 'linux-4.12' of git://github.com/skeggsb/linux into drm-fixes 2017-05-19 10:21:41 +10:00
omapdrm dma-buf: Rename dma-ops to prevent conflict with kunmap_atomic macro 2017-04-20 13:47:46 +05:30
panel drm/panel: Changes for v4.12-rc1 2017-04-13 06:17:40 +10:00
qxl drm: qxl: Delay entering atomic context during cursor update 2017-05-23 09:17:04 +02:00
r128 gpu: drm: drivers: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-01 09:44:11 +01:00
radeon drm/radeon: Fix oops upon driver load on PowerXpress laptops 2017-05-22 07:14:31 +02:00
rcar-du drm: rcar-du: Add HDMI outputs to R8A7795 device description 2017-04-04 17:04:21 +03:00
rockchip drm/rockchip: Shutdown all crtcs when unbinding drm 2017-04-07 13:28:32 -04:00
savage
selftests drm: kselftest: fix spelling mistake: "misalinged" -> "misaligned" 2017-02-26 22:54:47 +01:00
shmobile drm: Add acquire ctx parameter to ->page_flip(_target) 2017-03-29 09:50:38 +02:00
sis drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
sti media updates for v4.12-rc1 2017-05-05 17:34:57 -07:00
sun4i Allwinner DRM changes for 4.12 2017-04-20 13:19:34 +10:00
tdfx
tegra drm/tegra: Changes for v4.12-rc1 2017-05-05 11:47:01 +10:00
tilcdc drm: convert drivers to use of_graph_get_remote_node 2017-04-06 17:00:27 -04:00
tinydrm drm/atomic: Introduce drm_atomic_helper_shutdown 2017-03-27 09:43:58 +02:00
ttm Merge branch 'drm-next-4.12' of git://people.freedesktop.org/~agd5f/linux into drm-next 2017-05-12 13:58:29 +10:00
udl main drm pull request for 4.12 kernel 2017-05-03 11:44:24 -07:00
vc4 Linux 4.11-rc6 2017-04-11 07:40:42 +10:00
vgem Pointer for Markus's image conversion work. 2017-03-14 15:07:33 +01:00
via drm/via: use get_user_pages_unlocked() 2017-02-28 10:00:50 +01:00
virtio virtio: fixes, cleanups, performance 2017-05-10 11:33:08 -07:00
vmwgfx drm/vmwgfx: Convert macro to octal representation 2017-04-21 09:25:47 -07:00
zte drm: zte: remove leftover 'inf' from struct zx_hdmi 2017-03-22 13:44:42 +08:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic_helper.c drm/atomic: Add connector atomic_check function, v2. 2017-04-06 17:00:27 -04:00
drm_atomic.c drm: extract legacy framebuffer remove 2017-04-06 10:22:43 +02:00
drm_auth.c
drm_blend.c drm/blend: Use new atomic iterator macros. 2017-03-06 11:43:43 +01:00
drm_bridge.c
drm_bufs.c
drm_cache.c gpu: drm: core: Convert printk(KERN_<LEVEL> to pr_<level> 2017-02-28 14:32:19 +01:00
drm_color_mgmt.c drm/atomic-helper: Remove legacy backoff hack from gamma_set 2017-04-06 10:22:35 +02:00
drm_connector.c drm: Rename connector list iterator API 2017-02-28 16:16:48 +01:00
drm_context.c
drm_crtc_helper_internal.h
drm_crtc_helper.c drm: Add acquire ctx parameter to ->set_config 2017-03-29 09:56:25 +02:00
drm_crtc_internal.h drm: extract legacy framebuffer remove 2017-04-06 10:22:43 +02:00
drm_crtc.c drm: Take mode_config.mutex in setcrtc ioctl 2017-04-06 22:49:50 +02:00
drm_debugfs_crc.c Revert "drm: Don't allow interruptions when opening debugfs/crc" 2017-04-07 16:18:28 -04:00
drm_debugfs.c drm/debugfs: Add kerneldoc 2017-03-24 09:36:06 +01:00
drm_dma.c
drm_dp_aux_dev.c
drm_dp_dual_mode_helper.c drm: Add name for DRM_DP_DUAL_MODE_LSPCON 2017-02-23 11:06:12 -05:00
drm_dp_helper.c drm/dp: Add missing description to parameter 2017-03-07 16:38:16 -05:00
drm_dp_mst_topology.c drm/dp: Split drm_dp_mst_allocate_vcpi 2017-03-22 21:47:44 +01:00
drm_drv.c Linux 4.10-rc8 2017-02-23 12:10:12 +10:00
drm_dumb_buffers.c
drm_edid_load.c drm: move edid property update and add modes out of edid firmware loader 2017-02-21 15:41:24 +02:00
drm_edid.c drm/edid: Add 10 bpc quirk for LGD 764 panel in HP zBook 17 G2 2017-05-02 10:37:45 +02:00
drm_encoder_slave.c
drm_encoder.c drm: Rename connector list iterator API 2017-02-28 16:16:48 +01:00
drm_fb_cma_helper.c drm: Add mode_config .get_format_info() hook 2017-03-22 19:45:00 +02:00
drm_fb_helper.c format-security: move static strings to const 2017-05-08 17:15:14 -07:00
drm_file.c drm/gem: Add DEFINE_DRM_GEM_FOPS 2017-03-14 14:38:34 +01:00
drm_flip_work.c
drm_fourcc.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux into drm-misc-next 2017-03-23 08:15:55 +01:00
drm_framebuffer.c drm: extract legacy framebuffer remove 2017-04-06 10:22:43 +02:00
drm_gem_cma_helper.c Pointer for Markus's image conversion work. 2017-03-14 15:07:33 +01:00
drm_gem.c drm: Introduce drm_gem_object_{get,put}() 2017-02-28 16:16:43 +01:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h drm/debugfs: Add kerneldoc 2017-03-24 09:36:06 +01:00
drm_ioc32.c drm: document drm_ioctl.[hc] 2017-04-04 20:47:54 +02:00
drm_ioctl.c drm: Pass CRTC ID in userspace vblank events 2017-04-04 20:59:12 +01:00
drm_irq.c drm: Pass CRTC ID in userspace vblank events 2017-04-04 20:59:12 +01:00
drm_kms_helper_common.c drm: Remove drmP.h include from drm_kms_helper_common.c 2017-03-09 16:18:02 +01:00
drm_legacy.h
drm_lock.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/signal.h> 2017-03-02 08:42:29 +01:00
drm_memory.c
drm_mipi_dsi.c
drm_mm.c drm: Micro-optimise drm_mm_for_each_node_in_range() 2017-02-06 16:57:37 +01:00
drm_mode_config.c drm: Rename connector list iterator API 2017-02-28 16:16:48 +01:00
drm_mode_object.c Pointer for Markus's image conversion work. 2017-03-14 15:07:33 +01:00
drm_modes.c drm: Rename drm_mode_object_get() 2017-02-28 16:14:53 +01:00
drm_modeset_helper.c drm: Add mode_config .get_format_info() hook 2017-03-22 19:45:00 +02:00
drm_modeset_lock.c drm: Remove drm_modeset_legacy_acquire_ctx and crtc->acquire_ctx 2017-04-05 09:26:45 +02:00
drm_of.c drm: of: introduce drm_of_find_panel_or_bridge 2017-04-06 17:00:27 -04:00
drm_panel.c
drm_pci.c drm: Extract drm_pci.h 2017-03-09 16:18:02 +01:00
drm_plane_helper.c drm: Add acquire ctx parameter to ->set_config 2017-03-29 09:56:25 +02:00
drm_plane.c drm: Only take cursor locks when the cursor plane exists 2017-04-07 13:28:32 -04:00
drm_prime.c dma-buf: Rename dma-ops to prevent conflict with kunmap_atomic macro 2017-04-20 13:47:46 +05:30
drm_print.c drm: drm_printer: add __printf validation 2017-02-26 21:43:08 +01:00
drm_probe_helper.c drm/atomic: Acquire connection_mutex lock in drm_helper_probe_single_connector_modes, v4. 2017-04-06 21:29:23 +02:00
drm_property.c drm: Fix get_property logic fumble 2017-04-12 18:11:32 +02:00
drm_rect.c
drm_scatter.c
drm_scdc_helper.c drm/edid: detect SCDC support in HF-VSDB 2017-03-21 10:15:56 +02:00
drm_simple_kms_helper.c drm: Clarify the role of plane_state argument to drm_simple update(). 2017-03-30 12:02:00 -07:00
drm_sysfs.c drm: Consolidate and document sysfs support 2017-04-04 20:47:54 +02:00
drm_trace_points.c
drm_trace.h drm: Remove drm_pending_event->pid 2017-03-14 14:38:33 +01:00
drm_vm.c drm: remove unnecessary fault wrappers 2017-02-24 17:46:55 -08:00
drm_vma_manager.c drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
Kconfig drm/fb-helper: Add multi buffer support for cma fbdev 2017-02-26 22:11:37 +01:00
Makefile drm: Add SCDC helpers 2017-03-21 10:15:39 +02:00