[PATCH 1/2] drm/radeon: allways add the VM clear duplicate
Alex Deucher
alexdeucher at gmail.com
Wed Jul 8 12:03:26 PDT 2015
On Wed, Jul 8, 2015 at 2:28 PM, Christian König <deathsimple at 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 at 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 at 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 at vodafone.de>
>>>>>> wrote:
>>>>>>>
>>>>>>> From: Christian König <christian.koenig at 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 at amd.com>
>>>>>>> Test-by: hadack at 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
>>>>>>>
>
More information about the dri-devel
mailing list