sb-config: Fix block register index calculation. Block register indexes are wrongly calculated because of hashmap hash is not ordered. To correctly calculate offset for block registers use eeprom_layout_get_block_register_offset(). BUG=None TEST=None Change-Id: Icd83a306665be635adce8fb40575168784fa3e06 Reviewed-on: https://chrome-internal-review.googlesource.com/c/chromeos/third_party/dolos/+/7108884 Reviewed-by: Udaya Kiran Ammu <udaykiran@google.com> Tested-by: Udaya Kiran Ammu <udaykiran@google.com> Commit-Queue: Udaya Kiran Ammu <udaykiran@google.com>
diff --git a/sb-config/src/eeprom.rs b/sb-config/src/eeprom.rs index aea3f6e..c3e1890 100644 --- a/sb-config/src/eeprom.rs +++ b/sb-config/src/eeprom.rs
@@ -245,15 +245,14 @@ reserved_2: std::array::from_fn(|_| Default::default()), reserved_3: std::array::from_fn(|_| Default::default()), }; - let mut block_reg_index = 0; for (i, sb_reg) in sb_config.registers.iter() { match &sb_reg.value { BlockRegister(v) => { + let block_reg_index = eeprom_layout_get_block_register_offset(*i); for (j, value) in v.iter().enumerate() { r.block_registers[block_reg_index].data[j] = *value; } r.block_registers[block_reg_index].length = v.len() as u8; - block_reg_index += 1; } WordRegister(v) => { r.word_registers[*i as usize] = eeprom_layout::sb_word_register {