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-head mailing list