Skip to content

Commit b76f146

Browse files
Tvrtko UrsulinPhilipp Stanner
authored andcommitted
drm/sched: Remove a hole from struct drm_sched_job
We can re-order some struct members and take u32 credits outside of the pointer sandwich and also for the last_dependency member we can get away with an unsigned int since for dependency we use xa_limit_32b. Pahole report before: /* size: 160, cachelines: 3, members: 14 */ /* sum members: 156, holes: 1, sum holes: 4 */ /* last cacheline: 32 bytes */ And after: /* size: 152, cachelines: 3, members: 14 */ /* last cacheline: 24 bytes */ Signed-off-by: Tvrtko Ursulin <[email protected]> Cc: Christian König <[email protected]> Cc: Danilo Krummrich <[email protected]> Cc: Matthew Brost <[email protected]> Cc: Philipp Stanner <[email protected]> Acked-by: Danilo Krummrich <[email protected]> Acked-by: Christian König <[email protected]> Signed-off-by: Philipp Stanner <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 80b6ef8 commit b76f146

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

include/drm/gpu_scheduler.h

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -338,8 +338,14 @@ struct drm_sched_fence *to_drm_sched_fence(struct dma_fence *f);
338338
* to schedule the job.
339339
*/
340340
struct drm_sched_job {
341-
struct spsc_node queue_node;
342-
struct list_head list;
341+
u64 id;
342+
343+
/**
344+
* @submit_ts:
345+
*
346+
* When the job was pushed into the entity queue.
347+
*/
348+
ktime_t submit_ts;
343349

344350
/**
345351
* @sched:
@@ -349,24 +355,30 @@ struct drm_sched_job {
349355
* has finished.
350356
*/
351357
struct drm_gpu_scheduler *sched;
358+
352359
struct drm_sched_fence *s_fence;
360+
struct drm_sched_entity *entity;
353361

362+
enum drm_sched_priority s_priority;
354363
u32 credits;
364+
/** @last_dependency: tracks @dependencies as they signal */
365+
unsigned int last_dependency;
366+
atomic_t karma;
367+
368+
struct spsc_node queue_node;
369+
struct list_head list;
355370

356371
/*
357372
* work is used only after finish_cb has been used and will not be
358373
* accessed anymore.
359374
*/
360375
union {
361-
struct dma_fence_cb finish_cb;
362-
struct work_struct work;
376+
struct dma_fence_cb finish_cb;
377+
struct work_struct work;
363378
};
364379

365-
uint64_t id;
366-
atomic_t karma;
367-
enum drm_sched_priority s_priority;
368-
struct drm_sched_entity *entity;
369380
struct dma_fence_cb cb;
381+
370382
/**
371383
* @dependencies:
372384
*
@@ -375,16 +387,6 @@ struct drm_sched_job {
375387
* drm_sched_job_add_implicit_dependencies().
376388
*/
377389
struct xarray dependencies;
378-
379-
/** @last_dependency: tracks @dependencies as they signal */
380-
unsigned long last_dependency;
381-
382-
/**
383-
* @submit_ts:
384-
*
385-
* When the job was pushed into the entity queue.
386-
*/
387-
ktime_t submit_ts;
388390
};
389391

390392
static inline bool drm_sched_invalidate_job(struct drm_sched_job *s_job,

0 commit comments

Comments
 (0)