mirror_ubuntu-kernels/drivers/gpu/drm/i915/gem/selftests
Daniele Ceraolo Spurio d3ac8d4216 drm/i915/pxp: interfaces for using protected objects
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: Alan Previn <alan.previn.teres.alexis@intel.com>
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Signed-off-by: Bommu 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: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210924191452.1539378-11-alan.previn.teres.alexis@intel.com
2021-10-04 13:11:00 -04:00
..
huge_gem_object.c drm/i915: Update object placement flags to be mutable 2021-06-24 18:50:56 +01:00
huge_gem_object.h drm/i915/selftests: Make headers self-contained 2020-01-03 13:33:36 +00:00
huge_pages.c drm/i915/selftests: exercise shmem_writeback with THP 2021-09-24 09:35:34 +01:00
i915_gem_client_blt.c drm/i915/gem: Zap the client blt code 2021-06-17 14:23:13 +01:00
i915_gem_coherency.c drm/i915/gem: replace IS_GEN and friends with GRAPHICS_VER 2021-06-05 15:09:43 -07:00
i915_gem_context.c drm/i915: Drop __rcu from gem_context->vm 2021-09-06 11:11:32 +02:00
i915_gem_dmabuf.c drm/i915/selftests: Always initialize err in igt_dmabuf_import_same_driver_lmem() 2021-09-14 19:44:07 +03:00
i915_gem_migrate.c drm/i915/gem: Check object_can_migrate from object_migrate 2021-07-26 16:37:30 +01:00
i915_gem_mman.c drm/i915: Add mmap lock around vma_lookup() in the mman selftest. 2021-09-15 15:23:29 +02:00
i915_gem_object.c drm/i915/selftests: Prepare object tests for obj->mm.lock removal. 2021-03-24 17:41:35 +01:00
i915_gem_phys.c drm/i915: Update object placement flags to be mutable 2021-06-24 18:50:56 +01:00
igt_gem_utils.c drm/i915/gem: replace IS_GEN and friends with GRAPHICS_VER 2021-06-05 15:09:43 -07:00
igt_gem_utils.h drm/i915/selftests: Teach igt_gpu_fill_dw() to take intel_context 2019-08-24 09:10:08 +01:00
mock_context.c drm/i915/pxp: interfaces for using protected objects 2021-10-04 13:11:00 -04:00
mock_context.h drm/i915/selftests: Take a VM in kernel_context() 2021-07-08 19:49:18 +02:00
mock_dmabuf.c drm-misc-next for 5.11: 2020-11-04 11:49:10 +10:00
mock_dmabuf.h drm/i915: change to_mock() to an inline function 2019-11-08 09:12:34 +00:00
mock_gem_object.h drm/i915/selftests: Make headers self-contained 2020-01-03 13:33:36 +00:00