Why SBI runtime is specified to provide services that can be provided in S-mode?

In addition to the portability reasons described above, the console output or sbi_set_time is present due to historical reasons.

sbi_set_time was present to program the mtiemcmp which was memory mapped register available in M-mode. That was the only

way to program a timer earlier. The sstc extension was ratified last year. Hence, the latest linux kernel or KVM guests will directly

program the timer using [v]stimecmp if the platform supports it.

The console output extension exists for easier debugging early in the product cycle where a proper uart may not be ready

or a hypervisor don’t have a uart emulation available. That’s why, its being replaced with DBCN console extension now.

You can find more details here

Read more here: Source link