[PATCH] drm/amdgpu: fix huge page handling on Vega10

Christian König ckoenig.leichtzumerken at gmail.com
Tue Nov 13 08:14:44 UTC 2018


Am 12.11.18 um 22:45 schrieb Samuel Pitoiset:
>
>
> On 11/12/18 6:16 PM, Alex Deucher wrote:
>> On Mon, Nov 12, 2018 at 12:09 PM Christian König
>> <ckoenig.leichtzumerken at gmail.com> wrote:
>>>
>>> We accidentially set the huge flag on the parent instead of the childs.
>>> This caused some VM faults under memory pressure.
>>>
>>> Signed-off-by: Christian König <christian.koenig at amd.com>
>
> Yes, this fixes GPU hangs with F12017 and RoTR with RADV.
>
> Thanks for the fix Christian!

Just FYI I take sentences as this as a "Tested-by: Samuel Pitoiset 
<samuel.pitoiset at gmail.com>".

So if you don't want your mail address to show up in a kernel commit 
start better say so before Alex pushes it upstream :)

Christian.

>
>>
>> Acked-by: Alex Deucher <alexander.deucher at amd.com>
>>
>>> ---
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 18 ++++++++++--------
>>>   1 file changed, 10 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c 
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>>> index 352b30409060..dad0e2342df9 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>>> @@ -1632,13 +1632,6 @@ static int amdgpu_vm_update_ptes(struct 
>>> amdgpu_pte_update_params *params,
>>>                          continue;
>>>                  }
>>>
>>> -               /* First check if the entry is already handled */
>>> -               if (cursor.pfn < frag_start) {
>>> -                       cursor.entry->huge = true;
>>> -                       amdgpu_vm_pt_next(adev, &cursor);
>>> -                       continue;
>>> -               }
>>> -
>>>                  /* If it isn't already handled it can't be a huge 
>>> page */
>>>                  if (cursor.entry->huge) {
>>>                          /* Add the entry to the relocated list to 
>>> update it. */
>>> @@ -1701,8 +1694,17 @@ static int amdgpu_vm_update_ptes(struct 
>>> amdgpu_pte_update_params *params,
>>>                          }
>>>                  } while (frag_start < entry_end);
>>>
>>> -               if (frag >= shift)
>>> +               if (amdgpu_vm_pt_descendant(adev, &cursor)) {
>>> +                       /* Mark all child entries as huge */
>>> +                       while (cursor.pfn < frag_start) {
>>> +                               cursor.entry->huge = true;
>>> +                               amdgpu_vm_pt_next(adev, &cursor);
>>> +                       }
>>> +
>>> +               } else if (frag >= shift) {
>>> +                       /* or just move on to the next on the same 
>>> level. */
>>>                          amdgpu_vm_pt_next(adev, &cursor);
>>> +               }
>>>          }
>>>
>>>          return 0;
>>> -- 
>>> 2.14.1
>>>
>>> _______________________________________________
>>> amd-gfx mailing list
>>> amd-gfx at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
>>



More information about the amd-gfx mailing list