• J
    drm/i915: Move the request/file and request/pid association to creation time · fcfa423c
    John Harrison 提交于
    In _i915_add_request(), the request is associated with a userland client.
    Specifically it is linked to the 'file' structure and the current user process
    is recorded. One problem here is that the current user process is not
    necessarily the same as when the request was submitted to the driver. This is
    especially true when the GPU scheduler arrives and decouples driver submission
    from hardware submission. Note also that it is only in the case where the add
    request comes from an execbuff call that there is a client to associate. Any
    other add request call is kernel only so does not need to do it.
    
    This patch moves the client association into a separate function. This is then
    called from the execbuffer code path itself at a sensible time. It also removes
    the now redundant 'file' pointer from the add request parameter list.
    
    An extra cleanup of the client association is also added to the request clean up
    code for the eventuality where the request is killed after association but
    before being submitted (e.g. due to out of memory error somewhere). Once the
    submission has happened, the request is on the request list and the regular
    request list removal will clear the association. Note that this still needs to
    happen at this point in time because the request might be kept floating around
    much longer (due to someone holding a reference count) and the client should not
    be worrying about this request after it has been retired.
    
    For: VIZ-5115
    Signed-off-by: NJohn Harrison <John.C.Harrison@Intel.com>
    Reviewed-by: NTomas Elf <tomas.elf@intel.com>
    Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
    fcfa423c
i915_gem_execbuffer.c 48.6 KB