2023-09-21 22:18:30

by Ryan Roberts

[permalink] [raw]
Subject: [PATCH v1 2/8] powerpc: hugetlb: Convert set_huge_pte_at() to take vma

In order to fix a bug, arm64 needs access to the vma inside it's
implementation of set_huge_pte_at(). Provide for this by converting the
mm parameter to be a vma. Any implementations that require the mm can
access it via vma->vm_mm.

This commit makes the required powerpc modifications. Separate commits
update the other arches and core code, before the actual bug is fixed in
arm64.

No behavioral changes intended.

Signed-off-by: Ryan Roberts <[email protected]>
---
arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h | 3 ++-
arch/powerpc/mm/book3s64/hugetlbpage.c | 2 +-
arch/powerpc/mm/book3s64/radix_hugetlbpage.c | 2 +-
arch/powerpc/mm/nohash/8xx.c | 2 +-
arch/powerpc/mm/pgtable.c | 7 ++++++-
5 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h b/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
index de092b04ee1a..fff8cd726bc7 100644
--- a/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
+++ b/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
@@ -46,7 +46,8 @@ static inline int check_and_get_huge_psize(int shift)
}

#define __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT
-void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte);
+void set_huge_pte_at(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t pte);
+void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte);

#define __HAVE_ARCH_HUGE_PTE_CLEAR
static inline void huge_pte_clear(struct mm_struct *mm, unsigned long addr,
diff --git a/arch/powerpc/mm/book3s64/hugetlbpage.c b/arch/powerpc/mm/book3s64/hugetlbpage.c
index 3bc0eb21b2a0..ae7fd7c90eb8 100644
--- a/arch/powerpc/mm/book3s64/hugetlbpage.c
+++ b/arch/powerpc/mm/book3s64/hugetlbpage.c
@@ -147,7 +147,7 @@ void huge_ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr
if (radix_enabled())
return radix__huge_ptep_modify_prot_commit(vma, addr, ptep,
old_pte, pte);
- set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
+ set_huge_pte_at(vma, addr, ptep, pte);
}

void __init hugetlbpage_init_defaultsize(void)
diff --git a/arch/powerpc/mm/book3s64/radix_hugetlbpage.c b/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
index 17075c78d4bc..7cd40a334c3a 100644
--- a/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
+++ b/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
@@ -58,5 +58,5 @@ void radix__huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
atomic_read(&mm->context.copros) > 0)
radix__flush_hugetlb_page(vma, addr);

- set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
+ set_huge_pte_at(vma, addr, ptep, pte);
}
diff --git a/arch/powerpc/mm/nohash/8xx.c b/arch/powerpc/mm/nohash/8xx.c
index dbbfe897455d..650a7a8496b6 100644
--- a/arch/powerpc/mm/nohash/8xx.c
+++ b/arch/powerpc/mm/nohash/8xx.c
@@ -91,7 +91,7 @@ static int __ref __early_map_kernel_hugepage(unsigned long va, phys_addr_t pa,
if (new && WARN_ON(pte_present(*ptep) && pgprot_val(prot)))
return -EINVAL;

- set_huge_pte_at(&init_mm, va, ptep, pte_mkhuge(pfn_pte(pa >> PAGE_SHIFT, prot)));
+ __set_huge_pte_at(&init_mm, va, ptep, pte_mkhuge(pfn_pte(pa >> PAGE_SHIFT, prot)));

return 0;
}
diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c
index 3f86fd217690..9cbcb561a4d8 100644
--- a/arch/powerpc/mm/pgtable.c
+++ b/arch/powerpc/mm/pgtable.c
@@ -288,7 +288,7 @@ int huge_ptep_set_access_flags(struct vm_area_struct *vma,
}

#if defined(CONFIG_PPC_8xx)
-void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte)
+void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte)
{
pmd_t *pmd = pmd_off(mm, addr);
pte_basic_t val;
@@ -310,6 +310,11 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_
for (i = 0; i < num; i++, entry++, val += SZ_4K)
*entry = val;
}
+
+void set_huge_pte_at(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t pte)
+{
+ __set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
+}
#endif
#endif /* CONFIG_HUGETLB_PAGE */

--
2.25.1


2023-09-22 07:20:57

by Ryan Roberts

[permalink] [raw]
Subject: Re: [PATCH v1 2/8] powerpc: hugetlb: Convert set_huge_pte_at() to take vma

On 22/09/2023 07:44, Christophe Leroy wrote:
>
>
> Le 21/09/2023 à 20:43, Christophe Leroy a écrit :
>>
>>
>> Le 21/09/2023 à 18:20, Ryan Roberts a écrit :
>>> In order to fix a bug, arm64 needs access to the vma inside it's
>>> implementation of set_huge_pte_at(). Provide for this by converting the
>>> mm parameter to be a vma. Any implementations that require the mm can
>>> access it via vma->vm_mm.
>>>
>>> This commit makes the required powerpc modifications. Separate commits
>>> update the other arches and core code, before the actual bug is fixed in
>>> arm64.
>>>
>>> No behavioral changes intended.
>>
>> This patch doesn't build, allthough I have also applied patch 1. Is
>> something missing ?
>>
>> CALL scripts/checksyscalls.sh
>> CC arch/powerpc/kernel/setup-common.o
>> In file included from arch/powerpc/kernel/setup-common.c:37:
>> ./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
>> ./include/linux/hugetlb.h:987:28: error: passing argument 1 of
>> 'set_huge_pte_at' from incompatible pointer type
>> [-Werror=incompatible-pointer-types]
>> 987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
>> | ~~~^~~~~~~
>> | |
>> | struct mm_struct *
>> In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
>> from ./include/linux/hugetlb.h:815:
>> ./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
>> 'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
>> 49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
>> addr, pte_t *ptep, pte_t pte);
>> | ~~~~~~~~~~~~~~~~~~~~~~~^~~
>> cc1: all warnings being treated as errors
>> make[4]: *** [scripts/Makefile.build:243:
>
> Oh, I realised that it requires patch 6 to build properly. This is not
> good. Your series should be bisectable, that means it must build and run
> successfully after each patch. Therefore you have to squash patches 1 to
> 7 all togethers.

Yeah my bad - sorry about that. I thought it would be better to separate the
changes for each arch. But as already suggested by Andrew and Catalin, I'll
squash the first 7 patches into 1 for v2.

>
> I'll send you comments on the powerpc part in another mail.
>
> Christophe

2023-09-22 08:52:57

by Ryan Roberts

[permalink] [raw]
Subject: Re: [PATCH v1 2/8] powerpc: hugetlb: Convert set_huge_pte_at() to take vma

On 22/09/2023 09:10, Christophe Leroy wrote:
>
>
> Le 22/09/2023 à 09:33, Ryan Roberts a écrit :
>> On 22/09/2023 07:56, Christophe Leroy wrote:
>>>
>>>
>>> Le 21/09/2023 à 18:20, Ryan Roberts a écrit :
>>>> In order to fix a bug, arm64 needs access to the vma inside it's
>>>> implementation of set_huge_pte_at(). Provide for this by converting the
>>>> mm parameter to be a vma. Any implementations that require the mm can
>>>> access it via vma->vm_mm.
>>>>
>>>> This commit makes the required powerpc modifications. Separate commits
>>>> update the other arches and core code, before the actual bug is fixed in
>>>> arm64.
>>>>
>>>> No behavioral changes intended.
>>>>
>>>> Signed-off-by: Ryan Roberts <[email protected]>
>>>> ---
>>>> arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h | 3 ++-
>>>> arch/powerpc/mm/book3s64/hugetlbpage.c | 2 +-
>>>> arch/powerpc/mm/book3s64/radix_hugetlbpage.c | 2 +-
>>>> arch/powerpc/mm/nohash/8xx.c | 2 +-
>>>> arch/powerpc/mm/pgtable.c | 7 ++++++-
>>>> 5 files changed, 11 insertions(+), 5 deletions(-)
>>>>
>>>> diff --git a/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h b/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
>>>> index de092b04ee1a..fff8cd726bc7 100644
>>>> --- a/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
>>>> +++ b/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
>>>> @@ -46,7 +46,8 @@ static inline int check_and_get_huge_psize(int shift)
>>>> }
>>>>
>>>> #define __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT
>>>> -void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte);
>>>> +void set_huge_pte_at(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t pte);
>>>> +void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte);
>>>
>>> Don't add the burden of an additional function, see below
>>>
>>>>
>>>> #define __HAVE_ARCH_HUGE_PTE_CLEAR
>>>> static inline void huge_pte_clear(struct mm_struct *mm, unsigned long addr,
>>>> diff --git a/arch/powerpc/mm/book3s64/hugetlbpage.c b/arch/powerpc/mm/book3s64/hugetlbpage.c
>>>> index 3bc0eb21b2a0..ae7fd7c90eb8 100644
>>>> --- a/arch/powerpc/mm/book3s64/hugetlbpage.c
>>>> +++ b/arch/powerpc/mm/book3s64/hugetlbpage.c
>>>> @@ -147,7 +147,7 @@ void huge_ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr
>>>> if (radix_enabled())
>>>> return radix__huge_ptep_modify_prot_commit(vma, addr, ptep,
>>>> old_pte, pte);
>>>> - set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
>>>> + set_huge_pte_at(vma, addr, ptep, pte);
>>>> }
>>>>
>>>> void __init hugetlbpage_init_defaultsize(void)
>>>> diff --git a/arch/powerpc/mm/book3s64/radix_hugetlbpage.c b/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
>>>> index 17075c78d4bc..7cd40a334c3a 100644
>>>> --- a/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
>>>> +++ b/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
>>>> @@ -58,5 +58,5 @@ void radix__huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
>>>> atomic_read(&mm->context.copros) > 0)
>>>> radix__flush_hugetlb_page(vma, addr);
>>>>
>>>> - set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
>>>> + set_huge_pte_at(vma, addr, ptep, pte);
>>>> }
>>>> diff --git a/arch/powerpc/mm/nohash/8xx.c b/arch/powerpc/mm/nohash/8xx.c
>>>> index dbbfe897455d..650a7a8496b6 100644
>>>> --- a/arch/powerpc/mm/nohash/8xx.c
>>>> +++ b/arch/powerpc/mm/nohash/8xx.c
>>>> @@ -91,7 +91,7 @@ static int __ref __early_map_kernel_hugepage(unsigned long va, phys_addr_t pa,
>>>> if (new && WARN_ON(pte_present(*ptep) && pgprot_val(prot)))
>>>> return -EINVAL;
>>>>
>>>> - set_huge_pte_at(&init_mm, va, ptep, pte_mkhuge(pfn_pte(pa >> PAGE_SHIFT, prot)));
>>>> + __set_huge_pte_at(&init_mm, va, ptep, pte_mkhuge(pfn_pte(pa >> PAGE_SHIFT, prot)));
>>>
>>> Call set_huge_pte_at() with a NULL vma instead.
>>
>> I'm happy to take your proposed approach if that's your preference. Another
>> option is to use a dummy VMA, as I have done in the core code, for the one call
>> site that calls set_huge_pte_at() with init_mm:
>>
>> struct vm_area_struct vma = TLB_FLUSH_VMA(&init_mm, 0);
>>
>> This is an existing macro that creates a dummy vma with vma->vm_mm filled in.
>> Then I pass &vma to the function.
>
> I don't like that, I prefer the solution I proposed. We already have a
> couple places where powerpc do things based on whether vma is NULL or not.
>
>>
>> Or yet another option would be to keep the mm param as is in set_huge_pte_at(),
>> and add a size param to the function. But then all call sites have the burden of
>> figuring out the size of the huge pte (although I think most know already).
>
> Indeed.
>
> arch_make_huge_pte() used to take a vma until commit 79c1c594f49a
> ("mm/hugetlb: change parameters of arch_make_huge_pte()").
>
> Should we try and have the same approach ? Or is it irrelevant ?

See [1]; I'm going to rework to pass mm + size parameter since the current
approach will break riscv.

[1]
https://lore.kernel.org/linux-arm-kernel/[email protected]/

>
> Christophe
>
>>
>> Thanks,
>> Ryan
>>
>>>
>>>>
>>>> return 0;
>>>> }
>>>> diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c
>>>> index 3f86fd217690..9cbcb561a4d8 100644
>>>> --- a/arch/powerpc/mm/pgtable.c
>>>> +++ b/arch/powerpc/mm/pgtable.c
>>>> @@ -288,7 +288,7 @@ int huge_ptep_set_access_flags(struct vm_area_struct *vma,
>>>> }
>>>>
>>>> #if defined(CONFIG_PPC_8xx)
>>>> -void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte)
>>>> +void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte)
>>>
>>> Keep it as set_huge_pte_at() with vma argument.
>>>
>>>> {
>>>> pmd_t *pmd = pmd_off(mm, addr);
>>>
>>> Change to:
>>>
>>> pmd_t *pmd = vma ? pmd_off(vma->vm_mm, addr) : pmd_off_k(addr);
>>>
>>>> pte_basic_t val;
>>>> @@ -310,6 +310,11 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_
>>>> for (i = 0; i < num; i++, entry++, val += SZ_4K)
>>>> *entry = val;
>>>> }
>>>> +
>>>> +void set_huge_pte_at(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t pte)
>>>> +{
>>>> + __set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
>>>> +}
>>>
>>> Remove this burden.
>>>
>>>> #endif
>>>> #endif /* CONFIG_HUGETLB_PAGE */
>>>>
>>>
>>>
>>> Christophe
>>

2023-09-22 09:09:32

by Ryan Roberts

[permalink] [raw]
Subject: Re: [PATCH v1 2/8] powerpc: hugetlb: Convert set_huge_pte_at() to take vma

On 22/09/2023 07:56, Christophe Leroy wrote:
>
>
> Le 21/09/2023 à 18:20, Ryan Roberts a écrit :
>> In order to fix a bug, arm64 needs access to the vma inside it's
>> implementation of set_huge_pte_at(). Provide for this by converting the
>> mm parameter to be a vma. Any implementations that require the mm can
>> access it via vma->vm_mm.
>>
>> This commit makes the required powerpc modifications. Separate commits
>> update the other arches and core code, before the actual bug is fixed in
>> arm64.
>>
>> No behavioral changes intended.
>>
>> Signed-off-by: Ryan Roberts <[email protected]>
>> ---
>> arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h | 3 ++-
>> arch/powerpc/mm/book3s64/hugetlbpage.c | 2 +-
>> arch/powerpc/mm/book3s64/radix_hugetlbpage.c | 2 +-
>> arch/powerpc/mm/nohash/8xx.c | 2 +-
>> arch/powerpc/mm/pgtable.c | 7 ++++++-
>> 5 files changed, 11 insertions(+), 5 deletions(-)
>>
>> diff --git a/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h b/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
>> index de092b04ee1a..fff8cd726bc7 100644
>> --- a/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
>> +++ b/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
>> @@ -46,7 +46,8 @@ static inline int check_and_get_huge_psize(int shift)
>> }
>>
>> #define __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT
>> -void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte);
>> +void set_huge_pte_at(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t pte);
>> +void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte);
>
> Don't add the burden of an additional function, see below
>
>>
>> #define __HAVE_ARCH_HUGE_PTE_CLEAR
>> static inline void huge_pte_clear(struct mm_struct *mm, unsigned long addr,
>> diff --git a/arch/powerpc/mm/book3s64/hugetlbpage.c b/arch/powerpc/mm/book3s64/hugetlbpage.c
>> index 3bc0eb21b2a0..ae7fd7c90eb8 100644
>> --- a/arch/powerpc/mm/book3s64/hugetlbpage.c
>> +++ b/arch/powerpc/mm/book3s64/hugetlbpage.c
>> @@ -147,7 +147,7 @@ void huge_ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr
>> if (radix_enabled())
>> return radix__huge_ptep_modify_prot_commit(vma, addr, ptep,
>> old_pte, pte);
>> - set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
>> + set_huge_pte_at(vma, addr, ptep, pte);
>> }
>>
>> void __init hugetlbpage_init_defaultsize(void)
>> diff --git a/arch/powerpc/mm/book3s64/radix_hugetlbpage.c b/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
>> index 17075c78d4bc..7cd40a334c3a 100644
>> --- a/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
>> +++ b/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
>> @@ -58,5 +58,5 @@ void radix__huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
>> atomic_read(&mm->context.copros) > 0)
>> radix__flush_hugetlb_page(vma, addr);
>>
>> - set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
>> + set_huge_pte_at(vma, addr, ptep, pte);
>> }
>> diff --git a/arch/powerpc/mm/nohash/8xx.c b/arch/powerpc/mm/nohash/8xx.c
>> index dbbfe897455d..650a7a8496b6 100644
>> --- a/arch/powerpc/mm/nohash/8xx.c
>> +++ b/arch/powerpc/mm/nohash/8xx.c
>> @@ -91,7 +91,7 @@ static int __ref __early_map_kernel_hugepage(unsigned long va, phys_addr_t pa,
>> if (new && WARN_ON(pte_present(*ptep) && pgprot_val(prot)))
>> return -EINVAL;
>>
>> - set_huge_pte_at(&init_mm, va, ptep, pte_mkhuge(pfn_pte(pa >> PAGE_SHIFT, prot)));
>> + __set_huge_pte_at(&init_mm, va, ptep, pte_mkhuge(pfn_pte(pa >> PAGE_SHIFT, prot)));
>
> Call set_huge_pte_at() with a NULL vma instead.

I'm happy to take your proposed approach if that's your preference. Another
option is to use a dummy VMA, as I have done in the core code, for the one call
site that calls set_huge_pte_at() with init_mm:

struct vm_area_struct vma = TLB_FLUSH_VMA(&init_mm, 0);

This is an existing macro that creates a dummy vma with vma->vm_mm filled in.
Then I pass &vma to the function.

Or yet another option would be to keep the mm param as is in set_huge_pte_at(),
and add a size param to the function. But then all call sites have the burden of
figuring out the size of the huge pte (although I think most know already).

Thanks,
Ryan

>
>>
>> return 0;
>> }
>> diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c
>> index 3f86fd217690..9cbcb561a4d8 100644
>> --- a/arch/powerpc/mm/pgtable.c
>> +++ b/arch/powerpc/mm/pgtable.c
>> @@ -288,7 +288,7 @@ int huge_ptep_set_access_flags(struct vm_area_struct *vma,
>> }
>>
>> #if defined(CONFIG_PPC_8xx)
>> -void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte)
>> +void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte)
>
> Keep it as set_huge_pte_at() with vma argument.
>
>> {
>> pmd_t *pmd = pmd_off(mm, addr);
>
> Change to:
>
> pmd_t *pmd = vma ? pmd_off(vma->vm_mm, addr) : pmd_off_k(addr);
>
>> pte_basic_t val;
>> @@ -310,6 +310,11 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_
>> for (i = 0; i < num; i++, entry++, val += SZ_4K)
>> *entry = val;
>> }
>> +
>> +void set_huge_pte_at(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t pte)
>> +{
>> + __set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
>> +}
>
> Remove this burden.
>
>> #endif
>> #endif /* CONFIG_HUGETLB_PAGE */
>>
>
>
> Christophe

2023-09-22 09:51:16

by Ryan Roberts

[permalink] [raw]
Subject: Re: [PATCH v1 2/8] powerpc: hugetlb: Convert set_huge_pte_at() to take vma

On 22/09/2023 10:14, Christophe Leroy wrote:
>
>
> Le 22/09/2023 à 10:41, Ryan Roberts a écrit :
>> On 22/09/2023 09:10, Christophe Leroy wrote:
>>>
>>>
>>>> I'm happy to take your proposed approach if that's your preference. Another
>>>> option is to use a dummy VMA, as I have done in the core code, for the one call
>>>> site that calls set_huge_pte_at() with init_mm:
>>>>
>>>> struct vm_area_struct vma = TLB_FLUSH_VMA(&init_mm, 0);
>>>>
>>>> This is an existing macro that creates a dummy vma with vma->vm_mm filled in.
>>>> Then I pass &vma to the function.
>>>
>>> I don't like that, I prefer the solution I proposed. We already have a
>>> couple places where powerpc do things based on whether vma is NULL or not.
>>>
>>>>
>>>> Or yet another option would be to keep the mm param as is in set_huge_pte_at(),
>>>> and add a size param to the function. But then all call sites have the burden of
>>>> figuring out the size of the huge pte (although I think most know already).
>>>
>>> Indeed.
>>>
>>> arch_make_huge_pte() used to take a vma until commit 79c1c594f49a
>>> ("mm/hugetlb: change parameters of arch_make_huge_pte()").
>>>
>>> Should we try and have the same approach ? Or is it irrelevant ?
>>
>> See [1]; I'm going to rework to pass mm + size parameter since the current
>> approach will break riscv.
>
> Can you pass a shift parameter instead of a size, like
> arch_make_huge_pte() ? As far as I remember it is easier to handle a
> shift than a size.

Most of the call sites already have the size, not the shift. And arm64 needs the
size, so it would have do (1UL << shift). So on that basis, I prefer to pass
size. huge_pte_clear() already passes long unsigned sz, so I'd rather follow
that pattern.

>
> Christophe

2023-09-22 15:02:52

by Christophe Leroy

[permalink] [raw]
Subject: Re: [PATCH v1 2/8] powerpc: hugetlb: Convert set_huge_pte_at() to take vma



Le 22/09/2023 à 09:33, Ryan Roberts a écrit :
> On 22/09/2023 07:56, Christophe Leroy wrote:
>>
>>
>> Le 21/09/2023 à 18:20, Ryan Roberts a écrit :
>>> In order to fix a bug, arm64 needs access to the vma inside it's
>>> implementation of set_huge_pte_at(). Provide for this by converting the
>>> mm parameter to be a vma. Any implementations that require the mm can
>>> access it via vma->vm_mm.
>>>
>>> This commit makes the required powerpc modifications. Separate commits
>>> update the other arches and core code, before the actual bug is fixed in
>>> arm64.
>>>
>>> No behavioral changes intended.
>>>
>>> Signed-off-by: Ryan Roberts <[email protected]>
>>> ---
>>> arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h | 3 ++-
>>> arch/powerpc/mm/book3s64/hugetlbpage.c | 2 +-
>>> arch/powerpc/mm/book3s64/radix_hugetlbpage.c | 2 +-
>>> arch/powerpc/mm/nohash/8xx.c | 2 +-
>>> arch/powerpc/mm/pgtable.c | 7 ++++++-
>>> 5 files changed, 11 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h b/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
>>> index de092b04ee1a..fff8cd726bc7 100644
>>> --- a/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
>>> +++ b/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
>>> @@ -46,7 +46,8 @@ static inline int check_and_get_huge_psize(int shift)
>>> }
>>>
>>> #define __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT
>>> -void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte);
>>> +void set_huge_pte_at(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t pte);
>>> +void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte);
>>
>> Don't add the burden of an additional function, see below
>>
>>>
>>> #define __HAVE_ARCH_HUGE_PTE_CLEAR
>>> static inline void huge_pte_clear(struct mm_struct *mm, unsigned long addr,
>>> diff --git a/arch/powerpc/mm/book3s64/hugetlbpage.c b/arch/powerpc/mm/book3s64/hugetlbpage.c
>>> index 3bc0eb21b2a0..ae7fd7c90eb8 100644
>>> --- a/arch/powerpc/mm/book3s64/hugetlbpage.c
>>> +++ b/arch/powerpc/mm/book3s64/hugetlbpage.c
>>> @@ -147,7 +147,7 @@ void huge_ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr
>>> if (radix_enabled())
>>> return radix__huge_ptep_modify_prot_commit(vma, addr, ptep,
>>> old_pte, pte);
>>> - set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
>>> + set_huge_pte_at(vma, addr, ptep, pte);
>>> }
>>>
>>> void __init hugetlbpage_init_defaultsize(void)
>>> diff --git a/arch/powerpc/mm/book3s64/radix_hugetlbpage.c b/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
>>> index 17075c78d4bc..7cd40a334c3a 100644
>>> --- a/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
>>> +++ b/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
>>> @@ -58,5 +58,5 @@ void radix__huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
>>> atomic_read(&mm->context.copros) > 0)
>>> radix__flush_hugetlb_page(vma, addr);
>>>
>>> - set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
>>> + set_huge_pte_at(vma, addr, ptep, pte);
>>> }
>>> diff --git a/arch/powerpc/mm/nohash/8xx.c b/arch/powerpc/mm/nohash/8xx.c
>>> index dbbfe897455d..650a7a8496b6 100644
>>> --- a/arch/powerpc/mm/nohash/8xx.c
>>> +++ b/arch/powerpc/mm/nohash/8xx.c
>>> @@ -91,7 +91,7 @@ static int __ref __early_map_kernel_hugepage(unsigned long va, phys_addr_t pa,
>>> if (new && WARN_ON(pte_present(*ptep) && pgprot_val(prot)))
>>> return -EINVAL;
>>>
>>> - set_huge_pte_at(&init_mm, va, ptep, pte_mkhuge(pfn_pte(pa >> PAGE_SHIFT, prot)));
>>> + __set_huge_pte_at(&init_mm, va, ptep, pte_mkhuge(pfn_pte(pa >> PAGE_SHIFT, prot)));
>>
>> Call set_huge_pte_at() with a NULL vma instead.
>
> I'm happy to take your proposed approach if that's your preference. Another
> option is to use a dummy VMA, as I have done in the core code, for the one call
> site that calls set_huge_pte_at() with init_mm:
>
> struct vm_area_struct vma = TLB_FLUSH_VMA(&init_mm, 0);
>
> This is an existing macro that creates a dummy vma with vma->vm_mm filled in.
> Then I pass &vma to the function.

I don't like that, I prefer the solution I proposed. We already have a
couple places where powerpc do things based on whether vma is NULL or not.

>
> Or yet another option would be to keep the mm param as is in set_huge_pte_at(),
> and add a size param to the function. But then all call sites have the burden of
> figuring out the size of the huge pte (although I think most know already).

Indeed.

arch_make_huge_pte() used to take a vma until commit 79c1c594f49a
("mm/hugetlb: change parameters of arch_make_huge_pte()").

Should we try and have the same approach ? Or is it irrelevant ?

Christophe

>
> Thanks,
> Ryan
>
>>
>>>
>>> return 0;
>>> }
>>> diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c
>>> index 3f86fd217690..9cbcb561a4d8 100644
>>> --- a/arch/powerpc/mm/pgtable.c
>>> +++ b/arch/powerpc/mm/pgtable.c
>>> @@ -288,7 +288,7 @@ int huge_ptep_set_access_flags(struct vm_area_struct *vma,
>>> }
>>>
>>> #if defined(CONFIG_PPC_8xx)
>>> -void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte)
>>> +void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte)
>>
>> Keep it as set_huge_pte_at() with vma argument.
>>
>>> {
>>> pmd_t *pmd = pmd_off(mm, addr);
>>
>> Change to:
>>
>> pmd_t *pmd = vma ? pmd_off(vma->vm_mm, addr) : pmd_off_k(addr);
>>
>>> pte_basic_t val;
>>> @@ -310,6 +310,11 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_
>>> for (i = 0; i < num; i++, entry++, val += SZ_4K)
>>> *entry = val;
>>> }
>>> +
>>> +void set_huge_pte_at(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t pte)
>>> +{
>>> + __set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
>>> +}
>>
>> Remove this burden.
>>
>>> #endif
>>> #endif /* CONFIG_HUGETLB_PAGE */
>>>
>>
>>
>> Christophe
>

2023-09-22 15:48:16

by Christophe Leroy

[permalink] [raw]
Subject: Re: [PATCH v1 2/8] powerpc: hugetlb: Convert set_huge_pte_at() to take vma



Le 22/09/2023 à 10:41, Ryan Roberts a écrit :
> On 22/09/2023 09:10, Christophe Leroy wrote:
>>
>>
>>> I'm happy to take your proposed approach if that's your preference. Another
>>> option is to use a dummy VMA, as I have done in the core code, for the one call
>>> site that calls set_huge_pte_at() with init_mm:
>>>
>>> struct vm_area_struct vma = TLB_FLUSH_VMA(&init_mm, 0);
>>>
>>> This is an existing macro that creates a dummy vma with vma->vm_mm filled in.
>>> Then I pass &vma to the function.
>>
>> I don't like that, I prefer the solution I proposed. We already have a
>> couple places where powerpc do things based on whether vma is NULL or not.
>>
>>>
>>> Or yet another option would be to keep the mm param as is in set_huge_pte_at(),
>>> and add a size param to the function. But then all call sites have the burden of
>>> figuring out the size of the huge pte (although I think most know already).
>>
>> Indeed.
>>
>> arch_make_huge_pte() used to take a vma until commit 79c1c594f49a
>> ("mm/hugetlb: change parameters of arch_make_huge_pte()").
>>
>> Should we try and have the same approach ? Or is it irrelevant ?
>
> See [1]; I'm going to rework to pass mm + size parameter since the current
> approach will break riscv.

Can you pass a shift parameter instead of a size, like
arch_make_huge_pte() ? As far as I remember it is easier to handle a
shift than a size.

Christophe

2023-09-22 16:36:44

by Christophe Leroy

[permalink] [raw]
Subject: Re: [PATCH v1 2/8] powerpc: hugetlb: Convert set_huge_pte_at() to take vma



Le 21/09/2023 à 18:20, Ryan Roberts a écrit :
> In order to fix a bug, arm64 needs access to the vma inside it's
> implementation of set_huge_pte_at(). Provide for this by converting the
> mm parameter to be a vma. Any implementations that require the mm can
> access it via vma->vm_mm.
>
> This commit makes the required powerpc modifications. Separate commits
> update the other arches and core code, before the actual bug is fixed in
> arm64.
>
> No behavioral changes intended.
>
> Signed-off-by: Ryan Roberts <[email protected]>
> ---
> arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h | 3 ++-
> arch/powerpc/mm/book3s64/hugetlbpage.c | 2 +-
> arch/powerpc/mm/book3s64/radix_hugetlbpage.c | 2 +-
> arch/powerpc/mm/nohash/8xx.c | 2 +-
> arch/powerpc/mm/pgtable.c | 7 ++++++-
> 5 files changed, 11 insertions(+), 5 deletions(-)
>
> diff --git a/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h b/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
> index de092b04ee1a..fff8cd726bc7 100644
> --- a/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
> +++ b/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
> @@ -46,7 +46,8 @@ static inline int check_and_get_huge_psize(int shift)
> }
>
> #define __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT
> -void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte);
> +void set_huge_pte_at(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t pte);
> +void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte);

Don't add the burden of an additional function, see below

>
> #define __HAVE_ARCH_HUGE_PTE_CLEAR
> static inline void huge_pte_clear(struct mm_struct *mm, unsigned long addr,
> diff --git a/arch/powerpc/mm/book3s64/hugetlbpage.c b/arch/powerpc/mm/book3s64/hugetlbpage.c
> index 3bc0eb21b2a0..ae7fd7c90eb8 100644
> --- a/arch/powerpc/mm/book3s64/hugetlbpage.c
> +++ b/arch/powerpc/mm/book3s64/hugetlbpage.c
> @@ -147,7 +147,7 @@ void huge_ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr
> if (radix_enabled())
> return radix__huge_ptep_modify_prot_commit(vma, addr, ptep,
> old_pte, pte);
> - set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
> + set_huge_pte_at(vma, addr, ptep, pte);
> }
>
> void __init hugetlbpage_init_defaultsize(void)
> diff --git a/arch/powerpc/mm/book3s64/radix_hugetlbpage.c b/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
> index 17075c78d4bc..7cd40a334c3a 100644
> --- a/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
> +++ b/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
> @@ -58,5 +58,5 @@ void radix__huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
> atomic_read(&mm->context.copros) > 0)
> radix__flush_hugetlb_page(vma, addr);
>
> - set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
> + set_huge_pte_at(vma, addr, ptep, pte);
> }
> diff --git a/arch/powerpc/mm/nohash/8xx.c b/arch/powerpc/mm/nohash/8xx.c
> index dbbfe897455d..650a7a8496b6 100644
> --- a/arch/powerpc/mm/nohash/8xx.c
> +++ b/arch/powerpc/mm/nohash/8xx.c
> @@ -91,7 +91,7 @@ static int __ref __early_map_kernel_hugepage(unsigned long va, phys_addr_t pa,
> if (new && WARN_ON(pte_present(*ptep) && pgprot_val(prot)))
> return -EINVAL;
>
> - set_huge_pte_at(&init_mm, va, ptep, pte_mkhuge(pfn_pte(pa >> PAGE_SHIFT, prot)));
> + __set_huge_pte_at(&init_mm, va, ptep, pte_mkhuge(pfn_pte(pa >> PAGE_SHIFT, prot)));

Call set_huge_pte_at() with a NULL vma instead.

>
> return 0;
> }
> diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c
> index 3f86fd217690..9cbcb561a4d8 100644
> --- a/arch/powerpc/mm/pgtable.c
> +++ b/arch/powerpc/mm/pgtable.c
> @@ -288,7 +288,7 @@ int huge_ptep_set_access_flags(struct vm_area_struct *vma,
> }
>
> #if defined(CONFIG_PPC_8xx)
> -void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte)
> +void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte)

Keep it as set_huge_pte_at() with vma argument.

> {
> pmd_t *pmd = pmd_off(mm, addr);

Change to:

pmd_t *pmd = vma ? pmd_off(vma->vm_mm, addr) : pmd_off_k(addr);

> pte_basic_t val;
> @@ -310,6 +310,11 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_
> for (i = 0; i < num; i++, entry++, val += SZ_4K)
> *entry = val;
> }
> +
> +void set_huge_pte_at(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t pte)
> +{
> + __set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
> +}

Remove this burden.

> #endif
> #endif /* CONFIG_HUGETLB_PAGE */
>


Christophe

2023-09-22 20:30:58

by Christophe Leroy

[permalink] [raw]
Subject: Re: [PATCH v1 2/8] powerpc: hugetlb: Convert set_huge_pte_at() to take vma



Le 21/09/2023 à 20:43, Christophe Leroy a écrit :
>
>
> Le 21/09/2023 à 18:20, Ryan Roberts a écrit :
>> In order to fix a bug, arm64 needs access to the vma inside it's
>> implementation of set_huge_pte_at(). Provide for this by converting the
>> mm parameter to be a vma. Any implementations that require the mm can
>> access it via vma->vm_mm.
>>
>> This commit makes the required powerpc modifications. Separate commits
>> update the other arches and core code, before the actual bug is fixed in
>> arm64.
>>
>> No behavioral changes intended.
>
> This patch doesn't build, allthough I have also applied patch 1. Is
> something missing ?
>
> CALL scripts/checksyscalls.sh
> CC arch/powerpc/kernel/setup-common.o
> In file included from arch/powerpc/kernel/setup-common.c:37:
> ./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
> ./include/linux/hugetlb.h:987:28: error: passing argument 1 of
> 'set_huge_pte_at' from incompatible pointer type
> [-Werror=incompatible-pointer-types]
> 987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
> | ~~~^~~~~~~
> | |
> | struct mm_struct *
> In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
> from ./include/linux/hugetlb.h:815:
> ./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
> 'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
> 49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
> addr, pte_t *ptep, pte_t pte);
> | ~~~~~~~~~~~~~~~~~~~~~~~^~~
> cc1: all warnings being treated as errors
> make[4]: *** [scripts/Makefile.build:243:

Oh, I realised that it requires patch 6 to build properly. This is not
good. Your series should be bisectable, that means it must build and run
successfully after each patch. Therefore you have to squash patches 1 to
7 all togethers.

I'll send you comments on the powerpc part in another mail.

Christophe

2023-09-23 03:32:25

by Christophe Leroy

[permalink] [raw]
Subject: Re: [PATCH v1 2/8] powerpc: hugetlb: Convert set_huge_pte_at() to take vma



Le 21/09/2023 à 18:20, Ryan Roberts a écrit :
> In order to fix a bug, arm64 needs access to the vma inside it's
> implementation of set_huge_pte_at(). Provide for this by converting the
> mm parameter to be a vma. Any implementations that require the mm can
> access it via vma->vm_mm.
>
> This commit makes the required powerpc modifications. Separate commits
> update the other arches and core code, before the actual bug is fixed in
> arm64.
>
> No behavioral changes intended.

This patch doesn't build, allthough I have also applied patch 1. Is
something missing ?

CALL scripts/checksyscalls.sh
CC arch/powerpc/kernel/setup-common.o
In file included from arch/powerpc/kernel/setup-common.c:37:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: all warnings being treated as errors
make[4]: *** [scripts/Makefile.build:243:
arch/powerpc/kernel/setup-common.o] Error 1
make[4]: Target 'arch/powerpc/kernel/' not remade because of errors.
make[3]: *** [scripts/Makefile.build:480: arch/powerpc/kernel] Error 2
CC arch/powerpc/mm/fault.o
In file included from arch/powerpc/mm/fault.c:33:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: all warnings being treated as errors
make[4]: *** [scripts/Makefile.build:243: arch/powerpc/mm/fault.o] Error 1
CC arch/powerpc/mm/pgtable.o
In file included from arch/powerpc/mm/pgtable.c:25:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: all warnings being treated as errors
make[4]: *** [scripts/Makefile.build:243: arch/powerpc/mm/pgtable.o] Error 1
CC arch/powerpc/mm/init_32.o
In file included from arch/powerpc/mm/init_32.c:30:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: all warnings being treated as errors
make[4]: *** [scripts/Makefile.build:243: arch/powerpc/mm/init_32.o] Error 1
CC arch/powerpc/mm/pgtable-frag.o
In file included from arch/powerpc/mm/pgtable-frag.c:13:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: all warnings being treated as errors
make[4]: *** [scripts/Makefile.build:243:
arch/powerpc/mm/pgtable-frag.o] Error 1
CC arch/powerpc/mm/nohash/tlb.o
In file included from arch/powerpc/mm/nohash/tlb.c:35:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: all warnings being treated as errors
make[5]: *** [scripts/Makefile.build:243: arch/powerpc/mm/nohash/tlb.o]
Error 1
CC arch/powerpc/mm/nohash/8xx.o
In file included from arch/powerpc/mm/nohash/8xx.c:11:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: all warnings being treated as errors
make[5]: *** [scripts/Makefile.build:243: arch/powerpc/mm/nohash/8xx.o]
Error 1
make[5]: Target 'arch/powerpc/mm/nohash/' not remade because of errors.
make[4]: *** [scripts/Makefile.build:480: arch/powerpc/mm/nohash] Error 2
CC arch/powerpc/mm/hugetlbpage.o
In file included from arch/powerpc/mm/hugetlbpage.c:14:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: all warnings being treated as errors
make[4]: *** [scripts/Makefile.build:243: arch/powerpc/mm/hugetlbpage.o]
Error 1
make[4]: Target 'arch/powerpc/mm/' not remade because of errors.
make[3]: *** [scripts/Makefile.build:480: arch/powerpc/mm] Error 2
make[3]: Target 'arch/powerpc/' not remade because of errors.
make[2]: *** [scripts/Makefile.build:480: arch/powerpc] Error 2
CC kernel/fork.o
In file included from kernel/fork.c:52:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: kernel/fork.o] Error 1
CC kernel/sysctl.o
In file included from kernel/sysctl.c:45:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: kernel/sysctl.o] Error 1
CC kernel/events/core.o
In file included from kernel/events/core.c:31:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:243: kernel/events/core.o] Error 1
make[4]: Target 'kernel/events/' not remade because of errors.
make[3]: *** [scripts/Makefile.build:480: kernel/events] Error 2
make[3]: Target 'kernel/' not remade because of errors.
make[2]: *** [scripts/Makefile.build:480: kernel] Error 2
CC mm/filemap.o
In file included from mm/filemap.c:37:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/filemap.o] Error 1
CC mm/folio-compat.o
In file included from ./include/linux/migrate.h:8,
from mm/folio-compat.c:7:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/folio-compat.o] Error 1
CC mm/swap.o
In file included from mm/swap.c:36:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/swap.o] Error 1
CC mm/vmscan.o
In file included from ./include/linux/migrate.h:8,
from mm/vmscan.c:43:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/vmscan.o] Error 1
CC mm/shmem.o
In file included from mm/shmem.c:39:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/shmem.o] Error 1
CC mm/util.o
In file included from mm/util.c:16:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/util.o] Error 1
CC mm/compaction.o
In file included from ./include/linux/migrate.h:8,
from mm/compaction.c:13:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/compaction.o] Error 1
CC mm/show_mem.o
In file included from mm/show_mem.c:12:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/show_mem.o] Error 1
CC mm/debug.o
In file included from ./include/linux/migrate.h:8,
from mm/debug.c:14:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/debug.o] Error 1
CC mm/gup.o
In file included from mm/gup.c:17:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/gup.o] Error 1
CC mm/memory.o
In file included from mm/memory.c:49:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/memory.o] Error 1
CC mm/mincore.o
In file included from mm/mincore.c:19:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/mincore.o] Error 1
CC mm/mlock.o
In file included from mm/mlock.c:24:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/mlock.o] Error 1
CC mm/mmap.o
In file included from mm/mmap.c:28:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/mmap.o] Error 1
CC mm/mprotect.o
In file included from mm/mprotect.c:13:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/mprotect.o] Error 1
CC mm/mremap.o
In file included from mm/mremap.c:13:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/mremap.o] Error 1
CC mm/page_vma_mapped.o
In file included from mm/page_vma_mapped.c:4:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/page_vma_mapped.o] Error 1
CC mm/pagewalk.o
In file included from mm/pagewalk.c:5:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/pagewalk.o] Error 1
CC mm/pgtable-generic.o
In file included from mm/pgtable-generic.c:11:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/pgtable-generic.o] Error 1
CC mm/rmap.o
In file included from ./include/linux/migrate.h:8,
from mm/rmap.c:70:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/rmap.c: In function 'try_to_unmap_one':
mm/rmap.c:1631:49: error: passing argument 1 of 'set_huge_pte_at' from
incompatible pointer type [-Werror=incompatible-pointer-types]
1631 | set_huge_pte_at(mm, address,
pvmw.pte, pteval);
| ^~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/rmap.c: In function 'try_to_migrate_one':
mm/rmap.c:2023:49: error: passing argument 1 of 'set_huge_pte_at' from
incompatible pointer type [-Werror=incompatible-pointer-types]
2023 | set_huge_pte_at(mm, address,
pvmw.pte, pteval);
| ^~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/rmap.c:2047:57: error: passing argument 1 of 'set_huge_pte_at' from
incompatible pointer type [-Werror=incompatible-pointer-types]
2047 | set_huge_pte_at(mm,
address, pvmw.pte, pteval);
| ^~
| |
| struct
mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/rmap.c:2061:57: error: passing argument 1 of 'set_huge_pte_at' from
incompatible pointer type [-Werror=incompatible-pointer-types]
2061 | set_huge_pte_at(mm,
address, pvmw.pte, pteval);
| ^~
| |
| struct
mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/rmap.c:2093:49: error: passing argument 1 of 'set_huge_pte_at' from
incompatible pointer type [-Werror=incompatible-pointer-types]
2093 | set_huge_pte_at(mm, address,
pvmw.pte, swp_pte);
| ^~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/rmap.o] Error 1
CC mm/vmalloc.o
In file included from mm/vmalloc.c:41:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/vmalloc.c: In function 'vmap_pte_range':
mm/vmalloc.c:114:41: error: passing argument 1 of 'set_huge_pte_at' from
incompatible pointer type [-Werror=incompatible-pointer-types]
114 | set_huge_pte_at(&init_mm, addr, pte,
entry);
| ^~~~~~~~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/vmalloc.o] Error 1
CC mm/page_alloc.o
In file included from ./include/linux/migrate.h:8,
from mm/page_alloc.c:45:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/page_alloc.o] Error 1
CC mm/madvise.o
In file included from mm/madvise.c:16:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/madvise.o] Error 1
CC mm/hugetlb.o
In file included from ./include/linux/migrate.h:8,
from mm/hugetlb.c:33:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/hugetlb.c: In function 'hugetlb_install_folio':
mm/hugetlb.c:4991:28: error: passing argument 1 of 'set_huge_pte_at'
from incompatible pointer type [-Werror=incompatible-pointer-types]
4991 | set_huge_pte_at(vma->vm_mm, addr, ptep, newpte);
| ~~~^~~~~~~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/hugetlb.c: In function 'copy_hugetlb_page_range':
mm/hugetlb.c:5068:41: error: passing argument 1 of 'set_huge_pte_at'
from incompatible pointer type [-Werror=incompatible-pointer-types]
5068 | set_huge_pte_at(dst, addr, dst_pte, entry);
| ^~~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/hugetlb.c:5083:49: error: passing argument 1 of 'set_huge_pte_at'
from incompatible pointer type [-Werror=incompatible-pointer-types]
5083 | set_huge_pte_at(src, addr,
src_pte, entry);
| ^~~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/hugetlb.c:5087:41: error: passing argument 1 of 'set_huge_pte_at'
from incompatible pointer type [-Werror=incompatible-pointer-types]
5087 | set_huge_pte_at(dst, addr, dst_pte, entry);
| ^~~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/hugetlb.c:5093:49: error: passing argument 1 of 'set_huge_pte_at'
from incompatible pointer type [-Werror=incompatible-pointer-types]
5093 | set_huge_pte_at(dst, addr, dst_pte,
| ^~~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/hugetlb.c:5169:41: error: passing argument 1 of 'set_huge_pte_at'
from incompatible pointer type [-Werror=incompatible-pointer-types]
5169 | set_huge_pte_at(dst, addr, dst_pte, entry);
| ^~~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/hugetlb.c: In function 'move_huge_pte':
mm/hugetlb.c:5205:25: error: passing argument 1 of 'set_huge_pte_at'
from incompatible pointer type [-Werror=incompatible-pointer-types]
5205 | set_huge_pte_at(mm, new_addr, dst_pte, pte);
| ^~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/hugetlb.c: In function '__unmap_hugepage_range':
mm/hugetlb.c:5339:49: error: passing argument 1 of 'set_huge_pte_at'
from incompatible pointer type [-Werror=incompatible-pointer-types]
5339 | set_huge_pte_at(mm, address, ptep,
| ^~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/hugetlb.c:5373:41: error: passing argument 1 of 'set_huge_pte_at'
from incompatible pointer type [-Werror=incompatible-pointer-types]
5373 | set_huge_pte_at(mm, address, ptep,
| ^~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/hugetlb.c: In function 'hugetlb_wp':
mm/hugetlb.c:5679:33: error: passing argument 1 of 'set_huge_pte_at'
from incompatible pointer type [-Werror=incompatible-pointer-types]
5679 | set_huge_pte_at(mm, haddr, ptep, newpte);
| ^~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/hugetlb.c: In function 'hugetlb_no_page':
mm/hugetlb.c:5975:25: error: passing argument 1 of 'set_huge_pte_at'
from incompatible pointer type [-Werror=incompatible-pointer-types]
5975 | set_huge_pte_at(mm, haddr, ptep, new_pte);
| ^~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/hugetlb.c: In function 'hugetlb_change_protection':
mm/hugetlb.c:6601:49: error: passing argument 1 of 'set_huge_pte_at'
from incompatible pointer type [-Werror=incompatible-pointer-types]
6601 | set_huge_pte_at(mm, address,
ptep, newpte);
| ^~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/hugetlb.c:6625:49: error: passing argument 1 of 'set_huge_pte_at'
from incompatible pointer type [-Werror=incompatible-pointer-types]
6625 | set_huge_pte_at(mm, address, ptep,
| ^~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/hugetlb.o] Error 1
CC mm/migrate.o
In file included from ./include/linux/migrate.h:8,
from mm/migrate.c:16:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
mm/migrate.c: In function 'remove_migration_pte':
mm/migrate.c:254:44: error: passing argument 1 of 'set_huge_pte_at' from
incompatible pointer type [-Werror=incompatible-pointer-types]
254 | set_huge_pte_at(vma->vm_mm,
pvmw.address, pvmw.pte, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/migrate.o] Error 1
CC mm/debug_vm_pgtable.o
In file included from mm/debug_vm_pgtable.c:15:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/debug_vm_pgtable.o] Error 1
CC mm/memfd.o
In file included from mm/memfd.c:18:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: mm/memfd.o] Error 1
make[3]: Target 'mm/' not remade because of errors.
make[2]: *** [scripts/Makefile.build:480: mm] Error 2
CC fs/aio.o
In file included from ./include/linux/migrate.h:8,
from fs/aio.c:40:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: fs/aio.o] Error 1
CC fs/binfmt_elf.o
In file included from fs/binfmt_elf.c:31:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: fs/binfmt_elf.o] Error 1
CC fs/iomap/buffered-io.o
In file included from ./include/linux/migrate.h:8,
from fs/iomap/buffered-io.c:19:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:243: fs/iomap/buffered-io.o] Error 1
make[4]: Target 'fs/iomap/' not remade because of errors.
make[3]: *** [scripts/Makefile.build:480: fs/iomap] Error 2
CC fs/proc/task_mmu.o
In file included from fs/proc/task_mmu.c:4:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:243: fs/proc/task_mmu.o] Error 1
CC fs/proc/array.o
In file included from fs/proc/array.c:74:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:243: fs/proc/array.o] Error 1
CC fs/proc/meminfo.o
In file included from fs/proc/meminfo.c:6:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:243: fs/proc/meminfo.o] Error 1
CC fs/proc/page.o
In file included from fs/proc/page.c:12:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:243: fs/proc/page.o] Error 1
make[4]: Target 'fs/proc/' not remade because of errors.
make[3]: *** [scripts/Makefile.build:480: fs/proc] Error 2
CC fs/hugetlbfs/inode.o
In file included from fs/hugetlbfs/inode.c:27:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:243: fs/hugetlbfs/inode.o] Error 1
make[4]: Target 'fs/hugetlbfs/' not remade because of errors.
make[3]: *** [scripts/Makefile.build:480: fs/hugetlbfs] Error 2
CC fs/nfs/write.o
In file included from ./include/linux/migrate.h:8,
from fs/nfs/write.c:17:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:243: fs/nfs/write.o] Error 1
make[4]: Target 'fs/nfs/' not remade because of errors.
make[3]: *** [scripts/Makefile.build:480: fs/nfs] Error 2
make[3]: Target 'fs/' not remade because of errors.
make[2]: *** [scripts/Makefile.build:480: fs] Error 2
CC ipc/shm.o
In file included from ipc/shm.c:30:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: ipc/shm.o] Error 1
make[3]: Target 'ipc/' not remade because of errors.
make[2]: *** [scripts/Makefile.build:480: ipc] Error 2
CC security/commoncap.o
In file included from security/commoncap.c:19:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: security/commoncap.o] Error 1
make[3]: Target 'security/' not remade because of errors.
make[2]: *** [scripts/Makefile.build:480: security] Error 2
CC io_uring/rsrc.o
In file included from io_uring/rsrc.c:9:
./include/linux/hugetlb.h: In function 'huge_ptep_modify_prot_commit':
./include/linux/hugetlb.h:987:28: error: passing argument 1 of
'set_huge_pte_at' from incompatible pointer type
[-Werror=incompatible-pointer-types]
987 | set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
| ~~~^~~~~~~
| |
| struct mm_struct *
In file included from ./arch/powerpc/include/asm/hugetlb.h:13,
from ./include/linux/hugetlb.h:815:
./arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h:49:45: note: expected
'struct vm_area_struct *' but argument is of type 'struct mm_struct *'
49 | void set_huge_pte_at(struct vm_area_struct *vma, unsigned long
addr, pte_t *ptep, pte_t pte);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: io_uring/rsrc.o] Error 1
make[3]: Target 'io_uring/' not remade because of errors.
make[2]: *** [scripts/Makefile.build:480: io_uring] Error 2
make[2]: Target './' not remade because of errors.
make[1]: *** [/home/chleroy/linux-powerpc/Makefile:1913: .] Error 2
make[1]: Target 'vmlinux' not remade because of errors.
make: *** [Makefile:234: __sub-make] Error 2
make: Target 'vmlinux' not remade because of errors.

Christophe