On 6/5/25 15:51, Lorenzo Stoakes wrote:
> The walk_page_range_novma() function is rather confusing - it supports two
> modes, one used often, the other used only for debugging.
> 
> The first mode is the common case of traversal of kernel page tables, which
> is what nearly all callers use this for.
> 
> Secondly it provides an unusual debugging interface that allows for the
> traversal of page tables in a userland range of memory even for that memory
> which is not described by a VMA.
> 
> It is far from certain that such page tables should even exist, but perhaps
> this is precisely why it is useful as a debugging mechanism.
> 
> As a result, this is utilised by ptdump only. Historically, things were
> reversed - ptdump was the only user, and other parts of the kernel evolved
> to use the kernel page table walking here.
> 
> Since we have some complicated and confusing locking rules for the novma
> case, it makes sense to separate the two usages into their own functions.
> 
> Doing this also provide self-documentation as to the intent of the caller -
> are they doing something rather unusual or are they simply doing a standard
> kernel page table walk?
> 
> We therefore establish two separate functions - walk_page_range_debug() for
> this single usage, and walk_kernel_page_table_range() for general kernel
> page table walking.
> 
> The walk_page_range_debug() function is currently used to traverse both
> userland and kernel mappings, so we maintain this and in the case of kernel
> mappings being traversed, we have walk_page_range_debug() invoke
> walk_kernel_page_table_range() internally.
> 
> We additionally make walk_page_range_debug() internal to mm.
> 
> Signed-off-by: Lorenzo Stoakes <lorenzo.stoa...@oracle.com>
> Acked-by: Mike Rapoport (Microsoft) <r...@kernel.org>
> Acked-by: Qi Zheng <zhengqi.a...@bytedance.com>
> Reviewed-by: Oscar Salvador <osalva...@suse.de>
> Reviewed-by: Suren Baghdasaryan <sur...@google.com>

Reviewed-by: Vlastimil Babka <vba...@suse.cz>

Thanks!

Reply via email to