Re: + mm-define-general-function-pxd_init.patch added to mm-unstable branch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Oct 18, 2024 at 11:50 AM maobibo <maobibo@xxxxxxxxxxx> wrote:
>
>
>
> On 2024/10/18 上午11:20, Huacai Chen wrote:
> > Hi, Andrew,
> >
> > Please drop this patch temporary because I applied another Bibo's
> > patch which causes conflict in linux-next:
> > https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson.git/commit/?h=loongarch-next&id=15832255e84494853f543b4c70ced50afc403067
> >
> > That patch is urgent and should be merged in 6.12 as soon as possible,
> > while this refactoring patch is in mm-unstable and target for 6.13.
> >
> > Bibo will update this patch to V2 later. Thanks.
> No, it is not urgent since it exists for years. We need know HW details
> and give proper solution.
It has existed for years but just be found recently. A bug is usually
urgent and should be fixed asap.

>
> Huacai,
>
> Obviously you do not know LoongArch MM subsystem, I am doubt about your
> ability on it. Please hold on until it is verified on more HW platforms.
Of course I can't know everything, but at least I have double checked
every line of a patch. This is why I can find the mistake about KASAN
in your patch but you cannot (though you are the author).

Huacai

>
> Regards
> Bibo Mao
> >
> > Huacai
> >
> > On Tue, Oct 15, 2024 at 11:00 AM maobibo <maobibo@xxxxxxxxxxx> wrote:
> >>
> >>
> >>
> >> On 2024/10/15 上午10:20, Huacai Chen wrote:
> >>> Hi, Andrew,
> >>>
> >>> On Tue, Oct 15, 2024 at 4:12 AM Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote:
> >>>>
> >>>>
> >>>> The patch titled
> >>>>        Subject: mm: define general function pXd_init()
> >>>> has been added to the -mm mm-unstable branch.  Its filename is
> >>>>        mm-define-general-function-pxd_init.patch
> >>>>
> >>>> This patch will shortly appear at
> >>>>        https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-define-general-function-pxd_init.patch
> >>>>
> >>>> This patch will later appear in the mm-unstable branch at
> >>>>       git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
> >>>>
> >>>> Before you just go and hit "reply", please:
> >>>>      a) Consider who else should be cc'ed
> >>>>      b) Prefer to cc a suitable mailing list as well
> >>>>      c) Ideally: find the original patch on the mailing list and do a
> >>>>         reply-to-all to that, adding suitable additional cc's
> >>>>
> >>>> *** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
> >>>>
> >>>> The -mm tree is included into linux-next via the mm-everything
> >>>> branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
> >>>> and is updated there every 2-3 working days
> >>>>
> >>>> ------------------------------------------------------
> >>>> From: Bibo Mao <maobibo@xxxxxxxxxxx>
> >>>> Subject: mm: define general function pXd_init()
> >>>> Date: Fri, 11 Oct 2024 17:33:18 +0800
> >>>>
> >>>> pmd_init() and pud_init() are duplicated defined in file kasan.c and
> >>>> sparse-vmemmap.c as weak functions.  Move them to generic header file
> >>>> pgtable.h, architecture can redefine them.
> >>>>
> >>>> Link: https://lkml.kernel.org/r/20241011093318.519432-1-maobibo@xxxxxxxxxxx
> >>>> Signed-off-by: Bibo Mao <maobibo@xxxxxxxxxxx>
> >>>> Cc: Alexander Potapenko <glider@xxxxxxxxxx>
> >>>> Cc: Andrey Konovalov <andreyknvl@xxxxxxxxx>
> >>>> Cc: Andrey Ryabinin <ryabinin.a.a@xxxxxxxxx>
> >>>> Cc: Dmitry Vyukov <dvyukov@xxxxxxxxxx>
> >>>> Cc: Huacai Chen <chenhuacai@xxxxxxxxxx>
> >>>> Cc: Thomas Bogendoerfer <tsbogend@xxxxxxxxxxxxxxxx>
> >>>> Cc: Vincenzo Frascino <vincenzo.frascino@xxxxxxx>
> >>>> Cc: WANG Xuerui <kernel@xxxxxxxxxx>
> >>>> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> >>>> ---
> >>>>
> >>>>    arch/loongarch/include/asm/pgtable.h |    2 ++
> >>>>    arch/mips/include/asm/pgtable-64.h   |    2 ++
> >>>>    include/linux/mm.h                   |    2 --
> >>>>    include/linux/pgtable.h              |   14 ++++++++++++++
> >>>>    mm/kasan/init.c                      |    8 --------
> >>>>    mm/sparse-vmemmap.c                  |    8 --------
> >>>>    6 files changed, 18 insertions(+), 18 deletions(-)
> >>>>
> >>>> --- a/arch/loongarch/include/asm/pgtable.h~mm-define-general-function-pxd_init
> >>>> +++ a/arch/loongarch/include/asm/pgtable.h
> >>>> @@ -267,7 +267,9 @@ extern void set_pmd_at(struct mm_struct
> >>>>     * Initialize a new pgd / pud / pmd table with invalid pointers.
> >>>>     */
> >>>>    extern void pgd_init(void *addr);
> >>>> +#define pud_init pud_init
> >>>>    extern void pud_init(void *addr);
> >>>> +#define pmd_init pmd_init
> >>>>    extern void pmd_init(void *addr);
> >>>>
> >>>>    /*
> >>>> --- a/arch/mips/include/asm/pgtable-64.h~mm-define-general-function-pxd_init
> >>>> +++ a/arch/mips/include/asm/pgtable-64.h
> >>>> @@ -316,7 +316,9 @@ static inline pmd_t *pud_pgtable(pud_t p
> >>>>     * Initialize a new pgd / pud / pmd table with invalid pointers.
> >>>>     */
> >>>>    extern void pgd_init(void *addr);
> >>>> +#define pud_init pud_init
> >>>>    extern void pud_init(void *addr);
> >>>> +#define pmd_init pmd_init
> >>>>    extern void pmd_init(void *addr);
> >>>>
> >>>>    /*
> >>>> --- a/include/linux/mm.h~mm-define-general-function-pxd_init
> >>>> +++ a/include/linux/mm.h
> >>>> @@ -3821,8 +3821,6 @@ void *sparse_buffer_alloc(unsigned long
> >>>>    struct page * __populate_section_memmap(unsigned long pfn,
> >>>>                   unsigned long nr_pages, int nid, struct vmem_altmap *altmap,
> >>>>                   struct dev_pagemap *pgmap);
> >>>> -void pmd_init(void *addr);
> >>>> -void pud_init(void *addr);
> >>>>    pgd_t *vmemmap_pgd_populate(unsigned long addr, int node);
> >>>>    p4d_t *vmemmap_p4d_populate(pgd_t *pgd, unsigned long addr, int node);
> >>>>    pud_t *vmemmap_pud_populate(p4d_t *p4d, unsigned long addr, int node);
> >>>> --- a/include/linux/pgtable.h~mm-define-general-function-pxd_init
> >>>> +++ a/include/linux/pgtable.h
> >>>> @@ -90,6 +90,20 @@ static inline unsigned long pud_index(un
> >>>>    #define pgd_index(a)  (((a) >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1))
> >>>>    #endif
> >>>>
> >>>> +#ifndef pmd_init
> >>>> +static inline void pmd_init(void *addr)
> >>>> +{
> >>>> +}
> >>>> +#define pmd_init pmd_init
> >>>> +#endif
> >>>> +
> >>>> +#ifndef pud_init
> >>>> +static inline void pud_init(void *addr)
> >>>> +{
> >>>> +}
> >>>> +#define pud_init pud_init
> >>>> +#endif
> >>> For the fallback implementation, from other examples, it seems we
> >>> usually don't need something like "#define pmd_init pmd_init".
> >> However for some examples it is used actually, such as:
> >>
> >> #ifndef pmd_index
> >> static inline unsigned long pmd_index(unsigned long address)
> >> {
> >>           return (address >> PMD_SHIFT) & (PTRS_PER_PMD - 1);
> >> }
> >> #define pmd_index pmd_index
> >> #endif
> >>
> >> #ifndef pud_index
> >> static inline unsigned long pud_index(unsigned long address)
> >> {
> >>           return (address >> PUD_SHIFT) & (PTRS_PER_PUD - 1);
> >> }
> >> #define pud_index pud_index
> >> #endif
> >>
> >> Regards
> >> Bibo Mao
> >>>
> >>> Huacai
> >>>
> >>>> +
> >>>>    #ifndef pte_offset_kernel
> >>>>    static inline pte_t *pte_offset_kernel(pmd_t *pmd, unsigned long address)
> >>>>    {
> >>>> --- a/mm/kasan/init.c~mm-define-general-function-pxd_init
> >>>> +++ a/mm/kasan/init.c
> >>>> @@ -139,10 +139,6 @@ static int __ref zero_pmd_populate(pud_t
> >>>>           return 0;
> >>>>    }
> >>>>
> >>>> -void __weak __meminit pmd_init(void *addr)
> >>>> -{
> >>>> -}
> >>>> -
> >>>>    static int __ref zero_pud_populate(p4d_t *p4d, unsigned long addr,
> >>>>                                   unsigned long end)
> >>>>    {
> >>>> @@ -181,10 +177,6 @@ static int __ref zero_pud_populate(p4d_t
> >>>>           return 0;
> >>>>    }
> >>>>
> >>>> -void __weak __meminit pud_init(void *addr)
> >>>> -{
> >>>> -}
> >>>> -
> >>>>    static int __ref zero_p4d_populate(pgd_t *pgd, unsigned long addr,
> >>>>                                   unsigned long end)
> >>>>    {
> >>>> --- a/mm/sparse-vmemmap.c~mm-define-general-function-pxd_init
> >>>> +++ a/mm/sparse-vmemmap.c
> >>>> @@ -196,10 +196,6 @@ pmd_t * __meminit vmemmap_pmd_populate(p
> >>>>           return pmd;
> >>>>    }
> >>>>
> >>>> -void __weak __meminit pmd_init(void *addr)
> >>>> -{
> >>>> -}
> >>>> -
> >>>>    pud_t * __meminit vmemmap_pud_populate(p4d_t *p4d, unsigned long addr, int node)
> >>>>    {
> >>>>           pud_t *pud = pud_offset(p4d, addr);
> >>>> @@ -213,10 +209,6 @@ pud_t * __meminit vmemmap_pud_populate(p
> >>>>           return pud;
> >>>>    }
> >>>>
> >>>> -void __weak __meminit pud_init(void *addr)
> >>>> -{
> >>>> -}
> >>>> -
> >>>>    p4d_t * __meminit vmemmap_p4d_populate(pgd_t *pgd, unsigned long addr, int node)
> >>>>    {
> >>>>           p4d_t *p4d = p4d_offset(pgd, addr);
> >>>> _
> >>>>
> >>>> Patches currently in -mm which might be from maobibo@xxxxxxxxxxx are
> >>>>
> >>>> mm-define-general-function-pxd_init.patch
> >>>>
> >>
>





[Index of Archives]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux