[Skiboot] [PATCH] lpc: Clear sync no-response field prior to device probe
Artem Senichev
artemsen at gmail.com
Thu Oct 18 20:11:07 AEDT 2018
On 18/10/2018 10:56, Andrew Jeffery wrote:
> Artem Senichev reported[1] his P8 platform was failing to boot from
> a43e9a66aae9 ("astbmc: Fail SFC init if SIO is unavailable") with the
> following error:
>
> [ 110.097168975,3] PLAT: Failed to open PNOR flash controller
>
> I reproduced this behaviour on a Palmetto; we need to ensure the state
> of the no-response error bit is clear before proceding with the presence
> test.
>
> The fix appears to resolve the failure to open the PNOR flash controller
> on Palmetto and doesn't change the expected behaviour on Witherspoon.
>
> [1] https://github.com/open-power/skiboot/issues/197
>
> Signed-off-by: Andrew Jeffery <andrew at aj.id.au>
> ---
> hw/lpc.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/hw/lpc.c b/hw/lpc.c
> index c55d47638ee9..20e54c99cd73 100644
> --- a/hw/lpc.c
> +++ b/hw/lpc.c
> @@ -473,6 +473,7 @@ static const struct lpc_error_entry lpc_error_table[] = {
> static int64_t lpc_probe_prepare(struct lpcm *lpc)
> {
> const uint32_t irqmask_addr = lpc_reg_opb_base + LPC_HC_IRQMASK;
> + const uint32_t irqstat_addr = lpc_reg_opb_base + LPC_HC_IRQSTAT;
> uint32_t irqmask;
> int rc;
>
> @@ -481,7 +482,11 @@ static int64_t lpc_probe_prepare(struct lpcm *lpc)
> return rc;
>
> irqmask &= ~LPC_HC_IRQ_SYNC_NORESP_ERR;
> - return opb_write(lpc, irqmask_addr, irqmask, 4);
> + rc = opb_write(lpc, irqmask_addr, irqmask, 4);
> + if (rc)
> + return rc;
> +
> + return opb_write(lpc, irqstat_addr, LPC_HC_IRQ_SYNC_NORESP_ERR, 4);
> }
>
> static int64_t lpc_probe_test(struct lpcm *lpc)
>
Tested-by: Artem Senichev <a.senichev at yadro.com>
More information about the Skiboot
mailing list