Re: [PATCH] drm/amdkfd: Use gpu_offset for user queue's wptr

2023-09-18 Thread Felix Kuehling

On 2023-09-17 22:14, Wang, YuBiao wrote:

[AMD Official Use Only - General]

Hi Felix,

Yeah, I believe that we were always set gart domain start as 0 before.


Thanks for confirming that. The patch is

Reviewed-by: Felix Kuehling 




Regards,
Yubiao

-Original Message-
From: Kuehling, Felix 
Sent: Friday, September 15, 2023 10:54 PM
To: Koenig, Christian ; Wang, YuBiao ; 
amd-gfx@lists.freedesktop.org; Sharma, Shashank 
Cc: Chen, Horace ; Tuikov, Luben ; Deucher, Alexander 
; Zhang, Hawking ; Liu, Monk ; Xu, 
Feifei ; Kevin Wang 
Subject: Re: [PATCH] drm/amdkfd: Use gpu_offset for user queue's wptr

On 2023-09-15 2:50, Christian König wrote:

Am 15.09.23 um 04:52 schrieb YuBiao Wang:

Directly use tbo's start address will miss the domain start offset.
Need to use gpu_offset instead.

Signed-off-by: YuBiao Wang 

Felix and/or Shashank should probably take a look as well, but of hand
that looks like the correct fix.

Looks reasonable to me. Why did this not cause problems before? Are we just 
lucky that the domain start offset is 0 on the GPUs we've tested so far?

Regards,
Felix



Reviewed-by: Christian König 


---
   drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 2 +-
   1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
index 77159b03a422..36e7171ad9a7 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
@@ -216,7 +216,7 @@ static int add_queue_mes(struct
device_queue_manager *dqm, struct queue *q,
 if (q->wptr_bo) {
   wptr_addr_off = (uint64_t)q->properties.write_ptr &
(PAGE_SIZE - 1);
-queue_input.wptr_mc_addr =
((uint64_t)q->wptr_bo->tbo.resource->start << PAGE_SHIFT) +
wptr_addr_off;
+queue_input.wptr_mc_addr = amdgpu_bo_gpu_offset(q->wptr_bo)
+wptr_addr_off;
   }
 queue_input.is_kfd_process = 1;


Re: [PATCH] drm/amdkfd: Use gpu_offset for user queue's wptr

2023-09-18 Thread Christian König

Am 15.09.23 um 16:53 schrieb Felix Kuehling:

On 2023-09-15 2:50, Christian König wrote:

Am 15.09.23 um 04:52 schrieb YuBiao Wang:
Directly use tbo's start address will miss the domain start offset. 
Need

to use gpu_offset instead.

Signed-off-by: YuBiao Wang 


Felix and/or Shashank should probably take a look as well, but of 
hand that looks like the correct fix.


Looks reasonable to me. Why did this not cause problems before? Are we 
just lucky that the domain start offset is 0 on the GPUs we've tested 
so far?


By coincident the GART ended up being placed at 0 before. Now Alex has 
to move it to work around other issues.


Regards,
Christian.



Regards,
  Felix




Reviewed-by: Christian König 


---
  drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c

index 77159b03a422..36e7171ad9a7 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
@@ -216,7 +216,7 @@ static int add_queue_mes(struct 
device_queue_manager *dqm, struct queue *q,

    if (q->wptr_bo) {
  wptr_addr_off = (uint64_t)q->properties.write_ptr & 
(PAGE_SIZE - 1);
-    queue_input.wptr_mc_addr = 
((uint64_t)q->wptr_bo->tbo.resource->start << PAGE_SHIFT) + 
wptr_addr_off;
+    queue_input.wptr_mc_addr = amdgpu_bo_gpu_offset(q->wptr_bo) 
+ wptr_addr_off;

  }
    queue_input.is_kfd_process = 1;






RE: [PATCH] drm/amdkfd: Use gpu_offset for user queue's wptr

2023-09-17 Thread Wang, YuBiao
[AMD Official Use Only - General]

Hi Felix,

Yeah, I believe that we were always set gart domain start as 0 before.

Regards,
Yubiao

-Original Message-
From: Kuehling, Felix 
Sent: Friday, September 15, 2023 10:54 PM
To: Koenig, Christian ; Wang, YuBiao 
; amd-gfx@lists.freedesktop.org; Sharma, Shashank 

Cc: Chen, Horace ; Tuikov, Luben ; 
Deucher, Alexander ; Zhang, Hawking 
; Liu, Monk ; Xu, Feifei 
; Kevin Wang 
Subject: Re: [PATCH] drm/amdkfd: Use gpu_offset for user queue's wptr

On 2023-09-15 2:50, Christian König wrote:
> Am 15.09.23 um 04:52 schrieb YuBiao Wang:
>> Directly use tbo's start address will miss the domain start offset.
>> Need to use gpu_offset instead.
>>
>> Signed-off-by: YuBiao Wang 
>
> Felix and/or Shashank should probably take a look as well, but of hand
> that looks like the correct fix.

Looks reasonable to me. Why did this not cause problems before? Are we just 
lucky that the domain start offset is 0 on the GPUs we've tested so far?

Regards,
   Felix


>
> Reviewed-by: Christian König 
>
>> ---
>>   drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
>> b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
>> index 77159b03a422..36e7171ad9a7 100644
>> --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
>> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
>> @@ -216,7 +216,7 @@ static int add_queue_mes(struct
>> device_queue_manager *dqm, struct queue *q,
>> if (q->wptr_bo) {
>>   wptr_addr_off = (uint64_t)q->properties.write_ptr &
>> (PAGE_SIZE - 1);
>> -queue_input.wptr_mc_addr =
>> ((uint64_t)q->wptr_bo->tbo.resource->start << PAGE_SHIFT) +
>> wptr_addr_off;
>> +queue_input.wptr_mc_addr = amdgpu_bo_gpu_offset(q->wptr_bo)
>> +wptr_addr_off;
>>   }
>> queue_input.is_kfd_process = 1;
>


Re: [PATCH] drm/amdkfd: Use gpu_offset for user queue's wptr

2023-09-15 Thread Felix Kuehling

On 2023-09-15 2:50, Christian König wrote:

Am 15.09.23 um 04:52 schrieb YuBiao Wang:

Directly use tbo's start address will miss the domain start offset. Need
to use gpu_offset instead.

Signed-off-by: YuBiao Wang 


Felix and/or Shashank should probably take a look as well, but of hand 
that looks like the correct fix.


Looks reasonable to me. Why did this not cause problems before? Are we 
just lucky that the domain start offset is 0 on the GPUs we've tested so 
far?


Regards,
  Felix




Reviewed-by: Christian König 


---
  drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c

index 77159b03a422..36e7171ad9a7 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
@@ -216,7 +216,7 @@ static int add_queue_mes(struct 
device_queue_manager *dqm, struct queue *q,

    if (q->wptr_bo) {
  wptr_addr_off = (uint64_t)q->properties.write_ptr & 
(PAGE_SIZE - 1);
-    queue_input.wptr_mc_addr = 
((uint64_t)q->wptr_bo->tbo.resource->start << PAGE_SHIFT) + 
wptr_addr_off;
+    queue_input.wptr_mc_addr = amdgpu_bo_gpu_offset(q->wptr_bo) 
+ wptr_addr_off;

  }
    queue_input.is_kfd_process = 1;




Re: [PATCH] drm/amdkfd: Use gpu_offset for user queue's wptr

2023-09-15 Thread Christian König

Am 15.09.23 um 04:52 schrieb YuBiao Wang:

Directly use tbo's start address will miss the domain start offset. Need
to use gpu_offset instead.

Signed-off-by: YuBiao Wang 


Felix and/or Shashank should probably take a look as well, but of hand 
that looks like the correct fix.


Reviewed-by: Christian König 


---
  drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
index 77159b03a422..36e7171ad9a7 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
@@ -216,7 +216,7 @@ static int add_queue_mes(struct device_queue_manager *dqm, 
struct queue *q,
  
  	if (q->wptr_bo) {

wptr_addr_off = (uint64_t)q->properties.write_ptr & (PAGE_SIZE 
- 1);
-   queue_input.wptr_mc_addr = ((uint64_t)q->wptr_bo->tbo.resource->start 
<< PAGE_SHIFT) + wptr_addr_off;
+   queue_input.wptr_mc_addr = amdgpu_bo_gpu_offset(q->wptr_bo) + 
wptr_addr_off;
}
  
  	queue_input.is_kfd_process = 1;