<div dir="auto">Hi guys,</div><div dir="auto"><br></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 7 Apr 2021 at 11:27, Christian König <<a href="mailto:christian.koenig@amd.com">christian.koenig@amd.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">Am 07.04.21 um 09:47 schrieb Daniel Gomez:<br>
> On Tue, 6 Apr 2021 at 22:56, Alex Deucher <<a href="mailto:alexdeucher@gmail.com" target="_blank">alexdeucher@gmail.com</a>> wrote:<br>
>> On Mon, Mar 22, 2021 at 6:34 AM Christian König<br>
>> <<a href="mailto:ckoenig.leichtzumerken@gmail.com" target="_blank">ckoenig.leichtzumerken@gmail.com</a>> wrote:<br>
>>> Hi Daniel,<br>
>>><br>
>>> Am 22.03.21 um 10:38 schrieb Daniel Gomez:<br>
>>>> On Fri, 19 Mar 2021 at 21:29, Felix Kuehling <<a href="mailto:felix.kuehling@amd.com" target="_blank">felix.kuehling@amd.com</a>> wrote:<br>
>>>>> This caused a regression in kfdtest in a large-buffer stress test after<br>
>>>>> memory allocation for user pages fails:<br>
>>>> I'm sorry to hear that. BTW, I guess you meant amdgpu leak patch and<br>
>>>> not this one.<br>
>>>> Just some background for the mem leak patch if helps to understand this:<br>
>>>> The leak was introduce here:<br>
>>>> <a href="https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git%2Fcommit%2F%3Fid%3D0b988ca1c7c4c73983b4ea96ef7c2af2263c87eb&amp;data=04%7C01%7CChristian.Koenig%40amd.com%7C65d21b6f02da409ac7b508d8f9997367%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637533784761980218%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=%2FeOQf12NBkC3YGZ7QW66%2FT%2FpyM3DjEb9IMbqUvISMfo%3D&amp;reserved=0" rel="noreferrer" target="_blank">https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git%2Fcommit%2F%3Fid%3D0b988ca1c7c4c73983b4ea96ef7c2af2263c87eb&amp;data=04%7C01%7CChristian.Koenig%40amd.com%7C65d21b6f02da409ac7b508d8f9997367%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637533784761980218%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=%2FeOQf12NBkC3YGZ7QW66%2FT%2FpyM3DjEb9IMbqUvISMfo%3D&amp;reserved=0</a><br>
>>>> where the bound status was introduced for all drm drivers including<br>
>>>> radeon and amdgpu. So this patch just reverts the logic to the<br>
>>>> original code but keeping the bound status. In my case, the binding<br>
>>>> code allocates the user pages memory and returns without bounding (at<br>
>>>> amdgpu_gtt_mgr_has_gart_addr). So,<br>
>>>> when the unbinding happens, the memory needs to be cleared to prevent the leak.<br>
>>> Ah, now I understand what's happening here. Daniel your patch is not<br>
>>> really correct.<br>
>>><br>
>>> The problem is rather that we don't set the tt object to bound if it<br>
>>> doesn't have a GTT address.<br>
>>><br>
>>> Going to provide a patch for this.<br>
>> Did this patch ever land?<br>
> I don't think so but I might send a v2 following Christian's comment<br>
> if you guys agree.<br>
<br>
Somebody else already provided a patch which I reviewed, but I'm not <br>
sure if that landed either.<br>
<br>
> Also, the patch here is for radeon but the pagefault issue reported by<br>
> Felix is affected by the amdgpu one:<br>
><br>
> radeon patch: drm/radeon/ttm: Fix memory leak userptr pages<br>
> <a href="https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatchwork.kernel.org%2Fproject%2Fdri-devel%2Fpatch%2F20210318083236.43578-1-daniel%40qtec.com%2F&amp;data=04%7C01%7CChristian.Koenig%40amd.com%7C65d21b6f02da409ac7b508d8f9997367%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637533784761980218%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=HSMK%2FqYz%2Bzz9qbKc%2FITUWluBDeaW9YrgyH8p0L640%2F0%3D&amp;reserved=0" rel="noreferrer" target="_blank">https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatchwork.kernel.org%2Fproject%2Fdri-devel%2Fpatch%2F20210318083236.43578-1-daniel%40qtec.com%2F&amp;data=04%7C01%7CChristian.Koenig%40amd.com%7C65d21b6f02da409ac7b508d8f9997367%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637533784761980218%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=HSMK%2FqYz%2Bzz9qbKc%2FITUWluBDeaW9YrgyH8p0L640%2F0%3D&amp;reserved=0</a><br>
><br>
> amdgpu patch: drm/amdgpu/ttm: Fix memory leak userptr pages<br>
> <a href="https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatchwork.kernel.org%2Fproject%2Fdri-devel%2Fpatch%2F20210317160840.36019-1-daniel%40qtec.com%2F&amp;data=04%7C01%7CChristian.Koenig%40amd.com%7C65d21b6f02da409ac7b508d8f9997367%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637533784761980218%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=UsUZ4YjCSjHmzlPB07oTaGrsntTrQSwlGk%2BxUjwDiag%3D&amp;reserved=0" rel="noreferrer" target="_blank">https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatchwork.kernel.org%2Fproject%2Fdri-devel%2Fpatch%2F20210317160840.36019-1-daniel%40qtec.com%2F&amp;data=04%7C01%7CChristian.Koenig%40amd.com%7C65d21b6f02da409ac7b508d8f9997367%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637533784761980218%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=UsUZ4YjCSjHmzlPB07oTaGrsntTrQSwlGk%2BxUjwDiag%3D&amp;reserved=0</a><br>
><br>
> I assume both need to be fixed with the same approach.<br>
<br>
Yes correct. Let me double check where that fix went.</blockquote><div dir="auto"><br></div><div dir="auto">This patch (actually, the memory leak fix for amdgpu not radeon) has landed in mainline and has been back-ported to the stable branches. I just want to verify with you if that’s okay and the NULL pointer issue reported by Felix is fixed by this other patch:</div><div dir="auto"><br></div><div dir="auto"><div><a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c?id=3c3dc654333f6389803cdcaf03912e94173ae510">https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c?id=3c3dc654333f6389803cdcaf03912e94173ae510</a></div><br></div><div dir="auto">Thanks,</div><div dir="auto">Daniel</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)" dir="auto"><br>
<br>
Thanks,<br>
Christian.<br>
<br>
><br>
> Daniel<br>
>> Alex<br>
>><br>
>>> Regards,<br>
>>> Christian.<br>
>>><br>
>>>>> [17359.536303] amdgpu: init_user_pages: Failed to get user pages: -16<br>
>>>>> [17359.543746] BUG: kernel NULL pointer dereference, address: 0000000000000000<br>
>>>>> [17359.551494] #PF: supervisor read access in kernel mode<br>
>>>>> [17359.557375] #PF: error_code(0x0000) - not-present page<br>
>>>>> [17359.563247] PGD 0 P4D 0<br>
>>>>> [17359.566514] Oops: 0000 [#1] SMP PTI<br>
>>>>> [17359.570728] CPU: 8 PID: 5944 Comm: kfdtest Not tainted 5.11.0-kfd-fkuehlin #193<br>
>>>>> [17359.578760] Hardware name: ASUS All Series/X99-E WS/USB 3.1, BIOS 3201 06/17/2016<br>
>>>>> [17359.586971] RIP: 0010:amdgpu_ttm_backend_unbind+0x52/0x110 [amdgpu]<br>
>>>>> [17359.594075] Code: 48 39 c6 74 1b 8b 53 0c 48 8d bd 80 a1 ff ff e8 24 62 00 00 85 c0 0f 85 ab 00 00 00 c6 43 54 00 5b 5d c3 48 8b 46 10 8b 4e 50 <48> 8b 30 48 85 f6 74 ba 8b 50 0c 48 8b bf 80 a1 ff ff 83 e1 01 45<br>
>>>>> [17359.614340] RSP: 0018:ffffa4764971fc98 EFLAGS: 00010206<br>
>>>>> [17359.620315] RAX: 0000000000000000 RBX: ffff950e8d4edf00 RCX: 0000000000000000<br>
>>>>> [17359.628204] RDX: 0000000000000000 RSI: ffff950e8d4edf00 RDI: ffff950eadec5e80<br>
>>>>> [17359.636084] RBP: ffff950eadec5e80 R08: 0000000000000000 R09: 0000000000000000<br>
>>>>> [17359.643958] R10: 0000000000000246 R11: 0000000000000001 R12: ffff950c03377800<br>
>>>>> [17359.651833] R13: ffff950eadec5e80 R14: ffff950c03377858 R15: 0000000000000000<br>
>>>>> [17359.659701] FS:  00007febb20cb740(0000) GS:ffff950ebfc00000(0000) knlGS:0000000000000000<br>
>>>>> [17359.668528] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br>
>>>>> [17359.675012] CR2: 0000000000000000 CR3: 00000006d700e005 CR4: 00000000001706e0<br>
>>>>> [17359.682883] Call Trace:<br>
>>>>> [17359.686063]  amdgpu_ttm_backend_destroy+0x12/0x70 [amdgpu]<br>
>>>>> [17359.692349]  ttm_bo_cleanup_memtype_use+0x37/0x60 [ttm]<br>
>>>>> [17359.698307]  ttm_bo_release+0x278/0x5e0 [ttm]<br>
>>>>> [17359.703385]  amdgpu_bo_unref+0x1a/0x30 [amdgpu]<br>
>>>>> [17359.708701]  amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu+0x7e5/0x910 [amdgpu]<br>
>>>>> [17359.716307]  kfd_ioctl_alloc_memory_of_gpu+0x11a/0x220 [amdgpu]<br>
>>>>> [17359.723036]  kfd_ioctl+0x223/0x400 [amdgpu]<br>
>>>>> [17359.728017]  ? kfd_dev_is_large_bar+0x90/0x90 [amdgpu]<br>
>>>>> [17359.734152]  __x64_sys_ioctl+0x8b/0xd0<br>
>>>>> [17359.738796]  do_syscall_64+0x2d/0x40<br>
>>>>> [17359.743259]  entry_SYSCALL_64_after_hwframe+0x44/0xa9<br>
>>>>> [17359.749205] RIP: 0033:0x7febb083b6d7<br>
>>>>> [17359.753681] Code: b3 66 90 48 8b 05 b1 47 2d 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 81 47 2d 00 f7 d8 64 89 01 48<br>
>>>>> [17359.774340] RSP: 002b:00007ffdb5522cd8 EFLAGS: 00000202 ORIG_RAX: 0000000000000010<br>
>>>>> [17359.782668] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007febb083b6d7<br>
>>>>> [17359.790566] RDX: 00007ffdb5522d60 RSI: 00000000c0284b16 RDI: 0000000000000003<br>
>>>>> [17359.798459] RBP: 00007ffdb5522d10 R08: 00007ffdb5522dd0 R09: 00000000c4000004<br>
>>>>> [17359.806352] R10: 0000000000000000 R11: 0000000000000202 R12: 0000559416e4e2aa<br>
>>>>> [17359.814251] R13: 0000000000000000 R14: 0000000000000021 R15: 0000000000000000<br>
>>>>> [17359.822140] Modules linked in: ip6table_filter ip6_tables iptable_filter amdgpu x86_pkg_temp_thermal drm_ttm_helper ttm iommu_v2 gpu_sched ip_tables x_tables<br>
>>>>> [17359.837776] CR2: 0000000000000000<br>
>>>>> [17359.841888] ---[ end trace a6f27d64475b28c8 ]---<br>
>>>>> [17359.847318] RIP: 0010:amdgpu_ttm_backend_unbind+0x52/0x110 [amdgpu]<br>
>>>>> [17359.854479] Code: 48 39 c6 74 1b 8b 53 0c 48 8d bd 80 a1 ff ff e8 24 62 00 00 85 c0 0f 85 ab 00 00 00 c6 43 54 00 5b 5d c3 48 8b 46 10 8b 4e 50 <48> 8b 30 48 85 f6 74 ba 8b 50 0c 48 8b bf 80 a1 ff ff 83 e1 01 45<br>
>>>>> [17359.874929] RSP: 0018:ffffa4764971fc98 EFLAGS: 00010206<br>
>>>>> [17359.881014] RAX: 0000000000000000 RBX: ffff950e8d4edf00 RCX: 0000000000000000<br>
>>>>> [17359.889007] RDX: 0000000000000000 RSI: ffff950e8d4edf00 RDI: ffff950eadec5e80<br>
>>>>> [17359.897008] RBP: ffff950eadec5e80 R08: 0000000000000000 R09: 0000000000000000<br>
>>>>> [17359.905020] R10: 0000000000000246 R11: 0000000000000001 R12: ffff950c03377800<br>
>>>>> [17359.913034] R13: ffff950eadec5e80 R14: ffff950c03377858 R15: 0000000000000000<br>
>>>>> [17359.921050] FS:  00007febb20cb740(0000) GS:ffff950ebfc00000(0000) knlGS:0000000000000000<br>
>>>>> [17359.930047] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br>
>>>>> [17359.936674] CR2: 0000000000000000 CR3: 00000006d700e005 CR4: 00000000001706e0<br>
>>>>   From what I understand, the init_user_pages fails (returns EBUSY) and<br>
>>>> the code goes to allocate_init_user_pages_failed where the unbind and<br>
>>>> the userptr clear occurs.<br>
>>>> Can we prevent this if we save the bounding status + userptr alloc? so<br>
>>>> the function amdgpu_ttm_backend_unbind returns without trying to clear<br>
>>>> the userptr memory?<br>
>>>><br>
>>>> Something like:<br>
>>>><br>
>>>> amdgpu_ttm_backend_bind:<br>
>>>>       if (gtt->userptr) {<br>
>>>>           r = amdgpu_ttm_tt_pin_userptr(bdev, ttm);<br>
>>>>           if (r) ...<br>
>>>>          gtt->sg_table = true;<br>
>>>>      }<br>
>>>><br>
>>>> amdgpu_ttm_backend_unbind:<br>
>>>> if (gtt->sg_table) {<br>
>>>>           if (gtt->user_ptr) ...<br>
>>>> }<br>
>>>><br>
>>>> If you agree, I'll send a v2 patch. Otherwise, maybe we could return<br>
>>>> within amdgpu_ttm_tt_unpin_userptr if memory hasn't been allocated.<br>
>>>><br>
>>>> Any other ideas?<br>
>>>><br>
>>>> Regards,<br>
>>>> Daniel<br>
>>>><br>
>>>>> Reverting this patch fixes the problem for me.<br>
>>>>><br>
>>>>> Regards,<br>
>>>>>      Felix<br>
>>>>><br>
>>>>> On 2021-03-18 10:57 p.m., Alex Deucher wrote:<br>
>>>>>> Applied.  Thanks!<br>
>>>>>><br>
>>>>>> Alex<br>
>>>>>><br>
>>>>>> On Thu, Mar 18, 2021 at 5:00 AM Koenig, Christian<br>
>>>>>> <<a href="mailto:Christian.Koenig@amd.com" target="_blank">Christian.Koenig@amd.com</a>> wrote:<br>
>>>>>>> Reviewed-by: Christian König <<a href="mailto:christian.koenig@amd.com" target="_blank">christian.koenig@amd.com</a>><br>
>>>>>>> ________________________________<br>
>>>>>>> Von: Daniel Gomez <<a href="mailto:daniel@qtec.com" target="_blank">daniel@qtec.com</a>><br>
>>>>>>> Gesendet: Donnerstag, 18. März 2021 09:32<br>
>>>>>>> Cc: <a href="mailto:dagmcr@gmail.com" target="_blank">dagmcr@gmail.com</a> <<a href="mailto:dagmcr@gmail.com" target="_blank">dagmcr@gmail.com</a>>; Daniel Gomez <<a href="mailto:daniel@qtec.com" target="_blank">daniel@qtec.com</a>>; Deucher, Alexander <<a href="mailto:Alexander.Deucher@amd.com" target="_blank">Alexander.Deucher@amd.com</a>>; Koenig, Christian <<a href="mailto:Christian.Koenig@amd.com" target="_blank">Christian.Koenig@amd.com</a>>; David Airlie <<a href="mailto:airlied@linux.ie" target="_blank">airlied@linux.ie</a>>; Daniel Vetter <<a href="mailto:daniel@ffwll.ch" target="_blank">daniel@ffwll.ch</a>>; <a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank">amd-gfx@lists.freedesktop.org</a> <<a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank">amd-gfx@lists.freedesktop.org</a>>; <a href="mailto:dri-devel@lists.freedesktop.org" target="_blank">dri-devel@lists.freedesktop.org</a> <<a href="mailto:dri-devel@lists.freedesktop.org" target="_blank">dri-devel@lists.freedesktop.org</a>>; <a href="mailto:linux-kernel@vger.kernel.org" target="_blank">linux-kernel@vger.kernel.org</a> <<a href="mailto:linux-kernel@vger.kernel.org" target="_blank">linux-kernel@vger.kernel.org</a>><br>
>>>>>>> Betreff: [PATCH] drm/radeon/ttm: Fix memory leak userptr pages<br>
>>>>>>><br>
>>>>>>> If userptr pages have been pinned but not bounded,<br>
>>>>>>> they remain uncleared.<br>
>>>>>>><br>
>>>>>>> Signed-off-by: Daniel Gomez <<a href="mailto:daniel@qtec.com" target="_blank">daniel@qtec.com</a>><br>
>>>>>>> ---<br>
>>>>>>>     drivers/gpu/drm/radeon/radeon_ttm.c | 5 +++--<br>
>>>>>>>     1 file changed, 3 insertions(+), 2 deletions(-)<br>
>>>>>>><br>
>>>>>>> diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c<br>
>>>>>>> index e8c66d10478f..bbcc6264d48f 100644<br>
>>>>>>> --- a/drivers/gpu/drm/radeon/radeon_ttm.c<br>
>>>>>>> +++ b/drivers/gpu/drm/radeon/radeon_ttm.c<br>
>>>>>>> @@ -485,13 +485,14 @@ static void radeon_ttm_backend_unbind(struct ttm_bo_device *bdev, struct ttm_tt<br>
>>>>>>>             struct radeon_ttm_tt *gtt = (void *)ttm;<br>
>>>>>>>             struct radeon_device *rdev = radeon_get_rdev(bdev);<br>
>>>>>>><br>
>>>>>>> +       if (gtt->userptr)<br>
>>>>>>> +               radeon_ttm_tt_unpin_userptr(bdev, ttm);<br>
>>>>>>> +<br>
>>>>>>>             if (!gtt->bound)<br>
>>>>>>>                     return;<br>
>>>>>>><br>
>>>>>>>             radeon_gart_unbind(rdev, gtt->offset, ttm->num_pages);<br>
>>>>>>><br>
>>>>>>> -       if (gtt->userptr)<br>
>>>>>>> -               radeon_ttm_tt_unpin_userptr(bdev, ttm);<br>
>>>>>>>             gtt->bound = false;<br>
>>>>>>>     }<br>
>>>>>>><br>
>>>>>>> --<br>
>>>>>>> 2.30.2<br>
>>>>>>><br>
>>>>>>> _______________________________________________<br>
>>>>>>> dri-devel mailing list<br>
>>>>>>> <a href="mailto:dri-devel@lists.freedesktop.org" target="_blank">dri-devel@lists.freedesktop.org</a><br>
>>>>>>> <a href="https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fdri-devel&amp;data=04%7C01%7CChristian.Koenig%40amd.com%7C65d21b6f02da409ac7b508d8f9997367%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637533784761980218%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=aU9ZAl66EOLKphjWFPXJPR%2BTM%2BZeeMv%2BVJC6vliEqrs%3D&amp;reserved=0" rel="noreferrer" target="_blank">https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fdri-devel&amp;data=04%7C01%7CChristian.Koenig%40amd.com%7C65d21b6f02da409ac7b508d8f9997367%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637533784761980218%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=aU9ZAl66EOLKphjWFPXJPR%2BTM%2BZeeMv%2BVJC6vliEqrs%3D&amp;reserved=0</a><br>
>>>>>> _______________________________________________<br>
>>>>>> dri-devel mailing list<br>
>>>>>> <a href="mailto:dri-devel@lists.freedesktop.org" target="_blank">dri-devel@lists.freedesktop.org</a><br>
>>>>>> <a href="https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fdri-devel&amp;data=04%7C01%7CChristian.Koenig%40amd.com%7C65d21b6f02da409ac7b508d8f9997367%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637533784761980218%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=aU9ZAl66EOLKphjWFPXJPR%2BTM%2BZeeMv%2BVJC6vliEqrs%3D&amp;reserved=0" rel="noreferrer" target="_blank">https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fdri-devel&amp;data=04%7C01%7CChristian.Koenig%40amd.com%7C65d21b6f02da409ac7b508d8f9997367%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637533784761980218%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=aU9ZAl66EOLKphjWFPXJPR%2BTM%2BZeeMv%2BVJC6vliEqrs%3D&amp;reserved=0</a><br>
>>>> _______________________________________________<br>
>>>> amd-gfx mailing list<br>
>>>> <a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank">amd-gfx@lists.freedesktop.org</a><br>
>>>> <a href="https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&amp;data=04%7C01%7CChristian.Koenig%40amd.com%7C65d21b6f02da409ac7b508d8f9997367%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637533784761980218%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=USmYbhfkSfPcE1npvsMfRwBr9Ijresh1fH4cAeNEr2M%3D&amp;reserved=0" rel="noreferrer" target="_blank">https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&amp;data=04%7C01%7CChristian.Koenig%40amd.com%7C65d21b6f02da409ac7b508d8f9997367%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637533784761980218%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=USmYbhfkSfPcE1npvsMfRwBr9Ijresh1fH4cAeNEr2M%3D&amp;reserved=0</a><br>
<br>
</blockquote></div></div>