On Thu, 14 May 2026 15:25:07 +0100
Steven Price <[email protected]> wrote:

> On 12/05/2026 12:37, Boris Brezillon wrote:
> > Rather than assuming an interrupt is always expected for request
> > acks, temporarily enable the relevant interrupts when the polling-wait
> > failed. This should hopefully reduce the number of interrupts the CPU
> > has to process.
> > 
> > Signed-off-by: Boris Brezillon <[email protected]>  
> 
> As mentioned in the other thread[1] it turns out this won't work with
> the current firmware.
> 
> The firmware checks the interrupt mask before signalling the ACK - so
> enabling the bit in the mask just before waiting for it is problematic -
> the firmware may not see the addition in the mask and will not trigger
> the interrupt.

Is it a problem though? wait_event_timeout() will evaluate the
condition before going to sleep, so, if the FW raced with the
input->ack_irq_mask update, I assume the condition will evaluate to
true and wait_event_timeout() would return immediately. The only issue
is if the FW updates the output->ack register after reading
input->ack_irq_mask, but that would be weird, since the output->ack
update doesn't depend on input->ack_irq_mask, and raising an interrupt
before updating output->ack would be racy anyway.

Am I missing something?

Reply via email to