On 5/2/2025 9:02 PM, John Olender wrote:
On 4/30/25 5:44 PM, Paneer Selvam, Arunpravin wrote:

On 5/1/2025 2:50 AM, Alex Deucher wrote:
+ Christian

On Tue, Apr 29, 2025 at 7:24 AM John Olender <john.olen...@gmail.com>
wrote:
The drm_mm allocator tolerated being passed end > mm->size, but the
drm_buddy allocator does not.

Restore the pre-buddy-allocator behavior of allowing such placements.

Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3448
Signed-off-by: John Olender <john.olen...@gmail.com>
This looks correct to me.
Reviewed-by: Alex Deucher <alexander.deuc...@amd.com>
I was thinking that we should return an error when lpfn > man->size.

Regards,
Arun.
This patch restores the previous behavior in the spirit of "Do not crash
the kernel".  The existing uvd placements are pretty clear in their
intent and were accepted until the switch to drm_buddy.  I think it's
fair to consider their style as expected.

With that in mind, I'm not sure amdgpu_vram_mgr is the place this change
really belongs.  That is, I think it's worth asking:

1) Why does drm_mm accept end > mm->size without complaint?
2) Why doesn't drm_buddy do the same?

I remember that during the development of DRM buddy , we had a discussion with Intel folks and decided to return an error in DRM buddy when end > mm->size. This was done to ensure that, at the driver level,  lpfn
has the correct value.

I will modify this at drm_buddy to match with drm_mm and send the patch.

Regards,
Arun.

Thanks,
John

---
   drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | 2 +-
   1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c b/drivers/
gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
index 2d7f82e98df9..abdc52b0895a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
@@ -463,7 +463,7 @@ static int amdgpu_vram_mgr_new(struct
ttm_resource_manager *man,
          int r;

          lpfn = (u64)place->lpfn << PAGE_SHIFT;
-       if (!lpfn)
+       if (!lpfn || lpfn > man->size)
                  lpfn = man->size;

          fpfn = (u64)place->fpfn << PAGE_SHIFT;
--
2.47.2


Reply via email to