[Skiboot] [PATCH RFC 2/2] phb4: Use ASB for read/writes to PHB registers on resets

Benjamin Herrenschmidt benh at kernel.crashing.org
Wed Oct 4 00:50:24 AEDT 2017


On Mon, 2017-10-02 at 19:23 -0300, Guilherme G. Piccoli wrote:
> If we are performing a PHB reset and coming for a bad situation,
> (and PHB is fenced), we fail because we don't use ASB by default
> in the phb4_init_hw().
> 
> This patch makes use of this trick when we are resetting PHBs
> to workaround possible problems in PHB (aka it might be fenced)
> and at least try to perform the complete initialization.
> 
> This proved useful in kdump kernel boot on POWER9 (wspoon).

We should never be calling init_hw while fenced. If we do then the bug
is elsewhere. The reset code should be checking for fences already and
clearing them if needed.
> 
> Signed-off-by: Guilherme G. Piccoli <gpiccoli at linux.vnet.ibm.com>
> ---
> 
> Tested on wspoon DD 2.01, worked fine. But...after kdump is complete,
> system does not reboot automatically. I'll investigate too, could be
> another problem or (probably) something due to this change.
> 
> I thought in sending it anyway, as-is, in order to get feedback
> and stop my investigation in this direction if it does not worth.
> Thanks in advance!
> 
>  hw/phb4.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/hw/phb4.c b/hw/phb4.c
> index 99902d3a..12312a5c 100644
> --- a/hw/phb4.c
> +++ b/hw/phb4.c
> @@ -4312,6 +4312,10 @@ static void phb4_init_hw(struct phb4 *p, bool first_init)
>  
>  	PHBDBG(p, "Initializing PHB4...\n");
>  
> +	/* Use ASB to try initialize even if the PHB is fenced. */
> +	if (!first_init)
> +		p->flags |= PHB4_CFG_USE_ASB;
> +
>  	/* Init_1 - Sync reset
>  	 *
>  	 * At this point we assume the PHB has already been reset.
> @@ -4387,6 +4391,9 @@ static void phb4_init_hw(struct phb4 *p, bool first_init)
>  
>  	phb4_write_reg(p, PHB_CTRLR, val);
>  
> +        if (!first_init)
> +                p->flags &= ~PHB4_CFG_USE_ASB;
> +
>  	/* Init_18..41 - Architected IODA3 inits */
>  	phb4_init_ioda3(p);
>  


More information about the Skiboot mailing list