On Thu, Jan 14, 2016 at 11:46:45AM +0530, ankitprasad.r.sharma@xxxxxxxxx wrote: > From: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > > Ville reminded us that stolen memory is not preserved across > hibernation, and a result of this was that context objects now being > allocated from stolen were being corrupted on S4 and promptly hanging > the GPU on resume. > > We want to utilise stolen for as much as possible (nothing else will use > that wasted memory otherwise), so we need a strategy for handling > general objects allocated from stolen and hibernation. A simple solution > is to do a CPU copy through the GTT of the stolen object into a fresh > shmemfs backing store and thenceforth treat it as a normal objects. This > can be refined in future to either use a GPU copy to avoid the slow > uncached reads (though it's hibernation!) and recreate stolen objects > upon resume/first-use. For now, a simple approach should suffice for > testing the object migration. > > v2: > Swap PTE for pinned bindings over to the shmemfs. This adds a > complicated dance, but is required as many stolen objects are likely to > be pinned for use by the hardware. Swapping the PTEs should not result > in externally visible behaviour, as each PTE update should be atomic and > the two pages identical. (danvet) > > safe-by-default, or the principle of least surprise. We need a new flag > to mark objects that we can wilfully discard and recreate across > hibernation. (danvet) > > Just use the global_list rather than invent a new stolen_list. This is > the slowpath hibernate and so adding a new list and the associated > complexity isn't worth it. > > v3: Rebased on drm-intel-nightly (Ankit) > > v4: Use insert_page to map stolen memory backed pages for migration to > shmem (Chris) > > v5: Acquire mutex lock while copying stolen buffer objects to shmem (Chris) > > v6: Handled file leak, Splitted object migration function, added kerneldoc > for migrate_stolen_to_shmemfs() function (Tvrtko) > Use i915 wrapper function for drm_mm_insert_node_in_range() > > v7: Keep the object in cpu domain after get_pages, remove the object from > the unbound list only when marked PURGED, Corrected split of object migration > function (Chris) > > v8: Split i915_gem_freeze(), removed redundant use of barrier, corrected > use of set_to_cpu_domain() (Chris) > > v9: Replaced WARN_ON by BUG_ON and added a comment explaining it (Tvrtko) I read Daniel's comment as this should be BUG_ON. It is machine death. A way for userspace to engineer writes to unowned pages. -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx