Open Hardware & RISC-V

Linux 7.5 fixes 20-year-old Radeon HD 2000/3000 UVD corruption bug via AI-assisted patch

Key Takeaway

A first-time kernel contributor used OpenAI's Codex to identify and fix a memory placement bug in the R600 driver that caused corrupted video playback on AMD's oldest UVD-equipped GPUs when 3D workloads ran concurrently.

Summary

A kernel patch accepted for Linux 7.5 resolves a nearly two-decade-old hardware video decoding bug affecting AMD's R600-generation Radeon HD 2000 and HD 3000 series GPUs. The fix, submitted by first-time contributor Ted Bullock, corrects corrupted frames during UVD-accelerated playback that occurred whenever the GPU simultaneously handled 3D rendering or desktop composition. Bullock investigated the issue on a Core 2 Duo-based iMac7,1 with an RV610/M74 GPU, traced the root cause to UVD input buffers being allocated in system memory rather than dedicated VRAM, and used OpenAI's Codex to assist with investigation, testing, and patch preparation.

The patch forces UVD buffers to remain in VRAM for the RV610, RV620, RV630, RV635, and RV670 silicon families, matching behavior already present for other Radeon chip families in the kernel driver. These chips share the RV6xx decoder path and legacy R600 firmware. The R600 architecture launched in 2007 as AMD's first unified shader desktop GPU lineup following its acquisition of ATI Technologies, and introduced the first-generation UVD engine that offloaded H.264 and VC-1 decoding from the CPU.

UVD memory placement and the R600 driver fix

  • Root cause identified: The UVD decoder on RV6xx chips corrupted video frames when reading compressed video from system memory while the GPU performed concurrent graphics draw operations; moving input buffers to VRAM eliminated the corruption.
  • Affected silicon: The patch explicitly covers RV610, RV620, RV630, RV635, and RV670, which comprise the Radeon HD 2000 and HD 3000 families and share the RV6xx decoder path with legacy R600 firmware.
  • Fix mechanism: The driver now keeps UVD buffers pinned in dedicated VRAM rather than allowing system memory allocation, an approach the Radeon kernel driver already implements for several other chip families.
  • Verification method: Bullock tested the fix on Debian running the iMac7,1 hardware (RV610/M74, PCI device ID 1002:94c8), and noted that other hardware variants in the same family would need independent verification.
  • Development assistance: The contributor used OpenAI's Codex as a tool during investigation, testing, and patch authorship, marking an early public example of AI-assisted debugging in legacy Linux graphics driver maintenance.

Why it matters

This patch underscores the unusual longevity of open-source Linux driver maintenance for obsolete hardware, where proprietary Windows support ended over a decade ago yet the mainline kernel continues to receive fixes. For retrocomputing enthusiasts, HTPC preservationists, and e-waste reduction advocates, the fix extends usable life for first-generation UVD hardware that still serves basic video playback needs, while also demonstrating that AI coding assistants can lower barriers to entry for kernel graphics driver contributions.

Original reference: www.tomshardware.com →