linux/drivers/gpu/drm/i915
Chris Wilson ba86bf8bfc drm/i915: Avoid potential sleep whilst holding spinlock
Miles Lane reported the following error:
2 locks held by cat/4179:
  #0:  (&p->lock){+.+.+.}, at: [<c10a3884>] seq_read+0x25/0x315
  #1:  (&dev_priv->mm.active_list_lock){+.+...}, at: [<c119a854>]
i915_batchbuffer_info+0x2b/0x124
Pid: 4179, comm: cat Not tainted 2.6.32-rc5-git1 #2
Call Trace:
  [<c104874f>] ? __debug_show_held_locks+0x1e/0x20
  [<c1023fb0>] __might_sleep+0xf0/0xf7
  [<c101c393>] kmap+0x17/0x58
  [<c119a8d6>] i915_batchbuffer_info+0xad/0x124
  [<c10a39bf>] seq_read+0x160/0x315
  [<c108fb8c>] ? rw_verify_area+0x98/0xbb
  [<c10a385f>] ? seq_read+0x0/0x315
  [<c1090331>] vfs_read+0x75/0xa9
  [<c10903f9>] sys_read+0x3b/0x5d
  [<c1002a8f>] sysenter_do_call+0x12/0x36

The fix is relatively simple, use the atomic variants of kmap() that
avoid the potential sleep.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Miles Lane <miles.lane@gmail.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
2009-11-05 13:33:22 -08:00
..
dvo.h drm/i915: Change I2C api to pass around i2c_adapters 2009-06-18 15:53:57 -07:00
dvo_ch7xxx.c drm/i915: Change I2C api to pass around i2c_adapters 2009-06-18 15:53:57 -07:00
dvo_ch7017.c drm/i915: Change I2C api to pass around i2c_adapters 2009-06-18 15:53:57 -07:00
dvo_ivch.c drm/i915: Change I2C api to pass around i2c_adapters 2009-06-18 15:53:57 -07:00
dvo_sil164.c drm/i915: Change I2C api to pass around i2c_adapters 2009-06-18 15:53:57 -07:00
dvo_tfp410.c drm/i915: Change I2C api to pass around i2c_adapters 2009-06-18 15:53:57 -07:00
i915_debugfs.c drm/i915: Avoid potential sleep whilst holding spinlock 2009-11-05 13:33:22 -08:00
i915_dma.c drm/i915: disable FBC for Pineview, fixing a boot hang. 2009-10-13 10:09:26 -07:00
i915_drv.c i915: fix intel graphics suspend breakage due to resume/lid event confusion 2009-11-02 09:29:55 -08:00
i915_drv.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel 2009-11-04 07:05:43 -08:00
i915_gem.c drm/i915: Enable irq to trace batch buffer completion. 2009-09-29 03:15:25 +01:00
i915_gem_debug.c drm/i915: Catch up to obj_priv->page_list rename in disabled debug code. 2009-06-22 20:19:39 -07:00
i915_gem_tiling.c drm/i915: get the bridge device once. 2009-09-08 11:45:15 +10:00
i915_ioc32.c
i915_irq.c drm/i915: Enable irq to trace batch buffer completion. 2009-09-29 03:15:25 +01:00
i915_mem.c drm: Remove memory debugging infrastructure. 2009-06-18 13:00:33 -07:00
i915_opregion.c drm/i915: fix opregion backlight chip detect and range 2009-09-17 14:32:08 -07:00
i915_reg.h drm/i915: add FIFO watermark support for G4x 2009-10-23 11:31:08 -07:00
i915_suspend.c drm/i915: Ironlake suspend/resume support 2009-10-23 11:31:26 -07:00
i915_trace.h drm/i915: Enable irq to trace batch buffer completion. 2009-09-29 03:15:25 +01:00
i915_trace_points.c drm/i915: Add tracepoints 2009-09-23 01:05:21 +01:00
intel_bios.c drm/i915: Fix render reclock availability detection. 2009-10-13 10:41:58 -07:00
intel_bios.h drm/i915: Add eDP support on IGDNG mobile chip 2009-07-29 15:16:19 -07:00
intel_crt.c drm/i915: Remove DAC disable in CRT force detect on IGDNG 2009-09-17 14:31:06 -07:00
intel_display.c drm/i915: kill warning in intel_find_pll_g4x_dp 2009-10-23 11:31:25 -07:00
intel_dp.c drm/i915: quiet DP i2c init 2009-10-19 11:04:42 -07:00
intel_dp.h drm/i915: Add Display Port support 2009-06-18 15:54:07 -07:00
intel_dp_i2c.c drm/i915: Make driver less chatty 2009-07-01 18:13:34 -07:00
intel_drv.h Merge branch 'drm-next' of ../drm-next into drm-linus 2009-10-08 14:03:05 +10:00
intel_dvo.c drm/i915: Set crtc/clone mask in different output devices 2009-08-24 17:01:33 -07:00
intel_fb.c drm/fb: add more correct 8/16/24/32 bpp fb support. 2009-10-06 13:54:01 +10:00
intel_hdmi.c drm/i915: Initialize HDMI outputs as HDMI connectors, not DVI. 2009-10-02 14:53:42 -07:00
intel_i2c.c drm/i915: add dynamic clock frequency control 2009-09-04 13:05:38 -07:00
intel_lvds.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel 2009-11-04 07:05:43 -08:00
intel_modes.c drm/i915: Change I2C api to pass around i2c_adapters 2009-06-18 15:53:57 -07:00
intel_sdvo.c drm/i915: Add the missing clone_mask for SDVO-VGA(RGB1) 2009-09-10 11:30:54 -07:00
intel_sdvo_regs.h drm/i915: enable sdvo lvds scaling function. 2009-07-01 11:44:45 -07:00
intel_tv.c drm/i915: Multiply the refresh by 1000 in TV mode validatiion 2009-10-02 12:12:31 -07:00
Makefile drm/i915: Add tracepoints 2009-09-23 01:05:21 +01:00