# DF-5170 — evergreen_copy_dma discards radeon_sync_resv()/radeon_sync_rings() returns

The Evergreen/Cayman twin of DF-4871 (r600_dma.c:466-467) and DF-5089
(si_dma.c:255-256): `evergreen_copy_dma()` (evergreen_dma.c:105-158) takes
the DMA ring lock, then calls the sync layer and drops both `int` return
values, then emits and commits the copy packets unconditionally.

## Reproduce

There is no userland PoC: the defect is reachable only on real
Evergreen/Cayman (AMD HD 5xxx/6xxx) hardware, as the ttm bo-migration copy
callback (`.copy.copy = &evergreen_copy_dma`, radeon_asic.c:1373/1467/1560/
1708/1828). The verification guest has QEMU std-VGA and no DRM stack —
see `env.txt` / `run.log`.

```
dfbsd-qemu/vm.sh status                       # guest up
dfbsd-qemu/vm.sh run_root 'pciconf -l | grep -i vga; kldstat | grep -ci drm; ls /dev/dri'
```
Expected (the hardware gate): `vgapci0 ... chip=0x11111234` (QEMU std VGA),
`0`, `ls: /dev/dri: No such file or directory`.

## Source-level proof

See `VERDICT.md` for the full line-accurate trace (failure modes of
radeon_sync.c, the checked-and-unwind contrast in radeon_ib.c:149-154, and
the pass-2 negative-result table for the rest of evergreen_dma.c).

## Fix

`fix.diff` — check both returns and unwind (unlock_undo + sync_free +
ERR_PTR), moving `radeon_sync_resv()` before `radeon_ring_lock()` because
its `dma_fence_wait(..., true)` may sleep. Mirrors the accepted DF-4871 fix
and DF-5089's fix.diff shape.
