v3
2026-10-23
sparc64 D-cache 别名刷新修复 · v3
修复 sparc64 D-cache 别名刷新:xcall 无目标时提前返回、按 PTE 页刷新、实现 vmap/vunmap 刷新并改 move_pte 传 PTE 数。
原始补丁链接
子 Patch(4)
1/4
sparc64: skip the trap block in xcall_deliver() when there is no target
xcall_deliver() writes the mondo data and the target CPU list through the trap block’s physical addresses before it knows whether any CPU is targeted. These addresses stay zero until init_IRQ() sets t
2/4
sparc64: flush only the aliased page, not its whole folio
[sparc64: flush only the aliased page, not its whole folio] Since the conversion to folios, move_pte() and tlb_batch_add() flushed the D-cache of every page in the folio a PTE maps. Both are called on
3/4
sparc64: flush vmalloc ranges from the D-cache on map and unmap
The L1 D-cache of Spitfire and Cheetah is indexed with VA bit 13, but flush_cache_vmap() and flush_cache_vunmap() are no-ops. Lines loaded through a vmalloc address survive the unmap, and once the pag
4/4
mm: pass the number of PTEs to move_pte()
[mm: pass the number of PTEs to move_pte()] Since commit f822a9a81a31 (“mm: optimize mremap() by PTE batching”), move_ptes() moves a batch of PTEs mapping consecutive pages of a folio at a time, but c