[PATCH 1/5] LEON3_MP ISR: shared-IRQ setup overwrite SMP/MP ISR trap handler

Gedare Bloom gedare at rtems.org
Thu Oct 31 14:09:47 UTC 2013


On Thu, Oct 31, 2013 at 9:58 AM, Daniel Hellstrom <daniel at gaisler.com> wrote:
> Basically the shared-irq handler overwrite the SMP/MP traphandler
> previously initialized with set_vector(). That caused IPIs to enter
> BSP spurious handler.
>
> Signed-off-by: Daniel Hellstrom <daniel at gaisler.com>
RTEMS Project has not defined what it means to "sign-off" a commit, so
please leave this off.

> ---
>  c/src/lib/libbsp/sparc/shared/irq/irq-shared.c |    5 +++++
>  1 files changed, 5 insertions(+), 0 deletions(-)
>
> diff --git a/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c b/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c
> index c84eeb3..16119ff 100644
> --- a/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c
> +++ b/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c
> @@ -32,6 +32,11 @@ void BSP_shared_interrupt_init(void)
>         int i;
>
>         for (i=0; i <= BSP_INTERRUPT_VECTOR_MAX_STD; i++) {
> +#if defined(RTEMS_SMP) || defined(RTEMS_MULTIPROCESSING)
> +               /* Don't install IRQ handler on IPI interrupt */
> +               if (i == LEON3_MP_IRQ)
> +                       continue;
> +#endif
This is fine for now. I wonder if there will be more such early
initialization handlers that need to be ignored. If so then we might
consider a more elegant solution.

>                 vector = SPARC_ASYNCHRONOUS_TRAP(i) + 0x10;
>                 rtems_interrupt_catch(BSP_ISR_handler, vector, &previous_isr);
>         }
> --
> 1.7.0.4
>
> _______________________________________________
> rtems-devel mailing list
> rtems-devel at rtems.org
> http://www.rtems.org/mailman/listinfo/rtems-devel



More information about the devel mailing list