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

Samuel Pitoiset samuel.pitoiset at gmail.com
Tue Nov 13 09:08:37 UTC 2018



On 11/13/18 9:14 AM, Christian König wrote:
> 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 :)

Feel free to add that tag :)

> 
> 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