summaryrefslogtreecommitdiffstats
path: root/virt
diff options
context:
space:
mode:
authorRick Edgecombe <rick.p.edgecombe@intel.com>2020-04-23 05:13:55 +0200
committerPeter Zijlstra <peterz@infradead.org>2020-04-30 20:14:30 +0200
commitab5130186d7476dcee0d4e787d19a521ca552ce9 (patch)
tree5f9dd5501e33ebc20a70de8f108a6d48f39e7325 /virt
parentobjtool: Fix infinite loop in for_offset_range() (diff)
downloadlinux-ab5130186d7476dcee0d4e787d19a521ca552ce9.tar.xz
linux-ab5130186d7476dcee0d4e787d19a521ca552ce9.zip
x86/mm/cpa: Flush direct map alias during cpa
As an optimization, cpa_flush() was changed to optionally only flush the range in @cpa if it was small enough. However, this range does not include any direct map aliases changed in cpa_process_alias(). So small set_memory_() calls that touch that alias don't get the direct map changes flushed. This situation can happen when the virtual address taking variants are passed an address in vmalloc or modules space. In these cases, force a full TLB flush. Note this issue does not extend to cases where the set_memory_() calls are passed a direct map address, or page array, etc, as the primary target. In those cases the direct map would be flushed. Fixes: 935f5839827e ("x86/mm/cpa: Optimize cpa_flush_array() TLB invalidation") Signed-off-by: Rick Edgecombe <rick.p.edgecombe@intel.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lkml.kernel.org/r/20200424105343.GA20730@hirez.programming.kicks-ass.net
Diffstat (limited to 'virt')
0 files changed, 0 insertions, 0 deletions