• Dave Gordon's avatar
    drm/i915: Implementation of GuC submission client · 44a28b1d
    Dave Gordon authored
    A GuC client has its own doorbell and workqueue. It maintains the
    doorbell cache line, process description object and work queue item.
    
    A default guc_client is created for the i915 driver to use for
    normal-priority in-order submission.
    
    Note that the created client is not yet ready for use; doorbell
    allocation will fail as we haven't yet linked the GuC's context
    descriptor to the default contexts for each ring (see later patch).
    
    v2:
        Defer adding structure members until needed [Chris Wilson]
        Rationalise type declarations [Chris Wilson]
    
    v5:
        Add GuC per-engine submission & seqno statistics.
        Move wq locking to encompass both get_space() and add_item().
        Take forcewake lock in host2guc_action() [Tom O'Rourke]
    
    v6:
        Fix GuC doorbell cacheline selection code (the
            cacheline-within-page calculation was wrong).
        Rename GuC priorities to make them closer to the names used in
            the GuC firmware source, matching what the autogenerated
            versions will (probably) be.
        Add per-ring statistics to client.
    
    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>
    44a28b1d
i915_guc_submission.c 22.9 KB