What kind of memory barrier should be followed by writes ICC_SGI1R_EL1?

As we all know, ICC_SGI1R_EL1 is used to produce another core's interrupt.

I am a software engineer.

My question is what kind of memory barrier should be followed by writes ICC_SGI1R_EL1?

This question related to the implementation of the instruction "MSR ICC_SGI1R_EL1, x".

If the instruction actually write the memory mapped register, should we use data memory barrier?

Parents
  • There is an interesting chapter in the ARMv8-A manual: D7.1.2 .
    My understanding is, the Linux code is "defensive" here. Means, they want to make sure, that the SGI has been handled before any other action takes place which might rely on it. Since the code might also send an IPI to the local core this might be the reason for this.
    I use SGI heavily for Core to Core message passing on ARMv7 and ARMv8 but did not notice any problem.

Reply
  • There is an interesting chapter in the ARMv8-A manual: D7.1.2 .
    My understanding is, the Linux code is "defensive" here. Means, they want to make sure, that the SGI has been handled before any other action takes place which might rely on it. Since the code might also send an IPI to the local core this might be the reason for this.
    I use SGI heavily for Core to Core message passing on ARMv7 and ARMv8 but did not notice any problem.

Children