Changes in this version: - Dropped former patch 1 ("Separate placements and busy placements") as it was no longer necessary - Dropped former patch 4 ("Don't force BOs into visible VRAM if they can go to GTT instead") as it was unnecessary and had too many side effects (Thanks Christian) - Dropped former patches 8 and 9 ("Asynchronously move BOs to visible VRAM" and an associated optimization), as there may be better ways to address the root of the problem - Added a u64 cast to patch 1 (Thanks Christian) - Optimized patch 2 in the case where visible VRAM is not smaller than total VRAM (Thanks Michel) The series as it is now fixes Dying Light and improves DiRT Rally frame times. Without the asynchronous moves, there is still occasional stalling in DiRT Rally. The "Set/clear CPU_ACCESS_REQUIRED flag on page fault and CS" patch received objections, but I have not removed it yet as there seems to be some support for the idea. The precise details of when to set and clear the flag may need further discussion. I note that if the patch is removed (but retaining the preventative measures against repeated moves back and forth between GTT and invisible VRAM), there are very few evictions but the average framerate drops from ~89 to ~82. Presumably we'll see either higher memory presure or lower framerates depending on whether userspace over- or under-estimates when to set this flag. What we do in the kernel may depend on which side of this tradeoff we want to end up on for now. -- John Brooks (Frogging101)