forked from Mirrors/opensbi
		
	lib: Introduce sbi_ipi_send_halt() API
Instead of directly calling sbi_ipi_send_many(), we introduce sbi_ipi_send_halt() for halting a set of HARTs. This way in future we can assign any IPI event number for HART halting within sbi_ipi.c only. Signed-off-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Atish Patra <atish.patra@wdc.com>
This commit is contained in:
		@@ -112,6 +112,12 @@ void sbi_ipi_clear_smode(struct sbi_scratch *scratch)
 | 
			
		||||
	csr_clear(CSR_MIP, MIP_SSIP);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int sbi_ipi_send_halt(struct sbi_scratch *scratch, ulong hmask, ulong hbase)
 | 
			
		||||
{
 | 
			
		||||
	return sbi_ipi_send_many(scratch, hmask, hbase,
 | 
			
		||||
				 SBI_IPI_EVENT_HALT, NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sbi_ipi_process(struct sbi_scratch *scratch)
 | 
			
		||||
{
 | 
			
		||||
	unsigned long ipi_type;
 | 
			
		||||
 
 | 
			
		||||
@@ -39,9 +39,8 @@ void __noreturn sbi_system_reboot(struct sbi_scratch *scratch, u32 type)
 | 
			
		||||
	u32 current_hartid_mask = 1UL << sbi_current_hartid();
 | 
			
		||||
 | 
			
		||||
	/* Send HALT IPI to every hart other than the current hart */
 | 
			
		||||
	sbi_ipi_send_many(scratch,
 | 
			
		||||
			  sbi_hart_available_mask() & ~current_hartid_mask,
 | 
			
		||||
			  0, SBI_IPI_EVENT_HALT, NULL);
 | 
			
		||||
	sbi_ipi_send_halt(scratch,
 | 
			
		||||
			  sbi_hart_available_mask() & ~current_hartid_mask, 0);
 | 
			
		||||
 | 
			
		||||
	/* Platform specific reooot */
 | 
			
		||||
	sbi_platform_system_reboot(sbi_platform_ptr(scratch), type);
 | 
			
		||||
@@ -55,9 +54,8 @@ void __noreturn sbi_system_shutdown(struct sbi_scratch *scratch, u32 type)
 | 
			
		||||
	u32 current_hartid_mask = 1UL << sbi_current_hartid();
 | 
			
		||||
 | 
			
		||||
	/* Send HALT IPI to every hart other than the current hart */
 | 
			
		||||
	sbi_ipi_send_many(scratch,
 | 
			
		||||
			  sbi_hart_available_mask() & ~current_hartid_mask,
 | 
			
		||||
			  0, SBI_IPI_EVENT_HALT, NULL);
 | 
			
		||||
	sbi_ipi_send_halt(scratch,
 | 
			
		||||
			  sbi_hart_available_mask() & ~current_hartid_mask, 0);
 | 
			
		||||
 | 
			
		||||
	/* Platform specific shutdown */
 | 
			
		||||
	sbi_platform_system_shutdown(sbi_platform_ptr(scratch), type);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user