[PowerPC] [Book-E] Remove obsolete interrupt binding workaround

Remove an old workaround that is no longer necessary since rS343824.

There used to be a problem with FMan interrupts firing on multiple CPUS
at the same time.

This ended up being due to multicast interrupts being unsupported in the
Freescale PIC (so instead of using a selection algorithm, it would do some
unspecified action, such as interrupting multiple cpus at random.)

Reviewed by:	jhibbits
Sponsored by:	Tag1 Consulting, Inc.
Differential Revision:	https://reviews.freebsd.org/D23829
This commit is contained in:
Brandon Bergren 2020-02-25 22:03:30 +00:00
parent 6bc27f086a
commit f55185bcd8
3 changed files with 0 additions and 40 deletions

View File

@ -794,5 +794,4 @@ t_Error XX_IpcSendMessage(t_Handle h_Session,
void XX_PortalSetInfo(device_t dev);
void XX_FmanFixIntr(int irq);
#endif /* __XX_EXT_H */

View File

@ -95,7 +95,6 @@ MTX_SYSINIT(XX_MallocTrackLockInit, &XX_MallocTrackLock,
/* Interrupt info */
#define XX_INTR_FLAG_PREALLOCATED (1 << 0)
#define XX_INTR_FLAG_FMAN_FIX (1 << 1)
struct XX_IntrInfo {
driver_intr_t *handler;
@ -295,23 +294,6 @@ XX_IsPortalIntr(uintptr_t irq)
return (0);
}
void
XX_FmanFixIntr(int irq)
{
XX_IntrInfo[irq].flags |= XX_INTR_FLAG_FMAN_FIX;
}
static bool
XX_FmanNeedsIntrFix(int irq)
{
if (XX_IntrInfo[irq].flags & XX_INTR_FLAG_FMAN_FIX)
return (1);
return (0);
}
static void
XX_Dispatch(void *arg)
{
@ -398,21 +380,7 @@ XX_SetIntr(uintptr_t irq, t_Isr *f_Isr, t_Handle handle)
err = bus_setup_intr(dev, r, flags, NULL, f_Isr, handle,
&XX_IntrInfo[irq].cookie);
if (err)
goto finish;
/*
* XXX: Bind FMan IRQ to CPU0. Current interrupt subsystem directs each
* interrupt to all CPUs. Race between an interrupt assertion and
* masking may occur and interrupt handler may be called multiple times
* per one interrupt. FMan doesn't support such a situation. Workaround
* is to bind FMan interrupt to one CPU0 only.
*/
#ifdef SMP
if (XX_FmanNeedsIntrFix(irq))
err = powerpc_bind_intr(irq, 0);
#endif
finish:
return (err);
}

View File

@ -455,13 +455,6 @@ fman_attach(device_t dev)
goto err;
}
/*
* XXX: Fix FMan interrupt. This is workaround for the issue with
* interrupts directed to multiple CPUs by the interrupts subsystem.
* Workaround is to bind the interrupt to only one CPU0.
*/
XX_FmanFixIntr(rman_get_start(sc->irq_res));
sc->err_irq_rid = 1;
sc->err_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ,
&sc->err_irq_rid, RF_ACTIVE | RF_SHAREABLE);