util/apcb: Strip SPD manufacturer information
Strip manufacturer information from SPDs before injecting into APCB. This allows more flexibility around changing DRAM modules in the future. BUG=b:162098961 TEST=Boot, dump memory info Signed-off-by: Rob Barnes <robbarnes@google.com> Change-Id: I1bbc81a858f381f62dbd38bb57b3df0e6707d647 Reviewed-on: https://review.coreboot.org/c/coreboot/+/43832 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
parent
7884c22f1f
commit
ce036bd176
|
@ -395,6 +395,7 @@ $(obj)/APCB_%_x1.bin: $$(SPD_SOURCES_DIR)/%.spd.hex \
|
||||||
$(APCB_MAGIC_BLOB) \
|
$(APCB_MAGIC_BLOB) \
|
||||||
$@ \
|
$@ \
|
||||||
--hex \
|
--hex \
|
||||||
|
--strip_manufacturer_information \
|
||||||
--spd_0_0 $< \
|
--spd_0_0 $< \
|
||||||
--board_id_gpio0 $(APCB_BOARD_ID_GPIO0) \
|
--board_id_gpio0 $(APCB_BOARD_ID_GPIO0) \
|
||||||
--board_id_gpio1 $(APCB_BOARD_ID_GPIO1) \
|
--board_id_gpio1 $(APCB_BOARD_ID_GPIO1) \
|
||||||
|
@ -408,6 +409,7 @@ $(obj)/APCB_%_x2.bin: $$(SPD_SOURCES_DIR)/%.spd.hex \
|
||||||
$(APCB_MAGIC_BLOB) \
|
$(APCB_MAGIC_BLOB) \
|
||||||
$@ \
|
$@ \
|
||||||
--hex \
|
--hex \
|
||||||
|
--strip_manufacturer_information \
|
||||||
--spd_0_0 $< \
|
--spd_0_0 $< \
|
||||||
--spd_1_0 $< \
|
--spd_1_0 $< \
|
||||||
--board_id_gpio0 $(APCB_BOARD_ID_GPIO0) \
|
--board_id_gpio0 $(APCB_BOARD_ID_GPIO0) \
|
||||||
|
|
|
@ -58,6 +58,10 @@ def parseargs():
|
||||||
'--hex',
|
'--hex',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help='SPD input file is hex encoded, binary otherwise')
|
help='SPD input file is hex encoded, binary otherwise')
|
||||||
|
parser.add_argument(
|
||||||
|
'--strip_manufacturer_information',
|
||||||
|
action='store_true',
|
||||||
|
help='Strip all manufacturer information from SPD')
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--board_id_gpio0',
|
'--board_id_gpio0',
|
||||||
type=int,
|
type=int,
|
||||||
|
@ -155,6 +159,13 @@ def main():
|
||||||
assert len(spd) == 512, \
|
assert len(spd) == 512, \
|
||||||
"Expected SPD to be 512 bytes, got %d" % len(spd)
|
"Expected SPD to be 512 bytes, got %d" % len(spd)
|
||||||
|
|
||||||
|
if args.strip_manufacturer_information:
|
||||||
|
print("Stripping manufacturer information from SPD")
|
||||||
|
spd = spd[0:320] + b'\x00'*64 + spd[320+64:]
|
||||||
|
|
||||||
|
assert len(spd) == 512, \
|
||||||
|
"Error while stripping SPD manufacurer information"
|
||||||
|
|
||||||
print("Enabling channel %d, dimm %d and injecting SPD" %
|
print("Enabling channel %d, dimm %d and injecting SPD" %
|
||||||
(spd_ssp.ChannelNumber, spd_ssp.DimmNumber))
|
(spd_ssp.ChannelNumber, spd_ssp.DimmNumber))
|
||||||
spd_ssp = spd_ssp._replace(SpdValid=True, DimmPresent=True)
|
spd_ssp = spd_ssp._replace(SpdValid=True, DimmPresent=True)
|
||||||
|
|
Loading…
Reference in New Issue