• Jason Ekstrand's avatar
    drm/i915/gem: Add an intermediate proto_context struct (v5) · a34857dc
    Jason Ekstrand authored
    The current context uAPI allows for two methods of setting context
    parameters: SET_CONTEXT_PARAM and CONTEXT_CREATE_EXT_SETPARAM.  The
    former is allowed to be called at any time while the later happens as
    part of GEM_CONTEXT_CREATE.  Currently, everything settable via one is
    settable via the other.  While some params are fairly simple and setting
    them on a live context is harmless such the context priority, others are
    far trickier such as the VM or the set of engines.  In order to swap out
    the VM, for instance, we have to delay until all current in-flight work
    is complete, swap in the new VM, and then continue.  This leads to a
    plethora of potential race conditions we'd really rather avoid.
    
    Unfortunately, both methods of setting the VM and the engine set are in
    active use today so we can't simply disallow setting the VM or engine
    set vial SET_CONTEXT_PARAM.  In order to work around this wart, this
    commit adds a proto-context struct which contains all the context create
    parameters.
    
    v2 (Daniel Vetter):
     - Better commit message
     - Use __set/clear_bit instead of set/clear_bit because there's no race
       and we don't need the atomics
    
    v3 (Daniel Vetter):
     - Use manual bitops and BIT() instead of __set_bit
    
    v4 (Daniel Vetter):
     - Add a changelog to the commit message
     - Better hyperlinking in docs
     - Create the default PPGTT in i915_gem_create_context
    
    v5 (Daniel Vetter):
     - Hand-roll the initialization of UCONTEXT_PERSISTENCE
    Signed-off-by: default avatarJason Ekstrand <jason@jlekstrand.net>
    Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210708154835.528166-17-jason@jlekstrand.net
    a34857dc
mock_context.c 3.26 KB