-----Original Message----- From: Auld, Matthew <matthew.auld@xxxxxxxxx> Sent: Thursday, March 2, 2023 2:36 AM To: Cavitt, Jonathan <jonathan.cavitt@xxxxxxxxx>; intel-gfx@xxxxxxxxxxxxxxxxxxxxx Cc: Dutt, Sudeep <sudeep.dutt@xxxxxxxxx>; thomas.hellstrom@xxxxxxxxxxxxxxx; maarten.lankhorst@xxxxxxxxxxxxxxx; Vetter, Daniel <daniel.vetter@xxxxxxxxx>; De Marchi, Lucas <lucas.demarchi@xxxxxxxxx>; chris.p.wilson@xxxxxxxxxxxxxxx Subject: Re: [PATCH v5 1/2] drm/i915: Migrate platform-dependent mock hugepage selftests to live > >On 28/02/2023 14:08, Matthew Auld wrote: >> On 27/02/2023 17:19, Jonathan Cavitt wrote: >>> Convert the igt_mock_ppgtt_huge_fill and igt_mock_ppgtt_64K mock >>> selftests into >>> live selftests as their requirements have recently become >>> platform-dependent. >>> Additionally, apply necessary platform dependency checks to these tests. >>> >>> v2: Reorder >>> >>> Signed-off-by: Jonathan Cavitt <jonathan.cavitt@xxxxxxxxx> >> >> r-b still stands for the series. Note that CI is busted atm though, so >> we can't merge this yet. Likely need to re-trigger testing for the >> series once CI/drm-tip is working again. > >CI looks to be back. Can you trigger a retest through patchwork, or >resend the series? The retest was submitted, but the mock hugepages subtest returned with a failure. It didn't do so in the first run, nor did it fail in the prior revision (the one with the incorrect patch order). Do you have any guidance for forward progress? -Jonathan Cavitt > >> >> >>> --- >>> .../gpu/drm/i915/gem/selftests/huge_pages.c | 22 ++++++++++++++----- >>> 1 file changed, 17 insertions(+), 5 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/i915/gem/selftests/huge_pages.c >>> b/drivers/gpu/drm/i915/gem/selftests/huge_pages.c >>> index defece0bcb81..375f119ab261 100644 >>> --- a/drivers/gpu/drm/i915/gem/selftests/huge_pages.c >>> +++ b/drivers/gpu/drm/i915/gem/selftests/huge_pages.c >>> @@ -710,7 +710,7 @@ static void close_object_list(struct list_head >>> *objects, >>> } >>> } >>> -static int igt_mock_ppgtt_huge_fill(void *arg) >>> +static int igt_ppgtt_huge_fill(void *arg) >>> { >>> struct i915_ppgtt *ppgtt = arg; >>> struct drm_i915_private *i915 = ppgtt->vm.i915; >>> @@ -784,7 +784,8 @@ static int igt_mock_ppgtt_huge_fill(void *arg) >>> GEM_BUG_ON(!expected_gtt); >>> GEM_BUG_ON(size); >>> - if (expected_gtt & I915_GTT_PAGE_SIZE_4K) >>> + if (expected_gtt & I915_GTT_PAGE_SIZE_4K && >>> + GRAPHICS_VER_FULL(i915) < IP_VER(12, 50)) >>> expected_gtt &= ~I915_GTT_PAGE_SIZE_64K; >>> i915_vma_unpin(vma); >>> @@ -831,7 +832,7 @@ static int igt_mock_ppgtt_huge_fill(void *arg) >>> return err; >>> } >>> -static int igt_mock_ppgtt_64K(void *arg) >>> +static int igt_ppgtt_64K(void *arg) >>> { >>> struct i915_ppgtt *ppgtt = arg; >>> struct drm_i915_private *i915 = ppgtt->vm.i915; >>> @@ -913,6 +914,17 @@ static int igt_mock_ppgtt_64K(void *arg) >>> unsigned int offset = objects[i].offset; >>> unsigned int flags = PIN_USER; >>> + /* >>> + * For modern GTT models, the requirements for marking a >>> page-table >>> + * as 64K have been relaxed. Account for this. >>> + */ >>> + >>> + if (GRAPHICS_VER_FULL(i915) >= IP_VER(12, 50)) { >>> + expected_gtt = 0; >>> + expected_gtt |= size & (SZ_64K | SZ_2M) ? >>> I915_GTT_PAGE_SIZE_64K : 0; >>> + expected_gtt |= size & SZ_4K ? I915_GTT_PAGE_SIZE_4K : 0; >>> + } >>> + >>> for (single = 0; single <= 1; single++) { >>> obj = fake_huge_pages_object(i915, size, !!single); >>> if (IS_ERR(obj)) >>> @@ -1910,8 +1922,6 @@ int i915_gem_huge_page_mock_selftests(void) >>> SUBTEST(igt_mock_exhaust_device_supported_pages), >>> SUBTEST(igt_mock_memory_region_huge_pages), >>> SUBTEST(igt_mock_ppgtt_misaligned_dma), >>> - SUBTEST(igt_mock_ppgtt_huge_fill), >>> - SUBTEST(igt_mock_ppgtt_64K), >>> }; >>> struct drm_i915_private *dev_priv; >>> struct i915_ppgtt *ppgtt; >>> @@ -1962,6 +1972,8 @@ int i915_gem_huge_page_live_selftests(struct >>> drm_i915_private *i915) >>> SUBTEST(igt_ppgtt_sanity_check), >>> SUBTEST(igt_ppgtt_compact), >>> SUBTEST(igt_ppgtt_mixed), >>> + SUBTEST(igt_ppgtt_huge_fill), >>> + SUBTEST(igt_ppgtt_64K), >>> }; >>> if (!HAS_PPGTT(i915)) { >