[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