# DF-4553 — sv_suspend() aborts the *playback* channel with the *record* trigger (copy-paste): playback DMA engine left running across suspend

## What this is

sys/dev/sound/pci/vibes.c:653, inside `sv_suspend()`:

```c
	sc->rch.dma_was_active = sc->rch.dma_active;
	svrchan_trigger(NULL, &sc->rch, PCMTRIG_ABORT);   /* correct: rec */

	sc->pch.dma_was_active = sc->pch.dma_active;
	svrchan_trigger(NULL, &sc->pch, PCMTRIG_ABORT);   /* BUG: play channel
	                                                     * aborted with the
	                                                     * RECORD trigger */
```

`svrchan_trigger()`'s STOP/ABORT path (vibes.c:345-350) clears
`SV_RECORD_ENABLE` and stops **DMAC** — it never touches the playback
engine. Applied to `sc->pch` it does nothing to the playback DMA:
`SV_PLAY_ENABLE` stays set, so DMAA keeps bus-mastering the (still mapped
and armed) DMA buffer while the system suspends, and the record engine is
disabled twice. On `sv_resume()` the playback channel is then re-programmed
and restarted as if it had been cleanly stopped.

Consequences on real hardware: the S3 SonicVibes continues to master PCI
bus traffic into `ch->buffer` across the suspend transition — the driver
believes the channel is stopped. This is a suspend/resume state-machine
defect (upstream FreeBSD's driver uses `svpchan_trigger` for the playback
channel); security impact is bounded to device/PM misbehavior (continued
DMA, noise, corrupted stream state on resume), not kernel memory
corruption.

## Reproduce

Needs an S3 SonicVibes (5333:ca00) machine playing audio:

1. `cat /dev/dsp0 < /dev/zero &` (playback running)
2. `acpiconf -z` / suspend-to-RAM
3. Observe (via the card's status register, `SV_CM_STATUS_AINT` still
   firing / audio path still live) that playback DMA was never disabled.

Expected after fix: playback engine disabled at suspend (SV_PLAY_ENABLE
cleared via `svpchan_trigger`).

## What was run on the audit QEMU guest

No SonicVibes hardware (`pciconf -l | grep 5333` → none; `/dev/sndstat`
empty with snd_vibes.ko loaded) — suspend/resume of this device cannot be
exercised. `not_reproduced` on this guest; the defect is visible by
inspection and is a one-token fix.

## Verdict

`not_reproduced` — hardware absent. Source-level: certain.
