[Skiboot] [PATCH] mbox: Sanitize interrupts registers

Cyril Bur cyril.bur at au1.ibm.com
Fri Apr 21 09:51:01 AEST 2017


On Fri, 2017-04-21 at 08:59 +1000, Benjamin Herrenschmidt wrote:
> If some status interrupts are left unmasked by a previous
> firmware run (either HostBoot or some other version of skiboot),
> we fail to clear them and end up with a runaway SerIRQ.
> 
> Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> ---
> 
> Let's merge that now. It will be obsoleted by the v2 protocol
> implementation but we want a fix out ASAP.

I think this is still important even after v2 implementation gets
merged.

> 
>  hw/lpc-mbox.c | 15 +++++++++++----
>  1 file changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/lpc-mbox.c b/hw/lpc-mbox.c
> index fd107fb..21e6eee 100644
> --- a/hw/lpc-mbox.c
> +++ b/hw/lpc-mbox.c
> @@ -200,11 +200,18 @@ static struct lpc_client mbox_lpc_client = {
>  
>  static bool mbox_init_hw(void)
>  {
> -	/*
> -	 * Turns out there isn't anything to do.
> -	 * It might be a good idea to santise the registers though.
> -	 * TODO
> +	/* Disable all status interrupts except attentions */
> +	bmc_mbox_outb(0x00, MBOX_HOST_INT_EN_0);
> +	bmc_mbox_outb(MBOX_STATUS_ATTN, MBOX_HOST_INT_EN_1);
> +

Would it be wise to also (you do it for the control register
interrupt):

	/* 
	 * Cleanup host interrupt status bits except attention, these 	
 * bits are write 1 to clear.
	 */
	bmc_mbox_outb(0xff, MBOX_STATUS_0);
	bmc_mbox_outb(~MBOX_STATUS_ATTN, MBOX_STATUS_1);

> +	/* Cleanup host interrupt and status */
> +	bmc_mbox_outb(MBOX_CTRL_INT_STATUS, MBOX_HOST_CTRL);
> +
> +	/* Disable host control interrupt for now (will be
> +	 * re-enabled when needed). Clear BMC interrupts
>  	 */
> +	bmc_mbox_outb(MBOX_CTRL_INT_MASK, MBOX_BMC_CTRL);
> +
>  	return true;
>  }
> 
> 
> _______________________________________________
> Skiboot mailing list
> Skiboot at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/skiboot



More information about the Skiboot mailing list