# DF-1137 — radeon/si_dpm.c si_thermal_setup_fan_table divide-by-zero

## TL;DR
- **Status: REPRODUCED (source + harness).** Fan-table temperature deltas
  from BIOS u16 fields are used as divisors with no zero-check. A crafted
  VBIOS with `usTMed==usTMin` (or `usTHigh==usTMed`) triggers a kernel
  `#DE` divide-by-zero panic.
- **Impact: DoS** (panic at DPM enable time).

## Why no live trigger on this guest
Bug is in `radeon.ko`. The QEMU audit guest has no AMD GPU.

## Files
- `harness.c` — mirrors the kernel math; raises `SIGFPE` on the buggy
  path and returns `-EINVAL` on the fixed path.
- `fix.diff` — adds the missing zero-delta check before the divide.
- `run.log`, `env.txt`.

## Reproduce
```
./build.sh && ./run.sh
```
Expected: harness prints `buggy: SIGFPE / #DE divide-by-zero raised!`
then `fixed: REJECTED zero delta ...`.

## Fix validation
`fix.diff` applied; `radeon.ko` rebuilt cleanly (2,029,496 bytes).
