> A linked prepare can finish one member before another member's driver > prepare or reset fails. Drivers that admit transfers after their own > prepare callback can then accept an ACK while the group action is still > incomplete. > > Add an optional prepare_complete callback. After all sleeping prepare > and reset actions have succeeded, take the group and member PCM locks, > publish every PREPARED state, and notify opted-in drivers before > releasing those locks. Keep the buffer locks and access gates held > throughout the operation. A concurrent DROP observes the group before or > after this commit point. > > On a driver error, notify only the attempted prefix, including the > failing member. Opted-in members in that prefix return to SETUP. Leave > unreached members untouched. Preflight failures have no completion > callback. Preserve SUSPENDED and DISCONNECTED states if finalization > finds either in the affected group or prefix. Successful driver actions > canceled by such a state return -ESTRPIPE or -EBADFD, respectively. A > driver error keeps its original return value. DISCONNECTED takes > precedence when a linked group contains both terminal states. > > Do not generate a stop-timer event while closing prepare admission. > Ordinary legacy drivers keep their existing successful preparation and > pointer rebasing. The new callback runs with the group and member locks > held and must neither sleep nor acquire another PCM stream lock. > > Assisted-by: LLM > Signed-off-by: Joonho Lee <[email protected]>
Sashiko has reviewed this patch and found no issues. -- Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=4
