|
XenevaOS
|
#include <i915_drm.h>

Public Attributes | |
| struct i915_user_extension | base |
| __u32 | flags |
struct drm_i915_gem_create_ext_protected_content - The I915_OBJECT_PARAM_PROTECTED_CONTENT extension.
If this extension is provided, buffer contents are expected to be protected by PXP encryption and require decryption for scan out and processing. This is only possible on platforms that have PXP enabled, on all other scenarios using this extension will cause the ioctl to fail and return -ENODEV. The flags parameter is reserved for future expansion and must currently be set to zero.
The buffer contents are considered invalid after a PXP session teardown.
The encryption is guaranteed to be processed correctly only if the object is submitted with a context created using the I915_CONTEXT_PARAM_PROTECTED_CONTENT flag. This will also enable extra checks at submission time on the validity of the objects involved.
Below is an example on how to create a protected object:
.. code-block:: C
struct drm_i915_gem_create_ext_protected_content protected_ext = {
.base = { .name = I915_GEM_CREATE_EXT_PROTECTED_CONTENT },
.flags = 0,
};
struct drm_i915_gem_create_ext create_ext = {
.size = PAGE_SIZE,
.extensions = (uintptr_t)&protected_ext,
};
int err = ioctl(fd, DRM_IOCTL_I915_GEM_CREATE_EXT, &create_ext);
if (err) ...
| struct i915_user_extension drm_i915_gem_create_ext_protected_content::base |
@base: Extension link. See struct i915_user_extension.
| __u32 drm_i915_gem_create_ext_protected_content::flags |
@flags: reserved for future usage, currently MBZ