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 flashing 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> Reviewed-on: https://review.coreboot.org/c/coreboot/+/25443 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
parent
7e4ad26b95
commit
b3e504c310
|
@ -5,6 +5,8 @@
|
||||||
#include <hsio.h>
|
#include <hsio.h>
|
||||||
#include <gpio_defs.h>
|
#include <gpio_defs.h>
|
||||||
#include <soc/fiamux.h>
|
#include <soc/fiamux.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <fast_spi_def.h>
|
||||||
|
|
||||||
#ifdef __RAMSTAGE__
|
#ifdef __RAMSTAGE__
|
||||||
static void update_hsio_info_for_m2_slots(size_t num_of_entry, BL_HSIO_INFORMATION *config)
|
static void update_hsio_info_for_m2_slots(size_t num_of_entry, BL_HSIO_INFORMATION *config)
|
||||||
|
@ -12,6 +14,14 @@ static void update_hsio_info_for_m2_slots(size_t num_of_entry, BL_HSIO_INFORMATI
|
||||||
uint32_t reg32;
|
uint32_t reg32;
|
||||||
bool m2a_pcie, m2b_pcie;
|
bool m2a_pcie, m2b_pcie;
|
||||||
uint8_t entry;
|
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 */
|
/* Detects modules type */
|
||||||
// _GPIO_4 : LFFF: M2A_CFGn : M2A_SATAn : 0 SATA, 1 PCIe
|
// _GPIO_4 : LFFF: M2A_CFGn : M2A_SATAn : 0 SATA, 1 PCIe
|
||||||
|
@ -29,7 +39,12 @@ static void update_hsio_info_for_m2_slots(size_t num_of_entry, BL_HSIO_INFORMATI
|
||||||
// HSIO default config is for PCIe, only update for SATA
|
// HSIO default config is for PCIe, only update for SATA
|
||||||
// (also secondary PCIe lines are already set depending on SKU)
|
// (also secondary PCIe lines are already set depending on SKU)
|
||||||
for (entry = 0; entry < num_of_entry; entry++) {
|
for (entry = 0; entry < num_of_entry; entry++) {
|
||||||
BL_ME_FIA_MUX_CONFIG *mux_config = &(config[entry].FiaConfig.MuxConfiguration);
|
/* 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 =
|
BL_ME_FIA_SATA_CONFIG *sata_config =
|
||||||
&(config[entry].FiaConfig.SataLaneConfiguration);
|
&(config[entry].FiaConfig.SataLaneConfiguration);
|
||||||
if (!m2a_pcie) {
|
if (!m2a_pcie) {
|
||||||
|
@ -46,6 +61,25 @@ static void update_hsio_info_for_m2_slots(size_t num_of_entry, BL_HSIO_INFORMATI
|
||||||
sata_config->BL_MeFiaSataLaneSataSel.Lane12SataSel =
|
sata_config->BL_MeFiaSataLaneSataSel.Lane12SataSel =
|
||||||
BL_ME_FIA_SATA_CONTROLLER_LANE_ASSIGNED;
|
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
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue