[Skiboot] [PATCH 1/2] mowgli: Limit slot1 to Gen3 by default

Frederic Barrat fbarrat at linux.ibm.com
Tue Nov 10 03:36:05 AEDT 2020



On 30/10/2020 03:22, Lulu Su wrote:
> 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);
> +}
> +


This patch has already been merged, but I think there's a problem here. 
This should work to limit the link speed at boot, when the link is 
trained for the first time. However, since we're writing directly in the 
register, skiboot won't memorize the limit and on the next link 
reset/retrain (due to a EEH recovery or PCI hotplug for example), then 
that is lost. And mowgli_setup_phb() won't be called either on that path.

It seems there's an easier way of handling it: phb4_get_max_link_speed() 
will honor any limit found in the "ibm,max-link-speed" property of the 
PHB in the device tree. So it should be enough to just set/add that 
property for PHB 0. I'm not sure what control you have on the device 
tree generation on that platform, but worse case, you could add a fixup 
in mowgli.c, for example when probe() is called.

   Fred







More information about the Skiboot mailing list