diff mbox series

[1/1] drm/ttm: fix offset in VMAs with a pg_offs in ttm_bo_vm_access

Message ID 20200728182704.1809-1-Felix.Kuehling@amd.com (mailing list archive)
State New, archived
Headers show
Series [1/1] drm/ttm: fix offset in VMAs with a pg_offs in ttm_bo_vm_access | expand

Commit Message

Felix Kuehling July 28, 2020, 6:27 p.m. UTC
VMAs with a pg_offs that's offset from the start of the vma_node need
to adjust the offset within the BO accordingly. This matches the
offset calculation in ttm_bo_vm_fault_reserved.

Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Tested-by: Laurent Morichetti <laurent.morichetti@amd.com>
---
 drivers/gpu/drm/ttm/ttm_bo_vm.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Christian König July 29, 2020, 8:08 a.m. UTC | #1
Am 28.07.20 um 20:27 schrieb Felix Kuehling:
> VMAs with a pg_offs that's offset from the start of the vma_node need
> to adjust the offset within the BO accordingly. This matches the
> offset calculation in ttm_bo_vm_fault_reserved.
>
> Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
> Tested-by: Laurent Morichetti <laurent.morichetti@amd.com>

Reviewed-by: Christian König <christian.koenig@amd.com>

Going to pick that up for inclusion in drm-misc-next.

> ---
>   drivers/gpu/drm/ttm/ttm_bo_vm.c | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c
> index 389128b8c4dd..60b41447bec8 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
> @@ -405,8 +405,10 @@ static int ttm_bo_vm_access_kmap(struct ttm_buffer_object *bo,
>   int ttm_bo_vm_access(struct vm_area_struct *vma, unsigned long addr,
>   		     void *buf, int len, int write)
>   {
> -	unsigned long offset = (addr) - vma->vm_start;
>   	struct ttm_buffer_object *bo = vma->vm_private_data;
> +	unsigned long offset = (addr) - vma->vm_start +
> +		((vma->vm_pgoff - drm_vma_node_start(&bo->base.vma_node))
> +		 << PAGE_SHIFT);
>   	int ret;
>   
>   	if (len < 1 || (offset + len) >> PAGE_SHIFT > bo->num_pages)
Felix Kuehling July 29, 2020, 2:15 p.m. UTC | #2
Am 2020-07-29 um 4:08 a.m. schrieb Christian König:
> Am 28.07.20 um 20:27 schrieb Felix Kuehling:
>> VMAs with a pg_offs that's offset from the start of the vma_node need
>> to adjust the offset within the BO accordingly. This matches the
>> offset calculation in ttm_bo_vm_fault_reserved.
>>
>> Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
>> Tested-by: Laurent Morichetti <laurent.morichetti@amd.com>
>
> Reviewed-by: Christian König <christian.koenig@amd.com>
>
> Going to pick that up for inclusion in drm-misc-next.

Thanks. I'll submit it to amd-staging-drm-next so it makes its way into
our DKMS branch quickly.

Alex, would you push this to drm-fixes?

Regards,
  Felix


>
>> ---
>>   drivers/gpu/drm/ttm/ttm_bo_vm.c | 4 +++-
>>   1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c
>> b/drivers/gpu/drm/ttm/ttm_bo_vm.c
>> index 389128b8c4dd..60b41447bec8 100644
>> --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
>> +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
>> @@ -405,8 +405,10 @@ static int ttm_bo_vm_access_kmap(struct
>> ttm_buffer_object *bo,
>>   int ttm_bo_vm_access(struct vm_area_struct *vma, unsigned long addr,
>>                void *buf, int len, int write)
>>   {
>> -    unsigned long offset = (addr) - vma->vm_start;
>>       struct ttm_buffer_object *bo = vma->vm_private_data;
>> +    unsigned long offset = (addr) - vma->vm_start +
>> +        ((vma->vm_pgoff - drm_vma_node_start(&bo->base.vma_node))
>> +         << PAGE_SHIFT);
>>       int ret;
>>         if (len < 1 || (offset + len) >> PAGE_SHIFT > bo->num_pages)
>
Alex Deucher July 29, 2020, 3:30 p.m. UTC | #3
[AMD Public Use]

Christian, Can you cc stable when you apply it to drm-misc?

Alex
Christian König July 29, 2020, 3:33 p.m. UTC | #4
Sure.

Christian.

Am 29.07.2020 17:30 schrieb "Deucher, Alexander" <Alexander.Deucher@amd.com>:

[AMD Public Use]

Christian, Can you cc stable when you apply it to drm-misc?

Alex
Daniel Vetter July 30, 2020, 11:40 a.m. UTC | #5
On Wed, Jul 29, 2020 at 5:34 PM Koenig, Christian
<Christian.Koenig@amd.com> wrote:
>
> Sure.

Note that drm-misc-next isn't the right branch for cc: stable stuff, see

https://drm.pages.freedesktop.org/maintainer-tools/committer-drm-misc.html#where-do-i-apply-my-patch

Just to avoid confusion and needless cherrypicking across branches.
-Daniel

>
> Christian.
>
> Am 29.07.2020 17:30 schrieb "Deucher, Alexander" <Alexander.Deucher@amd.com>:
>
> [AMD Public Use]
>
>
> Christian, Can you cc stable when you apply it to drm-misc?
>
> Alex
> ________________________________
> From: Kuehling, Felix <Felix.Kuehling@amd.com>
> Sent: Wednesday, July 29, 2020 10:15 AM
> To: Koenig, Christian <Christian.Koenig@amd.com>; dri-devel@lists.freedesktop.org <dri-devel@lists.freedesktop.org>; amd-gfx@lists.freedesktop.org <amd-gfx@lists.freedesktop.org>; Deucher, Alexander <Alexander.Deucher@amd.com>
> Cc: Morichetti, Laurent <Laurent.Morichetti@amd.com>
> Subject: Re: [PATCH 1/1] drm/ttm: fix offset in VMAs with a pg_offs in ttm_bo_vm_access
>
> Am 2020-07-29 um 4:08 a.m. schrieb Christian König:
> > Am 28.07.20 um 20:27 schrieb Felix Kuehling:
> >> VMAs with a pg_offs that's offset from the start of the vma_node need
> >> to adjust the offset within the BO accordingly. This matches the
> >> offset calculation in ttm_bo_vm_fault_reserved.
> >>
> >> Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
> >> Tested-by: Laurent Morichetti <laurent.morichetti@amd.com>
> >
> > Reviewed-by: Christian König <christian.koenig@amd.com>
> >
> > Going to pick that up for inclusion in drm-misc-next.
>
> Thanks. I'll submit it to amd-staging-drm-next so it makes its way into
> our DKMS branch quickly.
>
> Alex, would you push this to drm-fixes?
>
> Regards,
>   Felix
>
>
> >
> >> ---
> >>   drivers/gpu/drm/ttm/ttm_bo_vm.c | 4 +++-
> >>   1 file changed, 3 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c
> >> b/drivers/gpu/drm/ttm/ttm_bo_vm.c
> >> index 389128b8c4dd..60b41447bec8 100644
> >> --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
> >> +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
> >> @@ -405,8 +405,10 @@ static int ttm_bo_vm_access_kmap(struct
> >> ttm_buffer_object *bo,
> >>   int ttm_bo_vm_access(struct vm_area_struct *vma, unsigned long addr,
> >>                void *buf, int len, int write)
> >>   {
> >> -    unsigned long offset = (addr) - vma->vm_start;
> >>       struct ttm_buffer_object *bo = vma->vm_private_data;
> >> +    unsigned long offset = (addr) - vma->vm_start +
> >> +        ((vma->vm_pgoff - drm_vma_node_start(&bo->base.vma_node))
> >> +         << PAGE_SHIFT);
> >>       int ret;
> >>         if (len < 1 || (offset + len) >> PAGE_SHIFT > bo->num_pages)
> >
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Christian König July 30, 2020, 11:50 a.m. UTC | #6
Am 30.07.20 um 13:40 schrieb Daniel Vetter:
> On Wed, Jul 29, 2020 at 5:34 PM Koenig, Christian
> <Christian.Koenig@amd.com> wrote:
>> Sure.
> Note that drm-misc-next isn't the right branch for cc: stable stuff, see
>
> https://drm.pages.freedesktop.org/maintainer-tools/committer-drm-misc.html#where-do-i-apply-my-patch

So this should go into drm-misc-fixes? The bug is there for quite a while.

Christian.

>
> Just to avoid confusion and needless cherrypicking across branches.
> -Daniel
>
>> Christian.
>>
>> Am 29.07.2020 17:30 schrieb "Deucher, Alexander" <Alexander.Deucher@amd.com>:
>>
>> [AMD Public Use]
>>
>>
>> Christian, Can you cc stable when you apply it to drm-misc?
>>
>> Alex
>> ________________________________
>> From: Kuehling, Felix <Felix.Kuehling@amd.com>
>> Sent: Wednesday, July 29, 2020 10:15 AM
>> To: Koenig, Christian <Christian.Koenig@amd.com>; dri-devel@lists.freedesktop.org <dri-devel@lists.freedesktop.org>; amd-gfx@lists.freedesktop.org <amd-gfx@lists.freedesktop.org>; Deucher, Alexander <Alexander.Deucher@amd.com>
>> Cc: Morichetti, Laurent <Laurent.Morichetti@amd.com>
>> Subject: Re: [PATCH 1/1] drm/ttm: fix offset in VMAs with a pg_offs in ttm_bo_vm_access
>>
>> Am 2020-07-29 um 4:08 a.m. schrieb Christian König:
>>> Am 28.07.20 um 20:27 schrieb Felix Kuehling:
>>>> VMAs with a pg_offs that's offset from the start of the vma_node need
>>>> to adjust the offset within the BO accordingly. This matches the
>>>> offset calculation in ttm_bo_vm_fault_reserved.
>>>>
>>>> Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
>>>> Tested-by: Laurent Morichetti <laurent.morichetti@amd.com>
>>> Reviewed-by: Christian König <christian.koenig@amd.com>
>>>
>>> Going to pick that up for inclusion in drm-misc-next.
>> Thanks. I'll submit it to amd-staging-drm-next so it makes its way into
>> our DKMS branch quickly.
>>
>> Alex, would you push this to drm-fixes?
>>
>> Regards,
>>    Felix
>>
>>
>>>> ---
>>>>    drivers/gpu/drm/ttm/ttm_bo_vm.c | 4 +++-
>>>>    1 file changed, 3 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c
>>>> b/drivers/gpu/drm/ttm/ttm_bo_vm.c
>>>> index 389128b8c4dd..60b41447bec8 100644
>>>> --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
>>>> +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
>>>> @@ -405,8 +405,10 @@ static int ttm_bo_vm_access_kmap(struct
>>>> ttm_buffer_object *bo,
>>>>    int ttm_bo_vm_access(struct vm_area_struct *vma, unsigned long addr,
>>>>                 void *buf, int len, int write)
>>>>    {
>>>> -    unsigned long offset = (addr) - vma->vm_start;
>>>>        struct ttm_buffer_object *bo = vma->vm_private_data;
>>>> +    unsigned long offset = (addr) - vma->vm_start +
>>>> +        ((vma->vm_pgoff - drm_vma_node_start(&bo->base.vma_node))
>>>> +         << PAGE_SHIFT);
>>>>        int ret;
>>>>          if (len < 1 || (offset + len) >> PAGE_SHIFT > bo->num_pages)
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
>
Christian König July 30, 2020, 11:59 a.m. UTC | #7
Am 30.07.20 um 13:50 schrieb Christian König:
> Am 30.07.20 um 13:40 schrieb Daniel Vetter:
>> On Wed, Jul 29, 2020 at 5:34 PM Koenig, Christian
>> <Christian.Koenig@amd.com> wrote:
>>> Sure.
>> Note that drm-misc-next isn't the right branch for cc: stable stuff, see
>>
>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdrm.pages.freedesktop.org%2Fmaintainer-tools%2Fcommitter-drm-misc.html%23where-do-i-apply-my-patch&amp;data=02%7C01%7CChristian.Koenig%40amd.com%7Cfdb80f31688743c1279f08d8347ece50%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637317066517801827&amp;sdata=gKCTEgJLaP9f96f3wJUGu0yfaV%2FyG3U3WvXDJ5%2FYrOc%3D&amp;reserved=0 
>>
>
> So this should go into drm-misc-fixes? The bug is there for quite a 
> while.

Ok, so I pushed this to drm-misc-fixes, but forgot to add the CC stable tag.

To much to do and not enough time,
Christian.

>
> Christian.
>
>>
>> Just to avoid confusion and needless cherrypicking across branches.
>> -Daniel
>>
>>> Christian.
>>>
>>> Am 29.07.2020 17:30 schrieb "Deucher, Alexander" 
>>> <Alexander.Deucher@amd.com>:
>>>
>>> [AMD Public Use]
>>>
>>>
>>> Christian, Can you cc stable when you apply it to drm-misc?
>>>
>>> Alex
>>> ________________________________
>>> From: Kuehling, Felix <Felix.Kuehling@amd.com>
>>> Sent: Wednesday, July 29, 2020 10:15 AM
>>> To: Koenig, Christian <Christian.Koenig@amd.com>; 
>>> dri-devel@lists.freedesktop.org <dri-devel@lists.freedesktop.org>; 
>>> amd-gfx@lists.freedesktop.org <amd-gfx@lists.freedesktop.org>; 
>>> Deucher, Alexander <Alexander.Deucher@amd.com>
>>> Cc: Morichetti, Laurent <Laurent.Morichetti@amd.com>
>>> Subject: Re: [PATCH 1/1] drm/ttm: fix offset in VMAs with a pg_offs 
>>> in ttm_bo_vm_access
>>>
>>> Am 2020-07-29 um 4:08 a.m. schrieb Christian König:
>>>> Am 28.07.20 um 20:27 schrieb Felix Kuehling:
>>>>> VMAs with a pg_offs that's offset from the start of the vma_node need
>>>>> to adjust the offset within the BO accordingly. This matches the
>>>>> offset calculation in ttm_bo_vm_fault_reserved.
>>>>>
>>>>> Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
>>>>> Tested-by: Laurent Morichetti <laurent.morichetti@amd.com>
>>>> Reviewed-by: Christian König <christian.koenig@amd.com>
>>>>
>>>> Going to pick that up for inclusion in drm-misc-next.
>>> Thanks. I'll submit it to amd-staging-drm-next so it makes its way into
>>> our DKMS branch quickly.
>>>
>>> Alex, would you push this to drm-fixes?
>>>
>>> Regards,
>>>    Felix
>>>
>>>
>>>>> ---
>>>>>    drivers/gpu/drm/ttm/ttm_bo_vm.c | 4 +++-
>>>>>    1 file changed, 3 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c
>>>>> b/drivers/gpu/drm/ttm/ttm_bo_vm.c
>>>>> index 389128b8c4dd..60b41447bec8 100644
>>>>> --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
>>>>> +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
>>>>> @@ -405,8 +405,10 @@ static int ttm_bo_vm_access_kmap(struct
>>>>> ttm_buffer_object *bo,
>>>>>    int ttm_bo_vm_access(struct vm_area_struct *vma, unsigned long 
>>>>> addr,
>>>>>                 void *buf, int len, int write)
>>>>>    {
>>>>> -    unsigned long offset = (addr) - vma->vm_start;
>>>>>        struct ttm_buffer_object *bo = vma->vm_private_data;
>>>>> +    unsigned long offset = (addr) - vma->vm_start +
>>>>> +        ((vma->vm_pgoff - drm_vma_node_start(&bo->base.vma_node))
>>>>> +         << PAGE_SHIFT);
>>>>>        int ret;
>>>>>          if (len < 1 || (offset + len) >> PAGE_SHIFT > bo->num_pages)
>>> _______________________________________________
>>> dri-devel mailing list
>>> dri-devel@lists.freedesktop.org
>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fdri-devel&amp;data=02%7C01%7CChristian.Koenig%40amd.com%7Cfdb80f31688743c1279f08d8347ece50%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637317066517801827&amp;sdata=ZQofPqGAHNmglMcDPQzjpq0AzGbzaUx5RAfwr9zfJ%2FQ%3D&amp;reserved=0 
>>>
>>
>>
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c
index 389128b8c4dd..60b41447bec8 100644
--- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
+++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
@@ -405,8 +405,10 @@  static int ttm_bo_vm_access_kmap(struct ttm_buffer_object *bo,
 int ttm_bo_vm_access(struct vm_area_struct *vma, unsigned long addr,
 		     void *buf, int len, int write)
 {
-	unsigned long offset = (addr) - vma->vm_start;
 	struct ttm_buffer_object *bo = vma->vm_private_data;
+	unsigned long offset = (addr) - vma->vm_start +
+		((vma->vm_pgoff - drm_vma_node_start(&bo->base.vma_node))
+		 << PAGE_SHIFT);
 	int ret;
 
 	if (len < 1 || (offset + len) >> PAGE_SHIFT > bo->num_pages)