Julien Viard de Galbert has uploaded this change for review.

View Change

mb/scaleway/tagada: Don't change FIAMUX when Security Override is set

This will not enable M.2 SATA drive if the ME config was lost
(For instance after flashin a full flash factory image)

This is required so that the system can boot without FIA MUX error
during flash update procedure.

Change-Id: I55a8bcdc30bc67af2d3e9ccb8844eac599727108
Signed-off-by: Julien Viard de Galbert <jviarddegalbert@online.net>
---
M src/mainboard/scaleway/tagada/hsio.c
1 file changed, 33 insertions(+), 0 deletions(-)

git pull ssh://review.coreboot.org:29418/coreboot refs/changes/43/25443/1
diff --git a/src/mainboard/scaleway/tagada/hsio.c b/src/mainboard/scaleway/tagada/hsio.c
index dca80ac..b48ef11 100644
--- a/src/mainboard/scaleway/tagada/hsio.c
+++ b/src/mainboard/scaleway/tagada/hsio.c
@@ -19,6 +19,8 @@
#include <hsio.h>
#include <gpio_defs.h>
#include <soc/fiamux.h>
+#include <string.h>
+#include <fast_spi_def.h>

#ifdef __RAMSTAGE__
static void update_hsio_info_for_m2_slots(size_t num_of_entry,
@@ -27,6 +29,14 @@
uint32_t reg32;
bool m2a_pcie, m2b_pcie;
uint8_t entry;
+ BL_FIA_MUX_CONFIG_HOB *fiamux_hob_data = get_fiamux_hob_data();
+ uint16_t supported_hsio_lanes;
+ void *spibar = fast_spi_get_bar();
+ uint32_t hsfs;
+
+ /* Configure FIA MUX PCD */
+ supported_hsio_lanes =
+ (uint16_t)fiamux_hob_data->FiaMuxConfig.SkuNumLanesAllowed;

/* Detects modules type */
// _GPIO_4 : LFFF: M2A_CFGn : M2A_SATAn : 0 SATA, 1 PCIe
@@ -45,6 +55,10 @@
// HSIO default config is for PCIe, only update for SATA
// (also secondary PCIe lines are already set depending on SKU)
for (entry = 0; entry < num_of_entry; entry++) {
+ /* only update the active config */
+ if (config[entry].NumLanesSupported != supported_hsio_lanes)
+ continue;
+ BL_ME_FIA_CONFIG *fia_config = &(config[entry].FiaConfig);
BL_ME_FIA_MUX_CONFIG *mux_config =
&(config[entry].FiaConfig.MuxConfiguration);
BL_ME_FIA_SATA_CONFIG *sata_config =
@@ -63,6 +77,25 @@
sata_config->BL_MeFiaSataLaneSataSel.Lane12SataSel =
BL_ME_FIA_SATA_CONTROLLER_LANE_ASSIGNED;
}
+
+ /* Check SPIBAR for security override
+ at least one M2 slot is populated with SATA
+ the configuration is different form ME current one */
+ hsfs = read32(spibar + SPIBAR_HSFSTS_CTL);
+ if ((!(hsfs & SPIBAR_HSFSTS_FDOPSS))
+ && (!m2a_pcie || !m2b_pcie)
+ && memcmp(fia_config,
+ &fiamux_hob_data->FiaMuxConfig.FiaMuxConfig,
+ sizeof(BL_ME_FIA_CONFIG))) {
+ /* update configuration to NOT change ME config
+ as it will fail with security override set. */
+ memcpy(fia_config,
+ &fiamux_hob_data->FiaMuxConfig.FiaMuxConfig,
+ sizeof(BL_ME_FIA_CONFIG));
+ printk(BIOS_CRIT, "FLASH SECURITY OVERRIDE SET: "
+ "M2 SATA Slots are not available!\n");
+
+ }
}
}
#endif

To view, visit change 25443. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I55a8bcdc30bc67af2d3e9ccb8844eac599727108
Gerrit-Change-Number: 25443
Gerrit-PatchSet: 1
Gerrit-Owner: Julien Viard de Galbert <jviarddegalbert@online.net>