[PATCH v3 0/3] Add support for Supervisor Software Events extension

Atish Kumar Patra atishp at rivosinc.com
Fri Apr 5 10:00:17 PDT 2024


On Fri, Apr 5, 2024 at 9:58 AM Samuel Holland <samuel.holland at sifive.com> wrote:
>
> Hi Anup,
>
> On 2024-04-05 6:46 AM, Anup Patel wrote:
> > On Thu, Mar 21, 2024 at 9:27 PM Clément Léger <cleger at rivosinc.com> wrote:
> >>
> >> The SBI Supervisor Software Events (SSE) extensions provides a mechanism
> >> to inject software events from an SBI implementation to supervisor
> >> software such that it preempts all other supervisor level traps and
> >> interrupts [1]. This series implements the V3 version of the spec.
> >>
> >> Various events are defined and can be send asynchronously to supervisor
> >> software (RAS, PMU, DEBUG, Asynchronous page fault) from SBI as well
> >> as platform specific events. Events can be either local (per-hart) or
> >> global. Events can be nested on top of each other based on priority and
> >> can interrupt the supervisor mode at any time.
> >>
> >> This implementation can be tested using kvm-unit-tests [2] with the
> >> following commands:
> >>
> >> Build kvm-unit-tests:
> >>
> >> $ git clone https://github.com/clementleger/kvm-unit-tests.git
> >> $ cd kvm-unit-tests
> >> $ git switch dev/cleger/sse
> >> $ ./configure --arch=riscv64 --cross-prefix=$CROSS_COMPILE
> >> $ make
> >>
> >> Run using Qemu:
> >>
> >> $ ./qemu-system-riscv64 \
> >>         -smp 4 \
> >>         -M virt \
> >>         -cpu rv64 \
> >>         -nographic \
> >>         -serial mon:stdio \
> >>         -bios <opensbi>/build/platform/generic/firmware/fw_jump.bin \
> >>         -kernel <kvm-unit-tests>/riscv/sbi_sse.flat
> >>
> >> An implementation of a SSE "client" in linux is available [3].
> >> This series can be found on github [5].
> >>
> >> Link: https://lists.riscv.org/g/tech-prs/message/798 [1]
> >> Link: https://github.com/clementleger/kvm-unit-tests/tree/dev/cleger/sse [2]
> >> Link: https://github.com/rivosinc/linux/tree/dev/cleger/sse [3]
> >> Link: http://lists.infradead.org/pipermail/opensbi/2024-March/006670.html [4]
> >> Link: https://github.com/rivosinc/opensbi/tree/dev/cleger/sse_v3 [5]
> >>
> >> ---
> >>
> >> Changes from v3:
> >>  - Changes to follow v3 SSE specification
> >>  - Use masks instead of struct with bitfields for status
> >>  - Rework locking
> >>  - SSE pending event processing is now done upon returning to previous
> >>    mode
> >>
> >> v2: http://lists.infradead.org/pipermail/opensbi/2024-January/006223.html
> >>
> >> Changes from v2:
> >>  - Move local/global event count initialization out of sse_global_init()
> >>  - Remove PMU_IRQ_CLEAR SBI call and clear IRQ on SSE event completion
> >>  - Change SBI_ERR_X to SBI_EXX defines
> >>  - Add guards for invalid __riscv_xlen values
> >>  - Update parameters passing (a6, a7)
> >>
> >> v1: http://lists.infradead.org/pipermail/opensbi/2023-November/006015.html
> >>
> >> Changes from v1:
> >>  - Implemented SSE Spec v2
> >>  - Change event state checking (Xiang W)
> >>
> >> Clément Léger (3):
> >>   lib: sbi: Add support for Supervisor Software Events extension
> >>   lib: sbi: Implement SBI SSE extension
> >>   lib: sbi: Add SSE support for PMU events
> >
> > Reviewed-by: Anup Patel <anup at brainfault.org>
> >
> > Applied this series to the riscv/opensbi repo.
>
> I don't think this series is ready to apply yet, considering that the extension
> specification has not even been merged. Or is the master branch not expected to
> be forward-compatible with the SBI spec?
>

I have merged it locally and was supposed to push it this week. I will
push the changes today.

> Regards,
> Samuel
>
> > Thanks,
> > Anup
> >
> >>
> >>  include/sbi/sbi_ecall_interface.h |   79 +-
> >>  include/sbi/sbi_error.h           |    2 +
> >>  include/sbi/sbi_pmu.h             |    3 +
> >>  include/sbi/sbi_sse.h             |   94 +++
> >>  lib/sbi/Kconfig                   |    4 +
> >>  lib/sbi/objects.mk                |    4 +
> >>  lib/sbi/sbi_ecall_sse.c           |   57 ++
> >>  lib/sbi/sbi_init.c                |   13 +
> >>  lib/sbi/sbi_pmu.c                 |   51 ++
> >>  lib/sbi/sbi_sse.c                 | 1131 +++++++++++++++++++++++++++++
> >>  lib/sbi/sbi_trap.c                |   11 +
> >>  11 files changed, 1448 insertions(+), 1 deletion(-)
> >>  create mode 100644 include/sbi/sbi_sse.h
> >>  create mode 100644 lib/sbi/sbi_ecall_sse.c
> >>  create mode 100644 lib/sbi/sbi_sse.c
> >>
> >> --
> >> 2.43.0
> >>
> >>
> >> --
> >> opensbi mailing list
> >> opensbi at lists.infradead.org
> >> http://lists.infradead.org/mailman/listinfo/opensbi
> >
>



More information about the opensbi mailing list