mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Joonho Lee <mynameisjune111@gmail.com>
Cc: linux-sound@vger.kernel.org, tiwai@suse.de, perex@perex.cz,
	anton.yakovlev@opensynergy.com, mst@redhat.com,
	virtualization@lists.linux.dev, linux-kernel@vger.kernel.org,
	corbet@lwn.net, skhan@linuxfoundation.org, rdunlap@infradead.org,
	linux-doc@vger.kernel.org
Subject: Re: [PATCH v11 00/14] ALSA: virtio: staged capture recovery and PCM RESET synchronization
Date: Mon, 02 Nov 2026 09:57:42 +0100	[thread overview]
Message-ID: <87ecd34nll.wl-tiwai@suse.de> (raw)
In-Reply-To: <20261031020855.2402-1-mynameisjune111@gmail.com>

On Sat, 31 Oct 2026 03:08:41 +0100,
Joonho Lee wrote:
> 
> Hi Takashi,
> 
> This revision supersedes v10 and includes the unmerged prerequisites.
> Apply patches 1-14 to sound.git for-next at
> a4311e9447bbb219044db38897f95be112f46a8a. Targeting 7.5 or later still
> works for me.
> 
> Previous revision:
> https://lore.kernel.org/linux-sound/20261030052629.27742-1-mynameisjune111@gmail.com/T/
> 
> The series adds staged capture accounting for shared clients such as
> dsnoop, lifecycle recovery, and synchronized PCM RESET accounting. The
> capture compatibility options remain opt-in and disabled by default.
> 
> Changes since v10
> 
> Sashiko raised nine findings in patches 4, 9, 12 and 14. This revision
> folds the corrections into the relevant patches and carries the queue
> retirement checks from patch 3.
> 
> Patch 4 seeds ordinary RX once per prepare. Native STOP leaves requests
> and unread samples owned by the current ring, so resume preserves them.
> Consumed or discarded space returns through ACK and RESET. This avoids
> inflated pending lengths and resubmission of unread DMA slots.
> 
> Patch 9 restores notifications after rejected native pause and handles
> both success and failure on the already-running START path. Ordinary
> capture now honors the XRUN latch in ACK. Its monotonic completion count
> also detects a whole unobserved ring and reports XRUN for prepare
> recovery. Capture completions preserve the latch from this patch onward.
> 
> A first version of the recovery notification exposed an old ring of
> samples after paused RESET. Passing every wakeup through period_elapsed
> let ALSA infer a wrap without a newly completed period. The worker now
> uses the partial-progress helper for synthetic wakeups and retains PCM
> timer notifications for actual new periods. The sample comparison and
> a periodic PCM timer test both reproduce the candidate regression and
> pass with this separation.
> 
> Patch 12 removes the second appl_ptr assignment after a callback member
> has completed prepare. A linked member's prepare can sleep while the
> first member accepts SYNC_PTR. The callback path now preserves that
> acknowledgment under its PCM lock. Explicit RESET retains playback
> silence handling; prepare leaves filling to the normal START path.
> 
> Patch 14 checks the existing XRUN and lifecycle state before mutating
> paused indirect accounting. The RX queue and substream locks cover its
> pointer observation, temporary accounting and refill. The notification
> floor follows the RESET observation. Refill failure retains the existing
> zero-return policy while the worker reports XRUN and prepare recovers it.
> 
> Patch 3 retires each queue wrapper under the detach lock and checks queue
> identity in PCM, control and event callbacks. The proposed detached-ring
> IRQ failure was not reproduced on the tested PCI transport: forced
> callback tests passed on both versions. This part strengthens teardown
> ownership boundaries; the transport reset callback synchronization
> contract still applies.
> 
> Patch layout
> 
>   1-6: ACK errors, START/RELEASE recovery and request/DMA lifetime.
>   7:   Core stop-threshold accesses used by capture policy sampling.
>   8:   Partial-progress notification under the PCM stream lock.
>   9:   Staged capture, shared capture policy and lifecycle recovery.
>   10:  Staged capture work priority.
>   11:  Capture compatibility option documentation.
>   12:  Optional PCM reset operation under the stream lock.
>   13:  Staged capture RESET accounting.
>   14:  Ordinary capture RESET accounting.
> 
> The core API additions remain separate from their driver users. Drivers
> without a reset callback retain the ioctl path. Linked RESET and prepare
> retain their first-error, partial-completion contract. A zero RESET
> return allows the core rebase to finish; later I/O can report -EPIPE and
> require prepare or reopen. The internal snd_pcm_ops addition requires
> out-of-tree modules using it to be rebuilt.
> 
> Validation
> 
> The functional candidate passed 23 ARM64 QEMU runs with KASAN and lockdep,
> covering error injection, recovery, reopen and compatibility tests.
> The core fixtures covered 72 atomic/nonatomic, callback/legacy and linked
> failure cases, including playback silence. snd-dummy and virtio-snd each
> passed three playback/capture cycles. Additional timer comparisons kept
> real period ticks and removed the synthetic resume tick.
> 
> For both ordinary and staged capture, an uninstrumented kernel recorded
> 70 seconds through RW and another 70 seconds through MMAP after
> PAUSE, RESET and resume, followed by reopen. All 14 segments,
> 14,208,000 S16 mono frames at 48 kHz, matched independently generated
> SHA-256 values from QEMU sequence metadata. The oracle includes the
> intended RESET discard and backend epoch boundaries. The earlier failing
> candidate and its sample comparison remain in the local evidence.
> 
> The paused interleaving test verifies the new atomic observation
> boundary; it does not establish sample loss in the original code.
> ARM64 W=1 Image/modules and ARM32 LLVM object builds passed. Test hooks
> remain separate from the submitted code. Each mail patch is applied to
> the pinned baseline and compared with its expected intermediate source.
> 
> Fresh v11 postimages at stages 3-14 built without compiler warnings.
> Nine additional stage VMs passed, including eight injected recovery cases
> at patch 9, staged native and pause-restart capture, and paused RESET at
> patches 13 and 14. All six additional MMAP segments matched the sequence
> oracle. Neighboring patches have refreshed contexts where earlier changes
> moved their code.
> 
> Packaging also adds braces to one existing staged if arm. The new module's
> executable, relocation, data and symbol sections match the tested module
> byte for byte. The fresh stage tests above use this formatted source.
> 
> These results cover QEMU synthetic input. Physical VZ/MOTU acceptance,
> an independent KCSAN run and broader format/multichannel and ARM32
> runtime testing remain pending. The high-load TCG scheduling results
> from earlier revisions still limit performance conclusions. The new
> ordinary full-ring check reports -EPIPE where the modulo-only path could
> wait indefinitely. The core progress helper and linked RESET contract
> still need maintainer review.
> 
> Coding assistance was used for analysis, implementation, fixtures and
> this explanation. The patches carry Assisted-by: LLM.
> 
> Thanks,
> Joonho

Sashiko reported still a few issues.  As they seem to be rather minor
issues, I can work v11 now and you can fix incrementally.  Or you can
resubmit v12, if any.  Let me know which way you prefer.


thanks,

Takashi


      parent reply	other threads:[~2026-11-02  8:57 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-31  2:08 Joonho Lee
2026-10-31  2:08 ` [PATCH v11 01/14] ALSA: virtio: Propagate PCM send failures through ACK Joonho Lee
2026-10-31  2:08 ` [PATCH v11 02/14] ALSA: virtio: Recover PCM state after a failed start Joonho Lee
2026-10-31  2:08 ` [PATCH v11 03/14] ALSA: virtio: Retain queued messages through device reset Joonho Lee
2026-10-31  2:08 ` [PATCH v11 04/14] ALSA: virtio: Keep PCM DMA buffers alive through device ownership Joonho Lee
2026-10-31  2:08 ` [PATCH v11 05/14] ALSA: virtio: Keep control payloads alive through DMA completion Joonho Lee
2026-10-31  2:08 ` [PATCH v11 06/14] ALSA: virtio: wait through signals for PCM teardown Joonho Lee
2026-10-31  2:08 ` [PATCH v11 07/14] ALSA: pcm: mark stop-threshold accesses for capture policy sampling Joonho Lee
2026-10-31  2:08 ` [PATCH v11 08/14] ALSA: pcm: report partial progress under the stream lock Joonho Lee
2026-10-31  2:08 ` [PATCH v11 09/14] ALSA: virtio: add staged capture accounting and lifecycle recovery Joonho Lee
2026-10-31  2:08 ` [PATCH v11 10/14] ALSA: virtio: prioritize staged capture period work Joonho Lee
2026-10-31  2:08 ` [PATCH v11 11/14] docs: describe virtio-sound capture options Joonho Lee
2026-10-31  2:08 ` [PATCH v11 12/14] ALSA: pcm: add an optional reset operation under the stream lock Joonho Lee
2026-10-31  2:08 ` [PATCH v11 13/14] ALSA: virtio: synchronize staged capture accounting during RESET Joonho Lee
2026-10-31  2:08 ` [PATCH v11 14/14] ALSA: virtio: rebase ordinary capture accounting on RESET Joonho Lee
2026-11-02  8:57 ` Takashi Iwai [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ecd34nll.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=anton.yakovlev@opensynergy.com \
    --cc=corbet@lwn.net \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=mynameisjune111@gmail.com \
    --cc=perex@perex.cz \
    --cc=rdunlap@infradead.org \
    --cc=skhan@linuxfoundation.org \
    --cc=virtualization@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®