• Tvrtko Ursulin's avatar
    drm/i915: Do not call API requiring struct_mutex where it is not available · ca82580c
    Tvrtko Ursulin authored
    LRC code was calling GEM API like i915_gem_obj_ggtt_offset from
    places where the struct_mutex cannot be grabbed (irq handlers).
    
    To avoid that this patch caches some interesting bits and values
    in the engine and context structures.
    
    Some usages are also removed where they are not needed like a
    few asserts which are either impossible or have been checked
    already during engine initialization.
    
    Side benefit is also that interrupt handlers and command
    submission stop evaluating invariant conditionals, like what
    Gen we are running on, on every interrupt and every command
    submitted.
    
    This patch deals with logical ring context id and descriptors
    while subsequent patches will deal with the remaining issues.
    
    v2:
     * Cache the VMA instead of the address. (Chris Wilson)
     * Incorporate Dave Gordon's good comments and function name.
    
    v3:
     * Extract ctx descriptor template to a function and group
       functions dealing with ctx descriptor & co together near
       top of the file. (Dave Gordon)
    Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Dave Gordon <david.s.gordon@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1452870629-13830-1-git-send-email-tvrtko.ursulin@linux.intel.com
    ca82580c
intel_lrc.h 4.96 KB