Re: [PATCH v4 5/8] arch: introduce set_direct_map_valid_noflush()

From: Mike Rapoport
Date: Tue Oct 08 2024 - 02:52:29 EST


Hi Huacai,

On Tue, Oct 08, 2024 at 10:11:25AM +0800, Huacai Chen wrote:
> Hi, Mike,
>
> On Mon, Oct 7, 2024 at 2:30 PM Mike Rapoport <rppt@xxxxxxxxxx> wrote:
> >
> > From: "Mike Rapoport (Microsoft)" <rppt@xxxxxxxxxx>
> >
> > Add an API that will allow updates of the direct/linear map for a set of
> > physically contiguous pages.
> >
> > It will be used in the following patches.
> >
> > Signed-off-by: Mike Rapoport (Microsoft) <rppt@xxxxxxxxxx>
> > ---
> > arch/arm64/include/asm/set_memory.h | 1 +
> > arch/arm64/mm/pageattr.c | 10 ++++++++++
> > arch/loongarch/include/asm/set_memory.h | 1 +
> > arch/loongarch/mm/pageattr.c | 21 +++++++++++++++++++++
> > arch/riscv/include/asm/set_memory.h | 1 +
> > arch/riscv/mm/pageattr.c | 15 +++++++++++++++
> > arch/s390/include/asm/set_memory.h | 1 +
> > arch/s390/mm/pageattr.c | 11 +++++++++++
> > arch/x86/include/asm/set_memory.h | 1 +
> > arch/x86/mm/pat/set_memory.c | 8 ++++++++
> > include/linux/set_memory.h | 6 ++++++
> > 11 files changed, 76 insertions(+)
> >
> > diff --git a/arch/loongarch/include/asm/set_memory.h b/arch/loongarch/include/asm/set_memory.h
> > index d70505b6676c..55dfaefd02c8 100644
> > --- a/arch/loongarch/include/asm/set_memory.h
> > +++ b/arch/loongarch/include/asm/set_memory.h
> > @@ -17,5 +17,6 @@ int set_memory_rw(unsigned long addr, int numpages);
> > bool kernel_page_present(struct page *page);
> > int set_direct_map_default_noflush(struct page *page);
> > int set_direct_map_invalid_noflush(struct page *page);
> > +int set_direct_map_valid_noflush(struct page *page, unsigned nr, bool valid);
> >
> > #endif /* _ASM_LOONGARCH_SET_MEMORY_H */
> > diff --git a/arch/loongarch/mm/pageattr.c b/arch/loongarch/mm/pageattr.c
> > index ffd8d76021d4..f14b40c968b4 100644
> > --- a/arch/loongarch/mm/pageattr.c
> > +++ b/arch/loongarch/mm/pageattr.c
> > @@ -216,3 +216,24 @@ int set_direct_map_invalid_noflush(struct page *page)
> >
> > return __set_memory(addr, 1, __pgprot(0), __pgprot(_PAGE_PRESENT | _PAGE_VALID));
> > }
> > +
> > +int set_direct_map_valid_noflush(struct page *page, unsigned nr, bool valid)
> > +{
> > + unsigned long addr = (unsigned long)page_address(page);
> > + pgprot_t set, clear;
> > +
> > + return __set_memory((unsigned long)page_address(page), nr, set, clear);
> This line should be removed.

Argh, copy/paste is so hard...

Thanks, will do.

> Huacai

--
Sincerely yours,
Mike.