Re: [PATCH v3 1/8] mm: make PTE_MARKER_SWAPIN_ERROR more general

From: Peter Xu
Date: Fri Jul 07 2023 - 09:11:31 EST


On Thu, Jul 06, 2023 at 03:50:29PM -0700, Axel Rasmussen wrote:
> diff --git a/mm/madvise.c b/mm/madvise.c
> index 886f06066622..59e954586e2a 100644
> --- a/mm/madvise.c
> +++ b/mm/madvise.c
> @@ -660,7 +660,7 @@ static int madvise_free_pte_range(pmd_t *pmd, unsigned long addr,
> free_swap_and_cache(entry);
> pte_clear_not_present_full(mm, addr, pte, tlb->fullmm);
> } else if (is_hwpoison_entry(entry) ||
> - is_swapin_error_entry(entry)) {
> + is_error_swp_entry(entry)) {

is_error_swp_entry() made me think whether we should call this marker as
ERROR at all - it's too generic, is_error_swp_entry() can be easily read as
"this swap entry is not legal". Can we come up with a less generic one?

PTE_MARKER_PAGE_POISONED / PTE_MARKER_POISONED / PTE_MARKER_PAGE_ERR / ...?

We do use poisoned only in real bad physical pages before, but I think we
can still keep using it when applying it to a pte. I think it's fine to
call a pte poisoned if it's not legal to access, just like a poisoned page.

> pte_clear_not_present_full(mm, addr, pte, tlb->fullmm);
> }
> continue;

The code change across the whole patch look good to me otherwise, thanks.

--
Peter Xu