# DF-5068 — psm_init_power_state_table() ignores get_pp_table_entry() failures: partially-initialized / all-zero power states enter the state table and can be selected and programmed to the SMC

## Build
Not buildable/runnable on the audit guest: requires an AMD GPU (amdgpu attach)
whose VBIOS PowerPlay table drives `psm_init_power_state_table()`. The guest has
only QEMU std VGA (chip=0x11111234); /dev/dri does not exist (see env.txt).

## Run
N/A — see env.txt.

## Expected behavior if triggered on hardware
1. Attach an AMD GPU whose PowerPlay table contains an entry that makes the
   per-entry parser fail midway (trivial with the pass-1 unvalidated-offset family:
   DF-1468/DF-1469/DF-1470 — any USHORT offset/UCHAR count pointing outside
   soft_pp_table_size).
2. `get_pp_table_entry()` (pp_psm.c:76) returns nonzero for that entry. The result
   is never checked.
3. The (partially written or all-zero) entry stays in the table:
   - if `classification.flags` was written before the parser failed and has the
     Boot bit, the garbage state is memcpy'd into `current_ps`/`request_ps`
     (pp_psm.c:78-82) and becomes `boot_ps`;
   - entries with matching `ui_label` bits are selectable via
     `psm_get_ui_state()` (pp_psm.c:122-128) → `psm_set_states()` memcpy
     (pp_psm.c:163-169) → `power_state_management()` programs the garbage
     `hardware` struct to the SMC (pp_psm.c:248-255).
   - if every entry fails, `boot_ps` stays NULL and current/request stay zeroed
     while init reports success (return 0) — downstream adjust runs on an
     all-zero `pp_power_state`.
3'. Fix behavior: init fails with the parser's error code and the allocations are
    unwound (fix.diff).

## Fix
Apply fix.diff: fail `psm_init_power_state_table()` on any per-entry parser error,
freeing the trio and returning the error (hwmgr_hw_init err2 path then unwinds the
backend as it already does for other init failures).
