Cosmo's thermal loop does not consider DIMM temperatures
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- rust
- Domain
- embedded-iot
Research direction
Start with task/thermal/src/bsp/cosmo_ab.rs and the existing DIMM temperature handling in task/cosmo-spd/src/main.rs. Read the linked historical issues and pull requests before choosing between thermal inputs and dynamic_inputs, including the required polling and IPC behavior. Done means Cosmo’s thermal loop safely accounts for the available DIMM sensor data without interfering with SPD polling.
Written by the indexing model from the issue text.
Description
There is still a todo in cosmo's thermal BSP that notes that we do not consider the DIMM temperatures as part of our control loop.
There are a few historical reasons why this is the case, including some limitations in earlier hardware revisions that required a bit more care when polling DIMM temperatures on the SPD bus:
- https://github.com/oxidecomputer/quartz/issues/400
- https://github.com/oxidecomputer/quartz/issues/434
- https://github.com/oxidecomputer/hubris/issues/2223
- https://github.com/oxidecomputer/hubris/pull/2287
- https://github.com/oxidecomputer/hubris/pull/2368
However, these days, cosmo-spd does measure these temperature sensors at appropriate times, and posts them to the sensor task already:
However, this data is not currently considered by Cosmo's thermal loop.
There are two ways we could resolve this:
- Add the DIMM sensor definitions to the
inputsof cosmo, for the thermal loop to poll the sensors directly over I2C - Add the DIMM sensor definitions to the
dynamic_inputsof cosmo, for the thermal loop to poll for data from thesensortask
For solution 1, we would need to ensure that we don't interfere with the work that the spd task is doing, and that we only poll at appropriate times.
For solution 2, we would need cosmo-spd to also send IPC commands to thermal to enable/disable the dynamic inputs when entering/exiting states where the DIMM temperature data would be obtained. One challenge here is that SPD has a lower priority number (more important) than thermal, which means it cannot directly send IPC requests to the higher priority number (less important) thermal task. We could implement a pingback pattern for this though.
Chatting with @nathanaelhuffman, we believe that it's unlikely that the DIMMs would be overtemp when the CPU is not, though it would likely be good to eventually resolve this.
As the data is available in the sensors task, we may consider observing this in-situ using the MGS link to observe the sensor values, if we can find a suitable system we can use for testing, to ensure that the DIMMs are not operating hotter than we expect. This would help guide priority decisions for this.
- Dominant language
- Rust
- Stars
- 3.6k
- Forks
- 239
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 23
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from oxidecomputer/hubris
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
oxidecomputer/hubris#2593 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
oxidecomputer/hubris#2577 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
oxidecomputer/hubris#2699 ·
-
⚠️ ereport control-plane-agent root-of-trust service processor
Difficulty 5/5 Over a week Newbie friendliness 25/100
oxidecomputer/hubris#2698 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
oxidecomputer/hubris#2689 ·
All issues in oxidecomputer/hubris
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
kwakseongjae/auto-hwp#319 ·
-
area:cli bug filter-quality good first issue priority:medium
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
bevyengine/bevy#25861 ·
-
comp-datalake
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
ClickHouse/ClickHouse#121222 ·
-
enhancement remote
Difficulty 2/5 1-3 hours Newbie friendliness 68/100