svn commit: r367067 - in head/sys/riscv: include riscv
Mitchell Horne
mhorne at FreeBSD.org
Mon Oct 26 19:06:31 UTC 2020
Author: mhorne
Date: Mon Oct 26 19:06:30 2020
New Revision: 367067
URL: https://svnweb.freebsd.org/changeset/base/367067
Log:
riscv: remove sbi_clear_ipi()
S-mode software has write access to the SIP.SSIP bit, so instead of
making a second round-trip through the SBI we can clear it ourselves.
The SBI spec has deprecated this function for this exactly this reason.
Submitted by: Danjel Q. <danq1222 at gmail.com
Reviewed by: kp
Differential Revision: https://reviews.freebsd.org/D26952
Modified:
head/sys/riscv/include/sbi.h
head/sys/riscv/riscv/mp_machdep.c
head/sys/riscv/riscv/sbi.c
Modified: head/sys/riscv/include/sbi.h
==============================================================================
--- head/sys/riscv/include/sbi.h Mon Oct 26 18:03:50 2020 (r367066)
+++ head/sys/riscv/include/sbi.h Mon Oct 26 19:06:30 2020 (r367067)
@@ -197,13 +197,6 @@ sbi_shutdown(void)
}
static __inline void
-sbi_clear_ipi(void)
-{
-
- (void)SBI_CALL0(SBI_CLEAR_IPI, 0);
-}
-
-static __inline void
sbi_send_ipi(const unsigned long *hart_mask)
{
Modified: head/sys/riscv/riscv/mp_machdep.c
==============================================================================
--- head/sys/riscv/riscv/mp_machdep.c Mon Oct 26 18:03:50 2020 (r367066)
+++ head/sys/riscv/riscv/mp_machdep.c Mon Oct 26 19:06:30 2020 (r367067)
@@ -317,7 +317,7 @@ ipi_handler(void *arg)
u_int cpu, ipi;
int bit;
- sbi_clear_ipi();
+ csr_clear(sip, SIP_SSIP);
cpu = PCPU_GET(cpuid);
Modified: head/sys/riscv/riscv/sbi.c
==============================================================================
--- head/sys/riscv/riscv/sbi.c Mon Oct 26 18:03:50 2020 (r367066)
+++ head/sys/riscv/riscv/sbi.c Mon Oct 26 19:06:30 2020 (r367067)
@@ -183,8 +183,6 @@ sbi_init(void)
("SBI doesn't implement sbi_console_putchar()"));
KASSERT(sbi_probe_extension(SBI_CONSOLE_GETCHAR) != 0,
("SBI doesn't implement sbi_console_getchar()"));
- KASSERT(sbi_probe_extension(SBI_CLEAR_IPI) != 0,
- ("SBI doesn't implement sbi_clear_ipi()"));
KASSERT(sbi_probe_extension(SBI_SEND_IPI) != 0,
("SBI doesn't implement sbi_send_ipi()"));
KASSERT(sbi_probe_extension(SBI_REMOTE_FENCE_I) != 0,
More information about the svn-src-all
mailing list