* [Bug 215217] Kernel fails to boot at an early stage when built with GCC_PLUGIN_LATENT_ENTROPY=y (PowerMac G4 3,6)
From: bugzilla-daemon @ 2021-12-09 11:22 UTC (permalink / raw)
To: linuxppc-dev
In-Reply-To: <bug-215217-206035@https.bugzilla.kernel.org/>
https://bugzilla.kernel.org/show_bug.cgi?id=215217
--- Comment #8 from Christophe Leroy (christophe.leroy@csgroup.eu) ---
early_32.o should likely also have DISABLE_LATENT_ENTROPY_PLUGIN, maybe even
more important that for setup_32.o
--
You may reply to this email to add a comment.
You are receiving this mail because:
You are watching the assignee of the bug.
^ permalink raw reply
* [Bug 215217] Kernel fails to boot at an early stage when built with GCC_PLUGIN_LATENT_ENTROPY=y (PowerMac G4 3,6)
From: bugzilla-daemon @ 2021-12-09 11:20 UTC (permalink / raw)
To: linuxppc-dev
In-Reply-To: <bug-215217-206035@https.bugzilla.kernel.org/>
https://bugzilla.kernel.org/show_bug.cgi?id=215217
--- Comment #7 from Erhard F. (erhard_f@mailbox.org) ---
Created attachment 299967
--> https://bugzilla.kernel.org/attachment.cgi?id=299967&action=edit
kernel .config (5.16-rc4 + CFLAGS_setup_32.o +=... , PowerMac G4 DP)
--
You may reply to this email to add a comment.
You are receiving this mail because:
You are watching the assignee of the bug.
^ permalink raw reply
* [Bug 215217] Kernel fails to boot at an early stage when built with GCC_PLUGIN_LATENT_ENTROPY=y (PowerMac G4 3,6)
From: bugzilla-daemon @ 2021-12-09 11:19 UTC (permalink / raw)
To: linuxppc-dev
In-Reply-To: <bug-215217-206035@https.bugzilla.kernel.org/>
https://bugzilla.kernel.org/show_bug.cgi?id=215217
--- Comment #6 from Erhard F. (erhard_f@mailbox.org) ---
Ok I cheked that out. There are already some in the Makefile:
CFLAGS_cputable.o += $(DISABLE_LATENT_ENTROPY_PLUGIN)
CFLAGS_prom_init.o += $(DISABLE_LATENT_ENTROPY_PLUGIN)
CFLAGS_btext.o += $(DISABLE_LATENT_ENTROPY_PLUGIN)
CFLAGS_prom.o += $(DISABLE_LATENT_ENTROPY_PLUGIN)
I added CFLAGS_setup_32.o += $(DISABLE_LATENT_ENTROPY_PLUGIN) on top of that,
rebuilt the kernel after a make clean. No success so far, the kernel still does
not boot.
--
You may reply to this email to add a comment.
You are receiving this mail because:
You are watching the assignee of the bug.
^ permalink raw reply
* Re: [PATCH v4 09/10] powerpc/mm: Convert to default topdown mmap layout
From: Nicholas Piggin @ 2021-12-09 10:43 UTC (permalink / raw)
To: alex@ghiti.fr, Benjamin Herrenschmidt, Christophe Leroy,
Michael Ellerman, Paul Mackerras
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
In-Reply-To: <360e2a3e-63c6-3ce2-f481-695ad0ec4880@csgroup.eu>
Excerpts from Christophe Leroy's message of December 9, 2021 8:22 pm:
>
>
> Le 09/12/2021 à 11:15, Nicholas Piggin a écrit :
>> Excerpts from Christophe Leroy's message of December 9, 2021 3:18 am:
>>> Select CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT and
>>> remove arch/powerpc/mm/mmap.c
>>>
>>> This change provides standard randomisation of mmaps.
>>>
>>> See commit 8b8addf891de ("x86/mm/32: Enable full randomization on i386
>>> and X86_32") for all the benefits of mmap randomisation.
>>
>> The justification seems pretty reasonable.
>>
>>>
>>> Comparison between powerpc implementation and the generic one:
>>> - mmap_is_legacy() is identical.
>>> - arch_mmap_rnd() does exactly the same allthough it's written
>>> slightly differently.
>>> - MIN_GAP and MAX_GAP are identical.
>>> - mmap_base() does the same but uses STACK_RND_MASK which provides
>>> the same values as stack_maxrandom_size().
>>> - arch_pick_mmap_layout() is almost identical. The only difference
>>> is that it also adds the random factor to mm->mmap_base in legacy mode.
>>>
>>> That last point is what provides the standard randomisation of mmaps.
>>
>> Thanks for describing it. Could you add random_factor to mmap_base for
>> the legacy path for powerpc as a 2-line change that adds the legacy
>> randomisation. And then this bigger patch would be closer to a no-op.
>>
>
> You mean you would like to see the following patch before doing the
> convert ?
>
> https://patchwork.ozlabs.org/project/linuxppc-dev/patch/7dabf1cbde67a346a187881d4f0bd17347e0334a.1533732583.git.christophe.leroy@c-s.fr/
Yes.
Thanks,
Nick
^ permalink raw reply
* Re: [PATCH v4 09/10] powerpc/mm: Convert to default topdown mmap layout
From: Christophe Leroy @ 2021-12-09 10:22 UTC (permalink / raw)
To: Nicholas Piggin, alex@ghiti.fr, Benjamin Herrenschmidt,
Michael Ellerman, Paul Mackerras
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
In-Reply-To: <1639044621.jeow25j0pr.astroid@bobo.none>
Le 09/12/2021 à 11:15, Nicholas Piggin a écrit :
> Excerpts from Christophe Leroy's message of December 9, 2021 3:18 am:
>> Select CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT and
>> remove arch/powerpc/mm/mmap.c
>>
>> This change provides standard randomisation of mmaps.
>>
>> See commit 8b8addf891de ("x86/mm/32: Enable full randomization on i386
>> and X86_32") for all the benefits of mmap randomisation.
>
> The justification seems pretty reasonable.
>
>>
>> Comparison between powerpc implementation and the generic one:
>> - mmap_is_legacy() is identical.
>> - arch_mmap_rnd() does exactly the same allthough it's written
>> slightly differently.
>> - MIN_GAP and MAX_GAP are identical.
>> - mmap_base() does the same but uses STACK_RND_MASK which provides
>> the same values as stack_maxrandom_size().
>> - arch_pick_mmap_layout() is almost identical. The only difference
>> is that it also adds the random factor to mm->mmap_base in legacy mode.
>>
>> That last point is what provides the standard randomisation of mmaps.
>
> Thanks for describing it. Could you add random_factor to mmap_base for
> the legacy path for powerpc as a 2-line change that adds the legacy
> randomisation. And then this bigger patch would be closer to a no-op.
>
You mean you would like to see the following patch before doing the
convert ?
https://patchwork.ozlabs.org/project/linuxppc-dev/patch/7dabf1cbde67a346a187881d4f0bd17347e0334a.1533732583.git.christophe.leroy@c-s.fr/
^ permalink raw reply
* Re: [PATCH v4 09/10] powerpc/mm: Convert to default topdown mmap layout
From: Nicholas Piggin @ 2021-12-09 10:15 UTC (permalink / raw)
To: alex@ghiti.fr, Benjamin Herrenschmidt, Christophe Leroy,
Michael Ellerman, Paul Mackerras
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
In-Reply-To: <d2d5510115cba2d56866fa01dab267655a20da71.1638976229.git.christophe.leroy@csgroup.eu>
Excerpts from Christophe Leroy's message of December 9, 2021 3:18 am:
> Select CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT and
> remove arch/powerpc/mm/mmap.c
>
> This change provides standard randomisation of mmaps.
>
> See commit 8b8addf891de ("x86/mm/32: Enable full randomization on i386
> and X86_32") for all the benefits of mmap randomisation.
The justification seems pretty reasonable.
>
> Comparison between powerpc implementation and the generic one:
> - mmap_is_legacy() is identical.
> - arch_mmap_rnd() does exactly the same allthough it's written
> slightly differently.
> - MIN_GAP and MAX_GAP are identical.
> - mmap_base() does the same but uses STACK_RND_MASK which provides
> the same values as stack_maxrandom_size().
> - arch_pick_mmap_layout() is almost identical. The only difference
> is that it also adds the random factor to mm->mmap_base in legacy mode.
>
> That last point is what provides the standard randomisation of mmaps.
Thanks for describing it. Could you add random_factor to mmap_base for
the legacy path for powerpc as a 2-line change that adds the legacy
randomisation. And then this bigger patch would be closer to a no-op.
Thanks,
Nick
^ permalink raw reply
* Re: [PATCH v4 07/10] powerpc/mm: Use generic_hugetlb_get_unmapped_area()
From: Nicholas Piggin @ 2021-12-09 10:02 UTC (permalink / raw)
To: alex@ghiti.fr, Benjamin Herrenschmidt, Christophe Leroy,
Michael Ellerman, Paul Mackerras
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
In-Reply-To: <f292a83707b64c73fcb02a8708f18f09422f7eea.1638976229.git.christophe.leroy@csgroup.eu>
Excerpts from Christophe Leroy's message of December 9, 2021 3:18 am:
> Use the generic version of arch_hugetlb_get_unmapped_area()
> which is now available at all time.
>
> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> ---
> arch/powerpc/include/asm/book3s/64/hugetlb.h | 4 --
> arch/powerpc/mm/book3s64/radix_hugetlbpage.c | 55 --------------------
> arch/powerpc/mm/hugetlbpage.c | 4 +-
> 3 files changed, 1 insertion(+), 62 deletions(-)
>
> diff --git a/arch/powerpc/include/asm/book3s/64/hugetlb.h b/arch/powerpc/include/asm/book3s/64/hugetlb.h
> index 12e150e615b7..b37a28f62cf6 100644
> --- a/arch/powerpc/include/asm/book3s/64/hugetlb.h
> +++ b/arch/powerpc/include/asm/book3s/64/hugetlb.h
> @@ -8,10 +8,6 @@
> */
> void radix__flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr);
> void radix__local_flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr);
> -extern unsigned long
> -radix__hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
> - unsigned long len, unsigned long pgoff,
> - unsigned long flags);
>
> extern void radix__huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
> unsigned long addr, pte_t *ptep,
> diff --git a/arch/powerpc/mm/book3s64/radix_hugetlbpage.c b/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
> index 23d3e08911d3..d2fb776febb4 100644
> --- a/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
> +++ b/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
> @@ -41,61 +41,6 @@ void radix__flush_hugetlb_tlb_range(struct vm_area_struct *vma, unsigned long st
> radix__flush_tlb_range_psize(vma->vm_mm, start, end, psize);
> }
>
> -/*
> - * A vairant of hugetlb_get_unmapped_area doing topdown search
> - * FIXME!! should we do as x86 does or non hugetlb area does ?
> - * ie, use topdown or not based on mmap_is_legacy check ?
> - */
> -unsigned long
> -radix__hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
> - unsigned long len, unsigned long pgoff,
> - unsigned long flags)
> -{
> - struct mm_struct *mm = current->mm;
> - struct vm_area_struct *vma;
> - struct hstate *h = hstate_file(file);
> - int fixed = (flags & MAP_FIXED);
> - unsigned long high_limit;
> - struct vm_unmapped_area_info info;
> -
> - high_limit = DEFAULT_MAP_WINDOW;
> - if (addr >= high_limit || (fixed && (addr + len > high_limit)))
> - high_limit = TASK_SIZE;
I wonder if generic hugetlb_get_unmapped_area needs to have the
arch_get_mmap_end() added.
arm64 has arch_get_mmap_end() and !HAVE_ARCH_HUGETLB_UNMAPPED_AREA so
it looks like it has broken large address hint logic for hugetlbfs
mappings? x86-64 defines their own and does the same hinting for
normal and hugetlbfs mmap.
If we had that and defied arch_get_mmap_end(), then this patch should
work.
Thanks,
Nick
^ permalink raw reply
* RE: [PATCH] sound: fsl: add missing put_device() call in imx_hdmi_probe()
From: 王擎 @ 2021-12-09 9:58 UTC (permalink / raw)
To: Mark Brown
Cc: alsa-devel@alsa-project.org, linuxppc-dev@lists.ozlabs.org,
linux-kernel@vger.kernel.org, Xiubo Li, Fabio Estevam,
Sascha Hauer, Takashi Iwai, Liam Girdwood, Jaroslav Kysela,
Nicolin Chen, NXP Linux Team, Pengutronix Kernel Team, Shawn Guo,
Shengjiu Wang, linux-arm-kernel@lists.infradead.org
>> From: Wang Qing <wangqing@vivo.com>
>>
>> of_find_device_by_node() takes a reference to the embedded struct device
>> which needs to be dropped when error return.
>
>...
>
>> data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
>> if (!data) {
>> + put_device(&cpu_pdev->dev);
>
>If it's of_find_device_by_node() you need an of_node_put() since you're
>dropping a reference on the OF node.
>
Label fail will drop a reference on the OF node.
Also, put_device() is called later except this branch,
we just need to add put_device() here.
Thanks,
Qing
>> ret = -ENOMEM;
>> goto fail;
^ permalink raw reply
* Re: [PATCH v4 06/10] powerpc/mm: Use generic_get_unmapped_area() and call it from arch_get_unmapped_area()
From: Nicholas Piggin @ 2021-12-09 9:50 UTC (permalink / raw)
To: alex@ghiti.fr, Benjamin Herrenschmidt, Christophe Leroy,
Michael Ellerman, Paul Mackerras
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
In-Reply-To: <8f54a8d097c402d808147b2044365ebfda2862dd.1638976229.git.christophe.leroy@csgroup.eu>
Excerpts from Christophe Leroy's message of December 9, 2021 3:18 am:
> Use the generic version of arch_get_unmapped_area() which
> is now available at all time instead of its copy
> radix__arch_get_unmapped_area()
>
> Instead of setting mm->get_unmapped_area() to either
> arch_get_unmapped_area() or generic_get_unmapped_area(),
> always set it to arch_get_unmapped_area() and call
> generic_get_unmapped_area() from there when radix is enabled.
>
> Do the same with radix__arch_get_unmapped_area_topdown()
>
> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> ---
> arch/powerpc/mm/mmap.c | 127 ++---------------------------------------
> 1 file changed, 6 insertions(+), 121 deletions(-)
>
> diff --git a/arch/powerpc/mm/mmap.c b/arch/powerpc/mm/mmap.c
> index 9b0d6e395bc0..46781d0103d1 100644
> --- a/arch/powerpc/mm/mmap.c
> +++ b/arch/powerpc/mm/mmap.c
> @@ -81,115 +81,15 @@ static inline unsigned long mmap_base(unsigned long rnd,
> }
>
> #ifdef HAVE_ARCH_UNMAPPED_AREA
> -#ifdef CONFIG_PPC_RADIX_MMU
> -/*
> - * Same function as generic code used only for radix, because we don't need to overload
> - * the generic one. But we will have to duplicate, because hash select
> - * HAVE_ARCH_UNMAPPED_AREA
> - */
> -static unsigned long
> -radix__arch_get_unmapped_area(struct file *filp, unsigned long addr,
> - unsigned long len, unsigned long pgoff,
> - unsigned long flags)
> -{
> - struct mm_struct *mm = current->mm;
> - struct vm_area_struct *vma;
> - int fixed = (flags & MAP_FIXED);
> - unsigned long high_limit;
> - struct vm_unmapped_area_info info;
> -
> - high_limit = DEFAULT_MAP_WINDOW;
> - if (addr >= high_limit || (fixed && (addr + len > high_limit)))
> - high_limit = TASK_SIZE;
Does 64s radix need to define arch_get_mmap_end() to do the above now?
Otherwise great to consolidate this with core code, nice patch.
Thanks,
Nick
^ permalink raw reply
* Re: [PATCH v4 02/10] mm, hugetlbfs: Allow an arch to always use generic versions of get_unmapped_area functions
From: Nicholas Piggin @ 2021-12-09 9:40 UTC (permalink / raw)
To: alex@ghiti.fr, Benjamin Herrenschmidt, Christophe Leroy,
Michael Ellerman, Paul Mackerras
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
In-Reply-To: <52eb6d66c41f1165c88a0b0da08ae190c0b95a59.1638976229.git.christophe.leroy@csgroup.eu>
Excerpts from Christophe Leroy's message of December 9, 2021 3:18 am:
> Unlike most architectures, powerpc can only define at runtime
> if it is going to use the generic arch_get_unmapped_area() or not.
>
> Today, powerpc has a copy of the generic arch_get_unmapped_area()
> because when selection HAVE_ARCH_UNMAPPED_AREA the generic
> arch_get_unmapped_area() is not available.
>
> Rename it generic_get_unmapped_area() and make it independent of
> HAVE_ARCH_UNMAPPED_AREA.
>
> Do the same for arch_get_unmapped_area_topdown() versus
> HAVE_ARCH_UNMAPPED_AREA_TOPDOWN.
>
> Do the same for hugetlb_get_unmapped_area() versus
> HAVE_ARCH_HUGETLB_UNMAPPED_AREA.
>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> ---
> fs/hugetlbfs/inode.c | 17 +++++++++++++----
> include/linux/hugetlb.h | 5 +++++
> include/linux/sched/mm.h | 9 +++++++++
> mm/mmap.c | 31 ++++++++++++++++++++++++-------
> 4 files changed, 51 insertions(+), 11 deletions(-)
>
^ permalink raw reply
* Re: [PATCH v4 03/10] powerpc/mm: Move vma_mmu_pagesize()
From: Nicholas Piggin @ 2021-12-09 9:36 UTC (permalink / raw)
To: alex@ghiti.fr, Benjamin Herrenschmidt, Christophe Leroy,
Michael Ellerman, Paul Mackerras
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
In-Reply-To: <372d1488c35dca1c5af04f95d9b8548ea07ea603.1638976229.git.christophe.leroy@csgroup.eu>
Excerpts from Christophe Leroy's message of December 9, 2021 3:18 am:
> vma_mmu_pagesize() is only required for slices,
> otherwise there is a generic weak version doing the
> exact same thing.
>
> Move it to slice.c
>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> ---
> arch/powerpc/mm/hugetlbpage.c | 11 -----------
> arch/powerpc/mm/slice.c | 9 +++++++++
> 2 files changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
> index ddead41e2194..0eec3b61bd13 100644
> --- a/arch/powerpc/mm/hugetlbpage.c
> +++ b/arch/powerpc/mm/hugetlbpage.c
> @@ -565,17 +565,6 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
> }
> #endif
>
> -unsigned long vma_mmu_pagesize(struct vm_area_struct *vma)
> -{
> - /* With radix we don't use slice, so derive it from vma*/
> - if (IS_ENABLED(CONFIG_PPC_MM_SLICES) && !radix_enabled()) {
> - unsigned int psize = get_slice_psize(vma->vm_mm, vma->vm_start);
> -
> - return 1UL << mmu_psize_to_shift(psize);
> - }
> - return vma_kernel_pagesize(vma);
> -}
> -
> bool __init arch_hugetlb_valid_size(unsigned long size)
> {
> int shift = __ffs(size);
> diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c
> index f42711f865f3..8a3ac062b71e 100644
> --- a/arch/powerpc/mm/slice.c
> +++ b/arch/powerpc/mm/slice.c
> @@ -759,4 +759,13 @@ int slice_is_hugepage_only_range(struct mm_struct *mm, unsigned long addr,
>
> return !slice_check_range_fits(mm, maskp, addr, len);
> }
> +
> +unsigned long vma_mmu_pagesize(struct vm_area_struct *vma)
> +{
> + /* With radix we don't use slice, so derive it from vma*/
> + if (radix_enabled())
> + return vma_kernel_pagesize(vma);
> +
> + return 1UL << mmu_psize_to_shift(get_slice_psize(vma->vm_mm, vma->vm_start));
> +}
> #endif
> --
> 2.33.1
>
>
^ permalink raw reply
* Re: [PATCH v6 15/18] powerpc/64s: Always define arch unmapped area calls
From: Nicholas Piggin @ 2021-12-09 9:30 UTC (permalink / raw)
To: Christophe Leroy, linuxppc-dev@lists.ozlabs.org
In-Reply-To: <1639038294.oxbnieugst.astroid@bobo.none>
Excerpts from Nicholas Piggin's message of December 9, 2021 6:25 pm:
> Excerpts from Christophe Leroy's message of December 8, 2021 7:38 pm:
>>
>>
>> Le 01/12/2021 à 15:41, Nicholas Piggin a écrit :
>>> To avoid any functional changes to radix paths when building with hash
>>> MMU support disabled (and CONFIG_PPC_MM_SLICES=n), always define the
>>> arch get_unmapped_area calls on 64s platforms.
>>>
>>> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
>>> ---
>>> arch/powerpc/include/asm/book3s/64/hash.h | 4 ---
>>> arch/powerpc/include/asm/book3s/64/mmu.h | 6 ++++
>>> arch/powerpc/mm/hugetlbpage.c | 16 ++++++---
>>> arch/powerpc/mm/mmap.c | 40 +++++++++++++++++++----
>>> arch/powerpc/mm/slice.c | 20 ------------
>>> 5 files changed, 51 insertions(+), 35 deletions(-)
>>>
>>> diff --git a/arch/powerpc/include/asm/book3s/64/hash.h b/arch/powerpc/include/asm/book3s/64/hash.h
>>> index 674fe0e890dc..a7a0572f3846 100644
>>> --- a/arch/powerpc/include/asm/book3s/64/hash.h
>>> +++ b/arch/powerpc/include/asm/book3s/64/hash.h
>>> @@ -99,10 +99,6 @@
>>> * Defines the address of the vmemap area, in its own region on
>>> * hash table CPUs.
>>> */
>>> -#ifdef CONFIG_PPC_MM_SLICES
>>> -#define HAVE_ARCH_UNMAPPED_AREA
>>> -#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
>>> -#endif /* CONFIG_PPC_MM_SLICES */
>>>
>>> /* PTEIDX nibble */
>>> #define _PTEIDX_SECONDARY 0x8
>>> diff --git a/arch/powerpc/include/asm/book3s/64/mmu.h b/arch/powerpc/include/asm/book3s/64/mmu.h
>>> index c02f42d1031e..015d7d972d16 100644
>>> --- a/arch/powerpc/include/asm/book3s/64/mmu.h
>>> +++ b/arch/powerpc/include/asm/book3s/64/mmu.h
>>> @@ -4,6 +4,12 @@
>>>
>>> #include <asm/page.h>
>>>
>>> +#ifdef CONFIG_HUGETLB_PAGE
>>> +#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA
>>> +#endif
>>> +#define HAVE_ARCH_UNMAPPED_AREA
>>> +#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
>>> +
>>> #ifndef __ASSEMBLY__
>>> /*
>>> * Page size definition
>>> diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
>>> index 82d8b368ca6d..ddead41e2194 100644
>>> --- a/arch/powerpc/mm/hugetlbpage.c
>>> +++ b/arch/powerpc/mm/hugetlbpage.c
>>> @@ -542,20 +542,26 @@ struct page *follow_huge_pd(struct vm_area_struct *vma,
>>> return page;
>>> }
>>>
>>> -#ifdef CONFIG_PPC_MM_SLICES
>>> +#ifdef HAVE_ARCH_HUGETLB_UNMAPPED_AREA
>>> +static inline int file_to_psize(struct file *file)
>>> +{
>>> + struct hstate *hstate = hstate_file(file);
>>> + return shift_to_mmu_psize(huge_page_shift(hstate));
>>> +}
>>> +
>>> unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
>>> unsigned long len, unsigned long pgoff,
>>> unsigned long flags)
>>> {
>>> - struct hstate *hstate = hstate_file(file);
>>> - int mmu_psize = shift_to_mmu_psize(huge_page_shift(hstate));
>>> -
>>> #ifdef CONFIG_PPC_RADIX_MMU
>>> if (radix_enabled())
>>> return radix__hugetlb_get_unmapped_area(file, addr, len,
>>> pgoff, flags);
>>> #endif
>>> - return slice_get_unmapped_area(addr, len, flags, mmu_psize, 1);
>>> +#ifdef CONFIG_PPC_MM_SLICES
>>> + return slice_get_unmapped_area(addr, len, flags, file_to_psize(file), 1);
>>> +#endif
>>> + BUG();
>>
>> We shouldn't had new instances of BUG().
>>
>> BUILD_BUG() should do the trick here.
>>
>>> }
>>> #endif
>>>
>>> diff --git a/arch/powerpc/mm/mmap.c b/arch/powerpc/mm/mmap.c
>>> index ae683fdc716c..c475cf810aa8 100644
>>> --- a/arch/powerpc/mm/mmap.c
>>> +++ b/arch/powerpc/mm/mmap.c
>>> @@ -80,6 +80,7 @@ static inline unsigned long mmap_base(unsigned long rnd,
>>> return PAGE_ALIGN(DEFAULT_MAP_WINDOW - gap - rnd);
>>> }
>>>
>>> +#ifdef HAVE_ARCH_UNMAPPED_AREA
>>> #ifdef CONFIG_PPC_RADIX_MMU
>>> /*
>>> * Same function as generic code used only for radix, because we don't need to overload
>>> @@ -181,11 +182,42 @@ radix__arch_get_unmapped_area_topdown(struct file *filp,
>>> */
>>> return radix__arch_get_unmapped_area(filp, addr0, len, pgoff, flags);
>>> }
>>> +#endif
>>> +
>>> +unsigned long arch_get_unmapped_area(struct file *filp,
>>> + unsigned long addr,
>>> + unsigned long len,
>>> + unsigned long pgoff,
>>> + unsigned long flags)
>>> +{
>>> +#ifdef CONFIG_PPC_MM_SLICES
>>> + return slice_get_unmapped_area(addr, len, flags,
>>> + mm_ctx_user_psize(¤t->mm->context), 0);
>>> +#else
>>> + BUG();
>>
>> Same.
>>
>> And the #else isn't needed
>>
>>> +#endif
>>> +}
>>> +
>>> +unsigned long arch_get_unmapped_area_topdown(struct file *filp,
>>> + const unsigned long addr0,
>>> + const unsigned long len,
>>> + const unsigned long pgoff,
>>> + const unsigned long flags)
>>> +{
>>> +#ifdef CONFIG_PPC_MM_SLICES
>>> + return slice_get_unmapped_area(addr0, len, flags,
>>> + mm_ctx_user_psize(¤t->mm->context), 1);
>>> +#else
>>> + BUG();
>>
>> Same
>>
>> And the #else isn't needed
>
> Fair enough. I'll see if mpe can squash in an incremental patch.
Ah no we can't do that here because arch_get_unmapped_area* is not static
so BUILD_BUG() triggers.
I think we can just look at how it could be improved in future patches.
Thanks,
Nick
^ permalink raw reply
* Re: [PATCH v2 2/6] powerpc/kexec_file: Add KEXEC_SIG support.
From: Michal Suchánek @ 2021-12-09 9:21 UTC (permalink / raw)
To: Nayna
Cc: Mimi Zohar, David Howells, keyrings, Paul Mackerras,
Alexander Gordeev, linux-s390, Herbert Xu, Baoquan He,
Christian Borntraeger, James Morris, Lakshmi Ramasubramanian,
Christian Borntraeger, Serge E. Hallyn, Vasily Gorbik,
Rob Herring, Heiko Carstens, linux-crypto, Dmitry Kasatkin,
Hari Bathini, Daniel Axtens, Philipp Rudo, Frank van der Linden,
kexec, linux-kernel, Luis Chamberlain, Sven Schnelle,
linux-security-module, Jessica Yu, linux-integrity, linuxppc-dev,
David S. Miller, Thiago Jung Bauermann, buendgen
In-Reply-To: <c3c9c6e4-6371-2f5a-ac94-fa4389d5dbe5@linux.vnet.ibm.com>
Hello,
On Wed, Dec 08, 2021 at 08:51:47PM -0500, Nayna wrote:
>
> On 11/25/21 13:02, Michal Suchanek wrote:
> > Copy the code from s390x
> >
> > Signed-off-by: Michal Suchanek<msuchanek@suse.de>
> > ---
> > arch/powerpc/Kconfig | 11 +++++++++++
> > arch/powerpc/kexec/elf_64.c | 36 ++++++++++++++++++++++++++++++++++++
> > 2 files changed, 47 insertions(+)
> >
> > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> > index ac0c515552fd..ecc1227a77f1 100644
> > --- a/arch/powerpc/Kconfig
> > +++ b/arch/powerpc/Kconfig
> > @@ -561,6 +561,17 @@ config KEXEC_FILE
> > config ARCH_HAS_KEXEC_PURGATORY
> > def_bool KEXEC_FILE
> >
> > +config KEXEC_SIG
> > + bool "Verify kernel signature during kexec_file_load() syscall"
> > + depends on KEXEC_FILE && MODULE_SIG_FORMAT
>
> After manually applying the patch, the build is failing with the following
> error:
>
> build failed with error "arch/powerpc/kexec/elf_64.o: In function
> `elf64_verify_sig':
> /root/kernel/linus/linux/arch/powerpc/kexec/elf_64.c:160: undefined
> reference to `verify_appended_signature'"
This patch does not add call to verify_appended_signature.
Maybe you applied the following patch as well?
Thanks
Michal
^ permalink raw reply
* Re: [PATCH v3] powerpc/pseries: read the lpar name from the firmware
From: Laurent Dufour @ 2021-12-09 8:54 UTC (permalink / raw)
To: Nathan Lynch; +Cc: linuxppc-dev, linux-kernel
In-Reply-To: <874k7jnmva.fsf@linux.ibm.com>
On 08/12/2021, 16:21:29, Nathan Lynch wrote:
> Laurent Dufour <ldufour@linux.ibm.com> writes:
>> On 07/12/2021, 18:07:50, Nathan Lynch wrote:
>>> Laurent Dufour <ldufour@linux.ibm.com> writes:
>>>> On 07/12/2021, 15:32:39, Nathan Lynch wrote:
>>>>> Is there a reasonable fallback for VMs where this parameter doesn't
>>>>> exist? PowerVM partitions should always have it, but what do we want the
>>>>> behavior to be on other hypervisors?
>>>>
>>>> In that case, there is no value displayed in the /proc/powerpc/lparcfg and
>>>> the lparstat -i command will fall back to the device tree value. I can't
>>>> see any valid reason to report the value defined in the device tree
>>>> here.
>>>
>>> Here's a valid reason :-)
>>>
>>> lparstat isn't the only possible consumer of the interface, and the
>>> 'ibm,partition-name' property and the dynamic system parameter clearly
>>> serve a common purpose. 'ibm,partition-name' is provided by qemu.
>>
>> If the hypervisor is not providing this value, this is not the goal of this
>> interface to fetch it from the device tree.
>>
>> Any consumer should be able to fall back on the device tree value, and
>> there is no added value to do such a trick in the kernel when it can be
>> done in the user space.
>
> There is value in imposing a level of abstraction so that the semantics
> are:
>
> * Report the name assigned to the guest by the hosting environment, if
> available
>
> as opposed to
>
> * Return the string returned by a RTAS call to ibm,get-system-parameter
> with token 55, if implemented
>
> The benefit is that consumers of lparcfg do not have to be coded with
> the knowledge that "if a partition_name= line is absent, the
> ibm,get-system-parameter RTAS call must have failed, so now I should
> read /sys/firmware/devicetree/base/ibm,partition_name." That's the sort
> of esoterica that is appropriate for the kernel to encapsulate.
>
> And I'd say the effort involved (falling back to a root node property
> lookup) is proportional to the benefit.
>
I don't agree.
From the kernel point of view, I can't see any benefit, this is adding more
complexity to do in the kernel what can be done easily in user space.
This is typically what should be implemented in a user space shared library.
^ permalink raw reply
* Re: [PATCH v6 17/18] powerpc/64s: Move hash MMU support code under CONFIG_PPC_64S_HASH_MMU
From: Nicholas Piggin @ 2021-12-09 8:30 UTC (permalink / raw)
To: linuxppc-dev, Michael Ellerman
In-Reply-To: <87czm8o9i1.fsf@mpe.ellerman.id.au>
Excerpts from Michael Ellerman's message of December 7, 2021 11:00 pm:
> Nicholas Piggin <npiggin@gmail.com> writes:
>> 34 files changed, 173 insertions(+), 52 deletions(-)
>
>
> I was able to clean up some of the ifdefs a little with the changes
> below. I'll run these through some test builds and then squash them in.
Looks good to me.
Thanks,
Nick
>
> cheers
>
>
> diff --git a/arch/powerpc/include/asm/book3s/64/mmu-hash.h b/arch/powerpc/include/asm/book3s/64/mmu-hash.h
> index 3004f3323144..21f780942911 100644
> --- a/arch/powerpc/include/asm/book3s/64/mmu-hash.h
> +++ b/arch/powerpc/include/asm/book3s/64/mmu-hash.h
> @@ -523,8 +523,14 @@ void slb_save_contents(struct slb_entry *slb_ptr);
> void slb_dump_contents(struct slb_entry *slb_ptr);
>
> extern void slb_vmalloc_update(void);
> -extern void slb_set_size(u16 size);
> void preload_new_slb_context(unsigned long start, unsigned long sp);
> +
> +#ifdef CONFIG_PPC_64S_HASH_MMU
> +void slb_set_size(u16 size);
> +#else
> +static inline void slb_set_size(u16 size) { }
> +#endif
> +
> #endif /* __ASSEMBLY__ */
>
> /*
> diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
> index 2197404cdcc4..75678ff04dd7 100644
> --- a/arch/powerpc/kernel/prom.c
> +++ b/arch/powerpc/kernel/prom.c
> @@ -231,10 +231,9 @@ static void __init check_cpu_pa_features(unsigned long node)
> ibm_pa_features, ARRAY_SIZE(ibm_pa_features));
> }
>
> -#ifdef CONFIG_PPC_BOOK3S_64
> +#ifdef CONFIG_PPC_64S_HASH_MMU
> static void __init init_mmu_slb_size(unsigned long node)
> {
> -#ifdef CONFIG_PPC_64S_HASH_MMU
> const __be32 *slb_size_ptr;
>
> slb_size_ptr = of_get_flat_dt_prop(node, "slb-size", NULL) ? :
> @@ -242,7 +241,6 @@ static void __init init_mmu_slb_size(unsigned long node)
>
> if (slb_size_ptr)
> mmu_slb_size = be32_to_cpup(slb_size_ptr);
> -#endif
> }
> #else
> #define init_mmu_slb_size(node) do { } while(0)
> diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
> index 22647bb82198..703a2e6ab08d 100644
> --- a/arch/powerpc/kernel/setup_64.c
> +++ b/arch/powerpc/kernel/setup_64.c
> @@ -886,9 +886,7 @@ void __init setup_per_cpu_areas(void)
> atom_size = SZ_1M;
> } else if (radix_enabled()) {
> atom_size = PAGE_SIZE;
> - } else {
> -#ifdef CONFIG_PPC_64S_HASH_MMU
> -
> + } else if (IS_ENABLED(CONFIG_PPC_64S_HASH_MMU)) {
> /*
> * Linear mapping is one of 4K, 1M and 16M. For 4K, no need
> * to group units. For larger mappings, use 1M atom which
> @@ -898,9 +896,6 @@ void __init setup_per_cpu_areas(void)
> atom_size = PAGE_SIZE;
> else
> atom_size = SZ_1M;
> -#else
> - BUILD_BUG(); // radix_enabled() should be constant true
> -#endif
> }
>
> if (pcpu_chosen_fc != PCPU_FC_PAGE) {
> diff --git a/arch/powerpc/kexec/ranges.c b/arch/powerpc/kexec/ranges.c
> index 92d831621fa0..563e9989a5bf 100644
> --- a/arch/powerpc/kexec/ranges.c
> +++ b/arch/powerpc/kexec/ranges.c
> @@ -296,7 +296,7 @@ int add_initrd_mem_range(struct crash_mem **mem_ranges)
> return ret;
> }
>
> -#ifdef CONFIG_PPC_BOOK3S_64
> +#ifdef CONFIG_PPC_64S_HASH_MMU
> /**
> * add_htab_mem_range - Adds htab range to the given memory ranges list,
> * if it exists
> @@ -306,14 +306,10 @@ int add_initrd_mem_range(struct crash_mem **mem_ranges)
> */
> int add_htab_mem_range(struct crash_mem **mem_ranges)
> {
> -#ifdef CONFIG_PPC_64S_HASH_MMU
> if (!htab_address)
> return 0;
>
> return add_mem_range(mem_ranges, __pa(htab_address), htab_size_bytes);
> -#else
> - return 0;
> -#endif
> }
> #endif
>
> diff --git a/arch/powerpc/mm/book3s64/radix_pgtable.c b/arch/powerpc/mm/book3s64/radix_pgtable.c
> index 5f8cbeca8080..3c4f0ebe5df8 100644
> --- a/arch/powerpc/mm/book3s64/radix_pgtable.c
> +++ b/arch/powerpc/mm/book3s64/radix_pgtable.c
> @@ -333,10 +333,8 @@ static void __init radix_init_pgtable(void)
> phys_addr_t start, end;
> u64 i;
>
> -#ifdef CONFIG_PPC_64S_HASH_MMU
> /* We don't support slb for radix */
> - mmu_slb_size = 0;
> -#endif
> + slb_set_size(0);
>
> /*
> * Create the linear mapping
> diff --git a/arch/powerpc/platforms/pseries/mobility.c b/arch/powerpc/platforms/pseries/mobility.c
> index 21b706bcea76..85033f392c78 100644
> --- a/arch/powerpc/platforms/pseries/mobility.c
> +++ b/arch/powerpc/platforms/pseries/mobility.c
> @@ -484,9 +484,7 @@ static int do_suspend(void)
> ret = rtas_ibm_suspend_me(&status);
> if (ret != 0) {
> pr_err("ibm,suspend-me error: %d\n", status);
> -#ifdef CONFIG_PPC_64S_HASH_MMU
> slb_set_size(saved_slb_size);
> -#endif
> }
>
> return ret;
> diff --git a/arch/powerpc/platforms/pseries/pseries.h b/arch/powerpc/platforms/pseries/pseries.h
> index 3544778e06d0..b4c63c481f33 100644
> --- a/arch/powerpc/platforms/pseries/pseries.h
> +++ b/arch/powerpc/platforms/pseries/pseries.h
> @@ -113,6 +113,11 @@ int dlpar_workqueue_init(void);
>
> extern u32 pseries_security_flavor;
> void pseries_setup_security_mitigations(void);
> +
> +#ifdef CONFIG_PPC_64S_HASH_MMU
> void pseries_lpar_read_hblkrm_characteristics(void);
> +#else
> +static inline void pseries_lpar_read_hblkrm_characteristics(void) { }
> +#endif
>
> #endif /* _PSERIES_PSERIES_H */
> diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c
> index 80dae18d6621..7f7369fec46b 100644
> --- a/arch/powerpc/platforms/pseries/reconfig.c
> +++ b/arch/powerpc/platforms/pseries/reconfig.c
> @@ -337,10 +337,8 @@ static int do_update_property(char *buf, size_t bufsize)
> if (!newprop)
> return -ENOMEM;
>
> -#ifdef CONFIG_PPC_64S_HASH_MMU
> if (!strcmp(name, "slb-size") || !strcmp(name, "ibm,slb-size"))
> slb_set_size(*(int *)value);
> -#endif
>
> return of_update_property(np, newprop);
> }
>
^ permalink raw reply
* Re: [PATCH v6 15/18] powerpc/64s: Always define arch unmapped area calls
From: Nicholas Piggin @ 2021-12-09 8:29 UTC (permalink / raw)
To: Christophe Leroy, linuxppc-dev@lists.ozlabs.org
In-Reply-To: <069c343a-c373-ed41-2778-b0abcbb9ba09@csgroup.eu>
Excerpts from Christophe Leroy's message of December 8, 2021 8:00 pm:
>
>
> Le 01/12/2021 à 15:41, Nicholas Piggin a écrit :
>> To avoid any functional changes to radix paths when building with hash
>> MMU support disabled (and CONFIG_PPC_MM_SLICES=n), always define the
>> arch get_unmapped_area calls on 64s platforms.
>>
>> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
>> ---
>> arch/powerpc/include/asm/book3s/64/hash.h | 4 ---
>> arch/powerpc/include/asm/book3s/64/mmu.h | 6 ++++
>> arch/powerpc/mm/hugetlbpage.c | 16 ++++++---
>> arch/powerpc/mm/mmap.c | 40 +++++++++++++++++++----
>> arch/powerpc/mm/slice.c | 20 ------------
>> 5 files changed, 51 insertions(+), 35 deletions(-)
>>
>> diff --git a/arch/powerpc/include/asm/book3s/64/hash.h b/arch/powerpc/include/asm/book3s/64/hash.h
>> index 674fe0e890dc..a7a0572f3846 100644
>> --- a/arch/powerpc/include/asm/book3s/64/hash.h
>> +++ b/arch/powerpc/include/asm/book3s/64/hash.h
>> @@ -99,10 +99,6 @@
>> * Defines the address of the vmemap area, in its own region on
>> * hash table CPUs.
>> */
>> -#ifdef CONFIG_PPC_MM_SLICES
>> -#define HAVE_ARCH_UNMAPPED_AREA
>> -#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
>> -#endif /* CONFIG_PPC_MM_SLICES */
>>
>> /* PTEIDX nibble */
>> #define _PTEIDX_SECONDARY 0x8
>> diff --git a/arch/powerpc/include/asm/book3s/64/mmu.h b/arch/powerpc/include/asm/book3s/64/mmu.h
>> index c02f42d1031e..015d7d972d16 100644
>> --- a/arch/powerpc/include/asm/book3s/64/mmu.h
>> +++ b/arch/powerpc/include/asm/book3s/64/mmu.h
>> @@ -4,6 +4,12 @@
>>
>> #include <asm/page.h>
>>
>> +#ifdef CONFIG_HUGETLB_PAGE
>> +#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA
>> +#endif
>> +#define HAVE_ARCH_UNMAPPED_AREA
>> +#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
>> +
>> #ifndef __ASSEMBLY__
>> /*
>> * Page size definition
>> diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
>> index 82d8b368ca6d..ddead41e2194 100644
>> --- a/arch/powerpc/mm/hugetlbpage.c
>> +++ b/arch/powerpc/mm/hugetlbpage.c
>> @@ -542,20 +542,26 @@ struct page *follow_huge_pd(struct vm_area_struct *vma,
>> return page;
>> }
>>
>> -#ifdef CONFIG_PPC_MM_SLICES
>> +#ifdef HAVE_ARCH_HUGETLB_UNMAPPED_AREA
>
> Could use CONFIG_PPC_BOOK3S_64 instead
It was going to make it de-selectable with !HASH. I think your series
cleans this stuff up so I dont' think it's a big deal.
>
>> +static inline int file_to_psize(struct file *file)
>
> 'inline' is not needed.
It is otherwise a !SLICES config causes it to give a defined but not
used error.
>
>> +{
>> + struct hstate *hstate = hstate_file(file);
>> + return shift_to_mmu_psize(huge_page_shift(hstate));
>> +}
>> +
>> unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
>> unsigned long len, unsigned long pgoff,
>> unsigned long flags)
>> {
>> - struct hstate *hstate = hstate_file(file);
>> - int mmu_psize = shift_to_mmu_psize(huge_page_shift(hstate));
>> -
>> #ifdef CONFIG_PPC_RADIX_MMU
>> if (radix_enabled())
>> return radix__hugetlb_get_unmapped_area(file, addr, len,
>> pgoff, flags);
>> #endif
>> - return slice_get_unmapped_area(addr, len, flags, mmu_psize, 1);
>> +#ifdef CONFIG_PPC_MM_SLICES
>> + return slice_get_unmapped_area(addr, len, flags, file_to_psize(file), 1);
>> +#endif
>> + BUG();
>> }
>> #endif
>>
>> diff --git a/arch/powerpc/mm/mmap.c b/arch/powerpc/mm/mmap.c
>> index ae683fdc716c..c475cf810aa8 100644
>> --- a/arch/powerpc/mm/mmap.c
>> +++ b/arch/powerpc/mm/mmap.c
>> @@ -80,6 +80,7 @@ static inline unsigned long mmap_base(unsigned long rnd,
>> return PAGE_ALIGN(DEFAULT_MAP_WINDOW - gap - rnd);
>> }
>>
>> +#ifdef HAVE_ARCH_UNMAPPED_AREA
>
> Could use CONFIG_PPC_BOOK3S_64 instead. Or better, put all that stuff in
> a file in mm/book3s64/ directory
Seeing as you cleaned it up with your series, probably doesn't matter
much.
Thanks,
Nick
^ permalink raw reply
* Re: [PATCH v6 15/18] powerpc/64s: Always define arch unmapped area calls
From: Christophe Leroy @ 2021-12-09 8:28 UTC (permalink / raw)
To: Nicholas Piggin, linuxppc-dev@lists.ozlabs.org
In-Reply-To: <1639038294.oxbnieugst.astroid@bobo.none>
Le 09/12/2021 à 09:25, Nicholas Piggin a écrit :
> Excerpts from Christophe Leroy's message of December 8, 2021 7:38 pm:
>>
>>
>> Le 01/12/2021 à 15:41, Nicholas Piggin a écrit :
>>> To avoid any functional changes to radix paths when building with hash
>>> MMU support disabled (and CONFIG_PPC_MM_SLICES=n), always define the
>>> arch get_unmapped_area calls on 64s platforms.
>>>
>>> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
>>> ---
>>> arch/powerpc/include/asm/book3s/64/hash.h | 4 ---
>>> arch/powerpc/include/asm/book3s/64/mmu.h | 6 ++++
>>> arch/powerpc/mm/hugetlbpage.c | 16 ++++++---
>>> arch/powerpc/mm/mmap.c | 40 +++++++++++++++++++----
>>> arch/powerpc/mm/slice.c | 20 ------------
>>> 5 files changed, 51 insertions(+), 35 deletions(-)
>>>
>>> diff --git a/arch/powerpc/include/asm/book3s/64/hash.h b/arch/powerpc/include/asm/book3s/64/hash.h
>>> index 674fe0e890dc..a7a0572f3846 100644
>>> --- a/arch/powerpc/include/asm/book3s/64/hash.h
>>> +++ b/arch/powerpc/include/asm/book3s/64/hash.h
>>> @@ -99,10 +99,6 @@
>>> * Defines the address of the vmemap area, in its own region on
>>> * hash table CPUs.
>>> */
>>> -#ifdef CONFIG_PPC_MM_SLICES
>>> -#define HAVE_ARCH_UNMAPPED_AREA
>>> -#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
>>> -#endif /* CONFIG_PPC_MM_SLICES */
>>>
>>> /* PTEIDX nibble */
>>> #define _PTEIDX_SECONDARY 0x8
>>> diff --git a/arch/powerpc/include/asm/book3s/64/mmu.h b/arch/powerpc/include/asm/book3s/64/mmu.h
>>> index c02f42d1031e..015d7d972d16 100644
>>> --- a/arch/powerpc/include/asm/book3s/64/mmu.h
>>> +++ b/arch/powerpc/include/asm/book3s/64/mmu.h
>>> @@ -4,6 +4,12 @@
>>>
>>> #include <asm/page.h>
>>>
>>> +#ifdef CONFIG_HUGETLB_PAGE
>>> +#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA
>>> +#endif
>>> +#define HAVE_ARCH_UNMAPPED_AREA
>>> +#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
>>> +
>>> #ifndef __ASSEMBLY__
>>> /*
>>> * Page size definition
>>> diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
>>> index 82d8b368ca6d..ddead41e2194 100644
>>> --- a/arch/powerpc/mm/hugetlbpage.c
>>> +++ b/arch/powerpc/mm/hugetlbpage.c
>>> @@ -542,20 +542,26 @@ struct page *follow_huge_pd(struct vm_area_struct *vma,
>>> return page;
>>> }
>>>
>>> -#ifdef CONFIG_PPC_MM_SLICES
>>> +#ifdef HAVE_ARCH_HUGETLB_UNMAPPED_AREA
>>> +static inline int file_to_psize(struct file *file)
>>> +{
>>> + struct hstate *hstate = hstate_file(file);
>>> + return shift_to_mmu_psize(huge_page_shift(hstate));
>>> +}
>>> +
>>> unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
>>> unsigned long len, unsigned long pgoff,
>>> unsigned long flags)
>>> {
>>> - struct hstate *hstate = hstate_file(file);
>>> - int mmu_psize = shift_to_mmu_psize(huge_page_shift(hstate));
>>> -
>>> #ifdef CONFIG_PPC_RADIX_MMU
>>> if (radix_enabled())
>>> return radix__hugetlb_get_unmapped_area(file, addr, len,
>>> pgoff, flags);
>>> #endif
>>> - return slice_get_unmapped_area(addr, len, flags, mmu_psize, 1);
>>> +#ifdef CONFIG_PPC_MM_SLICES
>>> + return slice_get_unmapped_area(addr, len, flags, file_to_psize(file), 1);
>>> +#endif
>>> + BUG();
>>
>> We shouldn't had new instances of BUG().
>>
>> BUILD_BUG() should do the trick here.
>>
>>> }
>>> #endif
>>>
>>> diff --git a/arch/powerpc/mm/mmap.c b/arch/powerpc/mm/mmap.c
>>> index ae683fdc716c..c475cf810aa8 100644
>>> --- a/arch/powerpc/mm/mmap.c
>>> +++ b/arch/powerpc/mm/mmap.c
>>> @@ -80,6 +80,7 @@ static inline unsigned long mmap_base(unsigned long rnd,
>>> return PAGE_ALIGN(DEFAULT_MAP_WINDOW - gap - rnd);
>>> }
>>>
>>> +#ifdef HAVE_ARCH_UNMAPPED_AREA
>>> #ifdef CONFIG_PPC_RADIX_MMU
>>> /*
>>> * Same function as generic code used only for radix, because we don't need to overload
>>> @@ -181,11 +182,42 @@ radix__arch_get_unmapped_area_topdown(struct file *filp,
>>> */
>>> return radix__arch_get_unmapped_area(filp, addr0, len, pgoff, flags);
>>> }
>>> +#endif
>>> +
>>> +unsigned long arch_get_unmapped_area(struct file *filp,
>>> + unsigned long addr,
>>> + unsigned long len,
>>> + unsigned long pgoff,
>>> + unsigned long flags)
>>> +{
>>> +#ifdef CONFIG_PPC_MM_SLICES
>>> + return slice_get_unmapped_area(addr, len, flags,
>>> + mm_ctx_user_psize(¤t->mm->context), 0);
>>> +#else
>>> + BUG();
>>
>> Same.
>>
>> And the #else isn't needed
>>
>>> +#endif
>>> +}
>>> +
>>> +unsigned long arch_get_unmapped_area_topdown(struct file *filp,
>>> + const unsigned long addr0,
>>> + const unsigned long len,
>>> + const unsigned long pgoff,
>>> + const unsigned long flags)
>>> +{
>>> +#ifdef CONFIG_PPC_MM_SLICES
>>> + return slice_get_unmapped_area(addr0, len, flags,
>>> + mm_ctx_user_psize(¤t->mm->context), 1);
>>> +#else
>>> + BUG();
>>
>> Same
>>
>> And the #else isn't needed
>
> Fair enough. I'll see if mpe can squash in an incremental patch.
>
Anyway, my follow-up series "Convert powerpc to default topdown mmap
layout" cleans it up.
Christophe
^ permalink raw reply
* Re: [PATCH v6 15/18] powerpc/64s: Always define arch unmapped area calls
From: Nicholas Piggin @ 2021-12-09 8:25 UTC (permalink / raw)
To: Christophe Leroy, linuxppc-dev@lists.ozlabs.org
In-Reply-To: <bbe64ca3-5439-4b79-6bda-a3464febdc53@csgroup.eu>
Excerpts from Christophe Leroy's message of December 8, 2021 7:38 pm:
>
>
> Le 01/12/2021 à 15:41, Nicholas Piggin a écrit :
>> To avoid any functional changes to radix paths when building with hash
>> MMU support disabled (and CONFIG_PPC_MM_SLICES=n), always define the
>> arch get_unmapped_area calls on 64s platforms.
>>
>> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
>> ---
>> arch/powerpc/include/asm/book3s/64/hash.h | 4 ---
>> arch/powerpc/include/asm/book3s/64/mmu.h | 6 ++++
>> arch/powerpc/mm/hugetlbpage.c | 16 ++++++---
>> arch/powerpc/mm/mmap.c | 40 +++++++++++++++++++----
>> arch/powerpc/mm/slice.c | 20 ------------
>> 5 files changed, 51 insertions(+), 35 deletions(-)
>>
>> diff --git a/arch/powerpc/include/asm/book3s/64/hash.h b/arch/powerpc/include/asm/book3s/64/hash.h
>> index 674fe0e890dc..a7a0572f3846 100644
>> --- a/arch/powerpc/include/asm/book3s/64/hash.h
>> +++ b/arch/powerpc/include/asm/book3s/64/hash.h
>> @@ -99,10 +99,6 @@
>> * Defines the address of the vmemap area, in its own region on
>> * hash table CPUs.
>> */
>> -#ifdef CONFIG_PPC_MM_SLICES
>> -#define HAVE_ARCH_UNMAPPED_AREA
>> -#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
>> -#endif /* CONFIG_PPC_MM_SLICES */
>>
>> /* PTEIDX nibble */
>> #define _PTEIDX_SECONDARY 0x8
>> diff --git a/arch/powerpc/include/asm/book3s/64/mmu.h b/arch/powerpc/include/asm/book3s/64/mmu.h
>> index c02f42d1031e..015d7d972d16 100644
>> --- a/arch/powerpc/include/asm/book3s/64/mmu.h
>> +++ b/arch/powerpc/include/asm/book3s/64/mmu.h
>> @@ -4,6 +4,12 @@
>>
>> #include <asm/page.h>
>>
>> +#ifdef CONFIG_HUGETLB_PAGE
>> +#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA
>> +#endif
>> +#define HAVE_ARCH_UNMAPPED_AREA
>> +#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
>> +
>> #ifndef __ASSEMBLY__
>> /*
>> * Page size definition
>> diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
>> index 82d8b368ca6d..ddead41e2194 100644
>> --- a/arch/powerpc/mm/hugetlbpage.c
>> +++ b/arch/powerpc/mm/hugetlbpage.c
>> @@ -542,20 +542,26 @@ struct page *follow_huge_pd(struct vm_area_struct *vma,
>> return page;
>> }
>>
>> -#ifdef CONFIG_PPC_MM_SLICES
>> +#ifdef HAVE_ARCH_HUGETLB_UNMAPPED_AREA
>> +static inline int file_to_psize(struct file *file)
>> +{
>> + struct hstate *hstate = hstate_file(file);
>> + return shift_to_mmu_psize(huge_page_shift(hstate));
>> +}
>> +
>> unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
>> unsigned long len, unsigned long pgoff,
>> unsigned long flags)
>> {
>> - struct hstate *hstate = hstate_file(file);
>> - int mmu_psize = shift_to_mmu_psize(huge_page_shift(hstate));
>> -
>> #ifdef CONFIG_PPC_RADIX_MMU
>> if (radix_enabled())
>> return radix__hugetlb_get_unmapped_area(file, addr, len,
>> pgoff, flags);
>> #endif
>> - return slice_get_unmapped_area(addr, len, flags, mmu_psize, 1);
>> +#ifdef CONFIG_PPC_MM_SLICES
>> + return slice_get_unmapped_area(addr, len, flags, file_to_psize(file), 1);
>> +#endif
>> + BUG();
>
> We shouldn't had new instances of BUG().
>
> BUILD_BUG() should do the trick here.
>
>> }
>> #endif
>>
>> diff --git a/arch/powerpc/mm/mmap.c b/arch/powerpc/mm/mmap.c
>> index ae683fdc716c..c475cf810aa8 100644
>> --- a/arch/powerpc/mm/mmap.c
>> +++ b/arch/powerpc/mm/mmap.c
>> @@ -80,6 +80,7 @@ static inline unsigned long mmap_base(unsigned long rnd,
>> return PAGE_ALIGN(DEFAULT_MAP_WINDOW - gap - rnd);
>> }
>>
>> +#ifdef HAVE_ARCH_UNMAPPED_AREA
>> #ifdef CONFIG_PPC_RADIX_MMU
>> /*
>> * Same function as generic code used only for radix, because we don't need to overload
>> @@ -181,11 +182,42 @@ radix__arch_get_unmapped_area_topdown(struct file *filp,
>> */
>> return radix__arch_get_unmapped_area(filp, addr0, len, pgoff, flags);
>> }
>> +#endif
>> +
>> +unsigned long arch_get_unmapped_area(struct file *filp,
>> + unsigned long addr,
>> + unsigned long len,
>> + unsigned long pgoff,
>> + unsigned long flags)
>> +{
>> +#ifdef CONFIG_PPC_MM_SLICES
>> + return slice_get_unmapped_area(addr, len, flags,
>> + mm_ctx_user_psize(¤t->mm->context), 0);
>> +#else
>> + BUG();
>
> Same.
>
> And the #else isn't needed
>
>> +#endif
>> +}
>> +
>> +unsigned long arch_get_unmapped_area_topdown(struct file *filp,
>> + const unsigned long addr0,
>> + const unsigned long len,
>> + const unsigned long pgoff,
>> + const unsigned long flags)
>> +{
>> +#ifdef CONFIG_PPC_MM_SLICES
>> + return slice_get_unmapped_area(addr0, len, flags,
>> + mm_ctx_user_psize(¤t->mm->context), 1);
>> +#else
>> + BUG();
>
> Same
>
> And the #else isn't needed
Fair enough. I'll see if mpe can squash in an incremental patch.
Thanks,
Nick
^ permalink raw reply
* Re: [PATCH] powerpc/module_64: Fix livepatching for RO modules
From: Michael Ellerman @ 2021-12-09 7:00 UTC (permalink / raw)
To: Russell Currey, Joe Lawrence, linuxppc-dev
Cc: jniethe5, naveen.n.rao, live-patching
In-Reply-To: <25d35b916e87ed7a71ebc6528259e2f0ed390cb2.camel@russell.cc>
Russell Currey <ruscur@russell.cc> writes:
> On Tue, 2021-12-07 at 09:44 -0500, Joe Lawrence wrote:
>> On 11/23/21 3:15 AM, Russell Currey wrote:
>>
>> [[ cc += livepatching list ]]
>>
>> Hi Russell,
>>
>> Thanks for writing a minimal fix for stable / backporting. As I
>> mentioned on the github issue [1], this avoided the crashes I
>> reported
>> here and over on kpatch github [2]. I wasn't sure if this is the
>> final
>> version for stable, but feel free to add my:
>>
>> Tested-by: Joe Lawrence <joe.lawrence@redhat.com>
>
> Thanks Joe, as per the discussions on GitHub I think we're fine to use
> this patch for a fix for stable (unless there's new issues found or
> additional community feedback etc).
Hmm, I read the GitHub discussion as being that you were going to do
another version, which is why I haven't picked this up. But I guess you
and Christophe were talking about the non-minimal fix.
I know we want this to be minimal, but I think it should be checking
that patch_instruction() isn't failing.
Incremental diff to do that is below. It boots OK, are you able to throw
a livepatch test at it?
cheers
diff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c
index c25ef36c3ef4..5d77d3f5fbb5 100644
--- a/arch/powerpc/kernel/module_64.c
+++ b/arch/powerpc/kernel/module_64.c
@@ -429,8 +429,9 @@ static inline int create_stub(const Elf64_Shdr *sechdrs,
return create_ftrace_stub(entry, addr, me);
for (i = 0; i < sizeof(ppc64_stub_insns) / sizeof(u32); i++) {
- patch_instruction(&entry->jump[i],
- ppc_inst(ppc64_stub_insns[i]));
+ if (patch_instruction(&entry->jump[i],
+ ppc_inst(ppc64_stub_insns[i])))
+ return 0;
}
/* Stub uses address relative to r2. */
@@ -442,19 +443,24 @@ static inline int create_stub(const Elf64_Shdr *sechdrs,
}
pr_debug("Stub %p get data from reladdr %li\n", entry, reladdr);
- patch_instruction(&entry->jump[0],
- ppc_inst(entry->jump[0] | PPC_HA(reladdr)));
- patch_instruction(&entry->jump[1],
- ppc_inst(entry->jump[1] | PPC_LO(reladdr)));
+ if (patch_instruction(&entry->jump[0],
+ ppc_inst(entry->jump[0] | PPC_HA(reladdr))))
+ return 0;
+
+ if (patch_instruction(&entry->jump[1],
+ ppc_inst(entry->jump[1] | PPC_LO(reladdr))))
+ return 0;
// func_desc_t is 8 bytes if ABIv2, else 16 bytes
desc = func_desc(addr);
for (i = 0; i < sizeof(func_desc_t) / sizeof(u32); i++) {
- patch_instruction(((u32 *)&entry->funcdata) + i,
- ppc_inst(((u32 *)(&desc))[i]));
+ if (patch_instruction(((u32 *)&entry->funcdata) + i,
+ ppc_inst(((u32 *)(&desc))[i])))
+ return 0;
}
- patch_instruction(&entry->magic, ppc_inst(STUB_MAGIC));
+ if (patch_instruction(&entry->magic, ppc_inst(STUB_MAGIC)))
+ return 0;
return 1;
}
@@ -509,8 +515,11 @@ static int restore_r2(const char *name, u32 *instruction, struct module *me)
me->name, *instruction, instruction);
return 0;
}
+
/* ld r2,R2_STACK_OFFSET(r1) */
- patch_instruction(instruction, ppc_inst(PPC_INST_LD_TOC));
+ if (patch_instruction(instruction, ppc_inst(PPC_INST_LD_TOC)))
+ return 0;
+
return 1;
}
@@ -652,7 +661,10 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
/* Only replace bits 2 through 26 */
value = (*(uint32_t *)location & ~0x03fffffc)
| (value & 0x03fffffc);
- patch_instruction((u32 *)location, ppc_inst(value));
+
+ if (patch_instruction((u32 *)location, ppc_inst(value)))
+ return -EFAULT;
+
break;
case R_PPC64_REL64:
^ permalink raw reply related
* Re: [PATCH] powerpc: platforms: cell: pervasive: fix clang -Wimplicit-fallthrough
From: Michael Ellerman @ 2021-12-09 6:40 UTC (permalink / raw)
To: Anders Roxell, arnd
Cc: Anders Roxell, Naresh Kamboju, llvm, ndesaulniers, linux-kernel,
nathan, linuxppc-dev
In-Reply-To: <20211207110228.698956-1-anders.roxell@linaro.org>
Anders Roxell <anders.roxell@linaro.org> writes:
> Clang warns:
>
> arch/powerpc/platforms/cell/pervasive.c:81:2: error: unannotated fall-through between switch labels [-Werror,-Wimplicit-fallthrough]
> case SRR1_WAKEEE:
> ^
> arch/powerpc/platforms/cell/pervasive.c:81:2: note: insert 'break;' to avoid fall-through
> case SRR1_WAKEEE:
> ^
> break;
> 1 error generated.
>
> Clang is more pedantic than GCC, which does not warn when failing
> through to a case that is just break or return. Clang's version
> is more in line with the kernel's own stance in deprecated.rst.
> Add athe missing break to silence the warning.
>
> Fixes: 6e83985b0f6e ("powerpc/cbe: Do not process external or decremeter interrupts from sreset")
> Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
> Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
> ---
> arch/powerpc/platforms/cell/pervasive.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/powerpc/platforms/cell/pervasive.c b/arch/powerpc/platforms/cell/pervasive.c
> index 5b9a7e9f144b..dff8d5e7ab82 100644
> --- a/arch/powerpc/platforms/cell/pervasive.c
> +++ b/arch/powerpc/platforms/cell/pervasive.c
> @@ -78,6 +78,7 @@ static int cbe_system_reset_exception(struct pt_regs *regs)
> switch (regs->msr & SRR1_WAKEMASK) {
> case SRR1_WAKEDEC:
> set_dec(1);
> + break;
> case SRR1_WAKEEE:
> /*
> * Handle these when interrupts get re-enabled and we take
Thanks. I have definitely fixed this somewhere before, but I guess I
never sent it upstream, or it's still lying in a git stash of mine.
cheers
^ permalink raw reply
* Re: [PATCH] powerpc/603: Fix boot failure with DEBUG_PAGEALLOC and KFENCE
From: Michael Ellerman @ 2021-12-09 6:08 UTC (permalink / raw)
To: Christophe Leroy, mbizon@freebox.fr, Aneesh Kumar K.V
Cc: linuxppc-dev@lists.ozlabs.org, Paul Mackerras,
linux-kernel@vger.kernel.org, stable@vger.kernel.org
In-Reply-To: <191754d3-e13d-6fe2-db4b-99d78cbf2a2e@csgroup.eu>
Christophe Leroy <christophe.leroy@csgroup.eu> writes:
> Le 07/12/2021 à 11:34, Maxime Bizon a écrit :
>>
>> On Tue, 2021-12-07 at 06:10 +0000, Christophe Leroy wrote:
>>
>> Hello,
>>
>> With the patch applied and
>>
>> CONFIG_DEBUG_PAGEALLOC=y
>> CONFIG_DEBUG_PAGEALLOC_ENABLE_DEFAULT=y
>> CONFIG_DEBUG_VM=y
>>
>> I get tons of this during boot:
>>
>> [ 0.000000] Dentry cache hash table entries: 262144 (order: 8, 1048576 bytes, linear)
>> [ 0.000000] Inode-cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
>> [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
>> [ 0.000000] ------------[ cut here ]------------
>> [ 0.000000] WARNING: CPU: 0 PID: 0 at arch/powerpc/mm/pgtable.c:194 set_pte_at+0x18/0x160
>> [ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 5.15.0+ #442
>> [ 0.000000] NIP: 80015ebc LR: 80016728 CTR: 800166e4
>> [ 0.000000] REGS: 80751dd0 TRAP: 0700 Not tainted (5.15.0+)
>> [ 0.000000] MSR: 00021032 <ME,IR,DR,RI> CR: 42228882 XER: 20000000
>> [ 0.000000]
>> [ 0.000000] GPR00: 800b8dc8 80751e80 806c6300 807311d8 807a1000 8ffffe84 80751ea8 00000000
>> [ 0.000000] GPR08: 007a1591 00000001 007a1180 00000000 42224882 00000000 3ff9c608 3fffd79c
>> [ 0.000000] GPR16: 00000000 00000000 00000000 00000000 00000000 00000000 800166e4 807a2000
>> [ 0.000000] GPR24: 807a1fff 807311d8 807311d8 807a2000 80768804 00000000 807a1000 007a1180
>> [ 0.000000] NIP [80015ebc] set_pte_at+0x18/0x160
>> [ 0.000000] LR [80016728] set_page_attr+0x44/0xc0
>> [ 0.000000] Call Trace:
>> [ 0.000000] [80751e80] [80058570] console_unlock+0x340/0x428 (unreliable)
>> [ 0.000000] [80751ea0] [00000000] 0x0
>> [ 0.000000] [80751ec0] [800b8dc8] __apply_to_page_range+0x144/0x2a8
>> [ 0.000000] [80751f00] [80016918] __kernel_map_pages+0x54/0x64
>> [ 0.000000] [80751f10] [800cfeb0] __free_pages_ok+0x1b0/0x440
>> [ 0.000000] [80751f50] [805cfc8c] memblock_free_all+0x1d8/0x274
>> [ 0.000000] [80751f90] [805c5e0c] mem_init+0x3c/0xd0
>> [ 0.000000] [80751fb0] [805c0bdc] start_kernel+0x404/0x5c4
>> [ 0.000000] [80751ff0] [000033f0] 0x33f0
>> [ 0.000000] Instruction dump:
>> [ 0.000000] 7c630034 83e1000c 5463d97e 7c0803a6 38210010 4e800020 9421ffe0 93e1001c
>> [ 0.000000] 83e60000 81250000 71290001 41820014 <0fe00000> 7c0802a6 93c10018 90010024
>>
>>
>
> That's unrelated to this patch.
>
> The problem is linked to patch c988cfd38e48 ("powerpc/32: use
> set_memory_attr()"), which changed from using __set_pte_at() to using
> set_memory_attr() which uses set_pte_at().
>
> set_pte_at() has additional checks and shall not be used to updating an
> existing PTE.
>
> Wondering if I should just use __set_pte_at() instead like in the past,
> or do like commit 9f7853d7609d ("powerpc/mm: Fix set_memory_*() against
> concurrent accesses") and use pte_update()
>
> Michael, Aneesh, any suggestion ?
The motivation for using pte_update() in that commit is that it does the
update atomically and also handles flushing the HPTE for 64-bit Hash.
But the books/32 version of pte_update() doesn't do that. In fact
there's some HPTE handling in __set_pte_at(), but then also a comment
saying it's handling in a subsequent flush_tlb_xxx().
So that doesn't really help make a decision :)
On the other hand, could you convert those set_memory_attr() calls to
change_memory_attr() and then eventually drop the former?
cheers
^ permalink raw reply
* [Bug 215217] Kernel fails to boot at an early stage when built with GCC_PLUGIN_LATENT_ENTROPY=y (PowerMac G4 3,6)
From: bugzilla-daemon @ 2021-12-09 3:17 UTC (permalink / raw)
To: linuxppc-dev
In-Reply-To: <bug-215217-206035@https.bugzilla.kernel.org/>
https://bugzilla.kernel.org/show_bug.cgi?id=215217
Michael Ellerman (michael@ellerman.id.au) changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |michael@ellerman.id.au
--- Comment #5 from Michael Ellerman (michael@ellerman.id.au) ---
It's likely there's some 32-bit boot code that is being instrumented in a way
that causes it to crash.
We probably need to add some more uses of DISABLE_LATENT_ENTROPY_PLUGIN in
arch/powerpc/kernel/Makefile.
To start with you could try adding:
CFLAGS_setup_32.o += $(DISABLE_LATENT_ENTROPY_PLUGIN)
--
You may reply to this email to add a comment.
You are receiving this mail because:
You are watching the assignee of the bug.
^ permalink raw reply
* Re: [PATCH v2 0/6] KEXEC_SIG with appended signature
From: Nayna @ 2021-12-09 1:50 UTC (permalink / raw)
To: Michal Suchanek, keyrings
Cc: Mimi Zohar, David Howells, Paul Mackerras, Alexander Gordeev,
linux-s390, Herbert Xu, Baoquan He, Christian Borntraeger,
James Morris, Lakshmi Ramasubramanian, Christian Borntraeger,
Serge E. Hallyn, Vasily Gorbik, Rob Herring, Heiko Carstens,
linux-crypto, Dmitry Kasatkin, Hari Bathini, Daniel Axtens,
Philipp Rudo, Frank van der Linden, kexec, linux-kernel,
Luis Chamberlain, Sven Schnelle, linux-security-module,
Jessica Yu, linux-integrity, linuxppc-dev, David S. Miller,
Thiago Jung Bauermann, buendgen
In-Reply-To: <cover.1637862358.git.msuchanek@suse.de>
On 11/25/21 13:02, Michal Suchanek wrote:
> Hello,
Hi Michael,
>
> This is resend of the KEXEC_SIG patchset.
>
> The first patch is new because it'a a cleanup that does not require any
> change to the module verification code.
>
> The second patch is the only one that is intended to change any
> functionality.
>
> The rest only deduplicates code but I did not receive any review on that
> part so I don't know if it's desirable as implemented.
>
> The first two patches can be applied separately without the rest.
Patch 2 fails to apply on v5.16-rc4. Can you please also include git
tree/branch while posting the patches ?
Secondly, I see that you add the powerpc support in Patch 2 and then
modify it again in Patch 5 after cleanup. Why not add the support for
powerpc after the clean up ? This will reduce some rework and also
probably simplify patches.
Thanks & Regards,
- Nayna
^ permalink raw reply
* Re: [PATCH 1/2] sizes.h: Add SZ_1T macro
From: Krzysztof Wilczyński @ 2021-12-08 21:19 UTC (permalink / raw)
To: Christophe Leroy
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
Paul Mackerras, Toan Le, linuxppc-dev@lists.ozlabs.org
In-Reply-To: <b03f5cf556f1a89ccb4d7ae2f56414520cfd9209.1638973836.git.christophe.leroy@csgroup.eu>
Hello Christophe,
> Today drivers/pci/controller/pci-xgene.c defines SZ_1T
>
> Move it into linux/sizes.h so that it can be re-used elsewhere.
Sounds like a good idea!
By the way, there was an earlier version of this patch, did something
happened? I think you simply extracted these changes from the other
series, correct?
> diff --git a/drivers/pci/controller/pci-xgene.c b/drivers/pci/controller/pci-xgene.c
> index 56d0d50338c8..716dcab5ca47 100644
> --- a/drivers/pci/controller/pci-xgene.c
> +++ b/drivers/pci/controller/pci-xgene.c
> @@ -49,7 +49,6 @@
> #define EN_REG 0x00000001
> #define OB_LO_IO 0x00000002
> #define XGENE_PCIE_DEVICEID 0xE004
> -#define SZ_1T (SZ_1G*1024ULL)
> #define PIPE_PHY_RATE_RD(src) ((0xc000 & (u32)(src)) >> 0xe)
>
> #define XGENE_V1_PCI_EXP_CAP 0x40
> diff --git a/include/linux/sizes.h b/include/linux/sizes.h
> index 1ac79bcee2bb..84aa448d8bb3 100644
> --- a/include/linux/sizes.h
> +++ b/include/linux/sizes.h
> @@ -47,6 +47,8 @@
> #define SZ_8G _AC(0x200000000, ULL)
> #define SZ_16G _AC(0x400000000, ULL)
> #define SZ_32G _AC(0x800000000, ULL)
> +
> +#define SZ_1T _AC(0x10000000000, ULL)
> #define SZ_64T _AC(0x400000000000, ULL)
>
> #endif /* __LINUX_SIZES_H__ */
Thank you!
Reviewed-by: Krzysztof Wilczyński <kw@linux.com>
Krzysztof
^ permalink raw reply
* Re: [patch V2 20/23] PCI/MSI: Move msi_lock to struct pci_dev
From: Thomas Gleixner @ 2021-12-08 20:56 UTC (permalink / raw)
To: Jason Gunthorpe
Cc: linux-hyperv, linux-mips, Paul Mackerras, sparclinux, Wei Liu,
Ashok Raj, x86, Christian Borntraeger, Bjorn Helgaas, Megha Dey,
linux-pci, xen-devel, ath11k, Kevin Tian, Heiko Carstens,
Alex Williamson, Cedric Le Goater, Kalle Valo, Juergen Gross,
Thomas Bogendoerfer, Greg Kroah-Hartman, LKML, Marc Zygnier,
linuxppc-dev
In-Reply-To: <20211208152925.GU6385@nvidia.com>
On Wed, Dec 08 2021 at 11:29, Jason Gunthorpe wrote:
> On Mon, Dec 06, 2021 at 11:27:56PM +0100, Thomas Gleixner wrote:
>> if (!desc->pci.msi_attrib.can_mask)
>
> It looks like most of the time this is called by an irq_chip, except
> for a few special cases list pci_msi_shutdown()
>
> Is this something that should ideally go away someday and use some
> lock in the irq_chip - not unlike what we've thought is needed for
> IMS?
Some day we'll have that yes.
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox