Re: [PATCH 1/3] mm: split out a new pagewalk.h header from mm.h

From: Steven Price
Date: Thu Aug 29 2019 - 05:16:58 EST


On 29/08/2019 10:05, Mike Rapoport wrote:
> On Wed, Aug 28, 2019 at 04:19:53PM +0200, Christoph Hellwig wrote:
[...]
>> diff --git a/include/linux/pagewalk.h b/include/linux/pagewalk.h
>> new file mode 100644
>> index 000000000000..df278a94086d
>> --- /dev/null
>> +++ b/include/linux/pagewalk.h
>> @@ -0,0 +1,54 @@
>> +/* SPDX-License-Identifier: GPL-2.0 */
>> +#ifndef _LINUX_PAGEWALK_H
>> +#define _LINUX_PAGEWALK_H
>> +
>> +#include <linux/mm.h>
>> +
>> +/**
>> + * mm_walk - callbacks for walk_page_range
>> + * @pud_entry: if set, called for each non-empty PUD (2nd-level) entry
>
> Sorry for jumping late, can we remove the level numbers here and below?
> PUD can be non-existent, 2nd or 3rd (from top) and PTE can be from 2nd to
> 5th...
>
> I'd completely drop the numbers and mark PTE as "lowest level".

This patch is just moving the code between, so it seems right to leave
it alone for the moment. My series[1] (which I'm going to rebase on
this, hopefully soon) will rename this:

> /**
> * mm_walk - callbacks for walk_page_range
> - * @pud_entry: if set, called for each non-empty PUD (2nd-level) entry
> - * this handler should only handle pud_trans_huge() puds.
> - * the pmd_entry or pte_entry callbacks will be used for
> - * regular PUDs.
> - * @pmd_entry: if set, called for each non-empty PMD (3rd-level) entry
> + * @pgd_entry: if set, called for each non-empty PGD (top-level) entry
> + * @p4d_entry: if set, called for each non-empty P4D entry
> + * @pud_entry: if set, called for each non-empty PUD entry
> + * @pmd_entry: if set, called for each non-empty PMD entry
> * this handler is required to be able to handle
> * pmd_trans_huge() pmds. They may simply choose to
> * split_huge_page() instead of handling it explicitly.
> - * @pte_entry: if set, called for each non-empty PTE (4th-level) entry
> + * @pte_entry: if set, called for each non-empty PTE (lowest-level) entry
> * @pte_hole: if set, called for each hole at all levels
> * @hugetlb_entry: if set, called for each hugetlb entry
> * @test_walk: caller specific callback function to determine whether

Which matches your suggestion of just "top-level"/"lowest-level".

Steve

[1]
https://lore.kernel.org/lkml/20190731154603.41797-12-steven.price@xxxxxxx/