powerpc: powernv: Annotate data races in opal events
The kopald thread handles opal events as they appear, but by polling a static bit-vector in last_outstanding_events. Annotate these data races accordingly. We are not at risk of missing events, but use of READ_ONCE, WRITE_ONCE will assist readers in seeing that kopald only consumes the events it is aware of when it is scheduled. Also removes extraneous KCSAN warnings. 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-10-rmclure@linux.ibm.com
This commit is contained in:
parent
86dacd967b
commit
331e2cad6d
|
@ -59,7 +59,7 @@ again:
|
|||
|
||||
cond_resched();
|
||||
}
|
||||
last_outstanding_events = 0;
|
||||
WRITE_ONCE(last_outstanding_events, 0);
|
||||
if (opal_poll_events(&events) != OPAL_SUCCESS)
|
||||
return;
|
||||
e = be64_to_cpu(events) & opal_event_irqchip.mask;
|
||||
|
@ -69,7 +69,7 @@ again:
|
|||
|
||||
bool opal_have_pending_events(void)
|
||||
{
|
||||
if (last_outstanding_events & opal_event_irqchip.mask)
|
||||
if (READ_ONCE(last_outstanding_events) & opal_event_irqchip.mask)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
@ -124,7 +124,7 @@ static irqreturn_t opal_interrupt(int irq, void *data)
|
|||
__be64 events;
|
||||
|
||||
opal_handle_interrupt(virq_to_hw(irq), &events);
|
||||
last_outstanding_events = be64_to_cpu(events);
|
||||
WRITE_ONCE(last_outstanding_events, be64_to_cpu(events));
|
||||
if (opal_have_pending_events())
|
||||
opal_wake_poller();
|
||||
|
||||
|
|
Loading…
Reference in New Issue