On Wed, Jun 11, 2025 at 04:57:50PM +0200, Christian König wrote:
> On 6/11/25 16:25, Danilo Krummrich wrote:
> > (Cc: dri-devel)
> > 
> > On Tue, Jun 10, 2025 at 03:05:34PM +0200, Christian König wrote:
> >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.h 
> >>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.h
> >>> index 5a8bc6342222..6108a6f9dba7 100644
> >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.h
> >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.h
> >>> @@ -44,6 +44,22 @@
> >>>  struct amdgpu_fence;
> >>>  enum amdgpu_ib_pool_type;
> >>>  
> >>> +/* Internal kernel job ids. (decreasing values, starting from U64_MAX). 
> >>> */
> >>> +#define AMDGPU_KERNEL_JOB_ID_VM_UPDATE              
> >>> (18446744073709551615ULL)
> >>> +#define AMDGPU_KERNEL_JOB_ID_VM_UPDATE_PDES         
> >>> (18446744073709551614ULL)
> >>> +#define AMDGPU_KERNEL_JOB_ID_VM_UPDATE_RANGE        
> >>> (18446744073709551613ULL)
> >>> +#define AMDGPU_KERNEL_JOB_ID_VM_PT_CLEAR            
> >>> (18446744073709551612ULL)
> >>> +#define AMDGPU_KERNEL_JOB_ID_TTM_MAP_BUFFER         
> >>> (18446744073709551611ULL)
> >>> +#define AMDGPU_KERNEL_JOB_ID_TTM_ACCESS_MEMORY_SDMA 
> >>> (18446744073709551610ULL)
> >>> +#define AMDGPU_KERNEL_JOB_ID_TTM_COPY_BUFFER        
> >>> (18446744073709551609ULL)
> >>> +#define AMDGPU_KERNEL_JOB_ID_CLEAR_ON_RELEASE       
> >>> (18446744073709551608ULL)
> >>> +#define AMDGPU_KERNEL_JOB_ID_MOVE_BLIT              
> >>> (18446744073709551607ULL)
> >>> +#define AMDGPU_KERNEL_JOB_ID_TTM_CLEAR_BUFFER       
> >>> (18446744073709551606ULL)
> >>> +#define AMDGPU_KERNEL_JOB_ID_CLEANER_SHADER         
> >>> (18446744073709551605ULL)
> >>> +#define AMDGPU_KERNEL_JOB_ID_FLUSH_GPU_TLB          
> >>> (18446744073709551604ULL)
> >>> +#define AMDGPU_KERNEL_JOB_ID_KFD_GART_MAP           
> >>> (18446744073709551603ULL)
> >>> +#define AMDGPU_KERNEL_JOB_ID_VCN_RING_TEST          
> >>> (18446744073709551602ULL)
> > 
> > Why not
> > 
> >     (U64_MAX - {1, 2, ...})?
> 
> That's what Pierre came up with as well, but I thought that this is ugly 
> because it makes it hard to match the numbers from the trace back to 
> something in the code.
> 
> >> Mhm, reiterating our internal discussion on the mailing list.
> >>
> >> I think it would be nicer if we could use negative values for the kernel 
> >> submissions and positive for userspace. But as discussed internally we 
> >> would need to adjust the scheduler trace points for that once more.
> >>
> >> @Philip and @Danilo any opinion on that?
> > 
> > Both, the U64_MAX and the positive-negative approach, are a bit hacky. I 
> > wonder
> > why we need client_id to be a u64, wouldn't a u32 not be enough?
> 
> That can trivially overflow on long running boxes.

I don't know if "trivially" is the word of choice given that the number is
4,294,967,295.

But I did indeed miss that this is a for ever increasing atomic. Why is it an
atomic? Why is it not an IDA?

> > Anyways, if client_id remains to be a u64, we could add a global DRM 
> > constant
> > instead, e.g.
> > 
> >     #define DRM_CLIENT_ID_MAX       0x0fffffffffffffff
> >     #define DRM_KERNEL_ID_BASE      (DRM_CLIENT_ID_MAX + 1)
> > 
> > And in drm_file_alloc() fail if we're out of IDs.
> 
> Mhm, I wouldn't mind printing the client id as hex and then always setting 
> the highest bit for kernel submissions.
> 
> But when we keep printing them as base 10 it kind of becomes unreadable.
> 
> Christian.
> 
> > 
> > I think this would be much cleaner.
> 

Reply via email to