The only difference between the ADL S and P GuC FWs is the HWConfig support. ADL-N does not support HWConfig, so we should use the same binary as ADL-S, otherwise the GuC might attempt to fetch a config table that does not exist. ADL-N is internally identified as an ADL-P, so we need to special-case it in the FW selection code.
Unified · Split
| @@ -162,6 +162,15 @@ __uc_fw_auto_select(struct drm_i915_private *i915, struct intel_uc_fw *uc_fw) · 161 unmodified lines | |||
| 162 | u8 rev = INTEL_REVID(i915); | 162 | u8 rev = INTEL_REVID(i915); |
| 163 | int i; | 163 | int i; |
| 164 | 164 | ||
| 165 | /* | ||
| 166 | * The only difference between the ADL GuC FWs is the HWConfig support. | ||
| 167 | * ADL-N does not support HWConfig, so we should use the same binary as | ||
| 168 | * ADL-S, otherwise the GuC might attempt to fetch a config table that | ||
| 169 | * does not exist. | ||
| 170 | */ | ||
| 171 | if (IS_ADLP_N(i915)) | ||
| 172 | p = INTEL_ALDERLAKE_S; | ||
| 173 | |||
| 165 | GEM_BUG_ON(uc_fw->type >= ARRAY_SIZE(blobs_all)); | 174 | GEM_BUG_ON(uc_fw->type >= ARRAY_SIZE(blobs_all)); |
| 166 | fw_blobs = blobs_all[uc_fw->type].blobs; | 175 | fw_blobs = blobs_all[uc_fw->type].blobs; |
| 167 | fw_count = blobs_all[uc_fw->type].count; | 176 | fw_count = blobs_all[uc_fw->type].count; |