• John Harrison's avatar
    drm/i915: Update deferred context creation to do explicit request management · 76c39168
    John Harrison authored
    In execlist mode, context initialisation is deferred until first use of the
    given context. This is because execlist mode has per ring context state and thus
    many more context storage objects than legacy mode and many are never actually
    used. Previously, the initialisation commands were written to the ring and
    tagged with some random request structure via the OLR. This seemed to be causing
    a null pointer deference bug under certain circumstances (BZ:88865).
    
    This patch adds explicit request creation and submission to the deferred
    initialisation code path. Thus removing any reliance on or randomness caused by
    the OLR.
    
    Note that it should be possible to move the deferred context creation until even
    later - when the context is actually switched to rather than when it is merely
    validated. This would allow the initialisation to be done within the request of
    the work that is wanting to use the context. Hence, the extra request that is
    created, used and retired just for the context init could be removed completely.
    However, this is left for a follow up patch.
    
    For: VIZ-5115
    Signed-off-by: default avatarJohn Harrison <John.C.Harrison@Intel.com>
    Reviewed-by: default avatarTomas Elf <tomas.elf@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    76c39168
intel_lrc.c 66.5 KB