One of the niceties of SandyBridge was that it introduced a shared LLC cache between the CPU and the GPU. This allows us assume cache coherency of a bo and so mix CPU and GPU access to the same buffer (with a few caveats of course). Older architectures used snooping to achieve very nearly the same effect (the only observable difference for the driver is the greatly increased bandwidth between the CPU and GPU and memory that SandyBridge also introduced). However, whilst we were able to enable LLC sharing by default on SNB as it has no obvious penalty and could be handled implicitly by the drivers, snoopable memory on the other hand must be managed explicitly (only certain types of buffers are allowed to snoopable, and overuse leads to degraded performace). So we expose an ioctl to grant userspace the ability to do so. Note that this has a significant patch to the drm_mm to enable segregation of different memory domains within the GTT, and that Daniel wants a battery of coherency checks for i-g-t, hence it is not quite ready just yet. As it stands I have used it to good effect within the DDX. Bring on vmap! -Chris