mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	powerpc/perf: Use regs->nip when SIAR is zero
In power10 DD1, there is an issue where the SIAR (Sampled Instruction Address Register) is not latching to the sampled address during random sampling. This results in value of 0s in the SIAR. Add a check to use regs->nip when SIAR is zero. Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20201021085329.384535-5-maddy@linux.ibm.com
This commit is contained in:
		
							parent
							
								
									d9f7088dd6
								
							
						
					
					
						commit
						2ca13a4cc5
					
				| @ -263,9 +263,16 @@ static inline u32 perf_get_misc_flags(struct pt_regs *regs) | ||||
| 	 * DD1. | ||||
| 	 */ | ||||
| 	if (marked && (ppmu->flags & PPMU_P10_DD1)) { | ||||
| 		if (is_kernel_addr(mfspr(SPRN_SIAR))) | ||||
| 		unsigned long siar = mfspr(SPRN_SIAR); | ||||
| 		if (siar) { | ||||
| 			if (is_kernel_addr(siar)) | ||||
| 				return PERF_RECORD_MISC_KERNEL; | ||||
| 			return PERF_RECORD_MISC_USER; | ||||
| 		} else { | ||||
| 			if (is_kernel_addr(regs->nip)) | ||||
| 				return PERF_RECORD_MISC_KERNEL; | ||||
| 			return PERF_RECORD_MISC_USER; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	/*
 | ||||
| @ -2199,8 +2206,14 @@ unsigned long perf_misc_flags(struct pt_regs *regs) | ||||
| unsigned long perf_instruction_pointer(struct pt_regs *regs) | ||||
| { | ||||
| 	bool use_siar = regs_use_siar(regs); | ||||
| 	unsigned long siar = mfspr(SPRN_SIAR); | ||||
| 
 | ||||
| 	if (use_siar && siar_valid(regs)) | ||||
| 	if (ppmu->flags & PPMU_P10_DD1) { | ||||
| 		if (siar) | ||||
| 			return siar; | ||||
| 		else | ||||
| 			return regs->nip; | ||||
| 	} else if (use_siar && siar_valid(regs)) | ||||
| 		return mfspr(SPRN_SIAR) + perf_ip_adjust(regs); | ||||
| 	else if (use_siar) | ||||
| 		return 0;		// no valid instruction pointer
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Madhavan Srinivasan
						Madhavan Srinivasan