powerpc: Annotate accesses to ipi message flags
IPI message flags are observed and consequently consumed in the smp_ipi_demux_relaxed function, which handles these message sources until it observes none more arriving. Mark the checked loop guard with READ_ONCE, to signal to KCSAN that the read is known to be volatile, and that non-determinism is expected. Mark write for message source in smp_muxed_ipi_set_message(). Signed-off-by: Rohan McLure <rmclure@linux.ibm.com> Reviewed-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://msgid.link/20230510033117.1395895-8-rmclure@linux.ibm.com
This commit is contained in:
parent
b0c5b4f1ee
commit
8608f14b49
|
@ -291,7 +291,7 @@ void smp_muxed_ipi_set_message(int cpu, int msg)
|
|||
* Order previous accesses before accesses in the IPI handler.
|
||||
*/
|
||||
smp_mb();
|
||||
message[msg] = 1;
|
||||
WRITE_ONCE(message[msg], 1);
|
||||
}
|
||||
|
||||
void smp_muxed_ipi_message_pass(int cpu, int msg)
|
||||
|
@ -350,7 +350,7 @@ irqreturn_t smp_ipi_demux_relaxed(void)
|
|||
if (all & IPI_MESSAGE(PPC_MSG_NMI_IPI))
|
||||
nmi_ipi_action(0, NULL);
|
||||
#endif
|
||||
} while (info->messages);
|
||||
} while (READ_ONCE(info->messages));
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue