[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <40b48947-b80e-7971-376d-52b594e26d17@c-s.fr>
Date: Mon, 29 Apr 2019 17:35:53 +0200
From: Christophe Leroy <christophe.leroy@....fr>
To: Masahiro Yamada <yamada.masahiro@...ionext.com>,
Andrew Morton <akpm@...ux-foundation.org>,
linux-arch <linux-arch@...r.kernel.org>
Cc: linux-s390@...r.kernel.org,
Heiko Carstens <heiko.carstens@...ibm.com>,
Arnd Bergmann <arnd@...db.de>, linuxppc-dev@...ts.ozlabs.org,
x86@...nel.org, linux-mips@...r.kernel.org,
linux-kernel@...r.kernel.org, Ingo Molnar <mingo@...hat.com>,
linux-mtd@...ts.infradead.org,
linux-arm-kernel@...ts.infradead.org,
Mathieu Malaterre <malat@...ian.org>
Subject: Re: [RESEND PATCH v3 09/11] powerpc/mm/radix: mark
__radix__flush_tlb_range_psize() as __always_inline
Le 23/04/2019 à 05:49, Masahiro Yamada a écrit :
> This prepares to move CONFIG_OPTIMIZE_INLINING from x86 to a common
> place. We need to eliminate potential issues beforehand.
How did you identify the functions requiring __always_inline as this one
? Just by 'test and see if it fails', or did you have some script or so ?
Here the problem is that one of the parameters of the function are used
as "immediate" constraint for the inline assembly, therefore requiring
the function to always be inline.
I guess this should be explained in the commit log and I'm wondering how
you ensure that you did identify all functions like this.
Christophe
>
> If it is enabled for powerpc, the following error is reported:
>
> arch/powerpc/mm/tlb-radix.c: In function '__radix__flush_tlb_range_psize':
> arch/powerpc/mm/tlb-radix.c:104:2: error: asm operand 3 probably doesn't match constraints [-Werror]
> asm volatile(PPC_TLBIEL(%0, %4, %3, %2, %1)
> ^~~
> arch/powerpc/mm/tlb-radix.c:104:2: error: impossible constraint in 'asm'
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@...ionext.com>
> ---
>
> Changes in v3: None
> Changes in v2:
> - split into a separate patch
>
> arch/powerpc/mm/tlb-radix.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/mm/tlb-radix.c b/arch/powerpc/mm/tlb-radix.c
> index 6a23b9ebd2a1..a2b2848f0ae3 100644
> --- a/arch/powerpc/mm/tlb-radix.c
> +++ b/arch/powerpc/mm/tlb-radix.c
> @@ -928,7 +928,7 @@ void radix__tlb_flush(struct mmu_gather *tlb)
> tlb->need_flush_all = 0;
> }
>
> -static inline void __radix__flush_tlb_range_psize(struct mm_struct *mm,
> +static __always_inline void __radix__flush_tlb_range_psize(struct mm_struct *mm,
> unsigned long start, unsigned long end,
> int psize, bool also_pwc)
> {
>
Powered by blists - more mailing lists