Message ID | 20230510033117.1395895-8-rmclure@linux.ibm.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 8608f14b49a0a3f8644a326d32dc1bf7ed78836a |
Headers | show |
Series | powerpc: KCSAN fix warnings and mark accesses | expand |
On Wed May 10, 2023 at 1:31 PM AEST, Rohan McLure wrote: > 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>
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index 6b90f10a6c81..fb35a147b4fa 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c @@ -289,7 +289,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) @@ -348,7 +348,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; }
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> --- v2: Add missing WRITE_ONCE() in smp_muxed_ipi_set_message(). --- arch/powerpc/kernel/smp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)