diff mbox series

[1/2] powerpc/mm: Add missing tracepoint for tlbie

Message ID 4ffd3d6143f991615ffe07f43952cbc62163d319.1521452718.git.christophe.leroy@c-s.fr (mailing list archive)
State Superseded
Headers show
Series [1/2] powerpc/mm: Add missing tracepoint for tlbie | expand

Commit Message

Christophe Leroy March 19, 2018, 10:32 a.m. UTC
commit 0428491cba927 ("powerpc/mm: Trace tlbie(l) instructions")
added tracepoints for tlbie calls, but _tlbil_va() was forgotten

Fixes: 0428491cba927 ("powerpc/mm: Trace tlbie(l) instructions")
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
---
 arch/powerpc/mm/mmu_decl.h | 2 ++
 1 file changed, 2 insertions(+)

Comments

Balbir Singh March 19, 2018, 10:39 p.m. UTC | #1
On Mon, 19 Mar 2018 11:32:38 +0100 (CET)
Christophe Leroy <christophe.leroy@c-s.fr> wrote:

> commit 0428491cba927 ("powerpc/mm: Trace tlbie(l) instructions")
> added tracepoints for tlbie calls, but _tlbil_va() was forgotten
> 
> Fixes: 0428491cba927 ("powerpc/mm: Trace tlbie(l) instructions")
> Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
> ---
>  arch/powerpc/mm/mmu_decl.h | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h
> index 57fbc554c785..b9991e0c61a2 100644
> --- a/arch/powerpc/mm/mmu_decl.h
> +++ b/arch/powerpc/mm/mmu_decl.h
> @@ -21,6 +21,7 @@
>  #include <linux/mm.h>
>  #include <asm/tlbflush.h>
>  #include <asm/mmu.h>
> +#include <asm/trace.h>
>  
>  #ifdef CONFIG_PPC_MMU_NOHASH
>  
> @@ -56,6 +57,7 @@ static inline void _tlbil_va(unsigned long address, unsigned int pid,
>  			     unsigned int tsize, unsigned int ind)
>  {
>  	asm volatile ("tlbie %0; sync" : : "r" (address) : "memory");
> +	trace_tlbie(pid, 0, address, 0, 0, 0, 0);


I did not really cover a whole lot of NOHASH, any idea why its
called tlbil_va and not _tlbie_va?

The first field is really the lpid and should be 0 for non-virtualized
systems. Can I recommend that we rs field for pid and the rb field for
address? so effectively something like

trace_tlbie(0, 0, address, pid, 0, 0, 0);

Balbir
Christophe Leroy March 20, 2018, 7:57 a.m. UTC | #2
Le 19/03/2018 à 23:39, Balbir Singh a écrit :
> On Mon, 19 Mar 2018 11:32:38 +0100 (CET)
> Christophe Leroy <christophe.leroy@c-s.fr> wrote:
> 
>> commit 0428491cba927 ("powerpc/mm: Trace tlbie(l) instructions")
>> added tracepoints for tlbie calls, but _tlbil_va() was forgotten
>>
>> Fixes: 0428491cba927 ("powerpc/mm: Trace tlbie(l) instructions")
>> Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
>> ---
>>   arch/powerpc/mm/mmu_decl.h | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h
>> index 57fbc554c785..b9991e0c61a2 100644
>> --- a/arch/powerpc/mm/mmu_decl.h
>> +++ b/arch/powerpc/mm/mmu_decl.h
>> @@ -21,6 +21,7 @@
>>   #include <linux/mm.h>
>>   #include <asm/tlbflush.h>
>>   #include <asm/mmu.h>
>> +#include <asm/trace.h>
>>   
>>   #ifdef CONFIG_PPC_MMU_NOHASH
>>   
>> @@ -56,6 +57,7 @@ static inline void _tlbil_va(unsigned long address, unsigned int pid,
>>   			     unsigned int tsize, unsigned int ind)
>>   {
>>   	asm volatile ("tlbie %0; sync" : : "r" (address) : "memory");
>> +	trace_tlbie(pid, 0, address, 0, 0, 0, 0);
> 
> 
> I did not really cover a whole lot of NOHASH, any idea why its
> called tlbil_va and not _tlbie_va?

Seems it comes from 
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=0ba3418b8b1c85ee1771c63f1dd12041614e56ff

Kumar ?

> 
> The first field is really the lpid and should be 0 for non-virtualized
> systems. Can I recommend that we rs field for pid and the rb field for
> address? so effectively something like

Yes having the address in rb is expected since it is the name of the 
only field tlbie has in the 32bits instruction set.

Yes I can use rb for the pid.

Christophe
kernel test robot March 20, 2018, 8:02 a.m. UTC | #3
Hi Christophe,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on v4.16-rc4]
[also build test ERROR on next-20180319]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Christophe-Leroy/powerpc-mm-Add-missing-tracepoint-for-tlbie/20180320-130831
config: powerpc-maple_defconfig (attached as .config)
compiler: powerpc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=powerpc 

All errors (new ones prefixed by >>):

>> arch/powerpc/mm/pgtable-hash64.o:(__tracepoints+0x0): multiple definition of `__tracepoint_tlbie'
   arch/powerpc/kernel/irq.o:(__tracepoints+0x50): first defined here
>> arch/powerpc/mm/pgtable-hash64.o:(__tracepoints+0x28): multiple definition of `__tracepoint_hash_fault'
   arch/powerpc/kernel/irq.o:(__tracepoints+0x78): first defined here
>> arch/powerpc/mm/pgtable-hash64.o:(__tracepoints+0x50): multiple definition of `__tracepoint_timer_interrupt_exit'
   arch/powerpc/kernel/irq.o:(__tracepoints+0xa0): first defined here
>> arch/powerpc/mm/pgtable-hash64.o:(__tracepoints+0x78): multiple definition of `__tracepoint_timer_interrupt_entry'
   arch/powerpc/kernel/irq.o:(__tracepoints+0xc8): first defined here
>> arch/powerpc/mm/pgtable-hash64.o:(__tracepoints+0xa0): multiple definition of `__tracepoint_irq_exit'
   arch/powerpc/kernel/irq.o:(__tracepoints+0x28): first defined here
>> arch/powerpc/mm/pgtable-hash64.o:(__tracepoints+0xc8): multiple definition of `__tracepoint_irq_entry'
   arch/powerpc/kernel/irq.o:(__tracepoints+0x0): first defined here

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
diff mbox series

Patch

diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h
index 57fbc554c785..b9991e0c61a2 100644
--- a/arch/powerpc/mm/mmu_decl.h
+++ b/arch/powerpc/mm/mmu_decl.h
@@ -21,6 +21,7 @@ 
 #include <linux/mm.h>
 #include <asm/tlbflush.h>
 #include <asm/mmu.h>
+#include <asm/trace.h>
 
 #ifdef CONFIG_PPC_MMU_NOHASH
 
@@ -56,6 +57,7 @@  static inline void _tlbil_va(unsigned long address, unsigned int pid,
 			     unsigned int tsize, unsigned int ind)
 {
 	asm volatile ("tlbie %0; sync" : : "r" (address) : "memory");
+	trace_tlbie(pid, 0, address, 0, 0, 0, 0);
 }
 #elif defined(CONFIG_PPC_BOOK3E)
 extern void _tlbil_va(unsigned long address, unsigned int pid,