[Skiboot] [PATCH] mbox: Sanitize interrupts registers
Benjamin Herrenschmidt
benh at kernel.crashing.org
Fri Apr 21 08:59:50 AEST 2017
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.
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);
+
+ /* 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;
}
More information about the Skiboot
mailing list