Re: [Intel-gfx] [PATCH v5 1/2] drm/i915: Migrate platform-dependent mock hugepage selftests to live

2023-03-13 Thread Matthew Auld

On 13/03/2023 15:57, Cavitt, Jonathan wrote:

-Original Message-
From: Auld, Matthew 
Sent: Thursday, March 2, 2023 2:36 AM
To: Cavitt, Jonathan ; 
intel-gfx@lists.freedesktop.org
Cc: Dutt, Sudeep ; thomas.hellst...@linux.intel.com; 
maarten.lankho...@linux.intel.com; Vetter, Daniel ; De Marchi, 
Lucas ; chris.p.wil...@linux.intel.com
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 


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?


I think there were some more CI issues. But from the logs it looks like 
we just need to fix the arg handling and related bits, AFAICT. Sent a 
version to trybot (only compile tested):


https://patchwork.freedesktop.org/patch/526566/?series=115072=1


-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)) {




Re: [Intel-gfx] [PATCH v5 1/2] drm/i915: Migrate platform-dependent mock hugepage selftests to live

2023-03-13 Thread Cavitt, Jonathan
-Original Message-
From: Auld, Matthew  
Sent: Thursday, March 2, 2023 2:36 AM
To: Cavitt, Jonathan ; 
intel-gfx@lists.freedesktop.org
Cc: Dutt, Sudeep ; thomas.hellst...@linux.intel.com; 
maarten.lankho...@linux.intel.com; Vetter, Daniel ; De 
Marchi, Lucas ; chris.p.wil...@linux.intel.com
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 
>> 
>> 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)) {
>


Re: [Intel-gfx] [PATCH v5 1/2] drm/i915: Migrate platform-dependent mock hugepage selftests to live

2023-03-02 Thread Cavitt, Jonathan
-Original Message-
From: Auld, Matthew  
Sent: Thursday, March 2, 2023 2:36 AM
To: Cavitt, Jonathan ; 
intel-gfx@lists.freedesktop.org
Cc: Dutt, Sudeep ; thomas.hellst...@linux.intel.com; 
maarten.lankho...@linux.intel.com; Vetter, Daniel ; De 
Marchi, Lucas ; chris.p.wil...@linux.intel.com
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 
> > 
> > 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?

Retest request submitted.
-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)) {
> 


Re: [Intel-gfx] [PATCH v5 1/2] drm/i915: Migrate platform-dependent mock hugepage selftests to live

2023-03-02 Thread Matthew Auld

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 


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?






---
  .../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)) {


Re: [Intel-gfx] [PATCH v5 1/2] drm/i915: Migrate platform-dependent mock hugepage selftests to live

2023-02-28 Thread Matthew Auld

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 


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.




---
  .../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)) {


[Intel-gfx] [PATCH v5 1/2] drm/i915: Migrate platform-dependent mock hugepage selftests to live

2023-02-27 Thread Jonathan Cavitt
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 
---
 .../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)) {
-- 
2.25.1