riscv-software-src / riscv-software-src/opensbi

Why is MTIME M-mode only?

Open
#330 12 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
1.5k
Forks
712
PR merge metrics
No merged PRs in 30d

Description

Since commit 59a08cd7d632bb2394a29956497dfe7829099997, which is part of Split region permissions into M-mode and SU-mode MTIME is M-mode only.

This breaks OSes that read MTIME directly to avoid the overhead of emulated rdtime instructions on hardware that don't have native support for the instruction. The emulated rdtime has huge overhead. MTIME is well defined by the RISC-V standard, so we thought we could rely on it.

Is MTIME off-limits for OS code now, and why? Is that documented somewhere? Could read-only access to the CLINT/MTIME memory region be added back so low overhead timer reads are possible again on all RISC-V platforms?

Please advise how we should proceed.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review commit 59a08cd7d632bb2394a29997dfe7829099997 and the linked discussion about splitting region permissions, then trace the current CLINT/MTIME access policy. Compare it with the RISC-V standard and the reported rdtime overhead; done means the policy is clarified or an agreed read-only access change is implemented and validated.

Written by the indexing model from the issue text.

Assessment

Domain
embedded-iot, operating-systems
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.