# DF-4050 — adjust_display_pll_v2 never executes the AdjustDisplayPll BIOS command (always returns BP_RESULT_FAILURE)

## What

`sys/dev/drm/amd/display/dc/bios/command_table.c:1457-1477`:

```c
static enum bp_result adjust_display_pll_v2(
	struct bios_parser *bp,
	struct bp_adjust_pixel_clock_parameters *bp_params)
{
	enum bp_result result = BP_RESULT_FAILURE;
	ADJUST_DISPLAY_PLL_PS_ALLOCATION params = { 0 };

	/* We need to convert from KHz units into 10KHz units and then convert
	 * output pixel clock back 10KHz-->KHz */
	uint32_t pixel_clock_10KHz_in = bp_params->pixel_clock / 10;

	params.usPixelClock = cpu_to_le16((uint16_t)(pixel_clock_10KHz_in));
	params.ucTransmitterID = ...;
	params.ucEncodeMode = ...;
	return result;                       /* <-- EXEC block missing */
}
```

The function fills the input parameters and returns. There is **no**
`EXEC_BIOS_CMD_TABLE(AdjustDisplayPll, params)` call, no reading of the
output (`sOutput.ulDispPllFreq`/`ucRefDiv`/`ucPostDiv`), and no assignment
to `bp_params->adjusted_pixel_clock` — the v3 sibling right below
(`:1479-1530`) shows what the complete function must look like, and the
stale comment about "convert output pixel clock back 10KHz-->KHz" refers to
processing that is not there. Compare upstream Linux, where
`adjust_display_pll_v2` executes the command and computes
`bp_params->adjusted_pixel_clock` via `div_u64` exactly like the v3 variant.

Consequences on any VBIOS whose `AdjustDisplayPll` declares crev 2:
`bp->cmd_tbl.adjust_display_pll` is wired to this function
(`command_table.c:1440-1455`), every call returns `BP_RESULT_FAILURE`, and
the caller (`pll_adjust_pix_clk`, `sys/dev/drm/amd/display/dc/dce/dce_clock_source.c:444-451`)
degrades gracefully (skips the BIOS-adjusted clock), so the functional
effect is silently-unadjusted PLL settings (SS ratio/dividers not applied)
rather than memory corruption.

## Impact

Functional/dead-code defect in a security-relevant parser: no memory
unsafety, no leak; clock programming quality regression on hypothetical
crev-2 BIOSes on supported ASICs. Info severity, confidence `likely`
(upstream comparison from memory — network reference unavailable during the
audit; the in-tree evidence — truncated function vs its v3 sibling + stale
comment + unused-by-design flow — is unambiguous).

## Fix

Restore the missing execution block, mirroring the v3 shape (see fix.diff).

## Verification

Source-level; not runnable (hardware-gated, no AMD GPU). Status: untested.
