We currently wait until we attempt to load the GuC to confirm if we're in GuC mode or not, at which point a lot of the engine setup has already happened and needs to be updated for GuC submission. To allow us to get the setup done directly into GuC mode, we need to commit to using GuC as soon as possible. Currently, if GuC is enabled via modparam on a platform that supports it, the main issue that can cause us to fall-back to non-GuC mode is the lack of blobs on the system. It is not safe to fall back to non-GuC after attempting to load the blobs (see __uc_check_hw) and all the functions in the GuC paths between the fetch and the load can only fail if something is fundamentally wrong with the system (e.g. allocation failure). Therefore, committing to using the GuC after the fetch is successful seems like a reasonable compromise between early setup and fall-back options. To better track this, this series splits the uC init status in 3 steps, with the last one meaning we're locked in and can't fall back anymore: - supported: HW supports the microcontroller - wanted: supported and selected in modparam - used: wanted and blob found on the system (Suggestions for better naming are welcome) The last patch in the series starts using the early commitment to setup the GuC submission back-end instead of the execlists one, instead of always setting up the latter and then taking over. This is just an higher level change for now as the GuC code calls the execlists one internally, but I plan to follow with more changes while we switch to the new interface. Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Cc: Michal Wajdeczko <michal.wajdeczko@xxxxxxxxx> Cc: John Harrison <John.C.Harrison@xxxxxxxxx> Cc: Matthew Brost <matthew.brost@xxxxxxxxx> Anusha Srivatsa (1): HAX: force enable_guc=2 Daniele Ceraolo Spurio (6): drm/i915/guc: Kill USES_GUC macro drm/i915/guc: Kill USES_GUC_SUBMISSION macro drm/i915/uc: Improve tracking of uC init status drm/i915/uc: Abort early on uc_init failure drm/i915/guc: Apply new uC status tracking to GuC submission as well drm/i915/guc: Start considering GuC submission a proper back-end drivers/gpu/drm/i915/gem/i915_gem_context.c | 2 +- drivers/gpu/drm/i915/gt/intel_engine_cs.c | 10 ++- drivers/gpu/drm/i915/gt/intel_ggtt.c | 2 +- drivers/gpu/drm/i915/gt/intel_gt.c | 4 +- drivers/gpu/drm/i915/gt/intel_lrc.c | 42 +++++++------ drivers/gpu/drm/i915/gt/intel_lrc.h | 2 + drivers/gpu/drm/i915/gt/selftest_hangcheck.c | 2 +- drivers/gpu/drm/i915/gt/selftest_lrc.c | 10 +-- drivers/gpu/drm/i915/gt/selftest_reset.c | 2 +- drivers/gpu/drm/i915/gt/uc/intel_guc.c | 14 ++--- drivers/gpu/drm/i915/gt/uc/intel_guc.h | 25 ++++++-- .../gpu/drm/i915/gt/uc/intel_guc_submission.c | 56 +++++++++++------ .../gpu/drm/i915/gt/uc/intel_guc_submission.h | 4 +- drivers/gpu/drm/i915/gt/uc/intel_huc.c | 2 +- drivers/gpu/drm/i915/gt/uc/intel_huc.h | 8 ++- drivers/gpu/drm/i915/gt/uc/intel_huc_fw.c | 2 +- drivers/gpu/drm/i915/gt/uc/intel_uc.c | 59 +++++++++++------- drivers/gpu/drm/i915/gt/uc/intel_uc.h | 61 +++++++++++-------- drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 2 +- drivers/gpu/drm/i915/gvt/scheduler.c | 3 +- drivers/gpu/drm/i915/i915_debugfs.c | 25 ++++---- drivers/gpu/drm/i915/i915_drv.h | 10 --- drivers/gpu/drm/i915/i915_params.h | 2 +- drivers/gpu/drm/i915/intel_gvt.c | 2 +- 24 files changed, 212 insertions(+), 139 deletions(-) -- 2.24.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx