[Skiboot] [PATCH] Suppress XSCOM chiplet-offline errors on P9

Vasant Hegde hegdevasant at linux.vnet.ibm.com
Wed Oct 25 15:07:59 AEDT 2017


On 10/24/2017 03:28 AM, Stewart Smith wrote:
> Workaround on P9: PRD does operations it *knows* will fail with this
> error to work around a hardware issue where accesses via the PIB
> (FSI or OCC) work as expected, accesses via the ADU (what xscom goes
> through) do not. The chip logic will always return all FFs if there
> is any error on the scom.
>
> Suggested-by: Daniel M Crowell <dcrowell at us.ibm.com>
> Signed-off-by: Stewart Smith <stewart at linux.vnet.ibm.com>
> ---
>  hw/xscom.c | 22 +++++++++++++++++++++-
>  1 file changed, 21 insertions(+), 1 deletion(-)
>
> diff --git a/hw/xscom.c b/hw/xscom.c
> index 716cb73675fc..5b3bd8895210 100644
> --- a/hw/xscom.c
> +++ b/hw/xscom.c
> @@ -1,4 +1,4 @@
> -/* Copyright 2013-2014 IBM Corp.
> +/* Copyright 2013-2017 IBM Corp.
>   *
>   * Licensed under the Apache License, Version 2.0 (the "License");
>   * you may not use this file except in compliance with the License.
> @@ -284,6 +284,16 @@ static int __xscom_read(uint32_t gcid, uint32_t pcb_addr, uint64_t *val)
>  	if (xscom_is_multicast_addr(pcb_addr) && ret == OPAL_XSCOM_CHIPLET_OFF)
>  		return ret;
>
> +	/*
> +	 * Workaround on P9: PRD does operations it *knows* will fail with this
> +	 * error to work around a hardware issue where accesses via the PIB
> +	 * (FSI or OCC) work as expected, accesses via the ADU (what xscom goes
> +	 * through) do not. The chip logic will always return all FFs if there
> +	 * is any error on the scom.
> +	 */
> +	if (proc_gen == proc_gen_p9 && ret == OPAL_XSCOM_CHIPLET_OFF)
> +		return ret;
> +
>  	prerror("XSCOM: Read failed, ret =  %lld\n", ret);
>  	return ret;
>  }
> @@ -324,6 +334,16 @@ static int __xscom_write(uint32_t gcid, uint32_t pcb_addr, uint64_t val)
>  	if (xscom_is_multicast_addr(pcb_addr) && ret == OPAL_XSCOM_CHIPLET_OFF)
>  		return ret;
>
> +	/*
> +	 * Workaround on P9: PRD does operations it *knows* will fail with this
> +	 * error to work around a hardware issue where accesses via the PIB
> +	 * (FSI or OCC) work as expected, accesses via the ADU (what xscom goes
> +	 * through) do not. The chip logic will always return all FFs if there
> +	 * is any error on the scom.
> +	 */
> +	if (proc_gen == proc_gen_p9 && ret == OPAL_XSCOM_CHIPLET_OFF)

So this is superset of previous if condition. May be just fix previous one ?

-Vasant



More information about the Skiboot mailing list