• Daniele Ceraolo Spurio's avatar
    drm/i915/pxp: interfaces for using protected objects · d3ac8d42
    Daniele Ceraolo Spurio authored
    This api allow user mode to create protected buffers and to mark
    contexts as making use of such objects. Only when using contexts
    marked in such a way is the execution guaranteed to work as expected.
    
    Contexts can only be marked as using protected content at creation time
    (i.e. the parameter is immutable) and they must be both bannable and not
    recoverable. Given that the protected session gets invalidated on
    suspend, contexts created this way hold a runtime pm wakeref until
    they're either destroyed or invalidated.
    
    All protected objects and contexts will be considered invalid when the
    PXP session is destroyed and all new submissions using them will be
    rejected. All intel contexts within the invalidated gem contexts will be
    marked banned. Userspace can detect that an invalidation has occurred via
    the RESET_STATS ioctl, where we report it the same way as a ban due to a
    hang.
    
    v5: squash patches, rebase on proto_ctx, update kerneldoc
    
    v6: rebase on obj create_ext changes
    
    v7: Use session counter to check if an object it valid, hold wakeref in
        context, don't add a new flag to RESET_STATS (Daniel)
    
    v8: don't increase guilty count for contexts banned during pxp
        invalidation (Rodrigo)
    
    v9: better comments, avoid wakeref put race between pxp_inval and
        context_close, add usage examples (Rodrigo)
    
    v10: modify internal set/get-protected-context functions to not
         return -ENODEV when setting PXP param to false or getting param
         when running on pxp-unsupported hw or getting param when i915
         was built with CONFIG_PXP off
    Signed-off-by: default avatarAlan Previn <alan.previn.teres.alexis@intel.com>
    Signed-off-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
    Signed-off-by: default avatarBommu Krishnaiah <krishnaiah.bommu@intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
    Cc: Jason Ekstrand <jason@jlekstrand.net>
    Cc: Daniel Vetter <daniel.vetter@intel.com>
    Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210924191452.1539378-11-alan.previn.teres.alexis@intel.com
    d3ac8d42
intel_pxp.c 6.28 KB