lowRISC / lowRISC/opentitan

[reg] Correct HW write behavior for shadow writes

Open
#7,633 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Component:RTL Component:Security Earlgrey-PROD Triaged Priority:P3 Type:FutureRelease
Dominant language
SystemVerilog
Stars
3.6k
Forks
1.1k
Avg merge
2d 22h
Merged PRs (30d)
141

Description

Reference #7632

The basic question is exactly how shadow registers should behave when it is written by hardware.
While we could stick with the two write rule, this potentially complicates the race condition handling when software / hardware collide. It also seems...."weird".

It's not completely clear right now what such a use case would even be. Ie, shadow registers are really meant for scenarios where a multi-bit value is provided from software to hardware, and we want to ensure its effect stays the same. A hardware write "most likely" would be hardware providing some kind of status / data to software. If this value were faulted, in most cases it should not have a backwards effect on hardware, so there isn't a clear need for shadow going HW -> SW.

If the purpose of the HW is really to clear something because an operation has completed, then it doesn't really seem like a two-write approach is right either.

In any case, the above PR disables the shadow / hardware-write case and we will revisit if anyone finds an actual usecase.

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

Start with referenced issue #7632 and the earlier PR mentioned in this issue, which disables shadow writes from hardware. No file or test is named; first establish the intended hardware-write semantics and race behavior, then identify the affected RTL and tests. Done requires an agreed behavior implemented and verified for the relevant shadow-write cases.

Written by the indexing model from the issue text.

Assessment

Domain
embedded-iot, security
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.