History log of /seL4-test-master/kernel/src/smp/ipi.c
Revision Date Author Comments
# 343761ca 18-Nov-2019 Yanyan Shen <yanyan.shen@data61.csiro.au>

riscv: Improve IPI code

The removed while loop in ipi_send_target can cause a deadlock, if
the target of an IPI remote call enters handleIPI through the
clh_is_ipi_pending path in smp/lock.h.

Signed-off-by: Yanyan Shen <yanyan.shen@data61.csiro.au>


# 79da0792 01-Mar-2020 Gerwin Klein <gerwin.klein@data61.csiro.au>

Convert license tags to SPDX identifiers

This commit also converts our own copyright headers to directly use
SPDX, but leaves all other copyright header intact, only adding the
SPDX ident. As far as possible this commit also merges multiple
Data61 copyright statements/headers into one for consistency.


# 2d362cb7 11-Nov-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

arm,SMP: Refactor irq_t structure for smp

Explicitly create a struct definition for irq_t on SMP Arm
configurations. This makes it a lot harder to mistakenly use the wrong
irq encoding when moving an irq between a cnode index and hardware irq
number / core. A couple areas where this was being handled incorrectly
was fixed as part of the refactor. When performing an ipi for masking
PPI interrupts, the idx encoding is used as it fits into a single word.


# a269298c 06-Aug-2019 Yanyan Shen <yanyan.shen@data61.csiro.au>

riscv: Flush pipeline and instruction cache

Flush the instruction cache and pipeline when handling
a reschedule IPI.


# a6157d5d 18-Jul-2019 Sylvain Gauthier <sylvain.gauthier@data61.csiro.au>

[SMP] Abstracted IRQ indexing to handle PPIs

irq_t is now a "virtual" interrupt type that encapsulates the
information of the core in case of a private interrupt. There is a
couple of macros that need to be defined on the interrupt controller
level to translate between virtual and hardware IRQs.


# ee28936d 18-Jun-2017 Hesham Almatary <hesham.almatary@data61.csiro.au>

SMP: Introduce ENABLE_SMP_SUPPORT

- Make it more readable and less confusing compared to the 'CONFIG_MAX_NUM_NODES > 1' check


# e5ed9428 25-Jun-2017 Hesham Almatary <hesham.almatary@data61.csiro.au>

x86/SMP: Convert IRQ number to vector number when sending an IPI

ipi_send_mask is defined as:

void ipi_send_mask(irq_t ipi, word_t mask, bool_t isBlocking);

It expects an IRQ IPI number, not an interrupt number in the case of x86.

This commit:

1- Removes the confusion between IRQ and interrupt numbers by explicitly
converting IRQ to interrupt numbers in x86 implementation.

2- Makes the smp/ipi.c more generic to be shared with ARM, which only has
IRQ numbers for IPIs (send/receive).


# 40970c30 22-Jun-2017 Hesham Almatary <hesham.almatary@data61.csiro.au>

SMP: allow an architecture to provide its own optimised IPI send function


# cac1348f 16-Mar-2017 Hesham Almatary <hesham.almatary@data61.csiro.au>

SMP/ARM: include generic smp/ipi.h and move ipi.c to smp/


# 8f713ab4 16-Mar-2017 Hesham Almatary <hesham.almatary@data61.csiro.au>

SELFOUR-747: SMP/x86: generalize arch-independent IPI code