linux/drivers/gpu/drm/i915
Linus Torvalds cd9f040df6 drm/i915: add 'reclaimable' to i915 self-reclaimable page allocations
The hibernate issues that got fixed in commit 985b823b91 ("drm/i915:
fix hibernation since i915 self-reclaim fixes") turn out to have been
incomplete.  Vefa Bicakci tested lots of hibernate cycles, and without
the __GFP_RECLAIMABLE flag the system eventually fails to resume.

With the flag added, Vefa can apparently hibernate forever (or until he
gets bored running his automated scripts, whichever comes first).

The reclaimable flag was there originally, and was one of the flags that
were dropped (unintentionally) by commit 4bdadb9785 ("drm/i915:
Selectively enable self-reclaim") that introduced all these problems,
but I didn't want to just blindly add back all the flags in commit
985b823b91, and it looked like __GFP_RECLAIM wasn't necessary.  It
clearly was.

I still suspect that there is some subtle reason we're missing that
causes the problems, but __GFP_RECLAIMABLE is certainly not wrong to use
in this context, and is what the code historically used.  And we have no
idea what the causes the corruption without it.

Reported-and-tested-by: M. Vefa Bicakci <bicave@superonline.com>
Cc: Dave Airlie <airlied@gmail.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Hugh Dickins <hugh.dickins@tiscali.co.uk>
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-07-18 09:44:37 -07:00
..
dvo_ch7xxx.c drm/i915: Remove dead KMS encoder save/restore code. 2010-04-12 09:23:30 -07:00
dvo_ch7017.c drm/i915: Remove dead KMS encoder save/restore code. 2010-04-12 09:23:30 -07:00
dvo_ivch.c drm/i915: Remove dead KMS encoder save/restore code. 2010-04-12 09:23:30 -07:00
dvo_sil164.c drm/i915: Remove dead KMS encoder save/restore code. 2010-04-12 09:23:30 -07:00
dvo_tfp410.c drm/i915: Use RSEN instead of HTPLG for tfp410 monitor detection. 2010-06-04 16:39:59 -07:00
dvo.h drm/i915: Remove dead KMS encoder save/restore code. 2010-04-12 09:23:30 -07:00
i915_debugfs.c drm/i915: don't access FW_BLC_SELF on 965G 2010-07-01 15:30:12 -07:00
i915_dma.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel 2010-07-01 18:48:11 -07:00
i915_drv.c drm/i915: Storage class should be before const qualifier 2010-05-26 14:10:26 -07:00
i915_drv.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel 2010-07-01 18:48:11 -07:00
i915_gem_debug.c drm/i915: drop pointer to drm_gem_object 2010-04-20 13:23:14 +10:00
i915_gem_tiling.c drm/i915: don't allow tiling changes on pinned buffers v2 2010-05-10 13:38:30 -07:00
i915_gem.c drm/i915: add 'reclaimable' to i915 self-reclaimable page allocations 2010-07-18 09:44:37 -07:00
i915_ioc32.c
i915_irq.c drm/i915: fix page flip finish vs. prepare on plane B 2010-07-01 18:47:12 -07:00
i915_mem.c
i915_opregion.c drm/i915: set DIDL using the ACPI video output device _ADR method return. 2010-04-18 17:05:13 -07:00
i915_reg.h drm/i915: Fix CRT hotplug regression in 2.6.35-rc1 2010-07-01 15:35:57 -07:00
i915_suspend.c drm/i915: Only save/restore FBC on the platform that supports FBC 2010-04-12 09:25:54 -07:00
i915_trace_points.c
i915_trace.h drm/i915: Convert more trace events to DEFINE_EVENT 2010-05-26 13:49:13 -07:00
intel_bios.c drm/i915: Honor sync polarity from VBT panel timing descriptors 2010-06-01 10:19:37 -07:00
intel_bios.h
intel_crt.c drm/i915: Fix CRT hotplug regression in 2.6.35-rc1 2010-07-01 15:35:57 -07:00
intel_display.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel 2010-07-01 18:48:11 -07:00
intel_dp.c i915: fix ironlake edp panel setup (v4) 2010-07-01 15:33:19 -07:00
intel_drv.h drm/i915: gen3 page flipping fixes 2010-06-18 17:59:53 -07:00
intel_dvo.c Merge remote branch 'anholt/drm-intel-next' of /home/airlied/kernel/drm-next into drm-core-next 2010-04-20 13:11:45 +10:00
intel_fb.c drm: Propagate error from drm_fb_helper_init(). 2010-06-08 09:32:02 +10:00
intel_hdmi.c drm/i915: Fix HDMI mode select for Cougarpoint PCH 2010-05-26 14:14:52 -07:00
intel_i2c.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
intel_lvds.c drm/i915: change default panel fitting mode to preserve aspect ratio 2010-07-01 16:05:47 -07:00
intel_modes.c Merge remote branch 'anholt/drm-intel-next' of /home/airlied/kernel/drm-next into drm-core-next 2010-04-20 13:11:45 +10:00
intel_overlay.c drm/i915: convert some gem structures to per-ring V2 2010-05-26 13:42:11 -07:00
intel_ringbuffer.c drm/i915: Account for space on the ring buffer consumed whilst wrapping. 2010-07-01 15:28:08 -07:00
intel_ringbuffer.h drm/i915: introduce intel_ring_buffer structure (V2) 2010-05-26 13:24:49 -07:00
intel_sdvo_regs.h
intel_sdvo.c i915/intel_sdvo: remove unneeded null check 2010-05-26 14:16:35 -07:00
intel_tv.c Revert "drm/i915: Configure the TV sense state correctly on GM45 to make TV detection reliable" 2010-04-20 14:25:51 +10:00
Makefile drm/i915: Move ringbuffer-related code to intel_ringbuffer.c. 2010-05-26 12:36:00 -07:00