• Linus Torvalds's avatar
    drm/i915: add 'reclaimable' to i915 self-reclaimable page allocations · cd9f040d
    Linus Torvalds authored
    The hibernate issues that got fixed in commit 985b823b ("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 4bdadb97 ("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
    985b823b, 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: default avatarM. 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: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    cd9f040d
i915_gem.c 134 KB