From 50e1921f98e4b1b15a748fa7dbc01a71a11b61c4 Mon Sep 17 00:00:00 2001 From: Benjamin Herrenschmidt Date: Fri, 21 Apr 2017 08:59:50 +1000 Subject: mbox: Sanitize interrupts registers 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 Signed-off-by: Michael Neuling --- hw/lpc-mbox.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'hw/lpc-mbox.c') diff --git a/hw/lpc-mbox.c b/hw/lpc-mbox.c index fd107fbb..21e6eee0 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); + + /* 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; } -- cgit v1.2.1