# DF-3810 — skl_calc_wrpll_link() divides by p1 without zero guard (#DE panic)

## File
`sys/dev/drm/i915/intel_ddi.c:1306-1364` (`skl_calc_wrpll_link`)

## Build / Run / Expected
**Not built, not run — guest has no Intel graphics** (see `env.txt`).
Hypothetical trigger on SKL/KBL/CFL hardware: DPLL_CFGCR2 programmed with
`DPLL_CFGCR2_QDIV_MODE(1)` set and `QDIV_RATIO == 0` (invalid/reserved combo
that the driver itself never writes — the state would come from BIOS/firmware
leftovers read back during display hw-state sanitize, or a wedged register),
then any readback path reaching `skl_ddi_clock_get()` → `skl_calc_wrpll_link()`
(e.g. `intel_ddi_get_config` at intel_ddi.c:3467 during boot-time
`intel_modeset_setup_hw_state` or debugfs state dump). Expected:
`dco_freq / (p0 * p1 * p2 * 5)` with p1 == 0 → integer divide exception →
kernel panic.

## Root cause
```c
p0 = cfgcr2_val & DPLL_CFGCR2_PDIV_MASK;      /* raw field        */
p2 = cfgcr2_val & DPLL_CFGCR2_KDIV_MASK;
if (cfgcr2_val & DPLL_CFGCR2_QDIV_MODE(1))
        p1 = (cfgcr2_val & DPLL_CFGCR2_QDIV_RATIO_MASK) >> 8;   /* 8-bit field, can be 0 */
else
        p1 = 1;
switch (p0) { ... }                            /* encodings 1,2,3,7; 0 maps to PDIV_1 case */
switch (p2) { ... }                            /* all 4 encodings handled */
return dco_freq / (p0 * p1 * p2 * 5);          /* intel_ddi.c:1363 — no zero guard */
```
The CNL sibling `cnl_calc_wrpll_link()` *has* the guard:
```c
if (WARN_ON(p0 == 0 || p1 == 0 || p2 == 0))
        return 0;                              /* intel_ddi.c:1424-1425 */
```
The HSW sibling missing the same class of guard was filed as DF-1226
(p*r division). The SKL variant's only zero-capable divisor operand is p1
(PDIV 0 maps to PDIV_1; all KDIV encodings map to nonzero; but QDIV_RATIO is a
free 8-bit field when QDIV_MODE is set). The driver's own programming path
(intel_dpll_mgr.c:1214-1215 `qdiv_ratio = p1; qdiv_mode = (qdiv_ratio == 1) ? 0 : 1;`)
never writes ratio 0, so the trigger requires anomalous register content.

## Impact
Kernel #DE panic (local DoS at boot/state-readback on affected config).
Severity: Low (anomalous-HW-state dependent).
