RE: [PATCH] drm/i915/gt: Report full vm address range

2024-03-20 Thread Mrozek, Michal
> If we provide the total GTT size we will have one page that will be contended 
> between kernel and userspace and, if userspace is unaware that the page 
> belongs to the > kernel, we might step on each other toe.

That's fine, Compute needs to know total GTT size.
Not available GTT size.



Re: [PATCH] drm/i915/gt: Report full vm address range

2024-03-20 Thread Andi Shyti
Hi Michal,

On Mon, Mar 18, 2024 at 05:21:54AM +, Mrozek, Michal wrote:
> > > Lionel, Michal, thoughts?
> Compute UMD needs to know exact GTT total size.

the problem is that we cannot apply the workaround without
reserving one page from the GTT total size and we need to apply
the workaround.

If we provide the total GTT size we will have one page that will
be contended between kernel and userspace and, if userspace is
unaware that the page belongs to the kernel, we might step on
each other toe.

The ask here from kernel side is to relax the check on the
maxNBitValue() in userspace and take what the kernel provides.

Thanks,
Andi


RE: [PATCH] drm/i915/gt: Report full vm address range

2024-03-17 Thread Mrozek, Michal
> > Lionel, Michal, thoughts?
Compute UMD needs to know exact GTT total size.


Re: [PATCH] drm/i915/gt: Report full vm address range

2024-03-15 Thread Andi Shyti
Hi Nirmoy,

> > In Mesa we've been relying on I915_CONTEXT_PARAM_GTT_SIZE so as long as
> > that is adjusted by the kernel
> 
> What do you mean by adjusted by, should it be a aligned size?
> 
> I915_CONTEXT_PARAM_GTT_SIZE ioctl is returning vm->total which is
> adjusted(reduced by a page).
> 
> This patch might cause silent error as it is not removing WABB which is
> using the reserved page to add dummy blt and if userspace is using that
> 
> page then it will be overwritten.

yes, I think this could happen, but there is no solution,
unfortunately. We need to fail at some point.

On the other hand, I think mesa is miscalculating the vm size. In
userspace the total size is derived by the bit size
(maxNBitValue()).

By doing so, I guess there will always be cases of
miscalculation.

There are two solutions here:

 1. we track two sizes, one the true available size and one the
total size. But this looks like a dirty hack to me.
 2. UMD fixes the size calculation by taking for granted what the
driver provides and we don't have anything to do in KMD.

Lionel, Michal, thoughts?

Andi


Re: [PATCH] drm/i915/gt: Report full vm address range

2024-03-14 Thread Nirmoy Das



On 3/14/2024 3:04 PM, Lionel Landwerlin wrote:

Hi Andi,

In Mesa we've been relying on I915_CONTEXT_PARAM_GTT_SIZE so as long 
as that is adjusted by the kernel


What do you mean by adjusted by, should it be a aligned size?

I915_CONTEXT_PARAM_GTT_SIZE ioctl is returning vm->total which is 
adjusted(reduced by a page).


This patch might cause silent error as it is not removing WABB which is 
using the reserved page to add dummy blt and if userspace is using that


page then it will be overwritten.


Regards,

Nirmoy


, we should be able to continue working without issues.

Acked-by: Lionel Landwerlin 

Thanks,

-Lionel

On 13/03/2024 21:39, Andi Shyti wrote:

Commit 9bb66c179f50 ("drm/i915: Reserve some kernel space per
vm") has reserved an object for kernel space usage.

Userspace, though, needs to know the full address range.

Fixes: 9bb66c179f50 ("drm/i915: Reserve some kernel space per vm")
Signed-off-by: Andi Shyti 
Cc: Andrzej Hajda 
Cc: Chris Wilson 
Cc: Lionel Landwerlin 
Cc: Michal Mrozek 
Cc: Nirmoy Das 
Cc:  # v6.2+
---
  drivers/gpu/drm/i915/gt/gen8_ppgtt.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/gen8_ppgtt.c 
b/drivers/gpu/drm/i915/gt/gen8_ppgtt.c

index fa46d2308b0e..d76831f50106 100644
--- a/drivers/gpu/drm/i915/gt/gen8_ppgtt.c
+++ b/drivers/gpu/drm/i915/gt/gen8_ppgtt.c
@@ -982,8 +982,9 @@ static int gen8_init_rsvd(struct 
i915_address_space *vm)

    vm->rsvd.vma = i915_vma_make_unshrinkable(vma);
  vm->rsvd.obj = obj;
-    vm->total -= vma->node.size;
+
  return 0;
+
  unref:
  i915_gem_object_put(obj);
  return ret;





Re: [PATCH] drm/i915/gt: Report full vm address range

2024-03-14 Thread Lionel Landwerlin

Hi Andi,

In Mesa we've been relying on I915_CONTEXT_PARAM_GTT_SIZE so as long as 
that is adjusted by the kernel, we should be able to continue working 
without issues.


Acked-by: Lionel Landwerlin 

Thanks,

-Lionel

On 13/03/2024 21:39, Andi Shyti wrote:

Commit 9bb66c179f50 ("drm/i915: Reserve some kernel space per
vm") has reserved an object for kernel space usage.

Userspace, though, needs to know the full address range.

Fixes: 9bb66c179f50 ("drm/i915: Reserve some kernel space per vm")
Signed-off-by: Andi Shyti 
Cc: Andrzej Hajda 
Cc: Chris Wilson 
Cc: Lionel Landwerlin 
Cc: Michal Mrozek 
Cc: Nirmoy Das 
Cc:  # v6.2+
---
  drivers/gpu/drm/i915/gt/gen8_ppgtt.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/gen8_ppgtt.c 
b/drivers/gpu/drm/i915/gt/gen8_ppgtt.c
index fa46d2308b0e..d76831f50106 100644
--- a/drivers/gpu/drm/i915/gt/gen8_ppgtt.c
+++ b/drivers/gpu/drm/i915/gt/gen8_ppgtt.c
@@ -982,8 +982,9 @@ static int gen8_init_rsvd(struct i915_address_space *vm)
  
  	vm->rsvd.vma = i915_vma_make_unshrinkable(vma);

vm->rsvd.obj = obj;
-   vm->total -= vma->node.size;
+
return 0;
+
  unref:
i915_gem_object_put(obj);
return ret;





RE: [PATCH] drm/i915/gt: Report full vm address range

2024-03-13 Thread Mrozek, Michal
Commit 9bb66c179f50 ("drm/i915: Reserve some kernel space per
vm") has reserved an object for kernel space usage.

Userspace, though, needs to know the full address range.

Fixes: 9bb66c179f50 ("drm/i915: Reserve some kernel space per vm")
Signed-off-by: Andi Shyti 
Cc: Andrzej Hajda 
Cc: Chris Wilson 
Cc: Lionel Landwerlin 
Cc: Michal Mrozek 
Cc: Nirmoy Das 
Cc:  # v6.2+
---
 drivers/gpu/drm/i915/gt/gen8_ppgtt.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/gen8_ppgtt.c 
b/drivers/gpu/drm/i915/gt/gen8_ppgtt.c
index fa46d2308b0e..d76831f50106 100644
--- a/drivers/gpu/drm/i915/gt/gen8_ppgtt.c
+++ b/drivers/gpu/drm/i915/gt/gen8_ppgtt.c
@@ -982,8 +982,9 @@ static int gen8_init_rsvd(struct i915_address_space *vm)
 
vm->rsvd.vma = i915_vma_make_unshrinkable(vma);
vm->rsvd.obj = obj;
-   vm->total -= vma->node.size;
+
return 0;
+
 unref:
i915_gem_object_put(obj);
return ret;
-- 
2.43.0

Acked-by: Michal Mrozek