diff options
author | Anup Patel <anup.patel@wdc.com> | 2020-01-03 09:39:10 +0530 |
---|---|---|
committer | Anup Patel <anup.patel@wdc.com> | 2020-01-07 12:11:02 +0530 |
commit | b325f6baefeafcee169e5f8a529882fdc0f47dc5 (patch) | |
tree | e721c583dd4451c3152152ca1be8b59761dc2c5a /lib/sbi/sbi_ipi.c | |
parent | 6469ed101cb3c036cce1ead0d64160a7315f72af (diff) |
lib: Add ipi exit API
We add sbi_ipi_exit() API for exit path handling in sbi_exit()
implementation.
Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Atish Patra <atish.patra@wdc.com>
Diffstat (limited to 'lib/sbi/sbi_ipi.c')
-rw-r--r-- | lib/sbi/sbi_ipi.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/sbi/sbi_ipi.c b/lib/sbi/sbi_ipi.c index c235927..f58349e 100644 --- a/lib/sbi/sbi_ipi.c +++ b/lib/sbi/sbi_ipi.c @@ -160,8 +160,25 @@ int sbi_ipi_init(struct sbi_scratch *scratch, bool cold_boot) if (ret) return ret; + /* Platform init */ + ret = sbi_platform_ipi_init(sbi_platform_ptr(scratch), cold_boot); + if (ret) + return ret; + /* Enable software interrupts */ csr_set(CSR_MIE, MIP_MSIP); - return sbi_platform_ipi_init(sbi_platform_ptr(scratch), cold_boot); + return 0; +} + +void sbi_ipi_exit(struct sbi_scratch *scratch) +{ + /* Disable software interrupts */ + csr_clear(CSR_MIE, MIP_MSIP); + + /* Process pending IPIs */ + sbi_ipi_process(scratch); + + /* Platform exit */ + sbi_platform_ipi_exit(sbi_platform_ptr(scratch)); } |