Date: Mon, 26 Oct 2020 19:06:30 +0000 (UTC) From: Mitchell Horne <mhorne@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r367067 - in head/sys/riscv: include riscv Message-ID: <202010261906.09QJ6UR3074557@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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@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,
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202010261906.09QJ6UR3074557>