On 2025-05-28 14:14, Paneer Selvam, Arunpravin wrote:
> On 5/28/2025 2:59 PM, Natalie Vock wrote:
>> On 5/28/25 09:07, Christian König wrote:
>>>
>>> But the problem rather seems to be that we sometimes don't clear the 
>>> buffers on release for some reason, but still set it as cleared.
>>
>> Yes precisely - "some reason" being the aforementioned clear flags. We do 
>> always call amdgpu_clear_buffer on release, but that function will perform 
>> the same checks as the clear on allocation does - that means, if a block is 
>> marked clear then it will skip emitting any actual clears.
> 
> On buffer release 
> [https://elixir.bootlin.com/linux/v6.15/source/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c#L1318],
>  we call amdgpu_fill_buffer() and not amdgpu_clear_buffer() (in 
> amdgpu_bo_release_notify() function), so the buffers are expected to be 
> cleared without fail.
> 
> When the user space doesn't set the AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE 
> flag and having only AMDGPU_GEM_CREATE_VRAM_CLEARED, we don't call this 
> amdgpu_fill_buffer() and amdgpu_vram_mgr_set_cleared(), and that's kind of 
> makes sense.
> I think the problem here is, when we don't clear the buffer during BO 
> release, but the flag remains as cleared and that's why these blocks are 
> skipped during clear on allocation (in amdgpu_bo_create() function).
> 
> Therefore, if the release path clear is skipped for any reasons (for example, 
> in case of AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE not set), we should set all 
> buffer to dirty. Somehow, that is missed.
BTW, I asked this before, but didn't get an answer:

Now that VRAM is always cleared before handing it out to user space, does 
AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE really need to do anything anymore? How 
can user space access the contents of a destroyed BO?


-- 
Earthling Michel Dänzer       \        GNOME / Xwayland / Mesa developer
https://redhat.com             \               Libre software enthusiast

Reply via email to