Hi Vincent, On Mon, Jun 14, 2010 at 22:15:17 +0200, Vincent Danjean wrote: > Since the introduction of KMS, suspend-to-disk never works reliably > on my laptop. Todays, it is so unstable that I do not try it. The > biggest problem is that, when it does not work, the session is restored > but (I think) memory corruption occurs. So the symptom can differ from > time to time. > My "classical" symptom is applications crashing or refusing to be > load (with a segv in libc when trying to run "ls" for example). > In these cases, I immediately hard-switch-off the laptop so that > in-memory corruption was not writen-back on disk (I had several > difficult fsck before I do that). > > I'm not sure that this is related to KMS but it begins to occurs when > KMS has been introduced and (in the first time, I do not recheck recently), > I have no problems when I disabled KMS. > > #534422 can be linked to this bug. > > This bug is also reported to xorg: > https://bugs.freedesktop.org/show_bug.cgi?id=23836 > This may be fixed by commit 985b823b919273fe1327d56d2196b4f92e5d0fae (included below). Can you test it? commit 985b823b919273fe1327d56d2196b4f92e5d0fae Author: Linus Torvalds <torvalds@linux-foundation.org> Date: Fri Jul 2 10:04:42 2010 +1000 drm/i915: fix hibernation since i915 self-reclaim fixes Since commit 4bdadb9785696439c6e2b3efe34aa76df1149c83 ("drm/i915: Selectively enable self-reclaim"), we've been passing GFP_MOVABLE to the i915 page allocator where we weren't before due to some over-eager removal of the page mapping gfp_flags games the code used to play. This caused hibernate on Intel hardware to result in a lot of memory corruptions on resume. See for example http://bugzilla.kernel.org/show_bug.cgi?id=13811 Reported-by: Evengi Golov (in bugzilla) Signed-off-by: Dave Airlie <airlied@redhat.com> Tested-by: M. Vefa Bicakci <bicave@superonline.com> Cc: stable@kernel.org Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Cc: Hugh Dickins <hugh.dickins@tiscali.co.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 9ded3da..0743858 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2239,7 +2239,7 @@ i915_gem_object_get_pages(struct drm_gem_object *obj, mapping = inode->i_mapping; for (i = 0; i < page_count; i++) { page = read_cache_page_gfp(mapping, i, - mapping_gfp_mask (mapping) | + GFP_HIGHUSER | __GFP_COLD | gfpmask); if (IS_ERR(page)) Cheers, Julien
Attachment:
signature.asc
Description: Digital signature