diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2017-04-21 08:59:50 +1000 |
---|---|---|
committer | Michael Neuling <mikey@neuling.org> | 2017-04-21 11:37:30 +1000 |
commit | 50e1921f98e4b1b15a748fa7dbc01a71a11b61c4 (patch) | |
tree | be7f4e0e2d2a9101805650e63acd808ad0ce67b7 /hw | |
parent | 2889f18cef25f13587bc6982003af0ce42e0d3a5 (diff) | |
download | skiboot-50e1921f98e4b1b15a748fa7dbc01a71a11b61c4.zip skiboot-50e1921f98e4b1b15a748fa7dbc01a71a11b61c4.tar.gz skiboot-50e1921f98e4b1b15a748fa7dbc01a71a11b61c4.tar.bz2 |
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 <benh@kernel.crashing.org>
Signed-off-by: Michael Neuling <mikey@neuling.org>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/lpc-mbox.c | 15 |
1 files 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); + + /* 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; } |