..., first and foremost by using cache write-back operations instead of flushing ones when available (and sufficient for the purpose).
In the context of making the last patch I started wondering whether for PV we don't flush (write back) too little for MMUEXT_FLUSH_CACHE: Just like for HVM, pCPU-s a vCPU has run on before could still hold data in their caches. (We clearly still flush / write back too much in MMUEXT_FLUSH_CACHE_GLOBAL even with this series in place.) We also can't call this the guest's responsibility, as it may not have any means to have one of its vCPU-s run on the intended pCPU. 1: x86: support cache-writeback in flush_area_local() et al 2: x86/HVM: restrict guest-induced WBINVD to cache writeback 3: x86/PV: restrict guest-induced WBINVD (or alike) to cache writeback 4: VT-d: restrict iommu_flush_all() to cache writeback 5: x86/HVM: limit cache writeback overhead Jan