Re: [PATCH 01/12] drm/amdgpu: Use memset32 for IB padding

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 02/01/2025 13:45, Christian König wrote:


Am 27.12.24 um 12:19 schrieb Tvrtko Ursulin:
From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxxx>

Use memset32 instead of open coding it, just because it is
that bit nicer.

In general looks mostly good, my only concern is that we already had to switch to memset_io() on some platforms for clearing buffers.

Now an IB should in theory always be in system memory, but it would be nice to handle that cleanly.

I could only find kmap on the sub-allocation path which leads into IB. What am I missing?

Or if one day IO mapped objects will be added as backing store for SA then I think it shouldn't be too difficult to somehow propagate that fact up. Maybe all the way to struct amdgpu_ib which would then be able to decide here which flavour of memset to use.

Regards,

Tvrtko

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxxx>
Cc: Christian König <christian.koenig@xxxxxxx>
Cc: Sunil Khatri <sunil.khatri@xxxxxxx>
---
  drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 12 ++++++++++--
  1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
index a6e28fe3f8d6..a27e32f48f99 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
@@ -136,8 +136,16 @@ void amdgpu_ring_insert_nop(struct amdgpu_ring *ring, uint32_t count)
   */
  void amdgpu_ring_generic_pad_ib(struct amdgpu_ring *ring, struct amdgpu_ib *ib)
  {
-    while (ib->length_dw & ring->funcs->align_mask)
-        ib->ptr[ib->length_dw++] = ring->funcs->nop;
+    u32 align_mask = ring->funcs->align_mask;
+    u32 count = ib->length_dw & align_mask;
+
+    if (count) {
+        count = align_mask + 1 - count;
+
+        memset32(&ib->ptr[ib->length_dw], ring->funcs->nop, count);
+
+        ib->length_dw += count;
+    }
  }
  /**




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux