[Skiboot] [PATCH v2 1/5] xscom: Abstract error recovery registers

Cédric Le Goater clg at kaod.org
Fri Mar 24 00:18:02 AEDT 2017


On 03/23/2017 07:15 AM, Michael Neuling wrote:
> Abstract error recovery registers to get ready for POWER9.

Reviewed-by: Cédric Le Goater <clg at kaod.org>

> 
> Signed-off-by: Michael Neuling <mikey at neuling.org>
> ---
>  hw/xscom.c | 12 +++++++++---
>  1 file changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/hw/xscom.c b/hw/xscom.c
> index d7b8627d8b..dd7aeca65e 100644
> --- a/hw/xscom.c
> +++ b/hw/xscom.c
> @@ -95,22 +95,28 @@ static uint64_t xscom_wait_done(void)
>  static void xscom_reset(uint32_t gcid)
>  {
>  	u64 hmer;
> +	uint32_t recv_status_reg, log_reg, err_reg;
>  
>  	/* Clear errors in HMER */
>  	mtspr(SPR_HMER, HMER_CLR_MASK);
>  
> +	/* Setup local and target scom addresses */
> +	recv_status_reg = 0x202000f;
> +	log_reg = 0x2020007;
> +	err_reg = 0x2020009;
> +
>  	/* First we need to write 0 to a register on our chip */
> -	out_be64(xscom_addr(this_cpu()->chip_id, 0x202000f), 0);
> +	out_be64(xscom_addr(this_cpu()->chip_id, recv_status_reg), 0);
>  	hmer = xscom_wait_done();
>  	if (hmer & SPR_HMER_XSCOM_FAIL)
>  		goto fail;
>  
>  	/* Then we need to clear those two other registers on the target */
> -	out_be64(xscom_addr(gcid, 0x2020007), 0);
> +	out_be64(xscom_addr(gcid, log_reg), 0);
>  	hmer = xscom_wait_done();
>  	if (hmer & SPR_HMER_XSCOM_FAIL)
>  		goto fail;
> -	out_be64(xscom_addr(gcid, 0x2020009), 0);
> +	out_be64(xscom_addr(gcid, err_reg), 0);
>  	hmer = xscom_wait_done();
>  	if (hmer & SPR_HMER_XSCOM_FAIL)
>  		goto fail;
> 



More information about the Skiboot mailing list