forked from Mirrors/opensbi
		
	lib: sbi_hart: clear mip csr during hart init
If mip.SEIP bit is not cleared then on HiFive Unmatched board it causes
spurious external interrupts. This breaks the boot up of HiFive Unmatched
board. Hence it is required to bring the mip CSR to a known state during
hart init and avoid spurious interrupts.
Fixes: d9e7368 ("firmware: Not to clear all the MIP")
Signed-off-by: Mayuresh Chitale <mchitale@ventanamicro.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
			
			
This commit is contained in:
		
				
					committed by
					
						
						Anup Patel
					
				
			
			
				
	
			
			
			
						parent
						
							30b9e7ee14
						
					
				
				
					commit
					8e90259da8
				
			@@ -733,6 +733,12 @@ int sbi_hart_init(struct sbi_scratch *scratch, bool cold_boot)
 | 
			
		||||
{
 | 
			
		||||
	int rc;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Clear mip CSR before proceeding with init to avoid any spurious
 | 
			
		||||
	 * external interrupts in S-mode.
 | 
			
		||||
	 */
 | 
			
		||||
	csr_write(CSR_MIP, 0);
 | 
			
		||||
 | 
			
		||||
	if (cold_boot) {
 | 
			
		||||
		if (misa_extension('H'))
 | 
			
		||||
			sbi_hart_expected_trap = &__sbi_expected_trap_hext;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user