Rework driver init flow
As noted in discussions on drm/xe/mcr: Add MCR framework and operations (!190 - merged) the driver init code needs to be reworked to handle some dependencies:
- MCR init depends on fuse readout (DSS, engines, etc.).
- LMEM init depends on MCR.
- The GT should not be touched (including fuses and MCR) until after pcode init is complete.
- SRIOV requires some other init shuffling.
While we're at it, it would be good to clarify the meaning of some of our init terminology. For example, in i915, "early_init" was supposed to be stuff that could be done without touching the device (e.g., initializing locks, allocating memory, etc.), but in Xe we seem to be using that term differently. So it would help to explicitly document exactly what "early" means here.
Edited by Matthew Brost