soc/amd/*: Ensure PSP soft fuse bitmask set properly
Commit e728766f45
("soc/amd/mendocino: Do not load MP2 Firmware when
in RO") added logic to ensure that the MP2 disable soft fuse bit was set
for the RO section, but failed to check if the bit was already set
otherwise (as it is for non-ChromeOS builds). This caused the bit to
appear twice in the PSP_RO_SOFTFUSE_BITS string, and when the string
was converted to a series of numeric values and added together, bit
(n+1) ended up being set instead of bit n.
To mitigate this, use the makefile sort() function to ensure the
PSP_[RO_]SOFTFUSE_BITS string does not contain any duplicates before
the bitmask is calculated. Apply this to all AMD SoC makefiles where
the softfuse bits are added.
TEST=build/boot google/skyrim (frostflow). Use a verbose build (V=1)
to verify that the correct soft fuse value is passed to amdfwtool for
RO and RW_A/B for both ChromeOS and non-ChromeOS builds.
Change-Id: I2e207e20132d44016fbcb986bdfd8e935d8fead5
Signed-off-by: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/78823
Reviewed-by: Eric Lai <ericllai@google.com>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
Reviewed-by: Martin L Roth <gaumless@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Karthik Ramasubramanian <kramasub@google.com>
This commit is contained in:
parent
7d3ababd71
commit
0daefa54eb
|
@ -132,7 +132,7 @@ endif # CONFIG_VBOOT_STARTS_BEFORE_BOOTBLOCK
|
|||
# Soft Fuse type = 0xb - See #55758 (NDA) for bit definitions.
|
||||
set-bit=$(call int-shift-left, 1 $(call _toint,$1))
|
||||
PSP_SOFTFUSE=$(shell A=$(call int-add, \
|
||||
$(foreach bit,$(PSP_SOFTFUSE_BITS),$(call set-bit,$(bit)))); printf "0x%x" $$A)
|
||||
$(foreach bit,$(sort $(PSP_SOFTFUSE_BITS)),$(call set-bit,$(bit)))); printf "0x%x" $$A)
|
||||
|
||||
#
|
||||
# Build the arguments to amdfwtool (order is unimportant). Missing file names
|
||||
|
|
|
@ -74,7 +74,7 @@ PSP_BIOSBIN_DEST=$(shell $(READELF_bootblock) -Wl $(PSP_ELF_FILE) | grep LOAD |
|
|||
# Soft Fuse type = 0xb - See #57299 (NDA) for bit definitions.
|
||||
set-bit=$(call int-shift-left, 1 $(call _toint,$1))
|
||||
PSP_SOFTFUSE=$(shell A=$(call int-add, \
|
||||
$(foreach bit,$(PSP_SOFTFUSE_BITS),$(call set-bit,$(bit)))); printf "0x%x" $$A)
|
||||
$(foreach bit,$(sort $(PSP_SOFTFUSE_BITS)),$(call set-bit,$(bit)))); printf "0x%x" $$A)
|
||||
|
||||
#
|
||||
# Build the arguments to amdfwtool (order is unimportant). Missing file names
|
||||
|
|
|
@ -148,7 +148,7 @@ endif # CONFIG_SEPARATE_SIGNED_PSPFW
|
|||
# Soft Fuse type = 0xb - See #55758 (NDA) for bit definitions.
|
||||
set-bit=$(call int-shift-left, 1 $(call _toint,$1))
|
||||
PSP_SOFTFUSE=$(shell A=$(call int-add, \
|
||||
$(foreach bit,$(PSP_SOFTFUSE_BITS),$(call set-bit,$(bit)))); printf "0x%x" $$A)
|
||||
$(foreach bit,$(sort $(PSP_SOFTFUSE_BITS)),$(call set-bit,$(bit)))); printf "0x%x" $$A)
|
||||
|
||||
#
|
||||
# Build the arguments to amdfwtool (order is unimportant). Missing file names
|
||||
|
|
|
@ -161,9 +161,9 @@ endif # CONFIG_SEPARATE_SIGNED_PSPFW
|
|||
# Soft Fuse type = 0xb - See #55758 (NDA) for bit definitions.
|
||||
set-bit=$(call int-shift-left, 1 $(call _toint,$1))
|
||||
PSP_SOFTFUSE=$(shell A=$(call int-add, \
|
||||
$(foreach bit,$(PSP_SOFTFUSE_BITS),$(call set-bit,$(bit)))); printf "0x%x" $$A)
|
||||
$(foreach bit,$(sort $(PSP_SOFTFUSE_BITS)),$(call set-bit,$(bit)))); printf "0x%x" $$A)
|
||||
PSP_RO_SOFTFUSE=$(shell A=$(call int-add, \
|
||||
$(foreach bit,$(PSP_RO_SOFTFUSE_BITS),$(call set-bit,$(bit)))); printf "0x%x" $$A)
|
||||
$(foreach bit,$(sort $(PSP_RO_SOFTFUSE_BITS)),$(call set-bit,$(bit)))); printf "0x%x" $$A)
|
||||
|
||||
#
|
||||
# Build the arguments to amdfwtool (order is unimportant). Missing file names
|
||||
|
|
|
@ -168,7 +168,7 @@ endif # CONFIG_SEPARATE_SIGNED_PSPFW
|
|||
# Soft Fuse type = 0xb - See #55758 (NDA) for bit definitions.
|
||||
set-bit=$(call int-shift-left, 1 $(call _toint,$1))
|
||||
PSP_SOFTFUSE=$(shell A=$(call int-add, \
|
||||
$(foreach bit,$(PSP_SOFTFUSE_BITS),$(call set-bit,$(bit)))); printf "0x%x" $$A)
|
||||
$(foreach bit,$(sort $(PSP_SOFTFUSE_BITS)),$(call set-bit,$(bit)))); printf "0x%x" $$A)
|
||||
|
||||
#
|
||||
# Build the arguments to amdfwtool (order is unimportant). Missing file names
|
||||
|
|
|
@ -138,7 +138,7 @@ endif # CONFIG_VBOOT_STARTS_BEFORE_BOOTBLOCK
|
|||
# Soft Fuse type = 0xb - See #55758 (NDA) for bit definitions.
|
||||
set-bit=$(call int-shift-left, 1 $(call _toint,$1))
|
||||
PSP_SOFTFUSE=$(shell A=$(call int-add, \
|
||||
$(foreach bit,$(PSP_SOFTFUSE_BITS),$(call set-bit,$(bit)))); printf "0x%x" $$A)
|
||||
$(foreach bit,$(sort $(PSP_SOFTFUSE_BITS)),$(call set-bit,$(bit)))); printf "0x%x" $$A)
|
||||
|
||||
#
|
||||
# Build the arguments to amdfwtool (order is unimportant). Missing file names
|
||||
|
|
Loading…
Reference in New Issue