• Alex Dai's avatar
    drm/i915: Integrate GuC-based command submission · d1675198
    Alex Dai authored
    GuC-based submission is mostly the same as execlist mode, up to
    intel_logical_ring_advance_and_submit(), where the context being
    dispatched would be added to the execlist queue; at this point
    we submit the context to the GuC backend instead.
    
    There are, however, a few other changes also required, notably:
    1.  Contexts must be pinned at GGTT addresses accessible by the GuC
        i.e. NOT in the range [0..WOPCM_SIZE), so we have to add the
        PIN_OFFSET_BIAS flag to the relevant GGTT-pinning calls.
    
    2.  The GuC's TLB must be invalidated after a context is pinned at
        a new GGTT address.
    
    3.  GuC firmware uses the one page before Ring Context as shared data.
        Therefore, whenever driver wants to get base address of LRC, we
        will offset one page for it. LRC_PPHWSP_PN is defined as the page
        number of LRCA.
    
    4.  In the work queue used to pass requests to the GuC, the GuC
        firmware requires the ring-tail-offset to be represented as an
        11-bit value, expressed in QWords. Therefore, the ringbuffer
        size must be reduced to the representable range (4 pages).
    
    v2:
        Defer adding #defines until needed [Chris Wilson]
        Rationalise type declarations [Chris Wilson]
    
    v4:
        Squashed kerneldoc patch into here [Daniel Vetter]
    
    v5:
        Update request->tail in code common to both GuC and execlist modes.
        Add a private version of lr_context_update(), as sharing the
            execlist version leads to race conditions when the CPU and
            the GuC both update TAIL in the context image.
        Conversion of error-captured HWS page to string must account
            for offset from start of object to actual HWS (LRC_PPHWSP_PN).
    
    Issue: VIZ-4884
    Signed-off-by: default avatarAlex Dai <yu.dai@intel.com>
    Signed-off-by: default avatarDave Gordon <david.s.gordon@intel.com>
    Reviewed-by: default avatarTom O'Rourke <Tom.O'Rourke@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    d1675198
intel_lrc.c 73.9 KB