jerpelea opened a new pull request, #20321:
URL: https://github.com/apache/nuttx/pull/20321

   ## Summary
   
   The FIFO watermark flag is a level: it stays high until the worker actually 
drains the FIFO below the threshold.  Configuring INT1 as RISING made that a 
race the driver could lose permanently.
   
   lsm6ds3trc_interrupt() disables its IRQ on entry and re-enables it after the 
worker has run.  With an edge trigger, if the line is still high when the IRQ 
is re-enabled -- which is precisely what happens whenever a drain does not take 
the FIFO below the watermark -- there is no new low-to-high transition left to 
detect, and the line goes mute forever.  Observed as a board that serviced 
exactly one watermark after boot and then never again, reproducible 2 out of 2 
reflashes.
   
   ONHIGH matches the physical meaning of the pin and is immune to it: a level 
trigger re-asserts on its own for as long as the condition holds, and the 
disable/enable pairing around servicing is what stops that from live-locking.
   
   Validated with more than 900 consecutive drains (~100 min) including real 
sleep -> GPIO-wake -> resume transitions, the exact case that used to wedge.
   
   ## Impact
   
   RELEASE
   
   ## Testing
   
   CI


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to