pm/suspend: Overhaul of pinned VRAM bo handling at suspend time
The handling of pinned VRAM bos is (ab)using the TTM eviction mechanism but that is fragile at best, since it is releasing the pinned VRAM memory and is thus depending on the order of recovery at resume. We're also relying on CPU copies for these BOs, which is terribly inefficient in the VRAM->system direction, even if prefetching memcpy is used. IMO we should
- Audit and consider what we can release at suspend time and re-initialize at resume time to avoid as much as possible pinned bos being present. (The migrate subsystem for example?)
- Look at reusing the i915 backup procedure which retains the VRAM manager state and instead backs up VRAM to allocated system buffer objects or resources, and the flags that indicate what can be backed up using the blitter and what needs to be backed up using CPU.