On Mar 22, 2023, Rodrigo Vivi rodrigo.vivi@intel.com wrote:
On Sun, Mar 12, 2023 at 04:56:23PM -0300, Alexandre Oliva wrote:
Since __uc_fw_auto_select is also called from another place, intel_uc_fw_init_early out of the intel_uc_fw_fetch infinite loop,
That other place is conceptually, sort of, the first iteration of the infinite loop. Before that first separate early-init call, *uc_fw is returned by devm_drm_dev_alloc to i915_driver_create, so zero-initialized I presume, in both the guc and the huc cases.
Only if this first call finds a matching entry (setting both file_{selected,wanted}.path), and the selected entry fails to load, do we even enter the loop (provided that other conditionals are satisfied) and look for other entries, using file_selected.path to find how far the previous call got (and, with the proposed patch, file_wanted.path to avoid retrying the path we've just tried).
I hope Daniele and John have a better understanding and can provide some guidance or acks here.
I surely appreciate additional eyes and minds that are more acquainted with the code at hand than I am. Thanks,