All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] drm/radeon: allways add the VM clear duplicate
@ 2015-07-08  7:56 Christian König
  2015-07-08  7:56 ` [PATCH 2/2] drm/radeon: check if BO_VA is set before adding it to the invalidation list Christian König
  2015-07-08 15:57 ` [PATCH 1/2] drm/radeon: allways add the VM clear duplicate Alex Deucher
  0 siblings, 2 replies; 10+ messages in thread
From: Christian König @ 2015-07-08  7:56 UTC (permalink / raw)
  To: alexdeucher; +Cc: dri-devel

From: Christian König <christian.koenig@amd.com>

We need to allways add the VM clear duplicate of the BO_VA,
no matter what the old status was.

Signed-off-by: Christian König <christian.koenig@amd.com>
Test-by: hadack@gmx.de
---
 drivers/gpu/drm/radeon/radeon_vm.c | 34 ++++++++++++++++------------------
 1 file changed, 16 insertions(+), 18 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_vm.c b/drivers/gpu/drm/radeon/radeon_vm.c
index ec10533..0310965 100644
--- a/drivers/gpu/drm/radeon/radeon_vm.c
+++ b/drivers/gpu/drm/radeon/radeon_vm.c
@@ -493,29 +493,27 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
 	}
 
 	if (bo_va->it.start || bo_va->it.last) {
-		spin_lock(&vm->status_lock);
-		if (list_empty(&bo_va->vm_status)) {
-			/* add a clone of the bo_va to clear the old address */
-			struct radeon_bo_va *tmp;
-			spin_unlock(&vm->status_lock);
-			tmp = kzalloc(sizeof(struct radeon_bo_va), GFP_KERNEL);
-			if (!tmp) {
-				mutex_unlock(&vm->mutex);
-				r = -ENOMEM;
-				goto error_unreserve;
-			}
-			tmp->it.start = bo_va->it.start;
-			tmp->it.last = bo_va->it.last;
-			tmp->vm = vm;
-			tmp->bo = radeon_bo_ref(bo_va->bo);
-			spin_lock(&vm->status_lock);
-			list_add(&tmp->vm_status, &vm->freed);
+		/* add a clone of the bo_va to clear the old address */
+		struct radeon_bo_va *tmp;
+		tmp = kzalloc(sizeof(struct radeon_bo_va), GFP_KERNEL);
+		if (!tmp) {
+			mutex_unlock(&vm->mutex);
+			r = -ENOMEM;
+			goto error_unreserve;
 		}
-		spin_unlock(&vm->status_lock);
+		tmp->it.start = bo_va->it.start;
+		tmp->it.last = bo_va->it.last;
+		tmp->vm = vm;
+		tmp->bo = radeon_bo_ref(bo_va->bo);
 
 		interval_tree_remove(&bo_va->it, &vm->va);
 		bo_va->it.start = 0;
 		bo_va->it.last = 0;
+
+		spin_lock(&vm->status_lock);
+		list_del_init(&bo_va->vm_status);
+		list_add(&tmp->vm_status, &vm->freed);
+		spin_unlock(&vm->status_lock);
 	}
 
 	if (soffset || eoffset) {
-- 
1.9.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/2] drm/radeon: check if BO_VA is set before adding it to the invalidation list
  2015-07-08  7:56 [PATCH 1/2] drm/radeon: allways add the VM clear duplicate Christian König
@ 2015-07-08  7:56 ` Christian König
  2015-07-08  8:08   ` Michel Dänzer
  2015-07-08 15:57 ` [PATCH 1/2] drm/radeon: allways add the VM clear duplicate Alex Deucher
  1 sibling, 1 reply; 10+ messages in thread
From: Christian König @ 2015-07-08  7:56 UTC (permalink / raw)
  To: alexdeucher; +Cc: dri-devel

From: Christian König <christian.koenig@amd.com>

Otherwise we try to clear BO_VAs without an address.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91141

Signed-off-by: Christian König <christian.koenig@amd.com>
Test-by: hadack@gmx.de
---
 drivers/gpu/drm/radeon/radeon_vm.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_vm.c b/drivers/gpu/drm/radeon/radeon_vm.c
index 0310965..48d97c0 100644
--- a/drivers/gpu/drm/radeon/radeon_vm.c
+++ b/drivers/gpu/drm/radeon/radeon_vm.c
@@ -507,22 +507,21 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
 		tmp->bo = radeon_bo_ref(bo_va->bo);
 
 		interval_tree_remove(&bo_va->it, &vm->va);
+		spin_lock(&vm->status_lock);
 		bo_va->it.start = 0;
 		bo_va->it.last = 0;
-
-		spin_lock(&vm->status_lock);
 		list_del_init(&bo_va->vm_status);
 		list_add(&tmp->vm_status, &vm->freed);
 		spin_unlock(&vm->status_lock);
 	}
 
 	if (soffset || eoffset) {
+		spin_lock(&vm->status_lock);
 		bo_va->it.start = soffset;
 		bo_va->it.last = eoffset - 1;
-		interval_tree_insert(&bo_va->it, &vm->va);
-		spin_lock(&vm->status_lock);
 		list_add(&bo_va->vm_status, &vm->cleared);
 		spin_unlock(&vm->status_lock);
+		interval_tree_insert(&bo_va->it, &vm->va);
 	}
 
 	bo_va->flags = flags;
@@ -1156,7 +1155,8 @@ void radeon_vm_bo_invalidate(struct radeon_device *rdev,
 
 	list_for_each_entry(bo_va, &bo->va, bo_list) {
 		spin_lock(&bo_va->vm->status_lock);
-		if (list_empty(&bo_va->vm_status))
+		if (list_empty(&bo_va->vm_status) &&
+		    (bo_va->it.start || bo_va->it.last))
 			list_add(&bo_va->vm_status, &bo_va->vm->invalidated);
 		spin_unlock(&bo_va->vm->status_lock);
 	}
-- 
1.9.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] drm/radeon: check if BO_VA is set before adding it to the invalidation list
  2015-07-08  7:56 ` [PATCH 2/2] drm/radeon: check if BO_VA is set before adding it to the invalidation list Christian König
@ 2015-07-08  8:08   ` Michel Dänzer
  0 siblings, 0 replies; 10+ messages in thread
From: Michel Dänzer @ 2015-07-08  8:08 UTC (permalink / raw)
  To: Christian König, alexdeucher; +Cc: dri-devel

On 08.07.2015 16:56, Christian König wrote:
> From: Christian König <christian.koenig@amd.com>
> 
> Otherwise we try to clear BO_VAs without an address.
> 
> Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91141
> 
> Signed-off-by: Christian König <christian.koenig@amd.com>
> Test-by: hadack@gmx.de

This series is

Tested-by: Michel Dänzer <michel.daenzer@amd.com>


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] drm/radeon: allways add the VM clear duplicate
  2015-07-08  7:56 [PATCH 1/2] drm/radeon: allways add the VM clear duplicate Christian König
  2015-07-08  7:56 ` [PATCH 2/2] drm/radeon: check if BO_VA is set before adding it to the invalidation list Christian König
@ 2015-07-08 15:57 ` Alex Deucher
  2015-07-08 16:08   ` Christian König
  1 sibling, 1 reply; 10+ messages in thread
From: Alex Deucher @ 2015-07-08 15:57 UTC (permalink / raw)
  To: Christian König; +Cc: Maling list - DRI developers

On Wed, Jul 8, 2015 at 3:56 AM, Christian König <deathsimple@vodafone.de> wrote:
> From: Christian König <christian.koenig@amd.com>
>
> We need to allways add the VM clear duplicate of the BO_VA,
> no matter what the old status was.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
> Test-by: hadack@gmx.de

This patch does not apply cleanly.  It also adds an undefined label
error_unreserve.  Is there an additional patch required?

Alex

> ---
>  drivers/gpu/drm/radeon/radeon_vm.c | 34 ++++++++++++++++------------------
>  1 file changed, 16 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_vm.c b/drivers/gpu/drm/radeon/radeon_vm.c
> index ec10533..0310965 100644
> --- a/drivers/gpu/drm/radeon/radeon_vm.c
> +++ b/drivers/gpu/drm/radeon/radeon_vm.c
> @@ -493,29 +493,27 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
>         }
>
>         if (bo_va->it.start || bo_va->it.last) {
> -               spin_lock(&vm->status_lock);
> -               if (list_empty(&bo_va->vm_status)) {
> -                       /* add a clone of the bo_va to clear the old address */
> -                       struct radeon_bo_va *tmp;
> -                       spin_unlock(&vm->status_lock);
> -                       tmp = kzalloc(sizeof(struct radeon_bo_va), GFP_KERNEL);
> -                       if (!tmp) {
> -                               mutex_unlock(&vm->mutex);
> -                               r = -ENOMEM;
> -                               goto error_unreserve;
> -                       }
> -                       tmp->it.start = bo_va->it.start;
> -                       tmp->it.last = bo_va->it.last;
> -                       tmp->vm = vm;
> -                       tmp->bo = radeon_bo_ref(bo_va->bo);
> -                       spin_lock(&vm->status_lock);
> -                       list_add(&tmp->vm_status, &vm->freed);
> +               /* add a clone of the bo_va to clear the old address */
> +               struct radeon_bo_va *tmp;
> +               tmp = kzalloc(sizeof(struct radeon_bo_va), GFP_KERNEL);
> +               if (!tmp) {
> +                       mutex_unlock(&vm->mutex);
> +                       r = -ENOMEM;
> +                       goto error_unreserve;
>                 }
> -               spin_unlock(&vm->status_lock);
> +               tmp->it.start = bo_va->it.start;
> +               tmp->it.last = bo_va->it.last;
> +               tmp->vm = vm;
> +               tmp->bo = radeon_bo_ref(bo_va->bo);
>
>                 interval_tree_remove(&bo_va->it, &vm->va);
>                 bo_va->it.start = 0;
>                 bo_va->it.last = 0;
> +
> +               spin_lock(&vm->status_lock);
> +               list_del_init(&bo_va->vm_status);
> +               list_add(&tmp->vm_status, &vm->freed);
> +               spin_unlock(&vm->status_lock);
>         }
>
>         if (soffset || eoffset) {
> --
> 1.9.1
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] drm/radeon: allways add the VM clear duplicate
  2015-07-08 15:57 ` [PATCH 1/2] drm/radeon: allways add the VM clear duplicate Alex Deucher
@ 2015-07-08 16:08   ` Christian König
  2015-07-08 16:14     ` Alex Deucher
  0 siblings, 1 reply; 10+ messages in thread
From: Christian König @ 2015-07-08 16:08 UTC (permalink / raw)
  To: Alex Deucher; +Cc: Maling list - DRI developers

On 08.07.2015 17:57, Alex Deucher wrote:
> On Wed, Jul 8, 2015 at 3:56 AM, Christian König <deathsimple@vodafone.de> wrote:
>> From: Christian König <christian.koenig@amd.com>
>>
>> We need to allways add the VM clear duplicate of the BO_VA,
>> no matter what the old status was.
>>
>> Signed-off-by: Christian König <christian.koenig@amd.com>
>> Test-by: hadack@gmx.de
> This patch does not apply cleanly.  It also adds an undefined label
> error_unreserve.  Is there an additional patch required?

That's possible, but I thought the depending patch would have already 
been upstream.

Can you create a drm-fixes-4.2 branch I can rebase on?

Thanks,
Christian.

> Alex
>
>> ---
>>   drivers/gpu/drm/radeon/radeon_vm.c | 34 ++++++++++++++++------------------
>>   1 file changed, 16 insertions(+), 18 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/radeon/radeon_vm.c b/drivers/gpu/drm/radeon/radeon_vm.c
>> index ec10533..0310965 100644
>> --- a/drivers/gpu/drm/radeon/radeon_vm.c
>> +++ b/drivers/gpu/drm/radeon/radeon_vm.c
>> @@ -493,29 +493,27 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
>>          }
>>
>>          if (bo_va->it.start || bo_va->it.last) {
>> -               spin_lock(&vm->status_lock);
>> -               if (list_empty(&bo_va->vm_status)) {
>> -                       /* add a clone of the bo_va to clear the old address */
>> -                       struct radeon_bo_va *tmp;
>> -                       spin_unlock(&vm->status_lock);
>> -                       tmp = kzalloc(sizeof(struct radeon_bo_va), GFP_KERNEL);
>> -                       if (!tmp) {
>> -                               mutex_unlock(&vm->mutex);
>> -                               r = -ENOMEM;
>> -                               goto error_unreserve;
>> -                       }
>> -                       tmp->it.start = bo_va->it.start;
>> -                       tmp->it.last = bo_va->it.last;
>> -                       tmp->vm = vm;
>> -                       tmp->bo = radeon_bo_ref(bo_va->bo);
>> -                       spin_lock(&vm->status_lock);
>> -                       list_add(&tmp->vm_status, &vm->freed);
>> +               /* add a clone of the bo_va to clear the old address */
>> +               struct radeon_bo_va *tmp;
>> +               tmp = kzalloc(sizeof(struct radeon_bo_va), GFP_KERNEL);
>> +               if (!tmp) {
>> +                       mutex_unlock(&vm->mutex);
>> +                       r = -ENOMEM;
>> +                       goto error_unreserve;
>>                  }
>> -               spin_unlock(&vm->status_lock);
>> +               tmp->it.start = bo_va->it.start;
>> +               tmp->it.last = bo_va->it.last;
>> +               tmp->vm = vm;
>> +               tmp->bo = radeon_bo_ref(bo_va->bo);
>>
>>                  interval_tree_remove(&bo_va->it, &vm->va);
>>                  bo_va->it.start = 0;
>>                  bo_va->it.last = 0;
>> +
>> +               spin_lock(&vm->status_lock);
>> +               list_del_init(&bo_va->vm_status);
>> +               list_add(&tmp->vm_status, &vm->freed);
>> +               spin_unlock(&vm->status_lock);
>>          }
>>
>>          if (soffset || eoffset) {
>> --
>> 1.9.1
>>

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] drm/radeon: allways add the VM clear duplicate
  2015-07-08 16:08   ` Christian König
@ 2015-07-08 16:14     ` Alex Deucher
  2015-07-08 16:31       ` Christian König
  0 siblings, 1 reply; 10+ messages in thread
From: Alex Deucher @ 2015-07-08 16:14 UTC (permalink / raw)
  To: Christian König; +Cc: Maling list - DRI developers

On Wed, Jul 8, 2015 at 12:08 PM, Christian König
<deathsimple@vodafone.de> wrote:
> On 08.07.2015 17:57, Alex Deucher wrote:
>>
>> On Wed, Jul 8, 2015 at 3:56 AM, Christian König <deathsimple@vodafone.de>
>> wrote:
>>>
>>> From: Christian König <christian.koenig@amd.com>
>>>
>>> We need to allways add the VM clear duplicate of the BO_VA,
>>> no matter what the old status was.
>>>
>>> Signed-off-by: Christian König <christian.koenig@amd.com>
>>> Test-by: hadack@gmx.de
>>
>> This patch does not apply cleanly.  It also adds an undefined label
>> error_unreserve.  Is there an additional patch required?
>
>
> That's possible, but I thought the depending patch would have already been
> upstream.
>
> Can you create a drm-fixes-4.2 branch I can rebase on?

http://cgit.freedesktop.org/~agd5f/linux/log/?h=drm-fixes-4.2-wip

Thanks,

Alex

>
> Thanks,
> Christian.
>
>
>> Alex
>>
>>> ---
>>>   drivers/gpu/drm/radeon/radeon_vm.c | 34
>>> ++++++++++++++++------------------
>>>   1 file changed, 16 insertions(+), 18 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/radeon/radeon_vm.c
>>> b/drivers/gpu/drm/radeon/radeon_vm.c
>>> index ec10533..0310965 100644
>>> --- a/drivers/gpu/drm/radeon/radeon_vm.c
>>> +++ b/drivers/gpu/drm/radeon/radeon_vm.c
>>> @@ -493,29 +493,27 @@ int radeon_vm_bo_set_addr(struct radeon_device
>>> *rdev,
>>>          }
>>>
>>>          if (bo_va->it.start || bo_va->it.last) {
>>> -               spin_lock(&vm->status_lock);
>>> -               if (list_empty(&bo_va->vm_status)) {
>>> -                       /* add a clone of the bo_va to clear the old
>>> address */
>>> -                       struct radeon_bo_va *tmp;
>>> -                       spin_unlock(&vm->status_lock);
>>> -                       tmp = kzalloc(sizeof(struct radeon_bo_va),
>>> GFP_KERNEL);
>>> -                       if (!tmp) {
>>> -                               mutex_unlock(&vm->mutex);
>>> -                               r = -ENOMEM;
>>> -                               goto error_unreserve;
>>> -                       }
>>> -                       tmp->it.start = bo_va->it.start;
>>> -                       tmp->it.last = bo_va->it.last;
>>> -                       tmp->vm = vm;
>>> -                       tmp->bo = radeon_bo_ref(bo_va->bo);
>>> -                       spin_lock(&vm->status_lock);
>>> -                       list_add(&tmp->vm_status, &vm->freed);
>>> +               /* add a clone of the bo_va to clear the old address */
>>> +               struct radeon_bo_va *tmp;
>>> +               tmp = kzalloc(sizeof(struct radeon_bo_va), GFP_KERNEL);
>>> +               if (!tmp) {
>>> +                       mutex_unlock(&vm->mutex);
>>> +                       r = -ENOMEM;
>>> +                       goto error_unreserve;
>>>                  }
>>> -               spin_unlock(&vm->status_lock);
>>> +               tmp->it.start = bo_va->it.start;
>>> +               tmp->it.last = bo_va->it.last;
>>> +               tmp->vm = vm;
>>> +               tmp->bo = radeon_bo_ref(bo_va->bo);
>>>
>>>                  interval_tree_remove(&bo_va->it, &vm->va);
>>>                  bo_va->it.start = 0;
>>>                  bo_va->it.last = 0;
>>> +
>>> +               spin_lock(&vm->status_lock);
>>> +               list_del_init(&bo_va->vm_status);
>>> +               list_add(&tmp->vm_status, &vm->freed);
>>> +               spin_unlock(&vm->status_lock);
>>>          }
>>>
>>>          if (soffset || eoffset) {
>>> --
>>> 1.9.1
>>>
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] drm/radeon: allways add the VM clear duplicate
  2015-07-08 16:14     ` Alex Deucher
@ 2015-07-08 16:31       ` Christian König
  2015-07-08 16:33         ` Alex Deucher
  0 siblings, 1 reply; 10+ messages in thread
From: Christian König @ 2015-07-08 16:31 UTC (permalink / raw)
  To: Alex Deucher; +Cc: Maling list - DRI developers

On 08.07.2015 18:14, Alex Deucher wrote:
> On Wed, Jul 8, 2015 at 12:08 PM, Christian König
> <deathsimple@vodafone.de> wrote:
>> On 08.07.2015 17:57, Alex Deucher wrote:
>>> On Wed, Jul 8, 2015 at 3:56 AM, Christian König <deathsimple@vodafone.de>
>>> wrote:
>>>> From: Christian König <christian.koenig@amd.com>
>>>>
>>>> We need to allways add the VM clear duplicate of the BO_VA,
>>>> no matter what the old status was.
>>>>
>>>> Signed-off-by: Christian König <christian.koenig@amd.com>
>>>> Test-by: hadack@gmx.de
>>> This patch does not apply cleanly.  It also adds an undefined label
>>> error_unreserve.  Is there an additional patch required?
>>
>> That's possible, but I thought the depending patch would have already been
>> upstream.
>>
>> Can you create a drm-fixes-4.2 branch I can rebase on?
> http://cgit.freedesktop.org/~agd5f/linux/log/?h=drm-fixes-4.2-wip

Ah, here is the problem. This branch don't yet contains the fixes which 
went upstream with 4.1.

What should we do? I don't want to change those patches and create a 
merge conflict when you merge in 4.1.

Christian.

>
> Thanks,
>
> Alex
>
>> Thanks,
>> Christian.
>>
>>
>>> Alex
>>>
>>>> ---
>>>>    drivers/gpu/drm/radeon/radeon_vm.c | 34
>>>> ++++++++++++++++------------------
>>>>    1 file changed, 16 insertions(+), 18 deletions(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/radeon/radeon_vm.c
>>>> b/drivers/gpu/drm/radeon/radeon_vm.c
>>>> index ec10533..0310965 100644
>>>> --- a/drivers/gpu/drm/radeon/radeon_vm.c
>>>> +++ b/drivers/gpu/drm/radeon/radeon_vm.c
>>>> @@ -493,29 +493,27 @@ int radeon_vm_bo_set_addr(struct radeon_device
>>>> *rdev,
>>>>           }
>>>>
>>>>           if (bo_va->it.start || bo_va->it.last) {
>>>> -               spin_lock(&vm->status_lock);
>>>> -               if (list_empty(&bo_va->vm_status)) {
>>>> -                       /* add a clone of the bo_va to clear the old
>>>> address */
>>>> -                       struct radeon_bo_va *tmp;
>>>> -                       spin_unlock(&vm->status_lock);
>>>> -                       tmp = kzalloc(sizeof(struct radeon_bo_va),
>>>> GFP_KERNEL);
>>>> -                       if (!tmp) {
>>>> -                               mutex_unlock(&vm->mutex);
>>>> -                               r = -ENOMEM;
>>>> -                               goto error_unreserve;
>>>> -                       }
>>>> -                       tmp->it.start = bo_va->it.start;
>>>> -                       tmp->it.last = bo_va->it.last;
>>>> -                       tmp->vm = vm;
>>>> -                       tmp->bo = radeon_bo_ref(bo_va->bo);
>>>> -                       spin_lock(&vm->status_lock);
>>>> -                       list_add(&tmp->vm_status, &vm->freed);
>>>> +               /* add a clone of the bo_va to clear the old address */
>>>> +               struct radeon_bo_va *tmp;
>>>> +               tmp = kzalloc(sizeof(struct radeon_bo_va), GFP_KERNEL);
>>>> +               if (!tmp) {
>>>> +                       mutex_unlock(&vm->mutex);
>>>> +                       r = -ENOMEM;
>>>> +                       goto error_unreserve;
>>>>                   }
>>>> -               spin_unlock(&vm->status_lock);
>>>> +               tmp->it.start = bo_va->it.start;
>>>> +               tmp->it.last = bo_va->it.last;
>>>> +               tmp->vm = vm;
>>>> +               tmp->bo = radeon_bo_ref(bo_va->bo);
>>>>
>>>>                   interval_tree_remove(&bo_va->it, &vm->va);
>>>>                   bo_va->it.start = 0;
>>>>                   bo_va->it.last = 0;
>>>> +
>>>> +               spin_lock(&vm->status_lock);
>>>> +               list_del_init(&bo_va->vm_status);
>>>> +               list_add(&tmp->vm_status, &vm->freed);
>>>> +               spin_unlock(&vm->status_lock);
>>>>           }
>>>>
>>>>           if (soffset || eoffset) {
>>>> --
>>>> 1.9.1
>>>>

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] drm/radeon: allways add the VM clear duplicate
  2015-07-08 16:31       ` Christian König
@ 2015-07-08 16:33         ` Alex Deucher
  2015-07-08 18:28           ` Christian König
  0 siblings, 1 reply; 10+ messages in thread
From: Alex Deucher @ 2015-07-08 16:33 UTC (permalink / raw)
  To: Christian König; +Cc: Maling list - DRI developers

On Wed, Jul 8, 2015 at 12:31 PM, Christian König
<deathsimple@vodafone.de> wrote:
> On 08.07.2015 18:14, Alex Deucher wrote:
>>
>> On Wed, Jul 8, 2015 at 12:08 PM, Christian König
>> <deathsimple@vodafone.de> wrote:
>>>
>>> On 08.07.2015 17:57, Alex Deucher wrote:
>>>>
>>>> On Wed, Jul 8, 2015 at 3:56 AM, Christian König
>>>> <deathsimple@vodafone.de>
>>>> wrote:
>>>>>
>>>>> From: Christian König <christian.koenig@amd.com>
>>>>>
>>>>> We need to allways add the VM clear duplicate of the BO_VA,
>>>>> no matter what the old status was.
>>>>>
>>>>> Signed-off-by: Christian König <christian.koenig@amd.com>
>>>>> Test-by: hadack@gmx.de
>>>>
>>>> This patch does not apply cleanly.  It also adds an undefined label
>>>> error_unreserve.  Is there an additional patch required?
>>>
>>>
>>> That's possible, but I thought the depending patch would have already
>>> been
>>> upstream.
>>>
>>> Can you create a drm-fixes-4.2 branch I can rebase on?
>>
>> http://cgit.freedesktop.org/~agd5f/linux/log/?h=drm-fixes-4.2-wip
>
>
> Ah, here is the problem. This branch don't yet contains the fixes which went
> upstream with 4.1.
>
> What should we do? I don't want to change those patches and create a merge
> conflict when you merge in 4.1.

I'll rebase by tree on Linus' tree.  Dave is on vacation so his tree is lagging.

Alex

>
> Christian.
>
>
>>
>> Thanks,
>>
>> Alex
>>
>>> Thanks,
>>> Christian.
>>>
>>>
>>>> Alex
>>>>
>>>>> ---
>>>>>    drivers/gpu/drm/radeon/radeon_vm.c | 34
>>>>> ++++++++++++++++------------------
>>>>>    1 file changed, 16 insertions(+), 18 deletions(-)
>>>>>
>>>>> diff --git a/drivers/gpu/drm/radeon/radeon_vm.c
>>>>> b/drivers/gpu/drm/radeon/radeon_vm.c
>>>>> index ec10533..0310965 100644
>>>>> --- a/drivers/gpu/drm/radeon/radeon_vm.c
>>>>> +++ b/drivers/gpu/drm/radeon/radeon_vm.c
>>>>> @@ -493,29 +493,27 @@ int radeon_vm_bo_set_addr(struct radeon_device
>>>>> *rdev,
>>>>>           }
>>>>>
>>>>>           if (bo_va->it.start || bo_va->it.last) {
>>>>> -               spin_lock(&vm->status_lock);
>>>>> -               if (list_empty(&bo_va->vm_status)) {
>>>>> -                       /* add a clone of the bo_va to clear the old
>>>>> address */
>>>>> -                       struct radeon_bo_va *tmp;
>>>>> -                       spin_unlock(&vm->status_lock);
>>>>> -                       tmp = kzalloc(sizeof(struct radeon_bo_va),
>>>>> GFP_KERNEL);
>>>>> -                       if (!tmp) {
>>>>> -                               mutex_unlock(&vm->mutex);
>>>>> -                               r = -ENOMEM;
>>>>> -                               goto error_unreserve;
>>>>> -                       }
>>>>> -                       tmp->it.start = bo_va->it.start;
>>>>> -                       tmp->it.last = bo_va->it.last;
>>>>> -                       tmp->vm = vm;
>>>>> -                       tmp->bo = radeon_bo_ref(bo_va->bo);
>>>>> -                       spin_lock(&vm->status_lock);
>>>>> -                       list_add(&tmp->vm_status, &vm->freed);
>>>>> +               /* add a clone of the bo_va to clear the old address */
>>>>> +               struct radeon_bo_va *tmp;
>>>>> +               tmp = kzalloc(sizeof(struct radeon_bo_va), GFP_KERNEL);
>>>>> +               if (!tmp) {
>>>>> +                       mutex_unlock(&vm->mutex);
>>>>> +                       r = -ENOMEM;
>>>>> +                       goto error_unreserve;
>>>>>                   }
>>>>> -               spin_unlock(&vm->status_lock);
>>>>> +               tmp->it.start = bo_va->it.start;
>>>>> +               tmp->it.last = bo_va->it.last;
>>>>> +               tmp->vm = vm;
>>>>> +               tmp->bo = radeon_bo_ref(bo_va->bo);
>>>>>
>>>>>                   interval_tree_remove(&bo_va->it, &vm->va);
>>>>>                   bo_va->it.start = 0;
>>>>>                   bo_va->it.last = 0;
>>>>> +
>>>>> +               spin_lock(&vm->status_lock);
>>>>> +               list_del_init(&bo_va->vm_status);
>>>>> +               list_add(&tmp->vm_status, &vm->freed);
>>>>> +               spin_unlock(&vm->status_lock);
>>>>>           }
>>>>>
>>>>>           if (soffset || eoffset) {
>>>>> --
>>>>> 1.9.1
>>>>>
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] drm/radeon: allways add the VM clear duplicate
  2015-07-08 16:33         ` Alex Deucher
@ 2015-07-08 18:28           ` Christian König
  2015-07-08 19:03             ` Alex Deucher
  0 siblings, 1 reply; 10+ messages in thread
From: Christian König @ 2015-07-08 18:28 UTC (permalink / raw)
  To: Alex Deucher; +Cc: Maling list - DRI developers

On 08.07.2015 18:33, Alex Deucher wrote:
> On Wed, Jul 8, 2015 at 12:31 PM, Christian König
> <deathsimple@vodafone.de> wrote:
>> On 08.07.2015 18:14, Alex Deucher wrote:
>>> On Wed, Jul 8, 2015 at 12:08 PM, Christian König
>>> <deathsimple@vodafone.de> wrote:
>>>> On 08.07.2015 17:57, Alex Deucher wrote:
>>>>> On Wed, Jul 8, 2015 at 3:56 AM, Christian König
>>>>> <deathsimple@vodafone.de>
>>>>> wrote:
>>>>>> From: Christian König <christian.koenig@amd.com>
>>>>>>
>>>>>> We need to allways add the VM clear duplicate of the BO_VA,
>>>>>> no matter what the old status was.
>>>>>>
>>>>>> Signed-off-by: Christian König <christian.koenig@amd.com>
>>>>>> Test-by: hadack@gmx.de
>>>>> This patch does not apply cleanly.  It also adds an undefined label
>>>>> error_unreserve.  Is there an additional patch required?
>>>>
>>>> That's possible, but I thought the depending patch would have already
>>>> been
>>>> upstream.
>>>>
>>>> Can you create a drm-fixes-4.2 branch I can rebase on?
>>> http://cgit.freedesktop.org/~agd5f/linux/log/?h=drm-fixes-4.2-wip
>>
>> Ah, here is the problem. This branch don't yet contains the fixes which went
>> upstream with 4.1.
>>
>> What should we do? I don't want to change those patches and create a merge
>> conflict when you merge in 4.1.
> I'll rebase by tree on Linus' tree.  Dave is on vacation so his tree is lagging.

Sounds good, let me know when you have updated the branch and there are 
still conflicts.

Regards,
Christian.

>
> Alex
>
>> Christian.
>>
>>
>>> Thanks,
>>>
>>> Alex
>>>
>>>> Thanks,
>>>> Christian.
>>>>
>>>>
>>>>> Alex
>>>>>
>>>>>> ---
>>>>>>     drivers/gpu/drm/radeon/radeon_vm.c | 34
>>>>>> ++++++++++++++++------------------
>>>>>>     1 file changed, 16 insertions(+), 18 deletions(-)
>>>>>>
>>>>>> diff --git a/drivers/gpu/drm/radeon/radeon_vm.c
>>>>>> b/drivers/gpu/drm/radeon/radeon_vm.c
>>>>>> index ec10533..0310965 100644
>>>>>> --- a/drivers/gpu/drm/radeon/radeon_vm.c
>>>>>> +++ b/drivers/gpu/drm/radeon/radeon_vm.c
>>>>>> @@ -493,29 +493,27 @@ int radeon_vm_bo_set_addr(struct radeon_device
>>>>>> *rdev,
>>>>>>            }
>>>>>>
>>>>>>            if (bo_va->it.start || bo_va->it.last) {
>>>>>> -               spin_lock(&vm->status_lock);
>>>>>> -               if (list_empty(&bo_va->vm_status)) {
>>>>>> -                       /* add a clone of the bo_va to clear the old
>>>>>> address */
>>>>>> -                       struct radeon_bo_va *tmp;
>>>>>> -                       spin_unlock(&vm->status_lock);
>>>>>> -                       tmp = kzalloc(sizeof(struct radeon_bo_va),
>>>>>> GFP_KERNEL);
>>>>>> -                       if (!tmp) {
>>>>>> -                               mutex_unlock(&vm->mutex);
>>>>>> -                               r = -ENOMEM;
>>>>>> -                               goto error_unreserve;
>>>>>> -                       }
>>>>>> -                       tmp->it.start = bo_va->it.start;
>>>>>> -                       tmp->it.last = bo_va->it.last;
>>>>>> -                       tmp->vm = vm;
>>>>>> -                       tmp->bo = radeon_bo_ref(bo_va->bo);
>>>>>> -                       spin_lock(&vm->status_lock);
>>>>>> -                       list_add(&tmp->vm_status, &vm->freed);
>>>>>> +               /* add a clone of the bo_va to clear the old address */
>>>>>> +               struct radeon_bo_va *tmp;
>>>>>> +               tmp = kzalloc(sizeof(struct radeon_bo_va), GFP_KERNEL);
>>>>>> +               if (!tmp) {
>>>>>> +                       mutex_unlock(&vm->mutex);
>>>>>> +                       r = -ENOMEM;
>>>>>> +                       goto error_unreserve;
>>>>>>                    }
>>>>>> -               spin_unlock(&vm->status_lock);
>>>>>> +               tmp->it.start = bo_va->it.start;
>>>>>> +               tmp->it.last = bo_va->it.last;
>>>>>> +               tmp->vm = vm;
>>>>>> +               tmp->bo = radeon_bo_ref(bo_va->bo);
>>>>>>
>>>>>>                    interval_tree_remove(&bo_va->it, &vm->va);
>>>>>>                    bo_va->it.start = 0;
>>>>>>                    bo_va->it.last = 0;
>>>>>> +
>>>>>> +               spin_lock(&vm->status_lock);
>>>>>> +               list_del_init(&bo_va->vm_status);
>>>>>> +               list_add(&tmp->vm_status, &vm->freed);
>>>>>> +               spin_unlock(&vm->status_lock);
>>>>>>            }
>>>>>>
>>>>>>            if (soffset || eoffset) {
>>>>>> --
>>>>>> 1.9.1
>>>>>>

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] drm/radeon: allways add the VM clear duplicate
  2015-07-08 18:28           ` Christian König
@ 2015-07-08 19:03             ` Alex Deucher
  0 siblings, 0 replies; 10+ messages in thread
From: Alex Deucher @ 2015-07-08 19:03 UTC (permalink / raw)
  To: Christian König; +Cc: Maling list - DRI developers

On Wed, Jul 8, 2015 at 2:28 PM, Christian König <deathsimple@vodafone.de> wrote:
> On 08.07.2015 18:33, Alex Deucher wrote:
>>
>> On Wed, Jul 8, 2015 at 12:31 PM, Christian König
>> <deathsimple@vodafone.de> wrote:
>>>
>>> On 08.07.2015 18:14, Alex Deucher wrote:
>>>>
>>>> On Wed, Jul 8, 2015 at 12:08 PM, Christian König
>>>> <deathsimple@vodafone.de> wrote:
>>>>>
>>>>> On 08.07.2015 17:57, Alex Deucher wrote:
>>>>>>
>>>>>> On Wed, Jul 8, 2015 at 3:56 AM, Christian König
>>>>>> <deathsimple@vodafone.de>
>>>>>> wrote:
>>>>>>>
>>>>>>> From: Christian König <christian.koenig@amd.com>
>>>>>>>
>>>>>>> We need to allways add the VM clear duplicate of the BO_VA,
>>>>>>> no matter what the old status was.
>>>>>>>
>>>>>>> Signed-off-by: Christian König <christian.koenig@amd.com>
>>>>>>> Test-by: hadack@gmx.de
>>>>>>
>>>>>> This patch does not apply cleanly.  It also adds an undefined label
>>>>>> error_unreserve.  Is there an additional patch required?
>>>>>
>>>>>
>>>>> That's possible, but I thought the depending patch would have already
>>>>> been
>>>>> upstream.
>>>>>
>>>>> Can you create a drm-fixes-4.2 branch I can rebase on?
>>>>
>>>> http://cgit.freedesktop.org/~agd5f/linux/log/?h=drm-fixes-4.2-wip
>>>
>>>
>>> Ah, here is the problem. This branch don't yet contains the fixes which
>>> went
>>> upstream with 4.1.
>>>
>>> What should we do? I don't want to change those patches and create a
>>> merge
>>> conflict when you merge in 4.1.
>>
>> I'll rebase by tree on Linus' tree.  Dave is on vacation so his tree is
>> lagging.
>
>
> Sounds good, let me know when you have updated the branch and there are
> still conflicts.

All set.

Thanks,

Alex

>
> Regards,
> Christian.
>
>
>>
>> Alex
>>
>>> Christian.
>>>
>>>
>>>> Thanks,
>>>>
>>>> Alex
>>>>
>>>>> Thanks,
>>>>> Christian.
>>>>>
>>>>>
>>>>>> Alex
>>>>>>
>>>>>>> ---
>>>>>>>     drivers/gpu/drm/radeon/radeon_vm.c | 34
>>>>>>> ++++++++++++++++------------------
>>>>>>>     1 file changed, 16 insertions(+), 18 deletions(-)
>>>>>>>
>>>>>>> diff --git a/drivers/gpu/drm/radeon/radeon_vm.c
>>>>>>> b/drivers/gpu/drm/radeon/radeon_vm.c
>>>>>>> index ec10533..0310965 100644
>>>>>>> --- a/drivers/gpu/drm/radeon/radeon_vm.c
>>>>>>> +++ b/drivers/gpu/drm/radeon/radeon_vm.c
>>>>>>> @@ -493,29 +493,27 @@ int radeon_vm_bo_set_addr(struct radeon_device
>>>>>>> *rdev,
>>>>>>>            }
>>>>>>>
>>>>>>>            if (bo_va->it.start || bo_va->it.last) {
>>>>>>> -               spin_lock(&vm->status_lock);
>>>>>>> -               if (list_empty(&bo_va->vm_status)) {
>>>>>>> -                       /* add a clone of the bo_va to clear the old
>>>>>>> address */
>>>>>>> -                       struct radeon_bo_va *tmp;
>>>>>>> -                       spin_unlock(&vm->status_lock);
>>>>>>> -                       tmp = kzalloc(sizeof(struct radeon_bo_va),
>>>>>>> GFP_KERNEL);
>>>>>>> -                       if (!tmp) {
>>>>>>> -                               mutex_unlock(&vm->mutex);
>>>>>>> -                               r = -ENOMEM;
>>>>>>> -                               goto error_unreserve;
>>>>>>> -                       }
>>>>>>> -                       tmp->it.start = bo_va->it.start;
>>>>>>> -                       tmp->it.last = bo_va->it.last;
>>>>>>> -                       tmp->vm = vm;
>>>>>>> -                       tmp->bo = radeon_bo_ref(bo_va->bo);
>>>>>>> -                       spin_lock(&vm->status_lock);
>>>>>>> -                       list_add(&tmp->vm_status, &vm->freed);
>>>>>>> +               /* add a clone of the bo_va to clear the old address
>>>>>>> */
>>>>>>> +               struct radeon_bo_va *tmp;
>>>>>>> +               tmp = kzalloc(sizeof(struct radeon_bo_va),
>>>>>>> GFP_KERNEL);
>>>>>>> +               if (!tmp) {
>>>>>>> +                       mutex_unlock(&vm->mutex);
>>>>>>> +                       r = -ENOMEM;
>>>>>>> +                       goto error_unreserve;
>>>>>>>                    }
>>>>>>> -               spin_unlock(&vm->status_lock);
>>>>>>> +               tmp->it.start = bo_va->it.start;
>>>>>>> +               tmp->it.last = bo_va->it.last;
>>>>>>> +               tmp->vm = vm;
>>>>>>> +               tmp->bo = radeon_bo_ref(bo_va->bo);
>>>>>>>
>>>>>>>                    interval_tree_remove(&bo_va->it, &vm->va);
>>>>>>>                    bo_va->it.start = 0;
>>>>>>>                    bo_va->it.last = 0;
>>>>>>> +
>>>>>>> +               spin_lock(&vm->status_lock);
>>>>>>> +               list_del_init(&bo_va->vm_status);
>>>>>>> +               list_add(&tmp->vm_status, &vm->freed);
>>>>>>> +               spin_unlock(&vm->status_lock);
>>>>>>>            }
>>>>>>>
>>>>>>>            if (soffset || eoffset) {
>>>>>>> --
>>>>>>> 1.9.1
>>>>>>>
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-07-08 19:03 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-08  7:56 [PATCH 1/2] drm/radeon: allways add the VM clear duplicate Christian König
2015-07-08  7:56 ` [PATCH 2/2] drm/radeon: check if BO_VA is set before adding it to the invalidation list Christian König
2015-07-08  8:08   ` Michel Dänzer
2015-07-08 15:57 ` [PATCH 1/2] drm/radeon: allways add the VM clear duplicate Alex Deucher
2015-07-08 16:08   ` Christian König
2015-07-08 16:14     ` Alex Deucher
2015-07-08 16:31       ` Christian König
2015-07-08 16:33         ` Alex Deucher
2015-07-08 18:28           ` Christian König
2015-07-08 19:03             ` Alex Deucher

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.