HomeFreeBSD

[rpi] Fix bcm2835_audio locking and samples starvation

Description

[rpi] Fix bcm2835_audio locking and samples starvation

Rework general approach to locking and working with audio worker thread:

  • Use flags to signal requested worker action
  • Fix submitted buffer calculations to avoid samples starvation
  • Protect buffer pointers with locks to fix race condition between callback and audio worker thread
  • Remove unnecessary vchi_service_use
  • Do not use lock to serialize VCHI requests since only one thread issues them now
  • Fix unloading signaling per hselasky@ suggestion
  • Add output to detect inconsistent callback data caused by possible firmware bug https://github.com/raspberrypi/firmware/issues/696
  • Add stats/debug sysctls to troubleshoot possible bugs

PR: 213687, 205979, 215194
MFC after: 1 week

Details

Provenance
gonzoAuthored on
Parents
rS310635: Decouple limits on number of LUNs per port and LUs per CTL.
Branches
Unknown
Tags
Unknown