Skip to content

Commit dd809a0

Browse files
Only read DIMMs in A0HP (#2287)
This includes a workaround for oxidecomputer/quartz#434; and has FPGA fixes for oxidecomputer/quartz#437 and oxidecomputer/quartz#435 which resulted in topo not showing the correct number of dimms or the correct information for the dimms. I've cycled this ~100 boots without seeing any dimm training failures so this seems to be reliable. --------- Co-authored-by: Nathanael Huffman <[email protected]>
1 parent 0739044 commit dd809a0

File tree

4 files changed

+44
-7
lines changed

4 files changed

+44
-7
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
FPGA images and collateral are generated from:
2-
[this sha](https://github.com/oxidecomputer/quartz/commit/cc132979ecf494ada44c99d614719d68784a0d49)
3-
[release](https://api.github.com/repos/oxidecomputer/quartz/releases/259632098)
2+
[this sha](https://github.com/oxidecomputer/quartz/commit/aa85c8b6c59f92fdc05537c7e0a9b30c757f11ce)
3+
[release](https://api.github.com/repos/oxidecomputer/quartz/releases/263091469)
2.44 KB
Binary file not shown.

drv/spartan7-loader/cosmo-seq/sequencer_regs.json

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,13 +1147,24 @@
11471147
},
11481148
{
11491149
"type": "field",
1150-
"inst_name": "v0p96_nic_vdd_a0hp",
1150+
"inst_name": "v1p4_nic_a0hp",
11511151
"lsb": 17,
11521152
"msb": 17,
11531153
"reset": null,
11541154
"sw_access": "rw",
11551155
"se_onread": null,
11561156
"se_onwrite": null,
1157+
"desc": "NIC v1p4_nic_a0hp (discrete pg, enable cascade from nic 5V). Note: mirrors enable on HCV A boards, actual pin readback on HCV B and newer boards"
1158+
},
1159+
{
1160+
"type": "field",
1161+
"inst_name": "v0p96_nic_vdd_a0hp",
1162+
"lsb": 18,
1163+
"msb": 18,
1164+
"reset": null,
1165+
"sw_access": "rw",
1166+
"se_onread": null,
1167+
"se_onwrite": null,
11571168
"desc": "NIC v0p96_nic_vdd_a0hp (discrete pg, enable cascade from nic 5V)"
11581169
}
11591170
]
@@ -1354,13 +1365,24 @@
13541365
},
13551366
{
13561367
"type": "field",
1357-
"inst_name": "v0p96_nic_vdd_a0hp",
1368+
"inst_name": "v1p4_nic_a0hp",
13581369
"lsb": 17,
13591370
"msb": 17,
13601371
"reset": null,
13611372
"sw_access": "r",
13621373
"se_onread": null,
13631374
"se_onwrite": null,
1375+
"desc": "NIC v1p4_nic_a0hp (discrete pg, enable cascade from nic 5V). Note: mirrors enable on HCV A boards, actual pin readback on HCV B and newer boards"
1376+
},
1377+
{
1378+
"type": "field",
1379+
"inst_name": "v0p96_nic_vdd_a0hp",
1380+
"lsb": 18,
1381+
"msb": 18,
1382+
"reset": null,
1383+
"sw_access": "r",
1384+
"se_onread": null,
1385+
"se_onwrite": null,
13641386
"desc": "NIC v0p96_nic_vdd_a0hp (discrete pg, enable cascade from nic 5V)"
13651387
}
13661388
]
@@ -1561,13 +1583,24 @@
15611583
},
15621584
{
15631585
"type": "field",
1564-
"inst_name": "v0p96_nic_vdd_a0hp",
1586+
"inst_name": "v1p4_nic_a0hp",
15651587
"lsb": 17,
15661588
"msb": 17,
15671589
"reset": null,
15681590
"sw_access": "rw",
15691591
"se_onread": null,
15701592
"se_onwrite": null,
1593+
"desc": "NIC v1p4_nic_a0hp (discrete pg, enable cascade from nic 5V). Note: mirrors enable on HCV A boards, actual pin readback on HCV B and newer boards"
1594+
},
1595+
{
1596+
"type": "field",
1597+
"inst_name": "v0p96_nic_vdd_a0hp",
1598+
"lsb": 18,
1599+
"msb": 18,
1600+
"reset": null,
1601+
"sw_access": "rw",
1602+
"se_onread": null,
1603+
"se_onwrite": null,
15711604
"desc": "NIC v0p96_nic_vdd_a0hp (discrete pg, enable cascade from nic 5V)"
15721605
}
15731606
]

task/cosmo-spd/src/main.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,16 @@ impl ServerImpl {
8585
// This laborious list is intended to ensure that new power states
8686
// have to be added explicitly here.
8787
match PowerState::from_u32(self.jefe.get_state()) {
88-
Some(PowerState::A0) | Some(PowerState::A0PlusHP) => {
88+
// DIMMS are powered in A0, but we don't want to read them while the
89+
// PSP is also reading them, because we can get in fights with its
90+
// DIMM training (see quartz#434)
91+
Some(PowerState::A0PlusHP) => {
8992
if !self.active {
9093
self.activate()
9194
}
9295
}
93-
Some(PowerState::A2)
96+
Some(PowerState::A0)
97+
| Some(PowerState::A2)
9498
| Some(PowerState::A2PlusFans)
9599
| Some(PowerState::A0Reset)
96100
| Some(PowerState::A0Thermtrip)

0 commit comments

Comments
 (0)