oxidecomputer / oxidecomputer/quartz

cosmo: Want FPGA MAPO based on DDR5 PCAMP

Open
#405 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
VHDL
Stars
22
Forks
2
Avg merge
9h 38m
Merged PRs (30d)
1

Description

DDR5 RDIMMs have the PCAMP port that is connected up to the FPGA. The CAMP port is used to describe things like the Fail_n and PWR_GOOD configuration. The default at startup for our PMICs is that this is configured to operate and that if there is a failure, the VRs will be disabled and we will be notified by the pin driving low.

When this occurs, we should treat this as a MAPO event. This represents a failure of one of the rails which means that we're not going to be able operating and this should be acted upon as a similar way to other power failures in this space. The host cannot continue operating in this world. There's no way we will be able to recover losing 1/12th of memory.

As the number of DIMMs that we should watch is variable and DDR5 DIMM presence is indicated based upon SPD communication, we'll need a way to tell the sequencer which DIMMs to look at, probably through some mask register. Due to issues in Rev 1 of Cosmo, we can't talk to SPD without the SP5 group B supplies up, so we'll probably want to put an interlock into place so we don't advance until that's been updated.

If a failure occurs, we can safely kill the bulk management power rail. In general the I3C and related bits are supposed to stay powered based on Vin_mgmt, which should operate without the 12V bulk rail powered.

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 by tracing the Cosmo sequencer and the existing power-failure handling described in the issue. Determine how SPD communication, the SP5 group B supply interlock, the DIMM mask register, and PCAMP failure inputs should interact. Done means variable DIMM monitoring triggers a MAPO response while preserving Vin_mgmt as specified.

Written by the indexing model from the issue text.

Assessment

Domain
embedded-iot
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.