[Skiboot-stable] [PATCH] mowgli: Limit slot1 to Gen3 by default

Lulu Su Lulu_Su at wistron.com
Thu Oct 29 22:23:38 AEDT 2020


From: LuluTHSu <Lulu_Su at wistron.com>

Refer to the spec. of mowgli, limit the slot to Gen3 speed.
For mowgli platform spec.

Cc: skiboot-stable at lists.ozlabs.org
Signed-off-by: LuluTHSu <Lulu_Su at wistron.com>
---
 hw/phb4.c                 | 21 +++++++++++++++++++++
 include/phb4.h            |  1 +
 platforms/astbmc/mowgli.c | 16 ++++++++++++++++
 3 files changed, 38 insertions(+)

diff --git a/hw/phb4.c b/hw/phb4.c
index 17a233f..de10bb0 100644
--- a/hw/phb4.c
+++ b/hw/phb4.c
@@ -2991,6 +2991,27 @@ static unsigned int phb4_get_max_link_speed(struct phb4 *p, struct dt_node *np)
 	return max_link_speed;
 }
 
+/*
+ * Has the same effect as the ibm,max-link-speed property.
+ * i.e. sets the default link speed, while allowing NVRAM
+ * overrides, etc to still take effect.
+ */
+void phb4_set_dt_max_link_speed(struct phb4 *p, int new_max)
+{
+	uint64_t scr;
+	int max;
+
+	/* take into account nvram settings, etc */
+	if (pcie_max_link_speed) 
+		max = pcie_max_link_speed;
+	else 
+		max = new_max;
+	
+	scr = phb4_read_reg(p, PHB_PCIE_SCR);
+	scr = SETFIELD(PHB_PCIE_SCR_MAXLINKSPEED, scr, max);
+	phb4_write_reg(p, PHB_PCIE_SCR, scr);
+}
+
 static void phb4_assert_perst(struct pci_slot *slot, bool assert)
 {
 	struct phb4 *p = phb_to_phb4(slot->phb);
diff --git a/include/phb4.h b/include/phb4.h
index abba2d9..47a46b7 100644
--- a/include/phb4.h
+++ b/include/phb4.h
@@ -259,4 +259,5 @@ static inline int phb4_get_opal_id(unsigned int chip_id, unsigned int index)
 
 void phb4_pec2_dma_engine_realloc(struct phb4 *p);
 
+void phb4_set_dt_max_link_speed(struct phb4 *p, int new_max);
 #endif /* __PHB4_H */
diff --git a/platforms/astbmc/mowgli.c b/platforms/astbmc/mowgli.c
index 9bfe7a4..0246bff 100644
--- a/platforms/astbmc/mowgli.c
+++ b/platforms/astbmc/mowgli.c
@@ -12,6 +12,8 @@
 #include <psi.h>
 #include <npu-regs.h>
 #include <secvar.h>
+#include <pci.h>
+#include <phb4.h>
 
 #include "astbmc.h"
 
@@ -71,6 +73,19 @@ static int mowgli_secvar_init(void)
 	return secvar_main(secboot_tpm_driver, edk2_compatible_v1);
 }
 
+/*
+ * Limit PHB0/(pec0) to gen3 speeds.
+ */
+static void mowgli_setup_phb(struct phb *phb, unsigned int __unused index)
+{
+	struct phb4 *p = phb_to_phb4(phb);
+
+ 	if (p->pec == 0) {
+		phb4_set_dt_max_link_speed(p, 3);
+		prlog(PR_DEBUG, "Mowgli: Force the PHB%d Speed to Gen3.\n", p->pec);
+	} 
+}
+
 DECLARE_PLATFORM(mowgli) = {
 	.name			= "Mowgli",
 	.probe			= mowgli_probe,
@@ -80,6 +95,7 @@ DECLARE_PLATFORM(mowgli) = {
 	.bmc			= &bmc_plat_ast2500_openbmc,
 	.pci_get_slot_info	= slot_table_get_slot_info,
 	.pci_probe_complete	= check_all_slot_table,
+	.pci_setup_phb 		= mowgli_setup_phb,
 	.cec_power_down         = astbmc_ipmi_power_down,
 	.cec_reboot             = astbmc_ipmi_reboot,
 	.elog_commit		= ipmi_elog_commit,
-- 
2.7.4


---------------------------------------------------------------------------------------------------------------------------------------------------------------
This email contains confidential or legally privileged information and is for the sole use of its intended recipient. 
Any unauthorized review, use, copying or distribution of this email or the content of this email is strictly prohibited.
If you are not the intended recipient, you may reply to the sender and should delete this e-mail immediately.
---------------------------------------------------------------------------------------------------------------------------------------------------------------


More information about the Skiboot-stable mailing list