From: Alan Previn <alan.previn.teres.alexis@intel.com> To: igt-dev@lists.freedesktop.org Cc: Alan Previn <alan.previn.teres.alexis@intel.com>, dri-devel@lists.freedesktop.org, Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>, Rodrigo Vivi <rodrigo.vivi@intel.com> Subject: [PATCH i-g-t v13 00/16] Introduce PXP Test Date: Tue, 5 Oct 2021 08:10:06 -0700 [thread overview] Message-ID: <20211005151022.2161424-1-alan.previn.teres.alexis@intel.com> (raw) This series adds gem_pxp tests for the new PXP subsystem currently being reviewed at https://patchwork.freedesktop.org/series/90503/. This series currently includes 4 groups of tests addressing the features and restrictions described by Daniele's series : 1. test i915 interfaces for allocation of protected bo's and contexts and enforcement of UAPI rule disallowing the modification of parameters after it's been created. 2. verify PXP subsystem protected sessions generate encrypted content on protected output buffers and decrypt protected inputs buffers. 3. verify i915 PXP auto-teardown succeeds on suspend-resume cycles and gem-exec of stale protected assets fail. Ensure protected-contexts adhere to stricter invalidation enforcement upon teardown event. 4. Ensure that display plane decryption works as expected with protected buffers. NOTE: This series is on the thirteenth revision. All R-v-b's have been received except UAPI patch which will be dropped at merge time (after kernel patches gets merged and igt's drm UAPI gets sync'd). Changes from prior rev1 to now: v13: - Rebase again and fix UAPI sync to match kernel commits. v12: - Rebase on latest igt and updated the UAPI changes to align with commits from kernel side. v11: - When detecting hw support, retry pxp context creation multiple times a timeout as per HW SLA. - initialize bo or ctx handles to zero before calling creation ioctl wrapper. v10: - In patch #2, reuse existing gem_create_ext wrapper. - In patch #10, kernel side changed the debugfs file name (but no difference in behavior / usage). - Removed patch #14 from Rev9 as decision on kernel side was to drop the usage of RESET_STATS IOCTL to track invalidated pxp contexts. v9: - Remove patch #2 from rev7 as it was duplicating an existing ioctl wrapper helper - Fix the false-negative warnings when triggering auto-suspend-resume (remove checking if we are suspending after the system has already resumed). v8: - Nothing - mistaken detection from patchwork v7: - In prior rev, Patches #11->13 was testing expected results from calling gem_execbuf with stale pxp-context, pxp-buffer or combinations of them (including an opt-out usage). All of them used a single suspend-resume power state cycles to trigger the PXP teardown event. These patches have been combined into patch #14 that continues to carry the prior rev Rvb. - In its place, the new patches of #11->#13 do the identical set of tests as before (results from gem_execbuf with various combinations of stale pxp context and buffer), but this time using a debugfs file handle that triggers the same code path taken when the HW triggers the pxp teardown. That said, the code is nearly identical as v6 but I did not keep the Rvb's. - In patch #15, RESET_STAT now reports invalidated / banned pxp contexts via the existing batch_active's lost count. v6: - Addressed rev5 review comments for patch #1, #7, #14 and #17. - For #17, I'm using Rodrigo's Rv-b because offline discussions concluded that we couldn't use those test sequences with HDCP and so it was removed it. - Added Rv-b into all patches that received it. - Modified the test requirement from a list of device ids to checking if runtime PXP interface succeeds due to kernel's build config dependency. v5: - Addressed all rev4 review comments. No changes to overall flow and logic compared to the last rev. v4: - Addressed all rev3 review comments. NOTE: that all test cases and code logic are the same but a decent amount of refactoring has occured due to address v3 comments to break out subtests into separate functions while combining certain checks into the same function to reduce test time by minimizing number of suspend-resume power cycles. v3: - Addressed all rev2 review comments. - In line with one of the rev2 comments, a thorough fixup of all line-breaks in function calls was made for a more consistent styling. - Rebased on igt upstream repo and updated to latest kernel UAPI that added GEM_CREATE_EXT. v2: - Addressed all rev1 review comments except these: 1.Chris Wilson : "...have the caller do 1-3 once for its protected context. Call it something like intel_bb_enable_pxp(), intel_bb_set_pxp if it should be reversible.". - This couldn't be implemented because [1] HW needs different instruction sequences for enabling/disabling PXP depending on the engine class and [2] the pair of "pxp-enable" and "pxp- disable" instructions need to be contained within the same batch that is dispatched to the hardware. That said, implementing internal intel_batchbuffer funtionality for this would conflict with how rendercopy_gen9 uses batch buffer memory by repositioing the pointer and consuming unused portions of the batch buffer as 3d state offsets that batchbuffer has no visibility. - Added these additional subtests: 1. verify that buffer sharing works across testing pxp context. 2. verify teardown bans contexts via DRM_IOCTL_I915_GET_RESET_STAT. 3. verify display plane decryption of protected buffers. Alan Previn (15): i915_drm.h sync PXP default session i915_drm.h sync PXP object creation Add basic PXP testing of buffer and context alloc Perform a regular 3d copy as a control checkpoint Add PXP attribute support in batchbuffer and buffer_ops libs Add MI_SET_APPID instruction definition Enable protected session cmd in gen12_render_copyfunc Add subtest to copy raw source to protected dest Add test where both src and dest are protected Verify PXP teardown occurred through suspend-resume Verify execbuf fails with stale PXP context after teardown Verify execbuf fails with stale PXP buffer after teardown Verify execbuf ok with stale PXP buf in opt-out use Verify execution behavior with stale PXP assets through suspend-resume Verify protected surfaces are dma buffer sharable Karthik B S (1): tests/i915_pxp: CRC validation for display tests. include/drm-uapi/i915_drm.h | 97 +++ lib/intel_batchbuffer.c | 23 +- lib/intel_batchbuffer.h | 31 + lib/intel_bufops.h | 15 + lib/intel_reg.h | 8 + lib/rendercopy_gen9.c | 57 ++ tests/i915/gem_pxp.c | 1283 +++++++++++++++++++++++++++++++++++ tests/meson.build | 1 + 8 files changed, 1514 insertions(+), 1 deletion(-) create mode 100644 tests/i915/gem_pxp.c -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Alan Previn <alan.previn.teres.alexis@intel.com> To: igt-dev@lists.freedesktop.org Cc: Alan Previn <alan.previn.teres.alexis@intel.com>, dri-devel@lists.freedesktop.org, Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>, Rodrigo Vivi <rodrigo.vivi@intel.com> Subject: [igt-dev] [PATCH i-g-t v13 00/16] Introduce PXP Test Date: Tue, 5 Oct 2021 08:10:06 -0700 [thread overview] Message-ID: <20211005151022.2161424-1-alan.previn.teres.alexis@intel.com> (raw) This series adds gem_pxp tests for the new PXP subsystem currently being reviewed at https://patchwork.freedesktop.org/series/90503/. This series currently includes 4 groups of tests addressing the features and restrictions described by Daniele's series : 1. test i915 interfaces for allocation of protected bo's and contexts and enforcement of UAPI rule disallowing the modification of parameters after it's been created. 2. verify PXP subsystem protected sessions generate encrypted content on protected output buffers and decrypt protected inputs buffers. 3. verify i915 PXP auto-teardown succeeds on suspend-resume cycles and gem-exec of stale protected assets fail. Ensure protected-contexts adhere to stricter invalidation enforcement upon teardown event. 4. Ensure that display plane decryption works as expected with protected buffers. NOTE: This series is on the thirteenth revision. All R-v-b's have been received except UAPI patch which will be dropped at merge time (after kernel patches gets merged and igt's drm UAPI gets sync'd). Changes from prior rev1 to now: v13: - Rebase again and fix UAPI sync to match kernel commits. v12: - Rebase on latest igt and updated the UAPI changes to align with commits from kernel side. v11: - When detecting hw support, retry pxp context creation multiple times a timeout as per HW SLA. - initialize bo or ctx handles to zero before calling creation ioctl wrapper. v10: - In patch #2, reuse existing gem_create_ext wrapper. - In patch #10, kernel side changed the debugfs file name (but no difference in behavior / usage). - Removed patch #14 from Rev9 as decision on kernel side was to drop the usage of RESET_STATS IOCTL to track invalidated pxp contexts. v9: - Remove patch #2 from rev7 as it was duplicating an existing ioctl wrapper helper - Fix the false-negative warnings when triggering auto-suspend-resume (remove checking if we are suspending after the system has already resumed). v8: - Nothing - mistaken detection from patchwork v7: - In prior rev, Patches #11->13 was testing expected results from calling gem_execbuf with stale pxp-context, pxp-buffer or combinations of them (including an opt-out usage). All of them used a single suspend-resume power state cycles to trigger the PXP teardown event. These patches have been combined into patch #14 that continues to carry the prior rev Rvb. - In its place, the new patches of #11->#13 do the identical set of tests as before (results from gem_execbuf with various combinations of stale pxp context and buffer), but this time using a debugfs file handle that triggers the same code path taken when the HW triggers the pxp teardown. That said, the code is nearly identical as v6 but I did not keep the Rvb's. - In patch #15, RESET_STAT now reports invalidated / banned pxp contexts via the existing batch_active's lost count. v6: - Addressed rev5 review comments for patch #1, #7, #14 and #17. - For #17, I'm using Rodrigo's Rv-b because offline discussions concluded that we couldn't use those test sequences with HDCP and so it was removed it. - Added Rv-b into all patches that received it. - Modified the test requirement from a list of device ids to checking if runtime PXP interface succeeds due to kernel's build config dependency. v5: - Addressed all rev4 review comments. No changes to overall flow and logic compared to the last rev. v4: - Addressed all rev3 review comments. NOTE: that all test cases and code logic are the same but a decent amount of refactoring has occured due to address v3 comments to break out subtests into separate functions while combining certain checks into the same function to reduce test time by minimizing number of suspend-resume power cycles. v3: - Addressed all rev2 review comments. - In line with one of the rev2 comments, a thorough fixup of all line-breaks in function calls was made for a more consistent styling. - Rebased on igt upstream repo and updated to latest kernel UAPI that added GEM_CREATE_EXT. v2: - Addressed all rev1 review comments except these: 1.Chris Wilson : "...have the caller do 1-3 once for its protected context. Call it something like intel_bb_enable_pxp(), intel_bb_set_pxp if it should be reversible.". - This couldn't be implemented because [1] HW needs different instruction sequences for enabling/disabling PXP depending on the engine class and [2] the pair of "pxp-enable" and "pxp- disable" instructions need to be contained within the same batch that is dispatched to the hardware. That said, implementing internal intel_batchbuffer funtionality for this would conflict with how rendercopy_gen9 uses batch buffer memory by repositioing the pointer and consuming unused portions of the batch buffer as 3d state offsets that batchbuffer has no visibility. - Added these additional subtests: 1. verify that buffer sharing works across testing pxp context. 2. verify teardown bans contexts via DRM_IOCTL_I915_GET_RESET_STAT. 3. verify display plane decryption of protected buffers. Alan Previn (15): i915_drm.h sync PXP default session i915_drm.h sync PXP object creation Add basic PXP testing of buffer and context alloc Perform a regular 3d copy as a control checkpoint Add PXP attribute support in batchbuffer and buffer_ops libs Add MI_SET_APPID instruction definition Enable protected session cmd in gen12_render_copyfunc Add subtest to copy raw source to protected dest Add test where both src and dest are protected Verify PXP teardown occurred through suspend-resume Verify execbuf fails with stale PXP context after teardown Verify execbuf fails with stale PXP buffer after teardown Verify execbuf ok with stale PXP buf in opt-out use Verify execution behavior with stale PXP assets through suspend-resume Verify protected surfaces are dma buffer sharable Karthik B S (1): tests/i915_pxp: CRC validation for display tests. include/drm-uapi/i915_drm.h | 97 +++ lib/intel_batchbuffer.c | 23 +- lib/intel_batchbuffer.h | 31 + lib/intel_bufops.h | 15 + lib/intel_reg.h | 8 + lib/rendercopy_gen9.c | 57 ++ tests/i915/gem_pxp.c | 1283 +++++++++++++++++++++++++++++++++++ tests/meson.build | 1 + 8 files changed, 1514 insertions(+), 1 deletion(-) create mode 100644 tests/i915/gem_pxp.c -- 2.25.1
next reply other threads:[~2021-10-05 15:14 UTC|newest] Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-10-05 15:10 Alan Previn [this message] 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 00/16] Introduce PXP Test Alan Previn 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 01/16] i915_drm.h sync PXP default session Alan Previn 2021-10-05 19:14 ` Rodrigo Vivi 2021-10-05 19:31 ` Teres Alexis, Alan Previn 2021-10-05 19:34 ` Vivi, Rodrigo 2021-10-06 11:51 ` Petri Latvala 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 02/16] i915_drm.h sync PXP object creation Alan Previn 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 03/16] Add basic PXP testing of buffer and context alloc Alan Previn 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 04/16] Perform a regular 3d copy as a control checkpoint Alan Previn 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 05/16] Add PXP attribute support in batchbuffer and buffer_ops libs Alan Previn 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 06/16] Add MI_SET_APPID instruction definition Alan Previn 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 07/16] Enable protected session cmd in gen12_render_copyfunc Alan Previn 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 08/16] Add subtest to copy raw source to protected dest Alan Previn 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 09/16] Add test where both src and dest are protected Alan Previn 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 10/16] Verify PXP teardown occurred through suspend-resume Alan Previn 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 11/16] Verify execbuf fails with stale PXP context after teardown Alan Previn 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 12/16] Verify execbuf fails with stale PXP buffer " Alan Previn 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 13/16] Verify execbuf ok with stale PXP buf in opt-out use Alan Previn 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 14/16] Verify execution behavior with stale PXP assets through suspend-resume Alan Previn 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 15/16] Verify protected surfaces are dma buffer sharable Alan Previn 2021-10-05 15:10 ` [igt-dev] [PATCH i-g-t v13 16/16] tests/i915_pxp: CRC validation for display tests Alan Previn 2021-10-05 16:11 ` [igt-dev] ✗ Fi.CI.BAT: failure for Introduce PXP Test (rev13) Patchwork 2021-10-05 17:22 ` Teres Alexis, Alan Previn 2021-10-06 7:32 ` Gupta, Anshuman 2021-10-06 9:50 ` Gupta, Anshuman 2021-10-05 19:59 ` [igt-dev] ✓ Fi.CI.BAT: success for Introduce PXP Test (rev14) Patchwork 2021-10-05 23:57 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20211005151022.2161424-1-alan.previn.teres.alexis@intel.com \ --to=alan.previn.teres.alexis@intel.com \ --cc=daniele.ceraolospurio@intel.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=igt-dev@lists.freedesktop.org \ --cc=rodrigo.vivi@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.