net: ipa: explicitly disallow inter-EE interrupts
authorAlex Elder <elder@linaro.org>
Thu, 5 Nov 2020 18:14:05 +0000 (12:14 -0600)
committerJakub Kicinski <kuba@kernel.org>
Sat, 7 Nov 2020 23:39:17 +0000 (15:39 -0800)
It is possible for other execution environments (EEs, like the modem)
to request changes to local (AP) channel or event ring state.  We do
not support this feature.

In gsi_irq_setup(), explicitly zero the mask that defines which
channels are permitted to generate inter-EE channel state change
interrupts.  Do the same for the event ring mask.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ipa/gsi.c

index aae8ea852349d001bab7176b72548096eef8fdd0..5e10e5c1713b171144f8b01d7657486f4593df97 100644 (file)
@@ -259,6 +259,8 @@ static void gsi_irq_setup(struct gsi *gsi)
        iowrite32(0, gsi->virt + GSI_CNTXT_SRC_EV_CH_IRQ_MSK_OFFSET);
        iowrite32(0, gsi->virt + GSI_CNTXT_GLOB_IRQ_EN_OFFSET);
        iowrite32(0, gsi->virt + GSI_CNTXT_SRC_IEOB_IRQ_MSK_OFFSET);
+       iowrite32(0, gsi->virt + GSI_INTER_EE_SRC_CH_IRQ_OFFSET);
+       iowrite32(0, gsi->virt + GSI_INTER_EE_SRC_EV_CH_IRQ_OFFSET);
 }
 
 /* Turn off all GSI interrupts when we're all done */
@@ -307,8 +309,6 @@ static void gsi_irq_enable(struct gsi *gsi)
        iowrite32(ERROR_INT_FMASK, gsi->virt + GSI_CNTXT_GLOB_IRQ_EN_OFFSET);
        gsi->type_enabled_bitmap |= BIT(GSI_GLOB_EE);
 
-       /* We don't use inter-EE channel or event interrupts */
-
        /* Never enable GSI_BREAK_POINT */
        val = GSI_CNTXT_GSI_IRQ_ALL & ~BREAK_POINT_FMASK;
        iowrite32(val, gsi->virt + GSI_CNTXT_GSI_IRQ_EN_OFFSET);