Page MenuHomeFreeBSD

D10716.id28393.diff
No OneTemporary

D10716.id28393.diff

Index: sys/arm/mv/mpic.c
===================================================================
--- sys/arm/mv/mpic.c
+++ sys/arm/mv/mpic.c
@@ -150,6 +150,7 @@
static void mpic_unmask_irq_err(uintptr_t nb);
static int mpic_intr(void *arg);
static void mpic_unmask_msi(void);
+static boolean_t mpic_irq_is_percpu(uintptr_t);
#ifndef INTRNG
static void arm_mask_irq_err(uintptr_t);
static void arm_unmask_irq_err(uintptr_t);
@@ -490,14 +491,25 @@
MPIC_CPU_WRITE(mv_mpic_sc, MPIC_ERR_MASK, mask);
}
+static boolean_t
+mpic_irq_is_percpu(uintptr_t nb)
+{
+ if (nb < MPIC_PPI)
+ return TRUE;
+
+ return FALSE;
+}
+
static void
mpic_unmask_irq(uintptr_t nb)
{
if (nb < ERR_IRQ) {
- bus_space_write_4(mv_mpic_sc->mpic_bst, mv_mpic_sc->mpic_bsh,
- MPIC_ISE, nb);
- MPIC_CPU_WRITE(mv_mpic_sc, MPIC_ICM, nb);
+ if (!mpic_irq_is_percpu(nb))
+ bus_space_write_4(mv_mpic_sc->mpic_bst,
+ mv_mpic_sc->mpic_bsh, MPIC_ISE, nb);
+ else
+ MPIC_CPU_WRITE(mv_mpic_sc, MPIC_ICM, nb);
} else if (nb < MSI_IRQ)
mpic_unmask_irq_err(nb);
@@ -510,9 +522,11 @@
{
if (nb < ERR_IRQ) {
- bus_space_write_4(mv_mpic_sc->mpic_bst, mv_mpic_sc->mpic_bsh,
- MPIC_ICE, nb);
- MPIC_CPU_WRITE(mv_mpic_sc, MPIC_ISM, nb);
+ if (!mpic_irq_is_percpu(nb))
+ bus_space_write_4(mv_mpic_sc->mpic_bst,
+ mv_mpic_sc->mpic_bsh, MPIC_ICE, nb);
+ else
+ MPIC_CPU_WRITE(mv_mpic_sc, MPIC_ISM, nb);
} else if (nb < MSI_IRQ)
mpic_mask_irq_err(nb);
}

File Metadata

Mime Type
text/plain
Expires
Wed, Jun 17, 12:04 PM (15 h, 17 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34023226
Default Alt Text
D10716.id28393.diff (1 KB)

Event Timeline