Quoting Linus Torvalds (2020-08-21 13:41:03)
On Fri, Aug 21, 2020 at 1:50 AM Chris Wilson chris@chris-wilson.co.uk wrote:
Since synchronising the PTE after assignment is a manual step, use the newly exported interface to flush the PTE after assigning via alloc_vm_area().
This commit message doesn't make much sense to me.
Are you talking about synchronizing the page directory structure across processes after possibly creating new kernel page tables?
Because that has nothing to do with the PTE. It's all about making sure the _upper_ layers of the page directories are populated everywhere..
The name seems off to me too - what are you "flushing"? (And yes, I know about the flush_cache_vmap(), but that looks just bogus, since any non-mapped area shouldn't have any virtual caches to begin with, so I suspect that is just the crazy architectures being confused - flush_cache_vmap() is a no-op on any sane architecture - and powerpc that mis-uses it for other things).
I was trying to mimic map_kernel_range() which does the arch_sync_kernel_mappings and flush_cache_vmap on top of the apply_to_page_range performed by alloc_vm_area, because buried away in there, on x86-32, is a set_pmd(). Since map_kernel_range() wrapped map_kernel_range_noflush(), flush seemed like the right verb.
Joerg pointed out that the sync belonged to __apply_to_page_range and fixed it in situ. -Chris