* [PATCH v2] drm/sched: Use struct for drm_sched_init() params
@ 2025-01-28 14:29 Philipp Stanner
2025-01-28 14:56 ` Danilo Krummrich
` (15 more replies)
0 siblings, 16 replies; 23+ messages in thread
From: Philipp Stanner @ 2025-01-28 14:29 UTC (permalink / raw)
To: Alex Deucher, Christian König, Xinhui Pan, David Airlie,
Simona Vetter, Lucas Stach, Russell King, Christian Gmeiner,
Frank Binns, Matt Coster, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Qiang Yu, Rob Clark, Sean Paul, Konrad Dybcio,
Abhinav Kumar, Dmitry Baryshkov, Marijn Suijten, Karol Herbst,
Lyude Paul, Danilo Krummrich, Boris Brezillon, Rob Herring,
Steven Price, Liviu Dudau, Matthew Brost, Philipp Stanner,
Melissa Wen, Maíra Canal, Lucas De Marchi,
Thomas Hellström, Rodrigo Vivi, Sunil Khatri, Lijo Lazar,
Hawking Zhang, Mario Limonciello, Ma Jun, Yunxiang Li
Cc: amd-gfx, dri-devel, linux-kernel, etnaviv, lima, linux-arm-msm,
freedreno, nouveau, intel-xe
drm_sched_init() has a great many parameters and upcoming new
functionality for the scheduler might add even more. Generally, the
great number of parameters reduces readability and has already caused
one missnaming in:
commit 6f1cacf4eba7 ("drm/nouveau: Improve variable name in nouveau_sched_init()").
Introduce a new struct for the scheduler init parameters and port all
users.
Signed-off-by: Philipp Stanner <phasta@kernel.org>
---
Changes in v2:
- Point out that the hang-limit is deprecated. (Christian)
- Initialize the structs to 0 at declaration. (Planet Earth)
- Don't set stuff explicitly to 0 / NULL. (Tvrtko)
- Make the structs const where possible. (Boris)
- v3d: Use just 1, universal, function for sched-init. (Maíra)
---
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 18 ++++--
drivers/gpu/drm/etnaviv/etnaviv_sched.c | 20 +++----
drivers/gpu/drm/imagination/pvr_queue.c | 18 ++++--
drivers/gpu/drm/lima/lima_sched.c | 16 +++--
drivers/gpu/drm/msm/msm_ringbuffer.c | 17 +++---
drivers/gpu/drm/nouveau/nouveau_sched.c | 15 +++--
drivers/gpu/drm/panfrost/panfrost_job.c | 20 ++++---
drivers/gpu/drm/panthor/panthor_mmu.c | 16 +++--
drivers/gpu/drm/panthor/panthor_sched.c | 29 +++++----
drivers/gpu/drm/scheduler/sched_main.c | 50 ++++++----------
drivers/gpu/drm/v3d/v3d_sched.c | 68 +++++++++-------------
drivers/gpu/drm/xe/xe_execlist.c | 16 +++--
drivers/gpu/drm/xe/xe_gpu_scheduler.c | 17 +++++-
include/drm/gpu_scheduler.h | 37 ++++++++++--
14 files changed, 206 insertions(+), 151 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 96316111300a..daf58b0ff0fa 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -2816,6 +2816,12 @@ static int amdgpu_device_fw_loading(struct amdgpu_device *adev)
static int amdgpu_device_init_schedulers(struct amdgpu_device *adev)
{
+ struct drm_sched_init_args args = {
+ .ops = &amdgpu_sched_ops,
+ .num_rqs = DRM_SCHED_PRIORITY_COUNT,
+ .timeout_wq = adev->reset_domain->wq,
+ .dev = adev->dev
+ };
long timeout;
int r, i;
@@ -2841,12 +2847,12 @@ static int amdgpu_device_init_schedulers(struct amdgpu_device *adev)
break;
}
- r = drm_sched_init(&ring->sched, &amdgpu_sched_ops, NULL,
- DRM_SCHED_PRIORITY_COUNT,
- ring->num_hw_submission, 0,
- timeout, adev->reset_domain->wq,
- ring->sched_score, ring->name,
- adev->dev);
+ args.timeout = timeout;
+ args.credit_limit = ring->num_hw_submission;
+ args.score = ring->sched_score;
+ args.name = ring->name;
+
+ r = drm_sched_init(&ring->sched, &args);
if (r) {
DRM_ERROR("Failed to create scheduler on ring %s.\n",
ring->name);
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_sched.c b/drivers/gpu/drm/etnaviv/etnaviv_sched.c
index 5b67eda122db..1693fd660bf1 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_sched.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_sched.c
@@ -144,17 +144,17 @@ int etnaviv_sched_push_job(struct etnaviv_gem_submit *submit)
int etnaviv_sched_init(struct etnaviv_gpu *gpu)
{
- int ret;
+ const struct drm_sched_init_args args = {
+ .ops = &etnaviv_sched_ops,
+ .num_rqs = DRM_SCHED_PRIORITY_COUNT,
+ .credit_limit = etnaviv_hw_jobs_limit,
+ .hang_limit = etnaviv_job_hang_limit,
+ .timeout = msecs_to_jiffies(500),
+ .name = dev_name(gpu->dev),
+ .dev = gpu->dev
+ };
- ret = drm_sched_init(&gpu->sched, &etnaviv_sched_ops, NULL,
- DRM_SCHED_PRIORITY_COUNT,
- etnaviv_hw_jobs_limit, etnaviv_job_hang_limit,
- msecs_to_jiffies(500), NULL, NULL,
- dev_name(gpu->dev), gpu->dev);
- if (ret)
- return ret;
-
- return 0;
+ return drm_sched_init(&gpu->sched, &args);
}
void etnaviv_sched_fini(struct etnaviv_gpu *gpu)
diff --git a/drivers/gpu/drm/imagination/pvr_queue.c b/drivers/gpu/drm/imagination/pvr_queue.c
index c4f08432882b..d5c22874a9c1 100644
--- a/drivers/gpu/drm/imagination/pvr_queue.c
+++ b/drivers/gpu/drm/imagination/pvr_queue.c
@@ -1210,6 +1210,17 @@ struct pvr_queue *pvr_queue_create(struct pvr_context *ctx,
},
};
struct pvr_device *pvr_dev = ctx->pvr_dev;
+ const struct drm_sched_init_args sched_args = {
+ .ops = &pvr_queue_sched_ops,
+ .submit_wq = pvr_dev->sched_wq,
+ .num_rqs = 1,
+ .credit_limit = 64 * 1024,
+ .hang_limit = 1,
+ .timeout = msecs_to_jiffies(500),
+ .timeout_wq = pvr_dev->sched_wq,
+ .name = "pvr-queue",
+ .dev = pvr_dev->base.dev
+ };
struct drm_gpu_scheduler *sched;
struct pvr_queue *queue;
int ctx_state_size, err;
@@ -1282,12 +1293,7 @@ struct pvr_queue *pvr_queue_create(struct pvr_context *ctx,
queue->timeline_ufo.value = cpu_map;
- err = drm_sched_init(&queue->scheduler,
- &pvr_queue_sched_ops,
- pvr_dev->sched_wq, 1, 64 * 1024, 1,
- msecs_to_jiffies(500),
- pvr_dev->sched_wq, NULL, "pvr-queue",
- pvr_dev->base.dev);
+ err = drm_sched_init(&queue->scheduler, &sched_args);
if (err)
goto err_release_ufo;
diff --git a/drivers/gpu/drm/lima/lima_sched.c b/drivers/gpu/drm/lima/lima_sched.c
index b40c90e97d7e..137adbd2b52d 100644
--- a/drivers/gpu/drm/lima/lima_sched.c
+++ b/drivers/gpu/drm/lima/lima_sched.c
@@ -515,18 +515,22 @@ int lima_sched_pipe_init(struct lima_sched_pipe *pipe, const char *name)
{
unsigned int timeout = lima_sched_timeout_ms > 0 ?
lima_sched_timeout_ms : 10000;
+ const struct drm_sched_init_args args = {
+ .ops = &lima_sched_ops,
+ .num_rqs = DRM_SCHED_PRIORITY_COUNT,
+ .credit_limit = 1,
+ .hang_limit = lima_job_hang_limit,
+ .timeout = msecs_to_jiffies(timeout),
+ .name = name,
+ .dev = pipe->ldev->dev
+ };
pipe->fence_context = dma_fence_context_alloc(1);
spin_lock_init(&pipe->fence_lock);
INIT_WORK(&pipe->recover_work, lima_sched_recover_work);
- return drm_sched_init(&pipe->base, &lima_sched_ops, NULL,
- DRM_SCHED_PRIORITY_COUNT,
- 1,
- lima_job_hang_limit,
- msecs_to_jiffies(timeout), NULL,
- NULL, name, pipe->ldev->dev);
+ return drm_sched_init(&pipe->base, &args);
}
void lima_sched_pipe_fini(struct lima_sched_pipe *pipe)
diff --git a/drivers/gpu/drm/msm/msm_ringbuffer.c b/drivers/gpu/drm/msm/msm_ringbuffer.c
index c803556a8f64..c9d5283df3e3 100644
--- a/drivers/gpu/drm/msm/msm_ringbuffer.c
+++ b/drivers/gpu/drm/msm/msm_ringbuffer.c
@@ -59,8 +59,14 @@ static const struct drm_sched_backend_ops msm_sched_ops = {
struct msm_ringbuffer *msm_ringbuffer_new(struct msm_gpu *gpu, int id,
void *memptrs, uint64_t memptrs_iova)
{
+ struct drm_sched_init_args args = {
+ .ops = &msm_sched_ops,
+ .num_rqs = DRM_SCHED_PRIORITY_COUNT,
+ .credit_limit = num_hw_submissions,
+ .timeout = MAX_SCHEDULE_TIMEOUT,
+ .dev = gpu->dev->dev
+ };
struct msm_ringbuffer *ring;
- long sched_timeout;
char name[32];
int ret;
@@ -87,6 +93,7 @@ struct msm_ringbuffer *msm_ringbuffer_new(struct msm_gpu *gpu, int id,
}
msm_gem_object_set_name(ring->bo, "ring%d", id);
+ args.name = to_msm_bo(ring->bo)->name,
ring->end = ring->start + (MSM_GPU_RINGBUFFER_SZ >> 2);
ring->next = ring->start;
@@ -95,13 +102,7 @@ struct msm_ringbuffer *msm_ringbuffer_new(struct msm_gpu *gpu, int id,
ring->memptrs = memptrs;
ring->memptrs_iova = memptrs_iova;
- /* currently managing hangcheck ourselves: */
- sched_timeout = MAX_SCHEDULE_TIMEOUT;
-
- ret = drm_sched_init(&ring->sched, &msm_sched_ops, NULL,
- DRM_SCHED_PRIORITY_COUNT,
- num_hw_submissions, 0, sched_timeout,
- NULL, NULL, to_msm_bo(ring->bo)->name, gpu->dev->dev);
+ ret = drm_sched_init(&ring->sched, &args);
if (ret) {
goto fail;
}
diff --git a/drivers/gpu/drm/nouveau/nouveau_sched.c b/drivers/gpu/drm/nouveau/nouveau_sched.c
index 4412f2711fb5..b5aac8eebfdd 100644
--- a/drivers/gpu/drm/nouveau/nouveau_sched.c
+++ b/drivers/gpu/drm/nouveau/nouveau_sched.c
@@ -404,7 +404,15 @@ nouveau_sched_init(struct nouveau_sched *sched, struct nouveau_drm *drm,
{
struct drm_gpu_scheduler *drm_sched = &sched->base;
struct drm_sched_entity *entity = &sched->entity;
- const long timeout = msecs_to_jiffies(NOUVEAU_SCHED_JOB_TIMEOUT_MS);
+ const struct drm_sched_init_args args = {
+ .ops = &nouveau_sched_ops,
+ .submit_wq = wq,
+ .num_rqs = DRM_SCHED_PRIORITY_COUNT,
+ .credit_limit = credit_limit,
+ .timeout = msecs_to_jiffies(NOUVEAU_SCHED_JOB_TIMEOUT_MS),
+ .name = "nouveau_sched",
+ .dev = drm->dev->dev
+ };
int ret;
if (!wq) {
@@ -416,10 +424,7 @@ nouveau_sched_init(struct nouveau_sched *sched, struct nouveau_drm *drm,
sched->wq = wq;
}
- ret = drm_sched_init(drm_sched, &nouveau_sched_ops, wq,
- NOUVEAU_SCHED_PRIORITY_COUNT,
- credit_limit, 0, timeout,
- NULL, NULL, "nouveau_sched", drm->dev->dev);
+ ret = drm_sched_init(drm_sched, &args);
if (ret)
goto fail_wq;
diff --git a/drivers/gpu/drm/panfrost/panfrost_job.c b/drivers/gpu/drm/panfrost/panfrost_job.c
index 9b8e82fb8bc4..893fd91cf5b0 100644
--- a/drivers/gpu/drm/panfrost/panfrost_job.c
+++ b/drivers/gpu/drm/panfrost/panfrost_job.c
@@ -836,8 +836,16 @@ static irqreturn_t panfrost_job_irq_handler(int irq, void *data)
int panfrost_job_init(struct panfrost_device *pfdev)
{
+ struct drm_sched_init_args args = {
+ .ops = &panfrost_sched_ops,
+ .num_rqs = DRM_SCHED_PRIORITY_COUNT,
+ .credit_limit = 2,
+ .timeout = msecs_to_jiffies(JOB_TIMEOUT_MS),
+ .timeout_wq = pfdev->reset.wq,
+ .name = "pan_js",
+ .dev = pfdev->dev
+ };
struct panfrost_job_slot *js;
- unsigned int nentries = 2;
int ret, j;
/* All GPUs have two entries per queue, but without jobchain
@@ -845,7 +853,7 @@ int panfrost_job_init(struct panfrost_device *pfdev)
* so let's just advertise one entry in that case.
*/
if (!panfrost_has_hw_feature(pfdev, HW_FEATURE_JOBCHAIN_DISAMBIGUATION))
- nentries = 1;
+ args.credit_limit = 1;
pfdev->js = js = devm_kzalloc(pfdev->dev, sizeof(*js), GFP_KERNEL);
if (!js)
@@ -875,13 +883,7 @@ int panfrost_job_init(struct panfrost_device *pfdev)
for (j = 0; j < NUM_JOB_SLOTS; j++) {
js->queue[j].fence_context = dma_fence_context_alloc(1);
- ret = drm_sched_init(&js->queue[j].sched,
- &panfrost_sched_ops, NULL,
- DRM_SCHED_PRIORITY_COUNT,
- nentries, 0,
- msecs_to_jiffies(JOB_TIMEOUT_MS),
- pfdev->reset.wq,
- NULL, "pan_js", pfdev->dev);
+ ret = drm_sched_init(&js->queue[j].sched, &args);
if (ret) {
dev_err(pfdev->dev, "Failed to create scheduler: %d.", ret);
goto err_sched;
diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c
index 5ce80e2532d5..22b196ff686c 100644
--- a/drivers/gpu/drm/panthor/panthor_mmu.c
+++ b/drivers/gpu/drm/panthor/panthor_mmu.c
@@ -2278,6 +2278,16 @@ panthor_vm_create(struct panthor_device *ptdev, bool for_mcu,
u64 full_va_range = 1ull << va_bits;
struct drm_gem_object *dummy_gem;
struct drm_gpu_scheduler *sched;
+ const struct drm_sched_init_args sched_args = {
+ .ops = &panthor_vm_bind_ops,
+ .submit_wq = ptdev->mmu->vm.wq,
+ .num_rqs = 1,
+ .credit_limit = 1,
+ /* Bind operations are synchronous for now, no timeout needed. */
+ .timeout = MAX_SCHEDULE_TIMEOUT,
+ .name = "panthor-vm-bind",
+ .dev = ptdev->base.dev
+ };
struct io_pgtable_cfg pgtbl_cfg;
u64 mair, min_va, va_range;
struct panthor_vm *vm;
@@ -2335,11 +2345,7 @@ panthor_vm_create(struct panthor_device *ptdev, bool for_mcu,
goto err_mm_takedown;
}
- /* Bind operations are synchronous for now, no timeout needed. */
- ret = drm_sched_init(&vm->sched, &panthor_vm_bind_ops, ptdev->mmu->vm.wq,
- 1, 1, 0,
- MAX_SCHEDULE_TIMEOUT, NULL, NULL,
- "panthor-vm-bind", ptdev->base.dev);
+ ret = drm_sched_init(&vm->sched, &sched_args);
if (ret)
goto err_free_io_pgtable;
diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/panthor/panthor_sched.c
index 5844a7f639e0..44713cfdcd74 100644
--- a/drivers/gpu/drm/panthor/panthor_sched.c
+++ b/drivers/gpu/drm/panthor/panthor_sched.c
@@ -3284,6 +3284,22 @@ static struct panthor_queue *
group_create_queue(struct panthor_group *group,
const struct drm_panthor_queue_create *args)
{
+ const struct drm_sched_init_args sched_args = {
+ .ops = &panthor_queue_sched_ops,
+ .submit_wq = group->ptdev->scheduler->wq,
+ .num_rqs = 1,
+ /*
+ * The credit limit argument tells us the total number of
+ * instructions across all CS slots in the ringbuffer, with
+ * some jobs requiring twice as many as others, depending on
+ * their profiling status.
+ */
+ .credit_limit = args->ringbuf_size / sizeof(u64),
+ .timeout = msecs_to_jiffies(JOB_TIMEOUT_MS),
+ .timeout_wq = group->ptdev->reset.wq,
+ .name = "panthor-queue",
+ .dev = group->ptdev->base.dev
+ };
struct drm_gpu_scheduler *drm_sched;
struct panthor_queue *queue;
int ret;
@@ -3354,17 +3370,8 @@ group_create_queue(struct panthor_group *group,
if (ret)
goto err_free_queue;
- /*
- * Credit limit argument tells us the total number of instructions
- * across all CS slots in the ringbuffer, with some jobs requiring
- * twice as many as others, depending on their profiling status.
- */
- ret = drm_sched_init(&queue->scheduler, &panthor_queue_sched_ops,
- group->ptdev->scheduler->wq, 1,
- args->ringbuf_size / sizeof(u64),
- 0, msecs_to_jiffies(JOB_TIMEOUT_MS),
- group->ptdev->reset.wq,
- NULL, "panthor-queue", group->ptdev->base.dev);
+
+ ret = drm_sched_init(&queue->scheduler, &sched_args);
if (ret)
goto err_free_queue;
diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c
index a48be16ab84f..6295b2654a7c 100644
--- a/drivers/gpu/drm/scheduler/sched_main.c
+++ b/drivers/gpu/drm/scheduler/sched_main.c
@@ -1244,40 +1244,24 @@ static void drm_sched_run_job_work(struct work_struct *w)
* drm_sched_init - Init a gpu scheduler instance
*
* @sched: scheduler instance
- * @ops: backend operations for this scheduler
- * @submit_wq: workqueue to use for submission. If NULL, an ordered wq is
- * allocated and used
- * @num_rqs: number of runqueues, one for each priority, up to DRM_SCHED_PRIORITY_COUNT
- * @credit_limit: the number of credits this scheduler can hold from all jobs
- * @hang_limit: number of times to allow a job to hang before dropping it
- * @timeout: timeout value in jiffies for the scheduler
- * @timeout_wq: workqueue to use for timeout work. If NULL, the system_wq is
- * used
- * @score: optional score atomic shared with other schedulers
- * @name: name used for debugging
- * @dev: target &struct device
+ * @args: scheduler initialization arguments
*
* Return 0 on success, otherwise error code.
*/
-int drm_sched_init(struct drm_gpu_scheduler *sched,
- const struct drm_sched_backend_ops *ops,
- struct workqueue_struct *submit_wq,
- u32 num_rqs, u32 credit_limit, unsigned int hang_limit,
- long timeout, struct workqueue_struct *timeout_wq,
- atomic_t *score, const char *name, struct device *dev)
+int drm_sched_init(struct drm_gpu_scheduler *sched, const struct drm_sched_init_args *args)
{
int i;
- sched->ops = ops;
- sched->credit_limit = credit_limit;
- sched->name = name;
- sched->timeout = timeout;
- sched->timeout_wq = timeout_wq ? : system_wq;
- sched->hang_limit = hang_limit;
- sched->score = score ? score : &sched->_score;
- sched->dev = dev;
+ sched->ops = args->ops;
+ sched->credit_limit = args->credit_limit;
+ sched->name = args->name;
+ sched->timeout = args->timeout;
+ sched->timeout_wq = args->timeout_wq ? : system_wq;
+ sched->hang_limit = args->hang_limit;
+ sched->score = args->score ? args->score : &sched->_score;
+ sched->dev = args->dev;
- if (num_rqs > DRM_SCHED_PRIORITY_COUNT) {
+ if (args->num_rqs > DRM_SCHED_PRIORITY_COUNT) {
/* This is a gross violation--tell drivers what the problem is.
*/
drm_err(sched, "%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n",
@@ -1292,16 +1276,16 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
return 0;
}
- if (submit_wq) {
- sched->submit_wq = submit_wq;
+ if (args->submit_wq) {
+ sched->submit_wq = args->submit_wq;
sched->own_submit_wq = false;
} else {
#ifdef CONFIG_LOCKDEP
- sched->submit_wq = alloc_ordered_workqueue_lockdep_map(name,
+ sched->submit_wq = alloc_ordered_workqueue_lockdep_map(args->name,
WQ_MEM_RECLAIM,
&drm_sched_lockdep_map);
#else
- sched->submit_wq = alloc_ordered_workqueue(name, WQ_MEM_RECLAIM);
+ sched->submit_wq = alloc_ordered_workqueue(args->name, WQ_MEM_RECLAIM);
#endif
if (!sched->submit_wq)
return -ENOMEM;
@@ -1309,11 +1293,11 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
sched->own_submit_wq = true;
}
- sched->sched_rq = kmalloc_array(num_rqs, sizeof(*sched->sched_rq),
+ sched->sched_rq = kmalloc_array(args->num_rqs, sizeof(*sched->sched_rq),
GFP_KERNEL | __GFP_ZERO);
if (!sched->sched_rq)
goto Out_check_own;
- sched->num_rqs = num_rqs;
+ sched->num_rqs = args->num_rqs;
for (i = DRM_SCHED_PRIORITY_KERNEL; i < sched->num_rqs; i++) {
sched->sched_rq[i] = kzalloc(sizeof(*sched->sched_rq[i]), GFP_KERNEL);
if (!sched->sched_rq[i])
diff --git a/drivers/gpu/drm/v3d/v3d_sched.c b/drivers/gpu/drm/v3d/v3d_sched.c
index 961465128d80..dfccb4cda3a1 100644
--- a/drivers/gpu/drm/v3d/v3d_sched.c
+++ b/drivers/gpu/drm/v3d/v3d_sched.c
@@ -820,67 +820,57 @@ static const struct drm_sched_backend_ops v3d_cpu_sched_ops = {
.free_job = v3d_cpu_job_free
};
+/*
+ * v3d's scheduler instances are all identical, except for ops and name.
+ */
+static int
+v3d_queue_sched_init(struct v3d_dev *v3d, const struct drm_sched_backend_ops *ops,
+ enum v3d_queue queue, const char *name)
+{
+ struct drm_sched_init_args args = {
+ .num_rqs = DRM_SCHED_PRIORITY_COUNT,
+ .credit_limit = 1,
+ .timeout = msecs_to_jiffies(500),
+ .dev = v3d->drm.dev
+ };
+
+ args.ops = ops;
+ args.name = name;
+
+ return drm_sched_init(&v3d->queue[queue].sched, &args);
+}
+
int
v3d_sched_init(struct v3d_dev *v3d)
{
- int hw_jobs_limit = 1;
- int job_hang_limit = 0;
- int hang_limit_ms = 500;
int ret;
- ret = drm_sched_init(&v3d->queue[V3D_BIN].sched,
- &v3d_bin_sched_ops, NULL,
- DRM_SCHED_PRIORITY_COUNT,
- hw_jobs_limit, job_hang_limit,
- msecs_to_jiffies(hang_limit_ms), NULL,
- NULL, "v3d_bin", v3d->drm.dev);
+ ret = v3d_queue_sched_init(v3d, &v3d_bin_sched_ops, V3D_BIN, "v3d_bin");
if (ret)
return ret;
- ret = drm_sched_init(&v3d->queue[V3D_RENDER].sched,
- &v3d_render_sched_ops, NULL,
- DRM_SCHED_PRIORITY_COUNT,
- hw_jobs_limit, job_hang_limit,
- msecs_to_jiffies(hang_limit_ms), NULL,
- NULL, "v3d_render", v3d->drm.dev);
+ ret = v3d_queue_sched_init(v3d, &v3d_render_sched_ops, V3D_RENDER,
+ "v3d_render");
if (ret)
goto fail;
- ret = drm_sched_init(&v3d->queue[V3D_TFU].sched,
- &v3d_tfu_sched_ops, NULL,
- DRM_SCHED_PRIORITY_COUNT,
- hw_jobs_limit, job_hang_limit,
- msecs_to_jiffies(hang_limit_ms), NULL,
- NULL, "v3d_tfu", v3d->drm.dev);
+ ret = v3d_queue_sched_init(v3d, &v3d_tfu_sched_ops, V3D_TFU, "v3d_tfu");
if (ret)
goto fail;
if (v3d_has_csd(v3d)) {
- ret = drm_sched_init(&v3d->queue[V3D_CSD].sched,
- &v3d_csd_sched_ops, NULL,
- DRM_SCHED_PRIORITY_COUNT,
- hw_jobs_limit, job_hang_limit,
- msecs_to_jiffies(hang_limit_ms), NULL,
- NULL, "v3d_csd", v3d->drm.dev);
+ ret = v3d_queue_sched_init(v3d, &v3d_csd_sched_ops, V3D_CSD,
+ "v3d_csd");
if (ret)
goto fail;
- ret = drm_sched_init(&v3d->queue[V3D_CACHE_CLEAN].sched,
- &v3d_cache_clean_sched_ops, NULL,
- DRM_SCHED_PRIORITY_COUNT,
- hw_jobs_limit, job_hang_limit,
- msecs_to_jiffies(hang_limit_ms), NULL,
- NULL, "v3d_cache_clean", v3d->drm.dev);
+ ret = v3d_queue_sched_init(v3d, &v3d_cache_clean_sched_ops,
+ V3D_CACHE_CLEAN, "v3d_cache_clean");
if (ret)
goto fail;
}
- ret = drm_sched_init(&v3d->queue[V3D_CPU].sched,
- &v3d_cpu_sched_ops, NULL,
- DRM_SCHED_PRIORITY_COUNT,
- 1, job_hang_limit,
- msecs_to_jiffies(hang_limit_ms), NULL,
- NULL, "v3d_cpu", v3d->drm.dev);
+ ret = v3d_queue_sched_init(v3d, &v3d_cpu_sched_ops, V3D_CPU, "v3d_cpu");
if (ret)
goto fail;
diff --git a/drivers/gpu/drm/xe/xe_execlist.c b/drivers/gpu/drm/xe/xe_execlist.c
index a8c416a48812..db1c52dcf1a6 100644
--- a/drivers/gpu/drm/xe/xe_execlist.c
+++ b/drivers/gpu/drm/xe/xe_execlist.c
@@ -332,6 +332,15 @@ static const struct drm_sched_backend_ops drm_sched_ops = {
static int execlist_exec_queue_init(struct xe_exec_queue *q)
{
struct drm_gpu_scheduler *sched;
+ const struct drm_sched_init_args args = {
+ .ops = &drm_sched_ops,
+ .num_rqs = 1,
+ .credit_limit = q->lrc[0]->ring.size / MAX_JOB_SIZE_BYTES,
+ .hang_limit = XE_SCHED_HANG_LIMIT,
+ .timeout = XE_SCHED_JOB_TIMEOUT,
+ .name = q->hwe->name,
+ .dev = gt_to_xe(q->gt)->drm.dev
+ };
struct xe_execlist_exec_queue *exl;
struct xe_device *xe = gt_to_xe(q->gt);
int err;
@@ -346,11 +355,8 @@ static int execlist_exec_queue_init(struct xe_exec_queue *q)
exl->q = q;
- err = drm_sched_init(&exl->sched, &drm_sched_ops, NULL, 1,
- q->lrc[0]->ring.size / MAX_JOB_SIZE_BYTES,
- XE_SCHED_HANG_LIMIT, XE_SCHED_JOB_TIMEOUT,
- NULL, NULL, q->hwe->name,
- gt_to_xe(q->gt)->drm.dev);
+
+ err = drm_sched_init(&exl->sched, &args);
if (err)
goto err_free;
diff --git a/drivers/gpu/drm/xe/xe_gpu_scheduler.c b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
index 50361b4638f9..be95f4cca007 100644
--- a/drivers/gpu/drm/xe/xe_gpu_scheduler.c
+++ b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
@@ -63,13 +63,24 @@ int xe_sched_init(struct xe_gpu_scheduler *sched,
atomic_t *score, const char *name,
struct device *dev)
{
+ const struct drm_sched_init_args args = {
+ .ops = ops,
+ .submit_wq = submit_wq,
+ .num_rqs = 1,
+ .credit_limit = hw_submission,
+ .hang_limit = hang_limit,
+ .timeout = timeout,
+ .timeout_wq = timeout_wq,
+ .score = score,
+ .name = name,
+ .dev = dev
+ };
+
sched->ops = xe_ops;
INIT_LIST_HEAD(&sched->msgs);
INIT_WORK(&sched->work_process_msg, xe_sched_process_msg_work);
- return drm_sched_init(&sched->base, ops, submit_wq, 1, hw_submission,
- hang_limit, timeout, timeout_wq, score, name,
- dev);
+ return drm_sched_init(&sched->base, &args);
}
void xe_sched_fini(struct xe_gpu_scheduler *sched)
diff --git a/include/drm/gpu_scheduler.h b/include/drm/gpu_scheduler.h
index a0ff08123f07..f0f5435598a8 100644
--- a/include/drm/gpu_scheduler.h
+++ b/include/drm/gpu_scheduler.h
@@ -540,12 +540,39 @@ struct drm_gpu_scheduler {
struct device *dev;
};
+/**
+ * struct drm_sched_init_args - parameters for initializing a DRM GPU scheduler
+ *
+ * @ops: backend operations provided by the driver
+ * @submit_wq: workqueue to use for submission. May be NULL.
+ * If NULL, an ordered wq is allocated and used.
+ * @num_rqs: Number of run-queues. This may be at most DRM_SCHED_PRIORITY_COUNT,
+ * as there's usually one run-queue per priority, but may be less.
+ * @credit_limit: the number of credits this scheduler can hold from all jobs
+ * @hang_limit: number of times to allow a job to hang before dropping it.
+ * This mechanism is DEPRECATED. Set it to 0.
+ * @timeout: timeout value in jiffies for the scheduler
+ * @timeout_wq: workqueue to use for timeout work. May be NULL.
+ * If NULL, the system_wq is used.
+ * @score: score atomic shared with other schedulers. May be NULL.
+ * @name: name used for debugging
+ * @dev: associated device. Used for debugging
+ */
+struct drm_sched_init_args {
+ const struct drm_sched_backend_ops *ops;
+ struct workqueue_struct *submit_wq;
+ struct workqueue_struct *timeout_wq;
+ u32 num_rqs;
+ u32 credit_limit;
+ unsigned int hang_limit;
+ long timeout;
+ atomic_t *score;
+ const char *name;
+ struct device *dev;
+};
+
int drm_sched_init(struct drm_gpu_scheduler *sched,
- const struct drm_sched_backend_ops *ops,
- struct workqueue_struct *submit_wq,
- u32 num_rqs, u32 credit_limit, unsigned int hang_limit,
- long timeout, struct workqueue_struct *timeout_wq,
- atomic_t *score, const char *name, struct device *dev);
+ const struct drm_sched_init_args *args);
void drm_sched_fini(struct drm_gpu_scheduler *sched);
int drm_sched_job_init(struct drm_sched_job *job,
--
2.47.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [PATCH v2] drm/sched: Use struct for drm_sched_init() params
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
@ 2025-01-28 14:56 ` Danilo Krummrich
2025-01-29 15:18 ` Philipp Stanner
2025-01-28 15:29 ` ✓ CI.Patch_applied: success for drm/sched: Use struct for drm_sched_init() params (rev2) Patchwork
` (14 subsequent siblings)
15 siblings, 1 reply; 23+ messages in thread
From: Danilo Krummrich @ 2025-01-28 14:56 UTC (permalink / raw)
To: Philipp Stanner
Cc: Alex Deucher, Christian König, Xinhui Pan, David Airlie,
Simona Vetter, Lucas Stach, Russell King, Christian Gmeiner,
Frank Binns, Matt Coster, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Qiang Yu, Rob Clark, Sean Paul, Konrad Dybcio,
Abhinav Kumar, Dmitry Baryshkov, Marijn Suijten, Karol Herbst,
Lyude Paul, Boris Brezillon, Rob Herring, Steven Price,
Liviu Dudau, Matthew Brost, Melissa Wen, Maíra Canal,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Sunil Khatri, Lijo Lazar, Hawking Zhang, Mario Limonciello,
Ma Jun, Yunxiang Li, amd-gfx, dri-devel, linux-kernel, etnaviv,
lima, linux-arm-msm, freedreno, nouveau, intel-xe
On Tue, Jan 28, 2025 at 03:29:27PM +0100, Philipp Stanner wrote:
> drm_sched_init() has a great many parameters and upcoming new
> functionality for the scheduler might add even more. Generally, the
> great number of parameters reduces readability and has already caused
> one missnaming in:
>
> commit 6f1cacf4eba7 ("drm/nouveau: Improve variable name in nouveau_sched_init()").
>
> Introduce a new struct for the scheduler init parameters and port all
> users.
>
> Signed-off-by: Philipp Stanner <phasta@kernel.org>
> ---
> Changes in v2:
> - Point out that the hang-limit is deprecated. (Christian)
> - Initialize the structs to 0 at declaration. (Planet Earth)
> - Don't set stuff explicitly to 0 / NULL. (Tvrtko)
> - Make the structs const where possible. (Boris)
> - v3d: Use just 1, universal, function for sched-init. (Maíra)
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 18 ++++--
> drivers/gpu/drm/etnaviv/etnaviv_sched.c | 20 +++----
> drivers/gpu/drm/imagination/pvr_queue.c | 18 ++++--
> drivers/gpu/drm/lima/lima_sched.c | 16 +++--
> drivers/gpu/drm/msm/msm_ringbuffer.c | 17 +++---
> drivers/gpu/drm/nouveau/nouveau_sched.c | 15 +++--
> drivers/gpu/drm/panfrost/panfrost_job.c | 20 ++++---
> drivers/gpu/drm/panthor/panthor_mmu.c | 16 +++--
> drivers/gpu/drm/panthor/panthor_sched.c | 29 +++++----
> drivers/gpu/drm/scheduler/sched_main.c | 50 ++++++----------
> drivers/gpu/drm/v3d/v3d_sched.c | 68 +++++++++-------------
> drivers/gpu/drm/xe/xe_execlist.c | 16 +++--
> drivers/gpu/drm/xe/xe_gpu_scheduler.c | 17 +++++-
> include/drm/gpu_scheduler.h | 37 ++++++++++--
> 14 files changed, 206 insertions(+), 151 deletions(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_sched.c b/drivers/gpu/drm/nouveau/nouveau_sched.c
> index 4412f2711fb5..b5aac8eebfdd 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_sched.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_sched.c
> @@ -404,7 +404,15 @@ nouveau_sched_init(struct nouveau_sched *sched, struct nouveau_drm *drm,
> {
> struct drm_gpu_scheduler *drm_sched = &sched->base;
> struct drm_sched_entity *entity = &sched->entity;
> - const long timeout = msecs_to_jiffies(NOUVEAU_SCHED_JOB_TIMEOUT_MS);
> + const struct drm_sched_init_args args = {
> + .ops = &nouveau_sched_ops,
> + .submit_wq = wq,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = credit_limit,
> + .timeout = msecs_to_jiffies(NOUVEAU_SCHED_JOB_TIMEOUT_MS),
> + .name = "nouveau_sched",
> + .dev = drm->dev->dev
> + };
> int ret;
>
> if (!wq) {
> @@ -416,10 +424,7 @@ nouveau_sched_init(struct nouveau_sched *sched, struct nouveau_drm *drm,
> sched->wq = wq;
This change breaks Nouveau, you need to set args.submit_wq here as well.
> }
>
> - ret = drm_sched_init(drm_sched, &nouveau_sched_ops, wq,
> - NOUVEAU_SCHED_PRIORITY_COUNT,
> - credit_limit, 0, timeout,
> - NULL, NULL, "nouveau_sched", drm->dev->dev);
> + ret = drm_sched_init(drm_sched, &args);
> if (ret)
> goto fail_wq;
>
> diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/panthor/panthor_sched.c
> index 5844a7f639e0..44713cfdcd74 100644
> --- a/drivers/gpu/drm/panthor/panthor_sched.c
> +++ b/drivers/gpu/drm/panthor/panthor_sched.c
> @@ -3284,6 +3284,22 @@ static struct panthor_queue *
> group_create_queue(struct panthor_group *group,
> const struct drm_panthor_queue_create *args)
> {
> + const struct drm_sched_init_args sched_args = {
> + .ops = &panthor_queue_sched_ops,
> + .submit_wq = group->ptdev->scheduler->wq,
> + .num_rqs = 1,
> + /*
> + * The credit limit argument tells us the total number of
> + * instructions across all CS slots in the ringbuffer, with
> + * some jobs requiring twice as many as others, depending on
> + * their profiling status.
> + */
> + .credit_limit = args->ringbuf_size / sizeof(u64),
> + .timeout = msecs_to_jiffies(JOB_TIMEOUT_MS),
> + .timeout_wq = group->ptdev->reset.wq,
> + .name = "panthor-queue",
> + .dev = group->ptdev->base.dev
> + };
> struct drm_gpu_scheduler *drm_sched;
> struct panthor_queue *queue;
> int ret;
> @@ -3354,17 +3370,8 @@ group_create_queue(struct panthor_group *group,
> if (ret)
> goto err_free_queue;
>
> - /*
> - * Credit limit argument tells us the total number of instructions
> - * across all CS slots in the ringbuffer, with some jobs requiring
> - * twice as many as others, depending on their profiling status.
> - */
> - ret = drm_sched_init(&queue->scheduler, &panthor_queue_sched_ops,
> - group->ptdev->scheduler->wq, 1,
> - args->ringbuf_size / sizeof(u64),
> - 0, msecs_to_jiffies(JOB_TIMEOUT_MS),
> - group->ptdev->reset.wq,
> - NULL, "panthor-queue", group->ptdev->base.dev);
> +
This creates two empty lines.
> + ret = drm_sched_init(&queue->scheduler, &sched_args);
> if (ret)
> goto err_free_queue;
>
> diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c
> index a48be16ab84f..6295b2654a7c 100644
> --- a/drivers/gpu/drm/scheduler/sched_main.c
> +++ b/drivers/gpu/drm/scheduler/sched_main.c
> @@ -1244,40 +1244,24 @@ static void drm_sched_run_job_work(struct work_struct *w)
> * drm_sched_init - Init a gpu scheduler instance
> *
> * @sched: scheduler instance
> - * @ops: backend operations for this scheduler
> - * @submit_wq: workqueue to use for submission. If NULL, an ordered wq is
> - * allocated and used
> - * @num_rqs: number of runqueues, one for each priority, up to DRM_SCHED_PRIORITY_COUNT
> - * @credit_limit: the number of credits this scheduler can hold from all jobs
> - * @hang_limit: number of times to allow a job to hang before dropping it
> - * @timeout: timeout value in jiffies for the scheduler
> - * @timeout_wq: workqueue to use for timeout work. If NULL, the system_wq is
> - * used
> - * @score: optional score atomic shared with other schedulers
> - * @name: name used for debugging
> - * @dev: target &struct device
> + * @args: scheduler initialization arguments
> *
> * Return 0 on success, otherwise error code.
> */
> -int drm_sched_init(struct drm_gpu_scheduler *sched,
> - const struct drm_sched_backend_ops *ops,
> - struct workqueue_struct *submit_wq,
> - u32 num_rqs, u32 credit_limit, unsigned int hang_limit,
> - long timeout, struct workqueue_struct *timeout_wq,
> - atomic_t *score, const char *name, struct device *dev)
> +int drm_sched_init(struct drm_gpu_scheduler *sched, const struct drm_sched_init_args *args)
> {
> int i;
>
> - sched->ops = ops;
> - sched->credit_limit = credit_limit;
> - sched->name = name;
> - sched->timeout = timeout;
> - sched->timeout_wq = timeout_wq ? : system_wq;
> - sched->hang_limit = hang_limit;
> - sched->score = score ? score : &sched->_score;
> - sched->dev = dev;
> + sched->ops = args->ops;
> + sched->credit_limit = args->credit_limit;
> + sched->name = args->name;
> + sched->timeout = args->timeout;
> + sched->timeout_wq = args->timeout_wq ? : system_wq;
> + sched->hang_limit = args->hang_limit;
> + sched->score = args->score ? args->score : &sched->_score;
> + sched->dev = args->dev;
>
> - if (num_rqs > DRM_SCHED_PRIORITY_COUNT) {
> + if (args->num_rqs > DRM_SCHED_PRIORITY_COUNT) {
> /* This is a gross violation--tell drivers what the problem is.
> */
> drm_err(sched, "%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n",
> @@ -1292,16 +1276,16 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
> return 0;
> }
>
> - if (submit_wq) {
> - sched->submit_wq = submit_wq;
> + if (args->submit_wq) {
> + sched->submit_wq = args->submit_wq;
> sched->own_submit_wq = false;
> } else {
> #ifdef CONFIG_LOCKDEP
> - sched->submit_wq = alloc_ordered_workqueue_lockdep_map(name,
> + sched->submit_wq = alloc_ordered_workqueue_lockdep_map(args->name,
> WQ_MEM_RECLAIM,
> &drm_sched_lockdep_map);
> #else
> - sched->submit_wq = alloc_ordered_workqueue(name, WQ_MEM_RECLAIM);
> + sched->submit_wq = alloc_ordered_workqueue(args->name, WQ_MEM_RECLAIM);
> #endif
> if (!sched->submit_wq)
> return -ENOMEM;
> @@ -1309,11 +1293,11 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
> sched->own_submit_wq = true;
> }
>
> - sched->sched_rq = kmalloc_array(num_rqs, sizeof(*sched->sched_rq),
> + sched->sched_rq = kmalloc_array(args->num_rqs, sizeof(*sched->sched_rq),
> GFP_KERNEL | __GFP_ZERO);
> if (!sched->sched_rq)
> goto Out_check_own;
> - sched->num_rqs = num_rqs;
> + sched->num_rqs = args->num_rqs;
> for (i = DRM_SCHED_PRIORITY_KERNEL; i < sched->num_rqs; i++) {
> sched->sched_rq[i] = kzalloc(sizeof(*sched->sched_rq[i]), GFP_KERNEL);
> if (!sched->sched_rq[i])
> diff --git a/drivers/gpu/drm/xe/xe_execlist.c b/drivers/gpu/drm/xe/xe_execlist.c
> index a8c416a48812..db1c52dcf1a6 100644
> --- a/drivers/gpu/drm/xe/xe_execlist.c
> +++ b/drivers/gpu/drm/xe/xe_execlist.c
> @@ -332,6 +332,15 @@ static const struct drm_sched_backend_ops drm_sched_ops = {
> static int execlist_exec_queue_init(struct xe_exec_queue *q)
> {
> struct drm_gpu_scheduler *sched;
> + const struct drm_sched_init_args args = {
> + .ops = &drm_sched_ops,
> + .num_rqs = 1,
> + .credit_limit = q->lrc[0]->ring.size / MAX_JOB_SIZE_BYTES,
> + .hang_limit = XE_SCHED_HANG_LIMIT,
> + .timeout = XE_SCHED_JOB_TIMEOUT,
> + .name = q->hwe->name,
> + .dev = gt_to_xe(q->gt)->drm.dev
> + };
> struct xe_execlist_exec_queue *exl;
> struct xe_device *xe = gt_to_xe(q->gt);
> int err;
> @@ -346,11 +355,8 @@ static int execlist_exec_queue_init(struct xe_exec_queue *q)
>
> exl->q = q;
>
> - err = drm_sched_init(&exl->sched, &drm_sched_ops, NULL, 1,
> - q->lrc[0]->ring.size / MAX_JOB_SIZE_BYTES,
> - XE_SCHED_HANG_LIMIT, XE_SCHED_JOB_TIMEOUT,
> - NULL, NULL, q->hwe->name,
> - gt_to_xe(q->gt)->drm.dev);
> +
Two empty lines here as well.
> + err = drm_sched_init(&exl->sched, &args);
> if (err)
> goto err_free;
>
> diff --git a/drivers/gpu/drm/xe/xe_gpu_scheduler.c b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> index 50361b4638f9..be95f4cca007 100644
> --- a/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> +++ b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> @@ -63,13 +63,24 @@ int xe_sched_init(struct xe_gpu_scheduler *sched,
> atomic_t *score, const char *name,
> struct device *dev)
> {
> + const struct drm_sched_init_args args = {
> + .ops = ops,
> + .submit_wq = submit_wq,
> + .num_rqs = 1,
> + .credit_limit = hw_submission,
> + .hang_limit = hang_limit,
> + .timeout = timeout,
> + .timeout_wq = timeout_wq,
> + .score = score,
> + .name = name,
> + .dev = dev
> + };
> +
> sched->ops = xe_ops;
> INIT_LIST_HEAD(&sched->msgs);
> INIT_WORK(&sched->work_process_msg, xe_sched_process_msg_work);
>
> - return drm_sched_init(&sched->base, ops, submit_wq, 1, hw_submission,
> - hang_limit, timeout, timeout_wq, score, name,
> - dev);
> + return drm_sched_init(&sched->base, &args);
> }
>
> void xe_sched_fini(struct xe_gpu_scheduler *sched)
> diff --git a/include/drm/gpu_scheduler.h b/include/drm/gpu_scheduler.h
> index a0ff08123f07..f0f5435598a8 100644
> --- a/include/drm/gpu_scheduler.h
> +++ b/include/drm/gpu_scheduler.h
> @@ -540,12 +540,39 @@ struct drm_gpu_scheduler {
> struct device *dev;
> };
>
> +/**
> + * struct drm_sched_init_args - parameters for initializing a DRM GPU scheduler
> + *
> + * @ops: backend operations provided by the driver
> + * @submit_wq: workqueue to use for submission. May be NULL.
> + * If NULL, an ordered wq is allocated and used.
> + * @num_rqs: Number of run-queues. This may be at most DRM_SCHED_PRIORITY_COUNT,
> + * as there's usually one run-queue per priority, but may be less.
> + * @credit_limit: the number of credits this scheduler can hold from all jobs
> + * @hang_limit: number of times to allow a job to hang before dropping it.
> + * This mechanism is DEPRECATED. Set it to 0.
> + * @timeout: timeout value in jiffies for the scheduler
> + * @timeout_wq: workqueue to use for timeout work. May be NULL.
> + * If NULL, the system_wq is used.
> + * @score: score atomic shared with other schedulers. May be NULL.
> + * @name: name used for debugging
> + * @dev: associated device. Used for debugging
> + */
This is weirdly formatted. Please align line breaks with the corresponding
number of spaces.
> +struct drm_sched_init_args {
> + const struct drm_sched_backend_ops *ops;
> + struct workqueue_struct *submit_wq;
> + struct workqueue_struct *timeout_wq;
> + u32 num_rqs;
> + u32 credit_limit;
> + unsigned int hang_limit;
> + long timeout;
> + atomic_t *score;
> + const char *name;
> + struct device *dev;
> +};
> +
> int drm_sched_init(struct drm_gpu_scheduler *sched,
> - const struct drm_sched_backend_ops *ops,
> - struct workqueue_struct *submit_wq,
> - u32 num_rqs, u32 credit_limit, unsigned int hang_limit,
> - long timeout, struct workqueue_struct *timeout_wq,
> - atomic_t *score, const char *name, struct device *dev);
> + const struct drm_sched_init_args *args);
>
> void drm_sched_fini(struct drm_gpu_scheduler *sched);
> int drm_sched_job_init(struct drm_sched_job *job,
> --
> 2.47.1
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✓ CI.Patch_applied: success for drm/sched: Use struct for drm_sched_init() params (rev2)
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
2025-01-28 14:56 ` Danilo Krummrich
@ 2025-01-28 15:29 ` Patchwork
2025-01-28 15:29 ` ✗ CI.checkpatch: warning " Patchwork
` (13 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2025-01-28 15:29 UTC (permalink / raw)
To: Philipp Stanner; +Cc: intel-xe
== Series Details ==
Series: drm/sched: Use struct for drm_sched_init() params (rev2)
URL : https://patchwork.freedesktop.org/series/143883/
State : success
== Summary ==
=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: f85f4e698972 drm-tip: 2025y-01m-28d-15h-24m-25s UTC integration manifest
=== git am output follows ===
Applying: drm/sched: Use struct for drm_sched_init() params
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✗ CI.checkpatch: warning for drm/sched: Use struct for drm_sched_init() params (rev2)
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
2025-01-28 14:56 ` Danilo Krummrich
2025-01-28 15:29 ` ✓ CI.Patch_applied: success for drm/sched: Use struct for drm_sched_init() params (rev2) Patchwork
@ 2025-01-28 15:29 ` Patchwork
2025-01-28 15:31 ` ✓ CI.KUnit: success " Patchwork
` (12 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2025-01-28 15:29 UTC (permalink / raw)
To: Philipp Stanner; +Cc: intel-xe
== Series Details ==
Series: drm/sched: Use struct for drm_sched_init() params (rev2)
URL : https://patchwork.freedesktop.org/series/143883/
State : warning
== Summary ==
+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
30ab6715fc09baee6cc14cb3c89ad8858688d474
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 43c2e80ddcb72dae79a1e5e48613ab53a5b8f362
Author: Philipp Stanner <phasta@kernel.org>
Date: Tue Jan 28 15:29:27 2025 +0100
drm/sched: Use struct for drm_sched_init() params
drm_sched_init() has a great many parameters and upcoming new
functionality for the scheduler might add even more. Generally, the
great number of parameters reduces readability and has already caused
one missnaming in:
commit 6f1cacf4eba7 ("drm/nouveau: Improve variable name in nouveau_sched_init()").
Introduce a new struct for the scheduler init parameters and port all
users.
Signed-off-by: Philipp Stanner <phasta@kernel.org>
+ /mt/dim checkpatch f85f4e698972bc6021185ccba59e6e3638a8e060 drm-intel
43c2e80ddcb7 drm/sched: Use struct for drm_sched_init() params
-:11: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#11:
commit 6f1cacf4eba7 ("drm/nouveau: Improve variable name in nouveau_sched_init()").
-:354: CHECK:LINE_SPACING: Please don't use multiple blank lines
#354: FILE: drivers/gpu/drm/panthor/panthor_sched.c:3373:
+
-:580: CHECK:LINE_SPACING: Please don't use multiple blank lines
#580: FILE: drivers/gpu/drm/xe/xe_execlist.c:362:
+
total: 0 errors, 1 warnings, 2 checks, 566 lines checked
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✓ CI.KUnit: success for drm/sched: Use struct for drm_sched_init() params (rev2)
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
` (2 preceding siblings ...)
2025-01-28 15:29 ` ✗ CI.checkpatch: warning " Patchwork
@ 2025-01-28 15:31 ` Patchwork
2025-01-28 15:47 ` ✓ CI.Build: " Patchwork
` (11 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2025-01-28 15:31 UTC (permalink / raw)
To: Philipp Stanner; +Cc: intel-xe
== Series Details ==
Series: drm/sched: Use struct for drm_sched_init() params (rev2)
URL : https://patchwork.freedesktop.org/series/143883/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[15:29:57] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[15:30:01] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
156 | u64 ioread64_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
163 | u64 ioread64_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
170 | u64 ioread64be_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
178 | u64 ioread64be_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
[15:30:27] Starting KUnit Kernel (1/1)...
[15:30:27] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[15:30:27] ================== guc_buf (11 subtests) ===================
[15:30:27] [PASSED] test_smallest
[15:30:27] [PASSED] test_largest
[15:30:27] [PASSED] test_granular
[15:30:27] [PASSED] test_unique
[15:30:27] [PASSED] test_overlap
[15:30:27] [PASSED] test_reusable
[15:30:27] [PASSED] test_too_big
[15:30:27] [PASSED] test_flush
[15:30:27] [PASSED] test_lookup
[15:30:27] [PASSED] test_data
[15:30:27] [PASSED] test_class
[15:30:27] ===================== [PASSED] guc_buf =====================
[15:30:27] =================== guc_dbm (7 subtests) ===================
[15:30:27] [PASSED] test_empty
[15:30:27] [PASSED] test_default
[15:30:27] ======================== test_size ========================
[15:30:27] [PASSED] 4
[15:30:27] [PASSED] 8
[15:30:27] [PASSED] 32
[15:30:27] [PASSED] 256
[15:30:27] ==================== [PASSED] test_size ====================
[15:30:27] ======================= test_reuse ========================
[15:30:27] [PASSED] 4
[15:30:27] [PASSED] 8
[15:30:27] [PASSED] 32
[15:30:27] [PASSED] 256
[15:30:27] =================== [PASSED] test_reuse ====================
[15:30:27] =================== test_range_overlap ====================
[15:30:27] [PASSED] 4
[15:30:27] [PASSED] 8
[15:30:27] [PASSED] 32
[15:30:27] [PASSED] 256
[15:30:27] =============== [PASSED] test_range_overlap ================
[15:30:27] =================== test_range_compact ====================
[15:30:27] [PASSED] 4
[15:30:27] [PASSED] 8
[15:30:27] [PASSED] 32
[15:30:27] [PASSED] 256
[15:30:27] =============== [PASSED] test_range_compact ================
[15:30:27] ==================== test_range_spare =====================
[15:30:27] [PASSED] 4
[15:30:27] [PASSED] 8
[15:30:27] [PASSED] 32
[15:30:27] [PASSED] 256
[15:30:27] ================ [PASSED] test_range_spare =================
[15:30:27] ===================== [PASSED] guc_dbm =====================
[15:30:27] =================== guc_idm (6 subtests) ===================
[15:30:27] [PASSED] bad_init
[15:30:27] [PASSED] no_init
[15:30:27] [PASSED] init_fini
[15:30:27] [PASSED] check_used
[15:30:27] [PASSED] check_quota
[15:30:27] [PASSED] check_all
[15:30:27] ===================== [PASSED] guc_idm =====================
[15:30:27] ================== no_relay (3 subtests) ===================
[15:30:27] [PASSED] xe_drops_guc2pf_if_not_ready
[15:30:27] [PASSED] xe_drops_guc2vf_if_not_ready
[15:30:27] [PASSED] xe_rejects_send_if_not_ready
[15:30:27] ==================== [PASSED] no_relay =====================
[15:30:27] ================== pf_relay (14 subtests) ==================
[15:30:27] [PASSED] pf_rejects_guc2pf_too_short
[15:30:27] [PASSED] pf_rejects_guc2pf_too_long
[15:30:27] [PASSED] pf_rejects_guc2pf_no_payload
[15:30:27] [PASSED] pf_fails_no_payload
[15:30:27] [PASSED] pf_fails_bad_origin
[15:30:27] [PASSED] pf_fails_bad_type
[15:30:27] [PASSED] pf_txn_reports_error
[15:30:27] [PASSED] pf_txn_sends_pf2guc
[15:30:27] [PASSED] pf_sends_pf2guc
[15:30:27] [SKIPPED] pf_loopback_nop
[15:30:27] [SKIPPED] pf_loopback_echo
[15:30:27] [SKIPPED] pf_loopback_fail
[15:30:27] [SKIPPED] pf_loopback_busy
[15:30:27] [SKIPPED] pf_loopback_retry
[15:30:27] ==================== [PASSED] pf_relay =====================
[15:30:27] ================== vf_relay (3 subtests) ===================
[15:30:27] [PASSED] vf_rejects_guc2vf_too_short
[15:30:27] [PASSED] vf_rejects_guc2vf_too_long
[15:30:27] [PASSED] vf_rejects_guc2vf_no_payload
[15:30:27] ==================== [PASSED] vf_relay =====================
[15:30:27] ================= pf_service (11 subtests) =================
[15:30:27] [PASSED] pf_negotiate_any
[15:30:27] [PASSED] pf_negotiate_base_match
[15:30:27] [PASSED] pf_negotiate_base_newer
[15:30:27] [PASSED] pf_negotiate_base_next
[15:30:27] [SKIPPED] pf_negotiate_base_older
[15:30:27] [PASSED] pf_negotiate_base_prev
[15:30:27] [PASSED] pf_negotiate_latest_match
[15:30:27] [PASSED] pf_negotiate_latest_newer
[15:30:27] [PASSED] pf_negotiate_latest_next
[15:30:27] [SKIPPED] pf_negotiate_latest_older
[15:30:27] [SKIPPED] pf_negotiate_latest_prev
[15:30:27] =================== [PASSED] pf_service ====================
[15:30:27] ===================== lmtt (1 subtest) =====================
[15:30:27] ======================== test_ops =========================
[15:30:27] [PASSED] 2-level
[15:30:27] [PASSED] multi-level
[15:30:27] ==================== [PASSED] test_ops =====================
[15:30:27] ====================== [PASSED] lmtt =======================
[15:30:27] =================== xe_mocs (2 subtests) ===================
[15:30:27] ================ xe_live_mocs_kernel_kunit ================
[15:30:27] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[15:30:27] ================ xe_live_mocs_reset_kunit =================
[15:30:27] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[15:30:27] ==================== [SKIPPED] xe_mocs =====================
[15:30:27] ================= xe_migrate (2 subtests) ==================
[15:30:27] ================= xe_migrate_sanity_kunit =================
[15:30:27] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[15:30:27] ================== xe_validate_ccs_kunit ==================
[15:30:27] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[15:30:27] =================== [SKIPPED] xe_migrate ===================
[15:30:27] ================== xe_dma_buf (1 subtest) ==================
[15:30:27] ==================== xe_dma_buf_kunit =====================
[15:30:27] ================ [SKIPPED] xe_dma_buf_kunit ================
[15:30:27] =================== [SKIPPED] xe_dma_buf ===================
[15:30:27] ================= xe_bo_shrink (1 subtest) =================
[15:30:27] =================== xe_bo_shrink_kunit ====================
[15:30:27] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[15:30:27] ================== [SKIPPED] xe_bo_shrink ==================
[15:30:27] ==================== xe_bo (2 subtests) ====================
[15:30:27] ================== xe_ccs_migrate_kunit ===================
[15:30:27] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
stty: 'standard input': Inappropriate ioctl for device
[15:30:27] ==================== xe_bo_evict_kunit ====================
[15:30:27] =============== [SKIPPED] xe_bo_evict_kunit ================
[15:30:27] ===================== [SKIPPED] xe_bo ======================
[15:30:27] ==================== args (11 subtests) ====================
[15:30:27] [PASSED] count_args_test
[15:30:27] [PASSED] call_args_example
[15:30:27] [PASSED] call_args_test
[15:30:27] [PASSED] drop_first_arg_example
[15:30:27] [PASSED] drop_first_arg_test
[15:30:27] [PASSED] first_arg_example
[15:30:27] [PASSED] first_arg_test
[15:30:27] [PASSED] last_arg_example
[15:30:27] [PASSED] last_arg_test
[15:30:27] [PASSED] pick_arg_example
[15:30:27] [PASSED] sep_comma_example
[15:30:27] ====================== [PASSED] args =======================
[15:30:27] =================== xe_pci (2 subtests) ====================
[15:30:27] [PASSED] xe_gmdid_graphics_ip
[15:30:27] [PASSED] xe_gmdid_media_ip
[15:30:27] ===================== [PASSED] xe_pci ======================
[15:30:27] =================== xe_rtp (2 subtests) ====================
[15:30:27] =============== xe_rtp_process_to_sr_tests ================
[15:30:27] [PASSED] coalesce-same-reg
[15:30:27] [PASSED] no-match-no-add
[15:30:27] [PASSED] match-or
[15:30:27] [PASSED] match-or-xfail
[15:30:27] [PASSED] no-match-no-add-multiple-rules
[15:30:27] [PASSED] two-regs-two-entries
[15:30:27] [PASSED] clr-one-set-other
[15:30:27] [PASSED] set-field
[15:30:27] [PASSED] conflict-duplicate
[15:30:27] [PASSED] conflict-not-disjoint
[15:30:27] [PASSED] conflict-reg-type
[15:30:27] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[15:30:27] ================== xe_rtp_process_tests ===================
[15:30:27] [PASSED] active1
[15:30:27] [PASSED] active2
[15:30:27] [PASSED] active-inactive
[15:30:27] [PASSED] inactive-active
[15:30:27] [PASSED] inactive-1st_or_active-inactive
[15:30:27] [PASSED] inactive-2nd_or_active-inactive
[15:30:27] [PASSED] inactive-last_or_active-inactive
[15:30:27] [PASSED] inactive-no_or_active-inactive
[15:30:27] ============== [PASSED] xe_rtp_process_tests ===============
[15:30:27] ===================== [PASSED] xe_rtp ======================
[15:30:27] ==================== xe_wa (1 subtest) =====================
[15:30:27] ======================== xe_wa_gt =========================
[15:30:27] [PASSED] TIGERLAKE (B0)
[15:30:27] [PASSED] DG1 (A0)
[15:30:27] [PASSED] DG1 (B0)
[15:30:27] [PASSED] ALDERLAKE_S (A0)
[15:30:27] [PASSED] ALDERLAKE_S (B0)
[15:30:27] [PASSED] ALDERLAKE_S (C0)
[15:30:27] [PASSED] ALDERLAKE_S (D0)
[15:30:27] [PASSED] ALDERLAKE_P (A0)
[15:30:27] [PASSED] ALDERLAKE_P (B0)
[15:30:27] [PASSED] ALDERLAKE_P (C0)
[15:30:27] [PASSED] ALDERLAKE_S_RPLS (D0)
[15:30:27] [PASSED] ALDERLAKE_P_RPLU (E0)
[15:30:27] [PASSED] DG2_G10 (C0)
[15:30:27] [PASSED] DG2_G11 (B1)
[15:30:27] [PASSED] DG2_G12 (A1)
[15:30:27] [PASSED] METEORLAKE (g:A0, m:A0)
[15:30:27] [PASSED] METEORLAKE (g:A0, m:A0)
[15:30:27] [PASSED] METEORLAKE (g:A0, m:A0)
[15:30:27] [PASSED] LUNARLAKE (g:A0, m:A0)
[15:30:27] [PASSED] LUNARLAKE (g:B0, m:A0)
[15:30:27] [PASSED] BATTLEMAGE (g:A0, m:A1)
[15:30:27] ==================== [PASSED] xe_wa_gt =====================
[15:30:27] ====================== [PASSED] xe_wa ======================
[15:30:27] ============================================================
[15:30:27] Testing complete. Ran 133 tests: passed: 117, skipped: 16
[15:30:27] Elapsed time: 30.206s total, 4.173s configuring, 25.716s building, 0.260s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[15:30:27] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[15:30:29] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
156 | u64 ioread64_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
163 | u64 ioread64_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
170 | u64 ioread64be_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
178 | u64 ioread64be_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
[15:30:50] Starting KUnit Kernel (1/1)...
[15:30:50] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[15:30:50] =========== drm_validate_clone_mode (2 subtests) ===========
[15:30:50] ============== drm_test_check_in_clone_mode ===============
[15:30:50] [PASSED] in_clone_mode
[15:30:50] [PASSED] not_in_clone_mode
[15:30:50] ========== [PASSED] drm_test_check_in_clone_mode ===========
[15:30:50] =============== drm_test_check_valid_clones ===============
[15:30:50] [PASSED] not_in_clone_mode
[15:30:50] [PASSED] valid_clone
[15:30:50] [PASSED] invalid_clone
[15:30:50] =========== [PASSED] drm_test_check_valid_clones ===========
[15:30:50] ============= [PASSED] drm_validate_clone_mode =============
[15:30:50] ============= drm_validate_modeset (1 subtest) =============
[15:30:50] [PASSED] drm_test_check_connector_changed_modeset
[15:30:50] ============== [PASSED] drm_validate_modeset ===============
[15:30:50] ================== drm_buddy (7 subtests) ==================
[15:30:50] [PASSED] drm_test_buddy_alloc_limit
[15:30:50] [PASSED] drm_test_buddy_alloc_optimistic
[15:30:50] [PASSED] drm_test_buddy_alloc_pessimistic
[15:30:50] [PASSED] drm_test_buddy_alloc_pathological
[15:30:50] [PASSED] drm_test_buddy_alloc_contiguous
[15:30:50] [PASSED] drm_test_buddy_alloc_clear
[15:30:50] [PASSED] drm_test_buddy_alloc_range_bias
[15:30:50] ==================== [PASSED] drm_buddy ====================
[15:30:50] ============= drm_cmdline_parser (40 subtests) =============
[15:30:50] [PASSED] drm_test_cmdline_force_d_only
[15:30:50] [PASSED] drm_test_cmdline_force_D_only_dvi
[15:30:50] [PASSED] drm_test_cmdline_force_D_only_hdmi
[15:30:50] [PASSED] drm_test_cmdline_force_D_only_not_digital
[15:30:50] [PASSED] drm_test_cmdline_force_e_only
[15:30:50] [PASSED] drm_test_cmdline_res
[15:30:50] [PASSED] drm_test_cmdline_res_vesa
[15:30:50] [PASSED] drm_test_cmdline_res_vesa_rblank
[15:30:50] [PASSED] drm_test_cmdline_res_rblank
[15:30:50] [PASSED] drm_test_cmdline_res_bpp
[15:30:50] [PASSED] drm_test_cmdline_res_refresh
[15:30:50] [PASSED] drm_test_cmdline_res_bpp_refresh
[15:30:50] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[15:30:50] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[15:30:50] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[15:30:50] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[15:30:50] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[15:30:50] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[15:30:50] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[15:30:50] [PASSED] drm_test_cmdline_res_margins_force_on
[15:30:50] [PASSED] drm_test_cmdline_res_vesa_margins
[15:30:50] [PASSED] drm_test_cmdline_name
[15:30:50] [PASSED] drm_test_cmdline_name_bpp
[15:30:50] [PASSED] drm_test_cmdline_name_option
[15:30:50] [PASSED] drm_test_cmdline_name_bpp_option
[15:30:50] [PASSED] drm_test_cmdline_rotate_0
[15:30:50] [PASSED] drm_test_cmdline_rotate_90
[15:30:50] [PASSED] drm_test_cmdline_rotate_180
[15:30:50] [PASSED] drm_test_cmdline_rotate_270
[15:30:50] [PASSED] drm_test_cmdline_hmirror
[15:30:50] [PASSED] drm_test_cmdline_vmirror
[15:30:50] [PASSED] drm_test_cmdline_margin_options
[15:30:50] [PASSED] drm_test_cmdline_multiple_options
[15:30:50] [PASSED] drm_test_cmdline_bpp_extra_and_option
[15:30:50] [PASSED] drm_test_cmdline_extra_and_option
[15:30:50] [PASSED] drm_test_cmdline_freestanding_options
[15:30:50] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[15:30:50] [PASSED] drm_test_cmdline_panel_orientation
[15:30:50] ================ drm_test_cmdline_invalid =================
[15:30:50] [PASSED] margin_only
[15:30:50] [PASSED] interlace_only
[15:30:50] [PASSED] res_missing_x
[15:30:50] [PASSED] res_missing_y
[15:30:50] [PASSED] res_bad_y
[15:30:50] [PASSED] res_missing_y_bpp
[15:30:50] [PASSED] res_bad_bpp
[15:30:50] [PASSED] res_bad_refresh
[15:30:50] [PASSED] res_bpp_refresh_force_on_off
[15:30:50] [PASSED] res_invalid_mode
[15:30:50] [PASSED] res_bpp_wrong_place_mode
[15:30:50] [PASSED] name_bpp_refresh
[15:30:50] [PASSED] name_refresh
[15:30:50] [PASSED] name_refresh_wrong_mode
[15:30:50] [PASSED] name_refresh_invalid_mode
[15:30:50] [PASSED] rotate_multiple
[15:30:50] [PASSED] rotate_invalid_val
[15:30:50] [PASSED] rotate_truncated
[15:30:50] [PASSED] invalid_option
[15:30:50] [PASSED] invalid_tv_option
[15:30:50] [PASSED] truncated_tv_option
[15:30:50] ============ [PASSED] drm_test_cmdline_invalid =============
[15:30:50] =============== drm_test_cmdline_tv_options ===============
[15:30:50] [PASSED] NTSC
[15:30:50] [PASSED] NTSC_443
[15:30:50] [PASSED] NTSC_J
[15:30:50] [PASSED] PAL
[15:30:50] [PASSED] PAL_M
[15:30:50] [PASSED] PAL_N
[15:30:50] [PASSED] SECAM
[15:30:50] [PASSED] MONO_525
[15:30:50] [PASSED] MONO_625
[15:30:50] =========== [PASSED] drm_test_cmdline_tv_options ===========
[15:30:50] =============== [PASSED] drm_cmdline_parser ================
[15:30:50] ========== drmm_connector_hdmi_init (20 subtests) ==========
[15:30:50] [PASSED] drm_test_connector_hdmi_init_valid
[15:30:50] [PASSED] drm_test_connector_hdmi_init_bpc_8
[15:30:50] [PASSED] drm_test_connector_hdmi_init_bpc_10
[15:30:50] [PASSED] drm_test_connector_hdmi_init_bpc_12
[15:30:50] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[15:30:50] [PASSED] drm_test_connector_hdmi_init_bpc_null
[15:30:50] [PASSED] drm_test_connector_hdmi_init_formats_empty
[15:30:50] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[15:30:50] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[15:30:50] [PASSED] supported_formats=0x9 yuv420_allowed=1
[15:30:50] [PASSED] supported_formats=0x9 yuv420_allowed=0
[15:30:50] [PASSED] supported_formats=0x3 yuv420_allowed=1
[15:30:50] [PASSED] supported_formats=0x3 yuv420_allowed=0
[15:30:50] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[15:30:50] [PASSED] drm_test_connector_hdmi_init_null_ddc
[15:30:50] [PASSED] drm_test_connector_hdmi_init_null_product
[15:30:50] [PASSED] drm_test_connector_hdmi_init_null_vendor
[15:30:50] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[15:30:50] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[15:30:50] [PASSED] drm_test_connector_hdmi_init_product_valid
[15:30:50] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[15:30:50] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[15:30:50] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[15:30:50] ========= drm_test_connector_hdmi_init_type_valid =========
[15:30:50] [PASSED] HDMI-A
[15:30:50] [PASSED] HDMI-B
[15:30:50] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[15:30:50] ======== drm_test_connector_hdmi_init_type_invalid ========
[15:30:50] [PASSED] Unknown
[15:30:50] [PASSED] VGA
[15:30:50] [PASSED] DVI-I
[15:30:50] [PASSED] DVI-D
[15:30:50] [PASSED] DVI-A
[15:30:50] [PASSED] Composite
[15:30:50] [PASSED] SVIDEO
[15:30:50] [PASSED] LVDS
[15:30:50] [PASSED] Component
[15:30:50] [PASSED] DIN
[15:30:50] [PASSED] DP
[15:30:50] [PASSED] TV
[15:30:50] [PASSED] eDP
[15:30:50] [PASSED] Virtual
[15:30:50] [PASSED] DSI
[15:30:50] [PASSED] DPI
[15:30:50] [PASSED] Writeback
[15:30:50] [PASSED] SPI
[15:30:50] [PASSED] USB
[15:30:50] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[15:30:50] ============ [PASSED] drmm_connector_hdmi_init =============
[15:30:50] ============= drmm_connector_init (3 subtests) =============
[15:30:50] [PASSED] drm_test_drmm_connector_init
[15:30:50] [PASSED] drm_test_drmm_connector_init_null_ddc
[15:30:50] ========= drm_test_drmm_connector_init_type_valid =========
[15:30:50] [PASSED] Unknown
[15:30:50] [PASSED] VGA
[15:30:50] [PASSED] DVI-I
[15:30:50] [PASSED] DVI-D
[15:30:50] [PASSED] DVI-A
[15:30:50] [PASSED] Composite
[15:30:50] [PASSED] SVIDEO
[15:30:50] [PASSED] LVDS
[15:30:50] [PASSED] Component
[15:30:50] [PASSED] DIN
[15:30:50] [PASSED] DP
[15:30:50] [PASSED] HDMI-A
[15:30:50] [PASSED] HDMI-B
[15:30:50] [PASSED] TV
[15:30:50] [PASSED] eDP
[15:30:50] [PASSED] Virtual
[15:30:50] [PASSED] DSI
[15:30:50] [PASSED] DPI
[15:30:50] [PASSED] Writeback
[15:30:50] [PASSED] SPI
[15:30:50] [PASSED] USB
[15:30:50] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[15:30:50] =============== [PASSED] drmm_connector_init ===============
[15:30:50] ========= drm_connector_dynamic_init (6 subtests) ==========
[15:30:50] [PASSED] drm_test_drm_connector_dynamic_init
[15:30:50] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[15:30:50] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[15:30:50] [PASSED] drm_test_drm_connector_dynamic_init_properties
[15:30:50] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[15:30:50] [PASSED] Unknown
[15:30:50] [PASSED] VGA
[15:30:50] [PASSED] DVI-I
[15:30:50] [PASSED] DVI-D
[15:30:50] [PASSED] DVI-A
[15:30:50] [PASSED] Composite
[15:30:50] [PASSED] SVIDEO
[15:30:50] [PASSED] LVDS
[15:30:50] [PASSED] Component
[15:30:50] [PASSED] DIN
[15:30:50] [PASSED] DP
[15:30:50] [PASSED] HDMI-A
[15:30:50] [PASSED] HDMI-B
[15:30:50] [PASSED] TV
[15:30:50] [PASSED] eDP
[15:30:50] [PASSED] Virtual
[15:30:50] [PASSED] DSI
[15:30:50] [PASSED] DPI
[15:30:50] [PASSED] Writeback
[15:30:50] [PASSED] SPI
[15:30:50] [PASSED] USB
[15:30:50] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[15:30:50] ======== drm_test_drm_connector_dynamic_init_name =========
[15:30:50] [PASSED] Unknown
[15:30:50] [PASSED] VGA
[15:30:50] [PASSED] DVI-I
[15:30:50] [PASSED] DVI-D
[15:30:50] [PASSED] DVI-A
[15:30:50] [PASSED] Composite
[15:30:50] [PASSED] SVIDEO
[15:30:50] [PASSED] LVDS
[15:30:50] [PASSED] Component
[15:30:50] [PASSED] DIN
[15:30:50] [PASSED] DP
[15:30:50] [PASSED] HDMI-A
[15:30:50] [PASSED] HDMI-B
[15:30:50] [PASSED] TV
[15:30:50] [PASSED] eDP
[15:30:50] [PASSED] Virtual
[15:30:50] [PASSED] DSI
[15:30:50] [PASSED] DPI
[15:30:50] [PASSED] Writeback
[15:30:50] [PASSED] SPI
[15:30:50] [PASSED] USB
[15:30:50] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[15:30:50] =========== [PASSED] drm_connector_dynamic_init ============
[15:30:50] ==== drm_connector_dynamic_register_early (4 subtests) =====
[15:30:50] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[15:30:50] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[15:30:50] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[15:30:50] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[15:30:50] ====== [PASSED] drm_connector_dynamic_register_early =======
[15:30:50] ======= drm_connector_dynamic_register (7 subtests) ========
[15:30:50] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[15:30:50] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[15:30:50] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[15:30:50] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[15:30:50] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[15:30:50] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[15:30:50] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[15:30:50] ========= [PASSED] drm_connector_dynamic_register ==========
[15:30:50] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[15:30:50] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[15:30:50] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[15:30:50] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[15:30:50] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[15:30:50] ========== drm_test_get_tv_mode_from_name_valid ===========
[15:30:50] [PASSED] NTSC
[15:30:50] [PASSED] NTSC-443
[15:30:50] [PASSED] NTSC-J
[15:30:50] [PASSED] PAL
[15:30:50] [PASSED] PAL-M
[15:30:50] [PASSED] PAL-N
[15:30:50] [PASSED] SECAM
[15:30:50] [PASSED] Mono
[15:30:50] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[15:30:50] [PASSED] drm_test_get_tv_mode_from_name_truncated
[15:30:50] ============ [PASSED] drm_get_tv_mode_from_name ============
[15:30:50] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[15:30:50] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[15:30:50] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[15:30:50] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[15:30:50] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[15:30:50] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[15:30:50] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[15:30:50] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[15:30:50] [PASSED] VIC 96
[15:30:50] [PASSED] VIC 97
[15:30:50] [PASSED] VIC 101
[15:30:50] [PASSED] VIC 102
[15:30:50] [PASSED] VIC 106
[15:30:50] [PASSED] VIC 107
[15:30:50] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[15:30:50] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[15:30:50] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[15:30:50] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[15:30:50] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[15:30:50] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[15:30:50] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[15:30:50] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[15:30:50] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[15:30:50] [PASSED] Automatic
[15:30:50] [PASSED] Full
[15:30:50] [PASSED] Limited 16:235
[15:30:50] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[15:30:50] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[15:30:50] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[15:30:50] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[15:30:50] === drm_test_drm_hdmi_connector_get_output_format_name ====
[15:30:50] [PASSED] RGB
[15:30:50] [PASSED] YUV 4:2:0
[15:30:50] [PASSED] YUV 4:2:2
[15:30:50] [PASSED] YUV 4:4:4
[15:30:50] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[15:30:50] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[15:30:50] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[15:30:50] ============= drm_damage_helper (21 subtests) ==============
[15:30:50] [PASSED] drm_test_damage_iter_no_damage
[15:30:50] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[15:30:50] [PASSED] drm_test_damage_iter_no_damage_src_moved
[15:30:50] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[15:30:50] [PASSED] drm_test_damage_iter_no_damage_not_visible
[15:30:50] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[15:30:50] [PASSED] drm_test_damage_iter_no_damage_no_fb
[15:30:50] [PASSED] drm_test_damage_iter_simple_damage
[15:30:50] [PASSED] drm_test_damage_iter_single_damage
[15:30:50] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[15:30:50] [PASSED] drm_test_damage_iter_single_damage_outside_src
[15:30:50] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[15:30:50] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[15:30:50] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[15:30:50] [PASSED] drm_test_damage_iter_single_damage_src_moved
[15:30:50] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[15:30:50] [PASSED] drm_test_damage_iter_damage
[15:30:50] [PASSED] drm_test_damage_iter_damage_one_intersect
[15:30:50] [PASSED] drm_test_damage_iter_damage_one_outside
[15:30:50] [PASSED] drm_test_damage_iter_damage_src_moved
[15:30:50] [PASSED] drm_test_damage_iter_damage_not_visible
[15:30:50] ================ [PASSED] drm_damage_helper ================
[15:30:50] ============== drm_dp_mst_helper (3 subtests) ==============
[15:30:50] ============== drm_test_dp_mst_calc_pbn_mode ==============
[15:30:50] [PASSED] Clock 154000 BPP 30 DSC disabled
[15:30:50] [PASSED] Clock 234000 BPP 30 DSC disabled
[15:30:50] [PASSED] Clock 297000 BPP 24 DSC disabled
[15:30:50] [PASSED] Clock 332880 BPP 24 DSC enabled
[15:30:50] [PASSED] Clock 324540 BPP 24 DSC enabled
[15:30:50] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[15:30:50] ============== drm_test_dp_mst_calc_pbn_div ===============
[15:30:50] [PASSED] Link rate 2000000 lane count 4
[15:30:50] [PASSED] Link rate 2000000 lane count 2
[15:30:50] [PASSED] Link rate 2000000 lane count 1
[15:30:50] [PASSED] Link rate 1350000 lane count 4
[15:30:50] [PASSED] Link rate 1350000 lane count 2
[15:30:50] [PASSED] Link rate 1350000 lane count 1
[15:30:50] [PASSED] Link rate 1000000 lane count 4
[15:30:50] [PASSED] Link rate 1000000 lane count 2
[15:30:50] [PASSED] Link rate 1000000 lane count 1
[15:30:50] [PASSED] Link rate 810000 lane count 4
[15:30:50] [PASSED] Link rate 810000 lane count 2
[15:30:50] [PASSED] Link rate 810000 lane count 1
[15:30:50] [PASSED] Link rate 540000 lane count 4
[15:30:50] [PASSED] Link rate 540000 lane count 2
[15:30:50] [PASSED] Link rate 540000 lane count 1
[15:30:50] [PASSED] Link rate 270000 lane count 4
[15:30:50] [PASSED] Link rate 270000 lane count 2
[15:30:50] [PASSED] Link rate 270000 lane count 1
[15:30:50] [PASSED] Link rate 162000 lane count 4
[15:30:50] [PASSED] Link rate 162000 lane count 2
[15:30:50] [PASSED] Link rate 162000 lane count 1
[15:30:50] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[15:30:50] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[15:30:50] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[15:30:50] [PASSED] DP_POWER_UP_PHY with port number
[15:30:50] [PASSED] DP_POWER_DOWN_PHY with port number
[15:30:50] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[15:30:50] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[15:30:50] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[15:30:50] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[15:30:50] [PASSED] DP_QUERY_PAYLOAD with port number
[15:30:50] [PASSED] DP_QUERY_PAYLOAD with VCPI
[15:30:50] [PASSED] DP_REMOTE_DPCD_READ with port number
[15:30:50] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[15:30:50] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[15:30:50] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[15:30:50] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[15:30:50] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[15:30:50] [PASSED] DP_REMOTE_I2C_READ with port number
[15:30:50] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[15:30:50] [PASSED] DP_REMOTE_I2C_READ with transactions array
[15:30:50] [PASSED] DP_REMOTE_I2C_WRITE with port number
[15:30:50] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[15:30:50] [PASSED] DP_REMOTE_I2C_WRITE with data array
[15:30:50] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[15:30:50] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[15:30:50] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[15:30:50] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[15:30:50] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[15:30:50] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[15:30:50] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[15:30:50] ================ [PASSED] drm_dp_mst_helper ================
[15:30:50] ================== drm_exec (7 subtests) ===================
[15:30:50] [PASSED] sanitycheck
[15:30:50] [PASSED] test_lock
[15:30:50] [PASSED] test_lock_unlock
[15:30:50] [PASSED] test_duplicates
[15:30:50] [PASSED] test_prepare
[15:30:50] [PASSED] test_prepare_array
[15:30:50] [PASSED] test_multiple_loops
[15:30:50] ==================== [PASSED] drm_exec =====================
[15:30:50] =========== drm_format_helper_test (17 subtests) ===========
[15:30:50] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[15:30:50] [PASSED] single_pixel_source_buffer
[15:30:50] [PASSED] single_pixel_clip_rectangle
[15:30:50] [PASSED] well_known_colors
[15:30:50] [PASSED] destination_pitch
[15:30:50] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[15:30:50] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[15:30:50] [PASSED] single_pixel_source_buffer
[15:30:50] [PASSED] single_pixel_clip_rectangle
[15:30:50] [PASSED] well_known_colors
[15:30:50] [PASSED] destination_pitch
[15:30:50] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[15:30:50] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[15:30:50] [PASSED] single_pixel_source_buffer
[15:30:50] [PASSED] single_pixel_clip_rectangle
[15:30:50] [PASSED] well_known_colors
[15:30:50] [PASSED] destination_pitch
[15:30:50] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[15:30:50] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[15:30:50] [PASSED] single_pixel_source_buffer
[15:30:50] [PASSED] single_pixel_clip_rectangle
[15:30:50] [PASSED] well_known_colors
[15:30:50] [PASSED] destination_pitch
[15:30:50] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[15:30:50] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[15:30:50] [PASSED] single_pixel_source_buffer
[15:30:50] [PASSED] single_pixel_clip_rectangle
[15:30:50] [PASSED] well_known_colors
[15:30:50] [PASSED] destination_pitch
[15:30:50] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[15:30:50] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[15:30:50] [PASSED] single_pixel_source_buffer
[15:30:50] [PASSED] single_pixel_clip_rectangle
[15:30:50] [PASSED] well_known_colors
[15:30:50] [PASSED] destination_pitch
[15:30:50] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[15:30:50] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[15:30:50] [PASSED] single_pixel_source_buffer
[15:30:50] [PASSED] single_pixel_clip_rectangle
[15:30:50] [PASSED] well_known_colors
[15:30:50] [PASSED] destination_pitch
[15:30:50] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[15:30:50] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[15:30:50] [PASSED] single_pixel_source_buffer
[15:30:50] [PASSED] single_pixel_clip_rectangle
[15:30:50] [PASSED] well_known_colors
[15:30:50] [PASSED] destination_pitch
[15:30:50] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[15:30:50] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[15:30:50] [PASSED] single_pixel_source_buffer
[15:30:50] [PASSED] single_pixel_clip_rectangle
[15:30:50] [PASSED] well_known_colors
[15:30:50] [PASSED] destination_pitch
[15:30:50] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[15:30:50] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[15:30:50] [PASSED] single_pixel_source_buffer
[15:30:50] [PASSED] single_pixel_clip_rectangle
[15:30:50] [PASSED] well_known_colors
[15:30:50] [PASSED] destination_pitch
[15:30:50] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[15:30:50] ============== drm_test_fb_xrgb8888_to_mono ===============
[15:30:50] [PASSED] single_pixel_source_buffer
[15:30:50] [PASSED] single_pixel_clip_rectangle
[15:30:50] [PASSED] well_known_colors
[15:30:50] [PASSED] destination_pitch
[15:30:50] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[15:30:50] ==================== drm_test_fb_swab =====================
[15:30:50] [PASSED] single_pixel_source_buffer
[15:30:50] [PASSED] single_pixel_clip_rectangle
[15:30:50] [PASSED] well_known_colors
[15:30:50] [PASSED] destination_pitch
[15:30:50] ================ [PASSED] drm_test_fb_swab =================
[15:30:50] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[15:30:50] [PASSED] single_pixel_source_buffer
[15:30:50] [PASSED] single_pixel_clip_rectangle
[15:30:50] [PASSED] well_known_colors
[15:30:50] [PASSED] destination_pitch
[15:30:50] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[15:30:50] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[15:30:50] [PASSED] single_pixel_source_buffer
[15:30:50] [PASSED] single_pixel_clip_rectangle
[15:30:50] [PASSED] well_known_colors
[15:30:50] [PASSED] destination_pitch
[15:30:50] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[15:30:50] ================= drm_test_fb_clip_offset =================
[15:30:50] [PASSED] pass through
[15:30:50] [PASSED] horizontal offset
[15:30:50] [PASSED] vertical offset
[15:30:50] [PASSED] horizontal and vertical offset
[15:30:50] [PASSED] horizontal offset (custom pitch)
[15:30:50] [PASSED] vertical offset (custom pitch)
[15:30:50] [PASSED] horizontal and vertical offset (custom pitch)
[15:30:50] ============= [PASSED] drm_test_fb_clip_offset =============
[15:30:50] ============== drm_test_fb_build_fourcc_list ==============
[15:30:50] [PASSED] no native formats
[15:30:50] [PASSED] XRGB8888 as native format
[15:30:50] [PASSED] remove duplicates
[15:30:50] [PASSED] convert alpha formats
[15:30:50] [PASSED] random formats
[15:30:50] ========== [PASSED] drm_test_fb_build_fourcc_list ==========
[15:30:50] =================== drm_test_fb_memcpy ====================
[15:30:50] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[15:30:50] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[15:30:50] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[15:30:50] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[15:30:50] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[15:30:50] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[15:30:50] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[15:30:50] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[15:30:50] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[15:30:50] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[15:30:50] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[15:30:50] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[15:30:50] =============== [PASSED] drm_test_fb_memcpy ================
[15:30:50] ============= [PASSED] drm_format_helper_test ==============
[15:30:50] ================= drm_format (18 subtests) =================
[15:30:50] [PASSED] drm_test_format_block_width_invalid
[15:30:50] [PASSED] drm_test_format_block_width_one_plane
[15:30:50] [PASSED] drm_test_format_block_width_two_plane
[15:30:50] [PASSED] drm_test_format_block_width_three_plane
[15:30:50] [PASSED] drm_test_format_block_width_tiled
[15:30:50] [PASSED] drm_test_format_block_height_invalid
[15:30:50] [PASSED] drm_test_format_block_height_one_plane
[15:30:50] [PASSED] drm_test_format_block_height_two_plane
[15:30:50] [PASSED] drm_test_format_block_height_three_plane
[15:30:50] [PASSED] drm_test_format_block_height_tiled
[15:30:50] [PASSED] drm_test_format_min_pitch_invalid
[15:30:50] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[15:30:50] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[15:30:50] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[15:30:50] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[15:30:50] [PASSED] drm_test_format_min_pitch_two_plane
[15:30:50] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[15:30:50] [PASSED] drm_test_format_min_pitch_tiled
[15:30:50] =================== [PASSED] drm_format ====================
[15:30:50] ============== drm_framebuffer (10 subtests) ===============
[15:30:50] ========== drm_test_framebuffer_check_src_coords ==========
[15:30:50] [PASSED] Success: source fits into fb
[15:30:50] [PASSED] Fail: overflowing fb with x-axis coordinate
[15:30:50] [PASSED] Fail: overflowing fb with y-axis coordinate
[15:30:50] [PASSED] Fail: overflowing fb with source width
[15:30:50] [PASSED] Fail: overflowing fb with source height
[15:30:50] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[15:30:50] [PASSED] drm_test_framebuffer_cleanup
[15:30:50] =============== drm_test_framebuffer_create ===============
[15:30:50] [PASSED] ABGR8888 normal sizes
[15:30:50] [PASSED] ABGR8888 max sizes
[15:30:50] [PASSED] ABGR8888 pitch greater than min required
[15:30:50] [PASSED] ABGR8888 pitch less than min required
[15:30:50] [PASSED] ABGR8888 Invalid width
[15:30:50] [PASSED] ABGR8888 Invalid buffer handle
[15:30:50] [PASSED] No pixel format
[15:30:50] [PASSED] ABGR8888 Width 0
[15:30:50] [PASSED] ABGR8888 Height 0
[15:30:50] [PASSED] ABGR8888 Out of bound height * pitch combination
[15:30:50] [PASSED] ABGR8888 Large buffer offset
[15:30:50] [PASSED] ABGR8888 Buffer offset for inexistent plane
[15:30:50] [PASSED] ABGR8888 Invalid flag
[15:30:50] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[15:30:50] [PASSED] ABGR8888 Valid buffer modifier
[15:30:50] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[15:30:50] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[15:30:50] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[15:30:50] [PASSED] NV12 Normal sizes
[15:30:50] [PASSED] NV12 Max sizes
[15:30:50] [PASSED] NV12 Invalid pitch
[15:30:50] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[15:30:50] [PASSED] NV12 different modifier per-plane
[15:30:50] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[15:30:50] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[15:30:50] [PASSED] NV12 Modifier for inexistent plane
[15:30:50] [PASSED] NV12 Handle for inexistent plane
[15:30:50] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[15:30:50] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[15:30:50] [PASSED] YVU420 Normal sizes
[15:30:50] [PASSED] YVU420 Max sizes
[15:30:50] [PASSED] YVU420 Invalid pitch
[15:30:50] [PASSED] YVU420 Different pitches
[15:30:50] [PASSED] YVU420 Different buffer offsets/pitches
[15:30:50] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[15:30:50] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[15:30:50] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[15:30:50] [PASSED] YVU420 Valid modifier
[15:30:50] [PASSED] YVU420 Different modifiers per plane
[15:30:50] [PASSED] YVU420 Modifier for inexistent plane
[15:30:50] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[15:30:50] [PASSED] X0L2 Normal sizes
[15:30:50] [PASSED] X0L2 Max sizes
[15:30:50] [PASSED] X0L2 Invalid pitch
[15:30:50] [PASSED] X0L2 Pitch greater than minimum required
[15:30:50] [PASSED] X0L2 Handle for inexistent plane
[15:30:50] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[15:30:50] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[15:30:50] [PASSED] X0L2 Valid modifier
[15:30:50] [PASSED] X0L2 Modifier for inexistent plane
[15:30:50] =========== [PASSED] drm_test_framebuffer_create ===========
[15:30:50] [PASSED] drm_test_framebuffer_free
[15:30:50] [PASSED] drm_test_framebuffer_init
[15:30:50] [PASSED] drm_test_framebuffer_init_bad_format
[15:30:50] [PASSED] drm_test_framebuffer_init_dev_mismatch
[15:30:50] [PASSED] drm_test_framebuffer_lookup
[15:30:50] [PASSED] drm_test_framebuffer_lookup_inexistent
[15:30:50] [PASSED] drm_test_framebuffer_modifiers_not_supported
[15:30:50] ================= [PASSED] drm_framebuffer =================
[15:30:50] ================ drm_gem_shmem (8 subtests) ================
[15:30:50] [PASSED] drm_gem_shmem_test_obj_create
[15:30:50] [PASSED] drm_gem_shmem_test_obj_create_private
[15:30:50] [PASSED] drm_gem_shmem_test_pin_pages
[15:30:50] [PASSED] drm_gem_shmem_test_vmap
[15:30:50] [PASSED] drm_gem_shmem_test_get_pages_sgt
[15:30:50] [PASSED] drm_gem_shmem_test_get_sg_table
[15:30:50] [PASSED] drm_gem_shmem_test_madvise
[15:30:50] [PASSED] drm_gem_shmem_test_purge
[15:30:50] ================== [PASSED] drm_gem_shmem ==================
[15:30:50] === drm_atomic_helper_connector_hdmi_check (23 subtests) ===
[15:30:50] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[15:30:50] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[15:30:50] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[15:30:50] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[15:30:50] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[15:30:50] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[15:30:50] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[15:30:50] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[15:30:50] [PASSED] drm_test_check_disable_connector
[15:30:50] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[15:30:50] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback
[15:30:50] [PASSED] drm_test_check_max_tmds_rate_format_fallback
[15:30:50] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[15:30:50] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[15:30:50] [PASSED] drm_test_check_output_bpc_dvi
[15:30:50] [PASSED] drm_test_check_output_bpc_format_vic_1
[15:30:50] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[15:30:50] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[15:30:50] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[15:30:50] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[15:30:50] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[15:30:50] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[15:30:50] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[15:30:50] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[15:30:50] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[15:30:50] [PASSED] drm_test_check_broadcast_rgb_value
[15:30:50] [PASSED] drm_test_check_bpc_8_value
[15:30:50] [PASSED] drm_test_check_bpc_10_value
[15:30:50] [PASSED] drm_test_check_bpc_12_value
[15:30:50] [PASSED] drm_test_check_format_value
[15:30:50] [PASSED] drm_test_check_tmds_char_value
[15:30:50] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[15:30:50] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[15:30:50] [PASSED] drm_test_check_mode_valid
[15:30:50] [PASSED] drm_test_check_mode_valid_reject
[15:30:50] [PASSED] drm_test_check_mode_valid_reject_rate
[15:30:50] [PASSED] drm_test_check_mode_valid_reject_max_clock
[15:30:50] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[15:30:50] ================= drm_managed (2 subtests) =================
[15:30:50] [PASSED] drm_test_managed_release_action
[15:30:50] [PASSED] drm_test_managed_run_action
[15:30:50] =================== [PASSED] drm_managed ===================
[15:30:50] =================== drm_mm (6 subtests) ====================
[15:30:50] [PASSED] drm_test_mm_init
[15:30:50] [PASSED] drm_test_mm_debug
[15:30:50] [PASSED] drm_test_mm_align32
[15:30:50] [PASSED] drm_test_mm_align64
[15:30:50] [PASSED] drm_test_mm_lowest
[15:30:50] [PASSED] drm_test_mm_highest
[15:30:50] ===================== [PASSED] drm_mm ======================
[15:30:50] ============= drm_modes_analog_tv (5 subtests) =============
[15:30:50] [PASSED] drm_test_modes_analog_tv_mono_576i
[15:30:50] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[15:30:50] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[15:30:50] [PASSED] drm_test_modes_analog_tv_pal_576i
[15:30:50] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[15:30:50] =============== [PASSED] drm_modes_analog_tv ===============
[15:30:50] ============== drm_plane_helper (2 subtests) ===============
[15:30:50] =============== drm_test_check_plane_state ================
[15:30:50] [PASSED] clipping_simple
[15:30:50] [PASSED] clipping_rotate_reflect
[15:30:50] [PASSED] positioning_simple
[15:30:50] [PASSED] upscaling
[15:30:50] [PASSED] downscaling
[15:30:50] [PASSED] rounding1
[15:30:50] [PASSED] rounding2
[15:30:50] [PASSED] rounding3
[15:30:50] [PASSED] rounding4
[15:30:50] =========== [PASSED] drm_test_check_plane_state ============
[15:30:50] =========== drm_test_check_invalid_plane_state ============
[15:30:50] [PASSED] positioning_invalid
[15:30:50] [PASSED] upscaling_invalid
[15:30:50] [PASSED] downscaling_invalid
[15:30:50] ======= [PASSED] drm_test_check_invalid_plane_state ========
[15:30:50] ================ [PASSED] drm_plane_helper =================
[15:30:50] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[15:30:50] ====== drm_test_connector_helper_tv_get_modes_check =======
[15:30:50] [PASSED] None
[15:30:50] [PASSED] PAL
[15:30:50] [PASSED] NTSC
[15:30:50] [PASSED] Both, NTSC Default
[15:30:50] [PASSED] Both, PAL Default
[15:30:50] [PASSED] Both, NTSC Default, with PAL on command-line
[15:30:50] [PASSED] Both, PAL Default, with NTSC on command-line
[15:30:50] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[15:30:50] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[15:30:50] ================== drm_rect (9 subtests) ===================
[15:30:50] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[15:30:50] [PASSED] drm_test_rect_clip_scaled_not_clipped
[15:30:50] [PASSED] drm_test_rect_clip_scaled_clipped
[15:30:50] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[15:30:50] ================= drm_test_rect_intersect =================
[15:30:50] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[15:30:50] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[15:30:50] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[15:30:50] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[15:30:50] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[15:30:50] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[15:30:50] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[15:30:50] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[15:30:50] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[15:30:50] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[15:30:50] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[15:30:50] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[15:30:50] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[15:30:50] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[15:30:50] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[15:30:50] ============= [PASSED] drm_test_rect_intersect =============
[15:30:50] ================ drm_test_rect_calc_hscale ================
[15:30:50] [PASSED] normal use
[15:30:50] [PASSED] out of max range
[15:30:50] [PASSED] out of min range
[15:30:50] [PASSED] zero dst
[15:30:50] [PASSED] negative src
[15:30:50] [PASSED] negative dst
[15:30:50] ============ [PASSED] drm_test_rect_calc_hscale ============
[15:30:50] ================ drm_test_rect_calc_vscale ================
[15:30:50] [PASSED] normal use
[15:30:50] [PASSED] out of max range
[15:30:50] [PASSED] out of min range
[15:30:50] [PASSED] zero dst
[15:30:50] [PASSED] negative src
[15:30:50] [PASSED] negative dst
[15:30:50] ============ [PASSED] drm_test_rect_calc_vscale ============
[15:30:50] ================== drm_test_rect_rotate ===================
[15:30:50] [PASSED] reflect-x
[15:30:50] [PASSED] reflect-y
[15:30:50] [PASSED] rotate-0
[15:30:50] [PASSED] rotate-90
[15:30:50] [PASSED] rotate-180
[15:30:50] [PASSED] rotate-270
stty: 'standard input': Inappropriate ioctl for device
[15:30:50] ============== [PASSED] drm_test_rect_rotate ===============
[15:30:50] ================ drm_test_rect_rotate_inv =================
[15:30:50] [PASSED] reflect-x
[15:30:50] [PASSED] reflect-y
[15:30:50] [PASSED] rotate-0
[15:30:50] [PASSED] rotate-90
[15:30:50] [PASSED] rotate-180
[15:30:50] [PASSED] rotate-270
[15:30:50] ============ [PASSED] drm_test_rect_rotate_inv =============
[15:30:50] ==================== [PASSED] drm_rect =====================
[15:30:50] ============================================================
[15:30:50] Testing complete. Ran 598 tests: passed: 598
[15:30:50] Elapsed time: 22.937s total, 1.665s configuring, 21.097s building, 0.141s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[15:30:50] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[15:30:52] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
[15:30:59] Starting KUnit Kernel (1/1)...
[15:30:59] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[15:30:59] ================= ttm_device (5 subtests) ==================
[15:30:59] [PASSED] ttm_device_init_basic
[15:30:59] [PASSED] ttm_device_init_multiple
[15:30:59] [PASSED] ttm_device_fini_basic
[15:30:59] [PASSED] ttm_device_init_no_vma_man
[15:30:59] ================== ttm_device_init_pools ==================
[15:30:59] [PASSED] No DMA allocations, no DMA32 required
[15:30:59] [PASSED] DMA allocations, DMA32 required
[15:30:59] [PASSED] No DMA allocations, DMA32 required
[15:30:59] [PASSED] DMA allocations, no DMA32 required
[15:30:59] ============== [PASSED] ttm_device_init_pools ==============
[15:30:59] =================== [PASSED] ttm_device ====================
[15:30:59] ================== ttm_pool (8 subtests) ===================
[15:30:59] ================== ttm_pool_alloc_basic ===================
[15:30:59] [PASSED] One page
[15:30:59] [PASSED] More than one page
[15:30:59] [PASSED] Above the allocation limit
[15:30:59] [PASSED] One page, with coherent DMA mappings enabled
[15:30:59] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[15:30:59] ============== [PASSED] ttm_pool_alloc_basic ===============
[15:30:59] ============== ttm_pool_alloc_basic_dma_addr ==============
[15:30:59] [PASSED] One page
[15:30:59] [PASSED] More than one page
[15:30:59] [PASSED] Above the allocation limit
[15:30:59] [PASSED] One page, with coherent DMA mappings enabled
[15:30:59] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[15:30:59] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[15:30:59] [PASSED] ttm_pool_alloc_order_caching_match
[15:30:59] [PASSED] ttm_pool_alloc_caching_mismatch
[15:30:59] [PASSED] ttm_pool_alloc_order_mismatch
[15:30:59] [PASSED] ttm_pool_free_dma_alloc
[15:30:59] [PASSED] ttm_pool_free_no_dma_alloc
[15:30:59] [PASSED] ttm_pool_fini_basic
[15:30:59] ==================== [PASSED] ttm_pool =====================
[15:30:59] ================ ttm_resource (8 subtests) =================
[15:30:59] ================= ttm_resource_init_basic =================
[15:30:59] [PASSED] Init resource in TTM_PL_SYSTEM
[15:30:59] [PASSED] Init resource in TTM_PL_VRAM
[15:30:59] [PASSED] Init resource in a private placement
[15:30:59] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[15:30:59] ============= [PASSED] ttm_resource_init_basic =============
[15:30:59] [PASSED] ttm_resource_init_pinned
[15:30:59] [PASSED] ttm_resource_fini_basic
[15:30:59] [PASSED] ttm_resource_manager_init_basic
[15:30:59] [PASSED] ttm_resource_manager_usage_basic
[15:30:59] [PASSED] ttm_resource_manager_set_used_basic
[15:30:59] [PASSED] ttm_sys_man_alloc_basic
[15:30:59] [PASSED] ttm_sys_man_free_basic
[15:30:59] ================== [PASSED] ttm_resource ===================
[15:30:59] =================== ttm_tt (15 subtests) ===================
[15:30:59] ==================== ttm_tt_init_basic ====================
[15:30:59] [PASSED] Page-aligned size
[15:30:59] [PASSED] Extra pages requested
[15:30:59] ================ [PASSED] ttm_tt_init_basic ================
[15:30:59] [PASSED] ttm_tt_init_misaligned
[15:30:59] [PASSED] ttm_tt_fini_basic
[15:30:59] [PASSED] ttm_tt_fini_sg
[15:30:59] [PASSED] ttm_tt_fini_shmem
[15:30:59] [PASSED] ttm_tt_create_basic
[15:30:59] [PASSED] ttm_tt_create_invalid_bo_type
[15:30:59] [PASSED] ttm_tt_create_ttm_exists
[15:30:59] [PASSED] ttm_tt_create_failed
[15:30:59] [PASSED] ttm_tt_destroy_basic
[15:30:59] [PASSED] ttm_tt_populate_null_ttm
[15:30:59] [PASSED] ttm_tt_populate_populated_ttm
[15:30:59] [PASSED] ttm_tt_unpopulate_basic
[15:30:59] [PASSED] ttm_tt_unpopulate_empty_ttm
[15:30:59] [PASSED] ttm_tt_swapin_basic
[15:30:59] ===================== [PASSED] ttm_tt ======================
[15:30:59] =================== ttm_bo (14 subtests) ===================
[15:30:59] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[15:30:59] [PASSED] Cannot be interrupted and sleeps
[15:30:59] [PASSED] Cannot be interrupted, locks straight away
[15:30:59] [PASSED] Can be interrupted, sleeps
[15:30:59] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[15:30:59] [PASSED] ttm_bo_reserve_locked_no_sleep
[15:30:59] [PASSED] ttm_bo_reserve_no_wait_ticket
[15:30:59] [PASSED] ttm_bo_reserve_double_resv
[15:30:59] [PASSED] ttm_bo_reserve_interrupted
[15:30:59] [PASSED] ttm_bo_reserve_deadlock
[15:30:59] [PASSED] ttm_bo_unreserve_basic
[15:30:59] [PASSED] ttm_bo_unreserve_pinned
[15:30:59] [PASSED] ttm_bo_unreserve_bulk
[15:30:59] [PASSED] ttm_bo_put_basic
[15:30:59] [PASSED] ttm_bo_put_shared_resv
[15:30:59] [PASSED] ttm_bo_pin_basic
[15:30:59] [PASSED] ttm_bo_pin_unpin_resource
[15:30:59] [PASSED] ttm_bo_multiple_pin_one_unpin
[15:30:59] ===================== [PASSED] ttm_bo ======================
[15:30:59] ============== ttm_bo_validate (22 subtests) ===============
[15:30:59] ============== ttm_bo_init_reserved_sys_man ===============
[15:30:59] [PASSED] Buffer object for userspace
[15:30:59] [PASSED] Kernel buffer object
[15:30:59] [PASSED] Shared buffer object
[15:30:59] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[15:30:59] ============== ttm_bo_init_reserved_mock_man ==============
[15:30:59] [PASSED] Buffer object for userspace
[15:30:59] [PASSED] Kernel buffer object
[15:30:59] [PASSED] Shared buffer object
[15:30:59] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[15:30:59] [PASSED] ttm_bo_init_reserved_resv
[15:30:59] ================== ttm_bo_validate_basic ==================
[15:30:59] [PASSED] Buffer object for userspace
[15:30:59] [PASSED] Kernel buffer object
[15:30:59] [PASSED] Shared buffer object
[15:30:59] ============== [PASSED] ttm_bo_validate_basic ==============
[15:30:59] [PASSED] ttm_bo_validate_invalid_placement
[15:30:59] ============= ttm_bo_validate_same_placement ==============
[15:30:59] [PASSED] System manager
[15:30:59] [PASSED] VRAM manager
[15:30:59] ========= [PASSED] ttm_bo_validate_same_placement ==========
[15:30:59] [PASSED] ttm_bo_validate_failed_alloc
[15:30:59] [PASSED] ttm_bo_validate_pinned
[15:30:59] [PASSED] ttm_bo_validate_busy_placement
[15:30:59] ================ ttm_bo_validate_multihop =================
[15:30:59] [PASSED] Buffer object for userspace
[15:30:59] [PASSED] Kernel buffer object
[15:30:59] [PASSED] Shared buffer object
[15:30:59] ============ [PASSED] ttm_bo_validate_multihop =============
[15:30:59] ========== ttm_bo_validate_no_placement_signaled ==========
[15:30:59] [PASSED] Buffer object in system domain, no page vector
[15:30:59] [PASSED] Buffer object in system domain with an existing page vector
[15:30:59] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[15:30:59] ======== ttm_bo_validate_no_placement_not_signaled ========
[15:30:59] [PASSED] Buffer object for userspace
[15:30:59] [PASSED] Kernel buffer object
[15:30:59] [PASSED] Shared buffer object
[15:30:59] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[15:30:59] [PASSED] ttm_bo_validate_move_fence_signaled
[15:30:59] ========= ttm_bo_validate_move_fence_not_signaled =========
[15:30:59] [PASSED] Waits for GPU
[15:30:59] [PASSED] Tries to lock straight away
[15:31:00] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[15:31:00] [PASSED] ttm_bo_validate_swapout
[15:31:00] [PASSED] ttm_bo_validate_happy_evict
[15:31:00] [PASSED] ttm_bo_validate_all_pinned_evict
[15:31:00] [PASSED] ttm_bo_validate_allowed_only_evict
[15:31:00] [PASSED] ttm_bo_validate_deleted_evict
[15:31:00] [PASSED] ttm_bo_validate_busy_domain_evict
[15:31:00] [PASSED] ttm_bo_validate_evict_gutting
[15:31:00] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[15:31:00] ================= [PASSED] ttm_bo_validate =================
[15:31:00] ============================================================
[15:31:00] Testing complete. Ran 102 tests: passed: 102
[15:31:00] Elapsed time: 9.731s total, 1.604s configuring, 7.510s building, 0.520s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✓ CI.Build: success for drm/sched: Use struct for drm_sched_init() params (rev2)
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
` (3 preceding siblings ...)
2025-01-28 15:31 ` ✓ CI.KUnit: success " Patchwork
@ 2025-01-28 15:47 ` Patchwork
2025-01-28 15:49 ` ✗ CI.Hooks: failure " Patchwork
` (10 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2025-01-28 15:47 UTC (permalink / raw)
To: Philipp Stanner; +Cc: intel-xe
== Series Details ==
Series: drm/sched: Use struct for drm_sched_init() params (rev2)
URL : https://patchwork.freedesktop.org/series/143883/
State : success
== Summary ==
lib/modules/6.13.0-xe+/kernel/arch/x86/events/rapl.ko
lib/modules/6.13.0-xe+/kernel/arch/x86/kvm/
lib/modules/6.13.0-xe+/kernel/arch/x86/kvm/kvm.ko
lib/modules/6.13.0-xe+/kernel/arch/x86/kvm/kvm-intel.ko
lib/modules/6.13.0-xe+/kernel/arch/x86/kvm/kvm-amd.ko
lib/modules/6.13.0-xe+/kernel/kernel/
lib/modules/6.13.0-xe+/kernel/kernel/kheaders.ko
lib/modules/6.13.0-xe+/kernel/crypto/
lib/modules/6.13.0-xe+/kernel/crypto/ecrdsa_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/xcbc.ko
lib/modules/6.13.0-xe+/kernel/crypto/serpent_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/aria_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/crypto_simd.ko
lib/modules/6.13.0-xe+/kernel/crypto/adiantum.ko
lib/modules/6.13.0-xe+/kernel/crypto/tcrypt.ko
lib/modules/6.13.0-xe+/kernel/crypto/crypto_engine.ko
lib/modules/6.13.0-xe+/kernel/crypto/zstd.ko
lib/modules/6.13.0-xe+/kernel/crypto/asymmetric_keys/
lib/modules/6.13.0-xe+/kernel/crypto/asymmetric_keys/pkcs7_test_key.ko
lib/modules/6.13.0-xe+/kernel/crypto/asymmetric_keys/pkcs8_key_parser.ko
lib/modules/6.13.0-xe+/kernel/crypto/des_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/xctr.ko
lib/modules/6.13.0-xe+/kernel/crypto/authenc.ko
lib/modules/6.13.0-xe+/kernel/crypto/sm4_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/keywrap.ko
lib/modules/6.13.0-xe+/kernel/crypto/camellia_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/sm3.ko
lib/modules/6.13.0-xe+/kernel/crypto/pcrypt.ko
lib/modules/6.13.0-xe+/kernel/crypto/aegis128.ko
lib/modules/6.13.0-xe+/kernel/crypto/af_alg.ko
lib/modules/6.13.0-xe+/kernel/crypto/algif_aead.ko
lib/modules/6.13.0-xe+/kernel/crypto/cmac.ko
lib/modules/6.13.0-xe+/kernel/crypto/sm3_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/aes_ti.ko
lib/modules/6.13.0-xe+/kernel/crypto/chacha_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/poly1305_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/nhpoly1305.ko
lib/modules/6.13.0-xe+/kernel/crypto/crc32_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/essiv.ko
lib/modules/6.13.0-xe+/kernel/crypto/ccm.ko
lib/modules/6.13.0-xe+/kernel/crypto/wp512.ko
lib/modules/6.13.0-xe+/kernel/crypto/streebog_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/authencesn.ko
lib/modules/6.13.0-xe+/kernel/crypto/echainiv.ko
lib/modules/6.13.0-xe+/kernel/crypto/lrw.ko
lib/modules/6.13.0-xe+/kernel/crypto/cryptd.ko
lib/modules/6.13.0-xe+/kernel/crypto/crypto_user.ko
lib/modules/6.13.0-xe+/kernel/crypto/algif_hash.ko
lib/modules/6.13.0-xe+/kernel/crypto/vmac.ko
lib/modules/6.13.0-xe+/kernel/crypto/polyval-generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/hctr2.ko
lib/modules/6.13.0-xe+/kernel/crypto/842.ko
lib/modules/6.13.0-xe+/kernel/crypto/pcbc.ko
lib/modules/6.13.0-xe+/kernel/crypto/ansi_cprng.ko
lib/modules/6.13.0-xe+/kernel/crypto/cast6_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/twofish_common.ko
lib/modules/6.13.0-xe+/kernel/crypto/twofish_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/lz4hc.ko
lib/modules/6.13.0-xe+/kernel/crypto/blowfish_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/md4.ko
lib/modules/6.13.0-xe+/kernel/crypto/chacha20poly1305.ko
lib/modules/6.13.0-xe+/kernel/crypto/curve25519-generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/lz4.ko
lib/modules/6.13.0-xe+/kernel/crypto/rmd160.ko
lib/modules/6.13.0-xe+/kernel/crypto/algif_skcipher.ko
lib/modules/6.13.0-xe+/kernel/crypto/cast5_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/fcrypt.ko
lib/modules/6.13.0-xe+/kernel/crypto/ecdsa_generic.ko
lib/modules/6.13.0-xe+/kernel/crypto/sm4.ko
lib/modules/6.13.0-xe+/kernel/crypto/cast_common.ko
lib/modules/6.13.0-xe+/kernel/crypto/blowfish_common.ko
lib/modules/6.13.0-xe+/kernel/crypto/michael_mic.ko
lib/modules/6.13.0-xe+/kernel/crypto/async_tx/
lib/modules/6.13.0-xe+/kernel/crypto/async_tx/async_xor.ko
lib/modules/6.13.0-xe+/kernel/crypto/async_tx/async_tx.ko
lib/modules/6.13.0-xe+/kernel/crypto/async_tx/async_memcpy.ko
lib/modules/6.13.0-xe+/kernel/crypto/async_tx/async_pq.ko
lib/modules/6.13.0-xe+/kernel/crypto/async_tx/async_raid6_recov.ko
lib/modules/6.13.0-xe+/kernel/crypto/algif_rng.ko
lib/modules/6.13.0-xe+/kernel/block/
lib/modules/6.13.0-xe+/kernel/block/bfq.ko
lib/modules/6.13.0-xe+/kernel/block/kyber-iosched.ko
lib/modules/6.13.0-xe+/build
lib/modules/6.13.0-xe+/modules.alias.bin
lib/modules/6.13.0-xe+/modules.builtin
lib/modules/6.13.0-xe+/modules.softdep
lib/modules/6.13.0-xe+/modules.alias
lib/modules/6.13.0-xe+/modules.order
lib/modules/6.13.0-xe+/modules.symbols
lib/modules/6.13.0-xe+/modules.dep.bin
+ mv kernel-nodebug.tar.gz ..
+ cd ..
+ rm -rf archive
++ date +%s
+ echo -e '\e[0Ksection_end:1738079243:package_x86_64_nodebug\r\e[0K'
^[[0Ksection_end:1738079243:package_x86_64_nodebug
^[[0K
+ sync
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✗ CI.Hooks: failure for drm/sched: Use struct for drm_sched_init() params (rev2)
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
` (4 preceding siblings ...)
2025-01-28 15:47 ` ✓ CI.Build: " Patchwork
@ 2025-01-28 15:49 ` Patchwork
2025-01-28 15:50 ` ✓ CI.checksparse: success " Patchwork
` (9 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2025-01-28 15:49 UTC (permalink / raw)
To: Philipp Stanner; +Cc: intel-xe
== Series Details ==
Series: drm/sched: Use struct for drm_sched_init() params (rev2)
URL : https://patchwork.freedesktop.org/series/143883/
State : failure
== Summary ==
run-parts: executing /workspace/ci/hooks/00-showenv
+ export
+ grep -Ei '(^|\W)CI_'
declare -x CI_KERNEL_BUILD_DIR="/workspace/kernel/build64-default"
declare -x CI_KERNEL_SRC_DIR="/workspace/kernel"
declare -x CI_TOOLS_SRC_DIR="/workspace/ci"
declare -x CI_WORKSPACE_DIR="/workspace"
run-parts: executing /workspace/ci/hooks/10-build-W1
+ SRC_DIR=/workspace/kernel
+ RESTORE_DISPLAY_CONFIG=0
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ cd /workspace/kernel
++ nproc
+ make -j48 O=/workspace/kernel/build64-default modules_prepare
make[1]: Entering directory '/workspace/kernel/build64-default'
GEN Makefile
mkdir -p /workspace/kernel/build64-default/tools/objtool && make O=/workspace/kernel/build64-default subdir=tools/objtool --no-print-directory -C objtool
CALL ../scripts/checksyscalls.sh
INSTALL libsubcmd_headers
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/exec-cmd.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/help.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/pager.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/parse-options.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/run-command.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/sigchain.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/subcmd-config.o
LD /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd-in.o
AR /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd.a
CC /workspace/kernel/build64-default/tools/objtool/weak.o
CC /workspace/kernel/build64-default/tools/objtool/check.o
CC /workspace/kernel/build64-default/tools/objtool/special.o
CC /workspace/kernel/build64-default/tools/objtool/builtin-check.o
CC /workspace/kernel/build64-default/tools/objtool/elf.o
CC /workspace/kernel/build64-default/tools/objtool/objtool.o
CC /workspace/kernel/build64-default/tools/objtool/orc_gen.o
CC /workspace/kernel/build64-default/tools/objtool/orc_dump.o
CC /workspace/kernel/build64-default/tools/objtool/libstring.o
CC /workspace/kernel/build64-default/tools/objtool/arch/x86/special.o
CC /workspace/kernel/build64-default/tools/objtool/libctype.o
CC /workspace/kernel/build64-default/tools/objtool/str_error_r.o
CC /workspace/kernel/build64-default/tools/objtool/arch/x86/decode.o
CC /workspace/kernel/build64-default/tools/objtool/librbtree.o
CC /workspace/kernel/build64-default/tools/objtool/arch/x86/orc.o
LD /workspace/kernel/build64-default/tools/objtool/arch/x86/objtool-in.o
LD /workspace/kernel/build64-default/tools/objtool/objtool-in.o
LINK /workspace/kernel/build64-default/tools/objtool/objtool
make[1]: Leaving directory '/workspace/kernel/build64-default'
++ nproc
+ make -j48 O=/workspace/kernel/build64-default W=1 drivers/gpu/drm/xe
make[1]: Entering directory '/workspace/kernel/build64-default'
make[2]: Nothing to be done for 'drivers/gpu/drm/xe'.
make[1]: Leaving directory '/workspace/kernel/build64-default'
run-parts: executing /workspace/ci/hooks/11-build-32b
+++ realpath /workspace/ci/hooks/11-build-32b
++ dirname /workspace/ci/hooks/11-build-32b
+ THIS_SCRIPT_DIR=/workspace/ci/hooks
+ SRC_DIR=/workspace/kernel
+ TOOLS_SRC_DIR=/workspace/ci
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ BUILD_DIR=/workspace/kernel/build64-default/build32
+ cd /workspace/kernel
+ mkdir -p /workspace/kernel/build64-default/build32
++ nproc
+ make -j48 ARCH=i386 O=/workspace/kernel/build64-default/build32 defconfig
make[1]: Entering directory '/workspace/kernel/build64-default/build32'
GEN Makefile
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/confdata.o
HOSTCC scripts/kconfig/expr.o
LEX scripts/kconfig/lexer.lex.c
YACC scripts/kconfig/parser.tab.[ch]
HOSTCC scripts/kconfig/menu.o
HOSTCC scripts/kconfig/preprocess.o
HOSTCC scripts/kconfig/symbol.o
HOSTCC scripts/kconfig/util.o
HOSTCC scripts/kconfig/lexer.lex.o
HOSTCC scripts/kconfig/parser.tab.o
HOSTLD scripts/kconfig/conf
*** Default configuration is based on 'i386_defconfig'
#
# configuration written to .config
#
make[1]: Leaving directory '/workspace/kernel/build64-default/build32'
+ cd /workspace/kernel/build64-default/build32
+ /workspace/kernel/scripts/kconfig/merge_config.sh .config /workspace/ci/kernel/fragments/10-xe.fragment
Using .config as base
Merging /workspace/ci/kernel/fragments/10-xe.fragment
Value of CONFIG_DRM_XE is redefined by fragment /workspace/ci/kernel/fragments/10-xe.fragment:
Previous value: # CONFIG_DRM_XE is not set
New value: CONFIG_DRM_XE=m
GEN Makefile
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
#
# configuration written to .config
#
Value requested for CONFIG_HAVE_UID16 not in final .config
Requested value: CONFIG_HAVE_UID16=y
Actual value:
Value requested for CONFIG_UID16 not in final .config
Requested value: CONFIG_UID16=y
Actual value:
Value requested for CONFIG_X86_32 not in final .config
Requested value: CONFIG_X86_32=y
Actual value:
Value requested for CONFIG_OUTPUT_FORMAT not in final .config
Requested value: CONFIG_OUTPUT_FORMAT="elf32-i386"
Actual value: CONFIG_OUTPUT_FORMAT="elf64-x86-64"
Value requested for CONFIG_ARCH_MMAP_RND_BITS_MIN not in final .config
Requested value: CONFIG_ARCH_MMAP_RND_BITS_MIN=8
Actual value: CONFIG_ARCH_MMAP_RND_BITS_MIN=28
Value requested for CONFIG_ARCH_MMAP_RND_BITS_MAX not in final .config
Requested value: CONFIG_ARCH_MMAP_RND_BITS_MAX=16
Actual value: CONFIG_ARCH_MMAP_RND_BITS_MAX=32
Value requested for CONFIG_PGTABLE_LEVELS not in final .config
Requested value: CONFIG_PGTABLE_LEVELS=2
Actual value: CONFIG_PGTABLE_LEVELS=5
Value requested for CONFIG_X86_BIGSMP not in final .config
Requested value: # CONFIG_X86_BIGSMP is not set
Actual value:
Value requested for CONFIG_X86_INTEL_QUARK not in final .config
Requested value: # CONFIG_X86_INTEL_QUARK is not set
Actual value:
Value requested for CONFIG_X86_RDC321X not in final .config
Requested value: # CONFIG_X86_RDC321X is not set
Actual value:
Value requested for CONFIG_X86_32_NON_STANDARD not in final .config
Requested value: # CONFIG_X86_32_NON_STANDARD is not set
Actual value:
Value requested for CONFIG_X86_32_IRIS not in final .config
Requested value: # CONFIG_X86_32_IRIS is not set
Actual value:
Value requested for CONFIG_M486SX not in final .config
Requested value: # CONFIG_M486SX is not set
Actual value:
Value requested for CONFIG_M486 not in final .config
Requested value: # CONFIG_M486 is not set
Actual value:
Value requested for CONFIG_M586 not in final .config
Requested value: # CONFIG_M586 is not set
Actual value:
Value requested for CONFIG_M586TSC not in final .config
Requested value: # CONFIG_M586TSC is not set
Actual value:
Value requested for CONFIG_M586MMX not in final .config
Requested value: # CONFIG_M586MMX is not set
Actual value:
Value requested for CONFIG_M686 not in final .config
Requested value: CONFIG_M686=y
Actual value:
Value requested for CONFIG_MPENTIUMII not in final .config
Requested value: # CONFIG_MPENTIUMII is not set
Actual value:
Value requested for CONFIG_MPENTIUMIII not in final .config
Requested value: # CONFIG_MPENTIUMIII is not set
Actual value:
Value requested for CONFIG_MPENTIUMM not in final .config
Requested value: # CONFIG_MPENTIUMM is not set
Actual value:
Value requested for CONFIG_MPENTIUM4 not in final .config
Requested value: # CONFIG_MPENTIUM4 is not set
Actual value:
Value requested for CONFIG_MK6 not in final .config
Requested value: # CONFIG_MK6 is not set
Actual value:
Value requested for CONFIG_MK7 not in final .config
Requested value: # CONFIG_MK7 is not set
Actual value:
Value requested for CONFIG_MCRUSOE not in final .config
Requested value: # CONFIG_MCRUSOE is not set
Actual value:
Value requested for CONFIG_MEFFICEON not in final .config
Requested value: # CONFIG_MEFFICEON is not set
Actual value:
Value requested for CONFIG_MWINCHIPC6 not in final .config
Requested value: # CONFIG_MWINCHIPC6 is not set
Actual value:
Value requested for CONFIG_MWINCHIP3D not in final .config
Requested value: # CONFIG_MWINCHIP3D is not set
Actual value:
Value requested for CONFIG_MELAN not in final .config
Requested value: # CONFIG_MELAN is not set
Actual value:
Value requested for CONFIG_MGEODEGX1 not in final .config
Requested value: # CONFIG_MGEODEGX1 is not set
Actual value:
Value requested for CONFIG_MGEODE_LX not in final .config
Requested value: # CONFIG_MGEODE_LX is not set
Actual value:
Value requested for CONFIG_MCYRIXIII not in final .config
Requested value: # CONFIG_MCYRIXIII is not set
Actual value:
Value requested for CONFIG_MVIAC3_2 not in final .config
Requested value: # CONFIG_MVIAC3_2 is not set
Actual value:
Value requested for CONFIG_MVIAC7 not in final .config
Requested value: # CONFIG_MVIAC7 is not set
Actual value:
Value requested for CONFIG_X86_GENERIC not in final .config
Requested value: # CONFIG_X86_GENERIC is not set
Actual value:
Value requested for CONFIG_X86_INTERNODE_CACHE_SHIFT not in final .config
Requested value: CONFIG_X86_INTERNODE_CACHE_SHIFT=5
Actual value: CONFIG_X86_INTERNODE_CACHE_SHIFT=6
Value requested for CONFIG_X86_L1_CACHE_SHIFT not in final .config
Requested value: CONFIG_X86_L1_CACHE_SHIFT=5
Actual value: CONFIG_X86_L1_CACHE_SHIFT=6
Value requested for CONFIG_X86_USE_PPRO_CHECKSUM not in final .config
Requested value: CONFIG_X86_USE_PPRO_CHECKSUM=y
Actual value:
Value requested for CONFIG_X86_MINIMUM_CPU_FAMILY not in final .config
Requested value: CONFIG_X86_MINIMUM_CPU_FAMILY=6
Actual value: CONFIG_X86_MINIMUM_CPU_FAMILY=64
Value requested for CONFIG_CPU_SUP_TRANSMETA_32 not in final .config
Requested value: CONFIG_CPU_SUP_TRANSMETA_32=y
Actual value:
Value requested for CONFIG_CPU_SUP_VORTEX_32 not in final .config
Requested value: CONFIG_CPU_SUP_VORTEX_32=y
Actual value:
Value requested for CONFIG_HPET_TIMER not in final .config
Requested value: # CONFIG_HPET_TIMER is not set
Actual value: CONFIG_HPET_TIMER=y
Value requested for CONFIG_NR_CPUS_RANGE_END not in final .config
Requested value: CONFIG_NR_CPUS_RANGE_END=8
Actual value: CONFIG_NR_CPUS_RANGE_END=512
Value requested for CONFIG_NR_CPUS_DEFAULT not in final .config
Requested value: CONFIG_NR_CPUS_DEFAULT=8
Actual value: CONFIG_NR_CPUS_DEFAULT=64
Value requested for CONFIG_X86_ANCIENT_MCE not in final .config
Requested value: # CONFIG_X86_ANCIENT_MCE is not set
Actual value:
Value requested for CONFIG_X86_LEGACY_VM86 not in final .config
Requested value: # CONFIG_X86_LEGACY_VM86 is not set
Actual value:
Value requested for CONFIG_X86_ESPFIX32 not in final .config
Requested value: CONFIG_X86_ESPFIX32=y
Actual value:
Value requested for CONFIG_TOSHIBA not in final .config
Requested value: # CONFIG_TOSHIBA is not set
Actual value:
Value requested for CONFIG_X86_REBOOTFIXUPS not in final .config
Requested value: # CONFIG_X86_REBOOTFIXUPS is not set
Actual value:
Value requested for CONFIG_MICROCODE_INITRD32 not in final .config
Requested value: CONFIG_MICROCODE_INITRD32=y
Actual value:
Value requested for CONFIG_NOHIGHMEM not in final .config
Requested value: # CONFIG_NOHIGHMEM is not set
Actual value:
Value requested for CONFIG_HIGHMEM4G not in final .config
Requested value: CONFIG_HIGHMEM4G=y
Actual value:
Value requested for CONFIG_HIGHMEM64G not in final .config
Requested value: # CONFIG_HIGHMEM64G is not set
Actual value:
Value requested for CONFIG_VMSPLIT_3G not in final .config
Requested value: CONFIG_VMSPLIT_3G=y
Actual value:
Value requested for CONFIG_VMSPLIT_3G_OPT not in final .config
Requested value: # CONFIG_VMSPLIT_3G_OPT is not set
Actual value:
Value requested for CONFIG_VMSPLIT_2G not in final .config
Requested value: # CONFIG_VMSPLIT_2G is not set
Actual value:
Value requested for CONFIG_VMSPLIT_2G_OPT not in final .config
Requested value: # CONFIG_VMSPLIT_2G_OPT is not set
Actual value:
Value requested for CONFIG_VMSPLIT_1G not in final .config
Requested value: # CONFIG_VMSPLIT_1G is not set
Actual value:
Value requested for CONFIG_PAGE_OFFSET not in final .config
Requested value: CONFIG_PAGE_OFFSET=0xC0000000
Actual value:
Value requested for CONFIG_HIGHMEM not in final .config
Requested value: CONFIG_HIGHMEM=y
Actual value:
Value requested for CONFIG_X86_PAE not in final .config
Requested value: # CONFIG_X86_PAE is not set
Actual value:
Value requested for CONFIG_ARCH_FLATMEM_ENABLE not in final .config
Requested value: CONFIG_ARCH_FLATMEM_ENABLE=y
Actual value:
Value requested for CONFIG_ARCH_SELECT_MEMORY_MODEL not in final .config
Requested value: CONFIG_ARCH_SELECT_MEMORY_MODEL=y
Actual value:
Value requested for CONFIG_ILLEGAL_POINTER_VALUE not in final .config
Requested value: CONFIG_ILLEGAL_POINTER_VALUE=0
Actual value: CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
Value requested for CONFIG_HIGHPTE not in final .config
Requested value: # CONFIG_HIGHPTE is not set
Actual value:
Value requested for CONFIG_COMPAT_VDSO not in final .config
Requested value: # CONFIG_COMPAT_VDSO is not set
Actual value:
Value requested for CONFIG_FUNCTION_PADDING_CFI not in final .config
Requested value: CONFIG_FUNCTION_PADDING_CFI=0
Actual value: CONFIG_FUNCTION_PADDING_CFI=11
Value requested for CONFIG_FUNCTION_PADDING_BYTES not in final .config
Requested value: CONFIG_FUNCTION_PADDING_BYTES=4
Actual value: CONFIG_FUNCTION_PADDING_BYTES=16
Value requested for CONFIG_APM not in final .config
Requested value: # CONFIG_APM is not set
Actual value:
Value requested for CONFIG_X86_POWERNOW_K6 not in final .config
Requested value: # CONFIG_X86_POWERNOW_K6 is not set
Actual value:
Value requested for CONFIG_X86_POWERNOW_K7 not in final .config
Requested value: # CONFIG_X86_POWERNOW_K7 is not set
Actual value:
Value requested for CONFIG_X86_GX_SUSPMOD not in final .config
Requested value: # CONFIG_X86_GX_SUSPMOD is not set
Actual value:
Value requested for CONFIG_X86_SPEEDSTEP_ICH not in final .config
Requested value: # CONFIG_X86_SPEEDSTEP_ICH is not set
Actual value:
Value requested for CONFIG_X86_SPEEDSTEP_SMI not in final .config
Requested value: # CONFIG_X86_SPEEDSTEP_SMI is not set
Actual value:
Value requested for CONFIG_X86_CPUFREQ_NFORCE2 not in final .config
Requested value: # CONFIG_X86_CPUFREQ_NFORCE2 is not set
Actual value:
Value requested for CONFIG_X86_LONGRUN not in final .config
Requested value: # CONFIG_X86_LONGRUN is not set
Actual value:
Value requested for CONFIG_X86_LONGHAUL not in final .config
Requested value: # CONFIG_X86_LONGHAUL is not set
Actual value:
Value requested for CONFIG_X86_E_POWERSAVER not in final .config
Requested value: # CONFIG_X86_E_POWERSAVER is not set
Actual value:
Value requested for CONFIG_PCI_GOBIOS not in final .config
Requested value: # CONFIG_PCI_GOBIOS is not set
Actual value:
Value requested for CONFIG_PCI_GOMMCONFIG not in final .config
Requested value: # CONFIG_PCI_GOMMCONFIG is not set
Actual value:
Value requested for CONFIG_PCI_GODIRECT not in final .config
Requested value: # CONFIG_PCI_GODIRECT is not set
Actual value:
Value requested for CONFIG_PCI_GOANY not in final .config
Requested value: CONFIG_PCI_GOANY=y
Actual value:
Value requested for CONFIG_PCI_BIOS not in final .config
Requested value: CONFIG_PCI_BIOS=y
Actual value:
Value requested for CONFIG_ISA not in final .config
Requested value: # CONFIG_ISA is not set
Actual value:
Value requested for CONFIG_SCx200 not in final .config
Requested value: # CONFIG_SCx200 is not set
Actual value:
Value requested for CONFIG_OLPC not in final .config
Requested value: # CONFIG_OLPC is not set
Actual value:
Value requested for CONFIG_ALIX not in final .config
Requested value: # CONFIG_ALIX is not set
Actual value:
Value requested for CONFIG_NET5501 not in final .config
Requested value: # CONFIG_NET5501 is not set
Actual value:
Value requested for CONFIG_GEOS not in final .config
Requested value: # CONFIG_GEOS is not set
Actual value:
Value requested for CONFIG_COMPAT_32 not in final .config
Requested value: CONFIG_COMPAT_32=y
Actual value:
Value requested for CONFIG_HAVE_ATOMIC_IOMAP not in final .config
Requested value: CONFIG_HAVE_ATOMIC_IOMAP=y
Actual value:
Value requested for CONFIG_ARCH_32BIT_OFF_T not in final .config
Requested value: CONFIG_ARCH_32BIT_OFF_T=y
Actual value:
Value requested for CONFIG_ARCH_WANT_IPC_PARSE_VERSION not in final .config
Requested value: CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
Actual value:
Value requested for CONFIG_MODULES_USE_ELF_REL not in final .config
Requested value: CONFIG_MODULES_USE_ELF_REL=y
Actual value:
Value requested for CONFIG_ARCH_MMAP_RND_BITS not in final .config
Requested value: CONFIG_ARCH_MMAP_RND_BITS=8
Actual value: CONFIG_ARCH_MMAP_RND_BITS=28
Value requested for CONFIG_CLONE_BACKWARDS not in final .config
Requested value: CONFIG_CLONE_BACKWARDS=y
Actual value:
Value requested for CONFIG_OLD_SIGSUSPEND3 not in final .config
Requested value: CONFIG_OLD_SIGSUSPEND3=y
Actual value:
Value requested for CONFIG_OLD_SIGACTION not in final .config
Requested value: CONFIG_OLD_SIGACTION=y
Actual value:
Value requested for CONFIG_ARCH_SPLIT_ARG64 not in final .config
Requested value: CONFIG_ARCH_SPLIT_ARG64=y
Actual value:
Value requested for CONFIG_FUNCTION_ALIGNMENT not in final .config
Requested value: CONFIG_FUNCTION_ALIGNMENT=4
Actual value: CONFIG_FUNCTION_ALIGNMENT=16
Value requested for CONFIG_SELECT_MEMORY_MODEL not in final .config
Requested value: CONFIG_SELECT_MEMORY_MODEL=y
Actual value:
Value requested for CONFIG_FLATMEM_MANUAL not in final .config
Requested value: CONFIG_FLATMEM_MANUAL=y
Actual value:
Value requested for CONFIG_SPARSEMEM_MANUAL not in final .config
Requested value: # CONFIG_SPARSEMEM_MANUAL is not set
Actual value:
Value requested for CONFIG_FLATMEM not in final .config
Requested value: CONFIG_FLATMEM=y
Actual value:
Value requested for CONFIG_SPARSEMEM_STATIC not in final .config
Requested value: CONFIG_SPARSEMEM_STATIC=y
Actual value:
Value requested for CONFIG_BOUNCE not in final .config
Requested value: CONFIG_BOUNCE=y
Actual value:
Value requested for CONFIG_KMAP_LOCAL not in final .config
Requested value: CONFIG_KMAP_LOCAL=y
Actual value:
Value requested for CONFIG_HOTPLUG_PCI_COMPAQ not in final .config
Requested value: # CONFIG_HOTPLUG_PCI_COMPAQ is not set
Actual value:
Value requested for CONFIG_HOTPLUG_PCI_IBM not in final .config
Requested value: # CONFIG_HOTPLUG_PCI_IBM is not set
Actual value:
Value requested for CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH not in final .config
Requested value: CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH=y
Actual value:
Value requested for CONFIG_PCH_PHUB not in final .config
Requested value: # CONFIG_PCH_PHUB is not set
Actual value:
Value requested for CONFIG_SCSI_NSP32 not in final .config
Requested value: # CONFIG_SCSI_NSP32 is not set
Actual value:
Value requested for CONFIG_PATA_CS5520 not in final .config
Requested value: # CONFIG_PATA_CS5520 is not set
Actual value:
Value requested for CONFIG_PATA_CS5530 not in final .config
Requested value: # CONFIG_PATA_CS5530 is not set
Actual value:
Value requested for CONFIG_PATA_CS5535 not in final .config
Requested value: # CONFIG_PATA_CS5535 is not set
Actual value:
Value requested for CONFIG_PATA_CS5536 not in final .config
Requested value: # CONFIG_PATA_CS5536 is not set
Actual value:
Value requested for CONFIG_PATA_SC1200 not in final .config
Requested value: # CONFIG_PATA_SC1200 is not set
Actual value:
Value requested for CONFIG_PCH_GBE not in final .config
Requested value: # CONFIG_PCH_GBE is not set
Actual value:
Value requested for CONFIG_INPUT_WISTRON_BTNS not in final .config
Requested value: # CONFIG_INPUT_WISTRON_BTNS is not set
Actual value:
Value requested for CONFIG_SERIAL_TIMBERDALE not in final .config
Requested value: # CONFIG_SERIAL_TIMBERDALE is not set
Actual value:
Value requested for CONFIG_SERIAL_PCH_UART not in final .config
Requested value: # CONFIG_SERIAL_PCH_UART is not set
Actual value:
Value requested for CONFIG_HW_RANDOM_GEODE not in final .config
Requested value: CONFIG_HW_RANDOM_GEODE=y
Actual value:
Value requested for CONFIG_SONYPI not in final .config
Requested value: # CONFIG_SONYPI is not set
Actual value:
Value requested for CONFIG_PC8736x_GPIO not in final .config
Requested value: # CONFIG_PC8736x_GPIO is not set
Actual value:
Value requested for CONFIG_NSC_GPIO not in final .config
Requested value: # CONFIG_NSC_GPIO is not set
Actual value:
Value requested for CONFIG_I2C_EG20T not in final .config
Requested value: # CONFIG_I2C_EG20T is not set
Actual value:
Value requested for CONFIG_SCx200_ACB not in final .config
Requested value: # CONFIG_SCx200_ACB is not set
Actual value:
Value requested for CONFIG_PTP_1588_CLOCK_PCH not in final .config
Requested value: # CONFIG_PTP_1588_CLOCK_PCH is not set
Actual value:
Value requested for CONFIG_SBC8360_WDT not in final .config
Requested value: # CONFIG_SBC8360_WDT is not set
Actual value:
Value requested for CONFIG_SBC7240_WDT not in final .config
Requested value: # CONFIG_SBC7240_WDT is not set
Actual value:
Value requested for CONFIG_MFD_CS5535 not in final .config
Requested value: # CONFIG_MFD_CS5535 is not set
Actual value:
Value requested for CONFIG_AGP_ALI not in final .config
Requested value: # CONFIG_AGP_ALI is not set
Actual value:
Value requested for CONFIG_AGP_ATI not in final .config
Requested value: # CONFIG_AGP_ATI is not set
Actual value:
Value requested for CONFIG_AGP_AMD not in final .config
Requested value: # CONFIG_AGP_AMD is not set
Actual value:
Value requested for CONFIG_AGP_NVIDIA not in final .config
Requested value: # CONFIG_AGP_NVIDIA is not set
Actual value:
Value requested for CONFIG_AGP_SWORKS not in final .config
Requested value: # CONFIG_AGP_SWORKS is not set
Actual value:
Value requested for CONFIG_AGP_EFFICEON not in final .config
Requested value: # CONFIG_AGP_EFFICEON is not set
Actual value:
Value requested for CONFIG_SND_CS5530 not in final .config
Requested value: # CONFIG_SND_CS5530 is not set
Actual value:
Value requested for CONFIG_SND_CS5535AUDIO not in final .config
Requested value: # CONFIG_SND_CS5535AUDIO is not set
Actual value:
Value requested for CONFIG_SND_SIS7019 not in final .config
Requested value: # CONFIG_SND_SIS7019 is not set
Actual value:
Value requested for CONFIG_LEDS_OT200 not in final .config
Requested value: # CONFIG_LEDS_OT200 is not set
Actual value:
Value requested for CONFIG_PCH_DMA not in final .config
Requested value: # CONFIG_PCH_DMA is not set
Actual value:
Value requested for CONFIG_CLKSRC_I8253 not in final .config
Requested value: CONFIG_CLKSRC_I8253=y
Actual value:
Value requested for CONFIG_MAILBOX not in final .config
Requested value: # CONFIG_MAILBOX is not set
Actual value: CONFIG_MAILBOX=y
Value requested for CONFIG_CRYPTO_SERPENT_SSE2_586 not in final .config
Requested value: # CONFIG_CRYPTO_SERPENT_SSE2_586 is not set
Actual value:
Value requested for CONFIG_CRYPTO_TWOFISH_586 not in final .config
Requested value: # CONFIG_CRYPTO_TWOFISH_586 is not set
Actual value:
Value requested for CONFIG_CRYPTO_DEV_GEODE not in final .config
Requested value: # CONFIG_CRYPTO_DEV_GEODE is not set
Actual value:
Value requested for CONFIG_CRYPTO_DEV_HIFN_795X not in final .config
Requested value: # CONFIG_CRYPTO_DEV_HIFN_795X is not set
Actual value:
Value requested for CONFIG_CRYPTO_LIB_POLY1305_RSIZE not in final .config
Requested value: CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
Actual value: CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11
Value requested for CONFIG_AUDIT_GENERIC not in final .config
Requested value: CONFIG_AUDIT_GENERIC=y
Actual value:
Value requested for CONFIG_GENERIC_VDSO_32 not in final .config
Requested value: CONFIG_GENERIC_VDSO_32=y
Actual value:
Value requested for CONFIG_DEBUG_KMAP_LOCAL not in final .config
Requested value: # CONFIG_DEBUG_KMAP_LOCAL is not set
Actual value:
Value requested for CONFIG_DEBUG_HIGHMEM not in final .config
Requested value: # CONFIG_DEBUG_HIGHMEM is not set
Actual value:
Value requested for CONFIG_HAVE_DEBUG_STACKOVERFLOW not in final .config
Requested value: CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
Actual value:
Value requested for CONFIG_DEBUG_STACKOVERFLOW not in final .config
Requested value: # CONFIG_DEBUG_STACKOVERFLOW is not set
Actual value:
Value requested for CONFIG_HAVE_FUNCTION_GRAPH_TRACER not in final .config
Requested value: CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
Actual value:
Value requested for CONFIG_HAVE_FUNCTION_GRAPH_RETVAL not in final .config
Requested value: CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y
Actual value:
Value requested for CONFIG_DRM_KUNIT_TEST not in final .config
Requested value: CONFIG_DRM_KUNIT_TEST=m
Actual value:
Value requested for CONFIG_DRM_XE_WERROR not in final .config
Requested value: CONFIG_DRM_XE_WERROR=y
Actual value:
Value requested for CONFIG_DRM_XE_DEBUG not in final .config
Requested value: CONFIG_DRM_XE_DEBUG=y
Actual value:
Value requested for CONFIG_DRM_XE_DEBUG_MEM not in final .config
Requested value: CONFIG_DRM_XE_DEBUG_MEM=y
Actual value:
Value requested for CONFIG_DRM_XE_KUNIT_TEST not in final .config
Requested value: CONFIG_DRM_XE_KUNIT_TEST=m
Actual value:
++ nproc
+ make -j48 ARCH=i386 olddefconfig
GEN Makefile
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
#
# configuration written to .config
#
++ nproc
+ make -j48 ARCH=i386
SYNC include/config/auto.conf.cmd
GEN Makefile
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
GEN Makefile
WRAP arch/x86/include/generated/uapi/asm/bpf_perf_event.h
WRAP arch/x86/include/generated/uapi/asm/errno.h
WRAP arch/x86/include/generated/uapi/asm/fcntl.h
WRAP arch/x86/include/generated/uapi/asm/ioctl.h
WRAP arch/x86/include/generated/uapi/asm/ioctls.h
UPD include/generated/uapi/linux/version.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_32.h
WRAP arch/x86/include/generated/uapi/asm/param.h
WRAP arch/x86/include/generated/uapi/asm/ipcbuf.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_64.h
WRAP arch/x86/include/generated/uapi/asm/poll.h
WRAP arch/x86/include/generated/uapi/asm/resource.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_x32.h
WRAP arch/x86/include/generated/uapi/asm/socket.h
SYSTBL arch/x86/include/generated/asm/syscalls_32.h
WRAP arch/x86/include/generated/uapi/asm/sockios.h
WRAP arch/x86/include/generated/uapi/asm/termbits.h
WRAP arch/x86/include/generated/uapi/asm/termios.h
WRAP arch/x86/include/generated/uapi/asm/types.h
HOSTCC arch/x86/tools/relocs_32.o
UPD include/generated/compile.h
HOSTCC arch/x86/tools/relocs_64.o
HOSTCC arch/x86/tools/relocs_common.o
WRAP arch/x86/include/generated/asm/early_ioremap.h
WRAP arch/x86/include/generated/asm/mcs_spinlock.h
WRAP arch/x86/include/generated/asm/mmzone.h
WRAP arch/x86/include/generated/asm/irq_regs.h
WRAP arch/x86/include/generated/asm/kmap_size.h
WRAP arch/x86/include/generated/asm/local64.h
WRAP arch/x86/include/generated/asm/mmiowb.h
WRAP arch/x86/include/generated/asm/module.lds.h
WRAP arch/x86/include/generated/asm/rwonce.h
HOSTCC scripts/kallsyms
HOSTCC scripts/sorttable
HOSTCC scripts/asn1_compiler
HOSTCC scripts/selinux/mdp/mdp
HOSTLD arch/x86/tools/relocs
UPD include/config/kernel.release
UPD include/generated/utsrelease.h
CC scripts/mod/empty.o
HOSTCC scripts/mod/mk_elfconfig
CC scripts/mod/devicetable-offsets.s
UPD scripts/mod/devicetable-offsets.h
MKELF scripts/mod/elfconfig.h
HOSTCC scripts/mod/modpost.o
HOSTCC scripts/mod/file2alias.o
HOSTCC scripts/mod/sumversion.o
HOSTCC scripts/mod/symsearch.o
HOSTLD scripts/mod/modpost
CC kernel/bounds.s
CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-arch-fallback.h
CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-instrumented.h
CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-long.h
UPD include/generated/timeconst.h
UPD include/generated/bounds.h
CC arch/x86/kernel/asm-offsets.s
UPD include/generated/asm-offsets.h
CALL /workspace/kernel/scripts/checksyscalls.sh
LDS scripts/module.lds
HOSTCC usr/gen_init_cpio
CC init/main.o
CC certs/system_keyring.o
CC ipc/util.o
CC init/do_mounts.o
CC ipc/msgutil.o
CC init/do_mounts_initrd.o
UPD init/utsversion-tmp.h
CC ipc/msg.o
CC ipc/sem.o
CC init/initramfs.o
AS arch/x86/lib/atomic64_cx8_32.o
CC security/commoncap.o
CC ipc/shm.o
CC mm/filemap.o
AS arch/x86/lib/checksum_32.o
CC init/calibrate.o
CC block/bdev.o
CC security/lsm_syscalls.o
CC io_uring/io_uring.o
CC arch/x86/power/cpu.o
CC block/fops.o
CC mm/mempool.o
CC arch/x86/realmode/init.o
AR arch/x86/crypto/built-in.a
HOSTCC security/selinux/genheaders
CC arch/x86/video/video-common.o
AR arch/x86/net/built-in.a
CC security/integrity/iint.o
CC security/keys/gc.o
CC arch/x86/pci/i386.o
AR virt/lib/built-in.a
CC block/partitions/core.o
CC fs/nfs_common/nfsacl.o
CC arch/x86/events/amd/core.o
CC arch/x86/events/intel/core.o
CC fs/nfs_common/grace.o
AR arch/x86/platform/atom/built-in.a
AR drivers/cache/built-in.a
CC arch/x86/mm/pat/set_memory.o
AS arch/x86/realmode/rm/header.o
CC lib/math/div64.o
CC arch/x86/kernel/fpu/init.o
CC arch/x86/virt/svm/cmdline.o
CC arch/x86/mm/pat/memtype.o
CC net/core/sock.o
AR virt/built-in.a
CC fs/notify/dnotify/dnotify.o
CC sound/core/seq/seq.o
AR arch/x86/platform/ce4100/built-in.a
AR drivers/irqchip/built-in.a
CC arch/x86/pci/init.o
CC lib/math/gcd.o
CC arch/x86/entry/vdso/vma.o
CC arch/x86/lib/cmdline.o
AS arch/x86/realmode/rm/trampoline_32.o
CC arch/x86/platform/efi/memmap.o
CC kernel/sched/core.o
AR drivers/bus/mhi/built-in.a
AS arch/x86/realmode/rm/stack.o
AR drivers/bus/built-in.a
CC crypto/asymmetric_keys/asymmetric_type.o
AS arch/x86/realmode/rm/reboot.o
AR drivers/pwm/built-in.a
CC sound/core/sound.o
AR drivers/leds/trigger/built-in.a
AS arch/x86/realmode/rm/wakeup_asm.o
AR arch/x86/virt/svm/built-in.a
AR drivers/leds/blink/built-in.a
AR arch/x86/virt/vmx/built-in.a
AS arch/x86/lib/cmpxchg8b_emu.o
AR drivers/leds/simple/built-in.a
CC arch/x86/realmode/rm/wakemain.o
CC drivers/leds/led-core.o
AR arch/x86/virt/built-in.a
CC arch/x86/lib/cpu.o
CC crypto/asymmetric_keys/restrict.o
CC lib/math/lcm.o
GEN security/selinux/flask.h security/selinux/av_permissions.h
CC security/selinux/avc.o
CC lib/math/int_log.o
CC arch/x86/realmode/rm/video-mode.o
CC arch/x86/platform/efi/quirks.o
CC lib/math/int_pow.o
GEN usr/initramfs_data.cpio
AS arch/x86/realmode/rm/copy.o
COPY usr/initramfs_inc_data
AS usr/initramfs_data.o
HOSTCC certs/extract-cert
CC lib/math/int_sqrt.o
AS arch/x86/realmode/rm/bioscall.o
AR usr/built-in.a
CC arch/x86/kernel/fpu/bugs.o
CC arch/x86/realmode/rm/regs.o
CC block/bio.o
CC arch/x86/realmode/rm/video-vga.o
CC lib/math/reciprocal_div.o
CC arch/x86/kernel/fpu/core.o
CC arch/x86/realmode/rm/video-vesa.o
CC lib/math/rational.o
CC arch/x86/lib/delay.o
CC sound/core/seq/seq_lock.o
CC arch/x86/realmode/rm/video-bios.o
CC init/init_task.o
CC arch/x86/events/zhaoxin/core.o
AR arch/x86/video/built-in.a
CC arch/x86/events/intel/bts.o
CC arch/x86/power/hibernate_32.o
CERT certs/x509_certificate_list
CERT certs/signing_key.x509
AS certs/system_certificates.o
PASYMS arch/x86/realmode/rm/pasyms.h
CC security/integrity/integrity_audit.o
AR certs/built-in.a
CC ipc/syscall.o
CC fs/iomap/trace.o
CC fs/iomap/iter.o
CC fs/nfs_common/common.o
LDS arch/x86/realmode/rm/realmode.lds
AR sound/i2c/other/built-in.a
CC drivers/leds/led-class.o
AR sound/i2c/built-in.a
LD arch/x86/realmode/rm/realmode.elf
AR sound/drivers/opl3/built-in.a
CC arch/x86/platform/efi/efi.o
RELOCS arch/x86/realmode/rm/realmode.relocs
OBJCOPY arch/x86/realmode/rm/realmode.bin
AR sound/isa/ad1816a/built-in.a
AS arch/x86/realmode/rmpiggy.o
AR sound/drivers/opl4/built-in.a
CC crypto/asymmetric_keys/signature.o
CC arch/x86/platform/efi/efi_32.o
AR sound/isa/ad1848/built-in.a
CC arch/x86/pci/pcbios.o
AR sound/drivers/mpu401/built-in.a
CC security/keys/key.o
AR arch/x86/realmode/built-in.a
AR sound/isa/cs423x/built-in.a
AR sound/drivers/vx/built-in.a
CC arch/x86/entry/vdso/extable.o
AR fs/notify/dnotify/built-in.a
AR sound/isa/es1688/built-in.a
AR sound/drivers/pcsp/built-in.a
AR sound/isa/galaxy/built-in.a
CC arch/x86/mm/pat/memtype_interval.o
AR sound/drivers/built-in.a
CC block/partitions/msdos.o
AR sound/isa/gus/built-in.a
CC fs/notify/inotify/inotify_fsnotify.o
CC crypto/asymmetric_keys/public_key.o
CC net/core/request_sock.o
AR sound/isa/msnd/built-in.a
AS arch/x86/lib/getuser.o
AR sound/isa/opti9xx/built-in.a
AR sound/isa/sb/built-in.a
AR sound/isa/wavefront/built-in.a
GEN arch/x86/lib/inat-tables.c
CC fs/iomap/buffered-io.o
CC block/elevator.o
AR sound/isa/wss/built-in.a
CC arch/x86/lib/insn-eval.o
AR lib/math/built-in.a
AR sound/isa/built-in.a
CC lib/crypto/mpi/generic_mpih-lshift.o
CC lib/zlib_inflate/inffast.o
CC sound/core/seq/seq_clientmgr.o
CC net/ethernet/eth.o
CC sound/core/seq/seq_memory.o
CC crypto/api.o
CC sound/core/seq/seq_queue.o
CC lib/zlib_inflate/inflate.o
CC fs/iomap/direct-io.o
CC arch/x86/events/amd/lbr.o
AR arch/x86/platform/geode/built-in.a
CC arch/x86/pci/mmconfig_32.o
LDS arch/x86/entry/vdso/vdso32/vdso32.lds
CC arch/x86/lib/insn.o
CC lib/crypto/mpi/generic_mpih-mul1.o
CC lib/zlib_inflate/infutil.o
CC drivers/leds/led-triggers.o
CC sound/core/init.o
CC lib/crypto/memneq.o
AS arch/x86/power/hibernate_asm_32.o
CC fs/notify/inotify/inotify_user.o
CC arch/x86/power/hibernate.o
CC security/keys/keyring.o
AR fs/nfs_common/built-in.a
AR security/integrity/built-in.a
CC security/keys/keyctl.o
CC block/partitions/efi.o
CC fs/quota/dquot.o
AR arch/x86/mm/pat/built-in.a
CC arch/x86/mm/init.o
AS arch/x86/entry/vdso/vdso32/note.o
ASN.1 crypto/asymmetric_keys/x509.asn1.[ch]
ASN.1 crypto/asymmetric_keys/x509_akid.asn1.[ch]
CC crypto/asymmetric_keys/x509_loader.o
CC security/keys/permission.o
CC init/version.o
AR arch/x86/platform/iris/built-in.a
AR arch/x86/events/zhaoxin/built-in.a
CC crypto/asymmetric_keys/x509_public_key.o
CC arch/x86/kernel/fpu/regset.o
CC crypto/cipher.o
CC arch/x86/kernel/fpu/signal.o
AS arch/x86/entry/vdso/vdso32/system_call.o
AS arch/x86/entry/vdso/vdso32/sigreturn.o
CC fs/proc/task_mmu.o
CC arch/x86/entry/vdso/vdso32/vclock_gettime.o
CC net/core/skbuff.o
CC fs/kernfs/mount.o
CC block/blk-core.o
AR init/built-in.a
CC drivers/pci/msi/pcidev_msi.o
CC ipc/ipc_sysctl.o
AS arch/x86/platform/efi/efi_stub_32.o
CC drivers/video/console/dummycon.o
CC fs/sysfs/file.o
CC arch/x86/platform/efi/runtime-map.o
CC drivers/video/backlight/backlight.o
CC arch/x86/lib/kaslr.o
CC lib/zlib_inflate/inftrees.o
CC drivers/pci/msi/api.o
CC security/selinux/hooks.o
CC drivers/video/console/vgacon.o
CC fs/kernfs/inode.o
CC lib/crypto/mpi/generic_mpih-mul2.o
CC arch/x86/pci/direct.o
CC sound/core/memory.o
ASN.1 crypto/asymmetric_keys/pkcs7.asn1.[ch]
CC arch/x86/lib/memcpy_32.o
AR sound/pci/ac97/built-in.a
AR sound/pci/ali5451/built-in.a
CC lib/zlib_inflate/inflate_syms.o
AR sound/pci/asihpi/built-in.a
AR sound/ppc/built-in.a
CC arch/x86/entry/vdso/vdso32/vgetcpu.o
AR sound/pci/au88x0/built-in.a
AR sound/pci/aw2/built-in.a
AS arch/x86/lib/memmove_32.o
AR sound/pci/ctxfi/built-in.a
AR sound/pci/ca0106/built-in.a
CC arch/x86/lib/misc.o
AR drivers/leds/built-in.a
AR sound/pci/cs46xx/built-in.a
CC arch/x86/kernel/fpu/xstate.o
AR sound/pci/cs5535audio/built-in.a
CC drivers/pci/pcie/portdrv.o
AR sound/pci/lola/built-in.a
AR drivers/pci/pwrctrl/built-in.a
CC arch/x86/lib/pc-conf-reg.o
AR arch/x86/power/built-in.a
AR sound/pci/lx6464es/built-in.a
CC security/keys/process_keys.o
CC arch/x86/events/amd/ibs.o
AR sound/pci/echoaudio/built-in.a
CC crypto/asymmetric_keys/pkcs7_trust.o
CC arch/x86/mm/init_32.o
AR sound/pci/emu10k1/built-in.a
CC fs/proc/inode.o
CC sound/pci/hda/hda_bind.o
AR sound/pci/ice1712/built-in.a
AR sound/arm/built-in.a
CC kernel/sched/fair.o
CC drivers/pci/pcie/rcec.o
CC fs/sysfs/dir.o
CC ipc/mqueue.o
AS arch/x86/lib/putuser.o
HOSTCC arch/x86/entry/vdso/vdso2c
CC sound/core/seq/seq_fifo.o
AS arch/x86/lib/retpoline.o
CC ipc/namespace.o
CC arch/x86/events/intel/ds.o
AR lib/zlib_inflate/built-in.a
CC arch/x86/lib/string_32.o
AR fs/notify/inotify/built-in.a
AR arch/x86/entry/vsyscall/built-in.a
AR fs/notify/fanotify/built-in.a
CC arch/x86/pci/mmconfig-shared.o
AR block/partitions/built-in.a
AR net/ethernet/built-in.a
CC fs/notify/fsnotify.o
CC block/blk-sysfs.o
CC crypto/compress.o
CC drivers/pci/msi/msi.o
CC arch/x86/platform/intel/iosf_mbi.o
CC arch/x86/lib/strstr_32.o
CC crypto/asymmetric_keys/pkcs7_verify.o
CC arch/x86/lib/usercopy.o
CC arch/x86/events/amd/uncore.o
AS arch/x86/entry/entry.o
CC lib/crypto/mpi/generic_mpih-mul3.o
CC drivers/pci/pcie/bwctrl.o
CC sound/core/control.o
AR arch/x86/platform/efi/built-in.a
CC sound/pci/hda/hda_codec.o
CC lib/zlib_deflate/deflate.o
CC security/selinux/selinuxfs.o
CC net/core/datagram.o
CC fs/quota/quota_v2.o
CC crypto/asymmetric_keys/x509.asn1.o
CC fs/iomap/fiemap.o
AR drivers/video/backlight/built-in.a
AR net/802/built-in.a
AR drivers/idle/built-in.a
AR drivers/char/ipmi/built-in.a
CC fs/kernfs/dir.o
CC arch/x86/entry/vdso/vdso32-setup.o
CC arch/x86/kernel/cpu/mce/core.o
CC arch/x86/kernel/acpi/boot.o
CC fs/sysfs/symlink.o
CC arch/x86/lib/usercopy_32.o
AR drivers/video/console/built-in.a
CC drivers/video/aperture.o
AR drivers/video/fbdev/core/built-in.a
CC crypto/asymmetric_keys/x509_akid.asn1.o
CC arch/x86/kernel/cpu/mtrr/mtrr.o
AR drivers/video/fbdev/omap/built-in.a
CC arch/x86/kernel/cpu/microcode/core.o
CC crypto/asymmetric_keys/x509_cert_parser.o
AR drivers/video/fbdev/omap2/omapfb/dss/built-in.a
CC drivers/acpi/acpica/dsargs.o
AR drivers/video/fbdev/omap2/omapfb/displays/built-in.a
AR drivers/video/fbdev/omap2/omapfb/built-in.a
CC arch/x86/kernel/apic/apic.o
AR drivers/video/fbdev/omap2/built-in.a
CC arch/x86/kernel/acpi/sleep.o
CC sound/core/seq/seq_prioq.o
AR drivers/video/fbdev/built-in.a
AS arch/x86/kernel/acpi/wakeup_32.o
CC lib/crypto/utils.o
CC io_uring/opdef.o
VDSO arch/x86/entry/vdso/vdso32.so.dbg
CC mm/oom_kill.o
OBJCOPY arch/x86/entry/vdso/vdso32.so
VDSO2C arch/x86/entry/vdso/vdso-image-32.c
CC arch/x86/lib/msr-smp.o
CC arch/x86/entry/vdso/vdso-image-32.o
CC arch/x86/mm/fault.o
AR drivers/acpi/pmic/built-in.a
CC sound/pci/hda/hda_jack.o
CC lib/crypto/mpi/generic_mpih-rshift.o
AR arch/x86/platform/intel/built-in.a
AR arch/x86/platform/intel-mid/built-in.a
AR arch/x86/platform/intel-quark/built-in.a
CC security/keys/request_key.o
AR arch/x86/platform/olpc/built-in.a
AR arch/x86/platform/scx200/built-in.a
AR arch/x86/platform/ts5500/built-in.a
AR arch/x86/platform/uv/built-in.a
AR arch/x86/platform/built-in.a
CC drivers/pci/pcie/aspm.o
CC fs/notify/notification.o
CC arch/x86/events/core.o
AR arch/x86/kernel/fpu/built-in.a
CC sound/pci/hda/hda_auto_parser.o
CC arch/x86/events/probe.o
CC kernel/sched/build_policy.o
CC drivers/acpi/acpica/dscontrol.o
CC arch/x86/pci/fixup.o
AR arch/x86/entry/vdso/built-in.a
CC fs/kernfs/file.o
AS arch/x86/entry/entry_32.o
CC arch/x86/lib/cache-smp.o
CC io_uring/kbuf.o
CC drivers/pci/msi/irqdomain.o
CC arch/x86/entry/syscall_32.o
CC lib/zlib_deflate/deftree.o
CC fs/iomap/seek.o
CC io_uring/rsrc.o
CC fs/proc/root.o
CC fs/sysfs/mount.o
CC crypto/asymmetric_keys/pkcs7.asn1.o
CC fs/quota/quota_tree.o
CC crypto/asymmetric_keys/pkcs7_parser.o
CC arch/x86/lib/msr.o
AR arch/x86/events/amd/built-in.a
CC fs/kernfs/symlink.o
CC arch/x86/kernel/cpu/microcode/intel.o
CC arch/x86/pci/acpi.o
CC sound/core/seq/seq_timer.o
CC drivers/video/cmdline.o
CC arch/x86/kernel/apic/apic_common.o
CC arch/x86/kernel/cpu/mtrr/if.o
CC drivers/acpi/acpica/dsdebug.o
CC block/blk-flush.o
CC lib/crypto/mpi/generic_mpih-sub1.o
CC ipc/mq_sysctl.o
CC drivers/pci/pcie/pme.o
CC arch/x86/kernel/acpi/cstate.o
CC fs/notify/group.o
CC lib/zlib_deflate/deflate_syms.o
CC fs/notify/mark.o
CC arch/x86/kernel/cpu/cacheinfo.o
CC mm/fadvise.o
AR crypto/asymmetric_keys/built-in.a
CC crypto/algapi.o
CC drivers/acpi/acpica/dsfield.o
CC security/keys/request_key_auth.o
CC net/core/stream.o
AR sound/sh/built-in.a
CC fs/iomap/swapfile.o
CC lib/crypto/chacha.o
AR ipc/built-in.a
CC fs/notify/fdinfo.o
AR drivers/pci/msi/built-in.a
CC arch/x86/kernel/cpu/mtrr/generic.o
CC sound/core/seq/seq_system.o
CC arch/x86/kernel/cpu/mtrr/cleanup.o
CC arch/x86/events/intel/knc.o
AR lib/zlib_deflate/built-in.a
CC drivers/acpi/acpica/dsinit.o
CC net/core/scm.o
CC fs/sysfs/group.o
CC block/blk-settings.o
CC lib/crypto/mpi/generic_mpih-add1.o
CC fs/proc/base.o
CC sound/core/misc.o
CC arch/x86/mm/ioremap.o
AR fs/kernfs/built-in.a
CC io_uring/notif.o
CC sound/core/seq/seq_ports.o
AS arch/x86/lib/msr-reg.o
CC arch/x86/lib/msr-reg-export.o
CC mm/maccess.o
CC drivers/video/nomodeset.o
CC arch/x86/kernel/cpu/microcode/amd.o
AR arch/x86/kernel/acpi/built-in.a
CC arch/x86/entry/common.o
CC drivers/acpi/acpica/dsmethod.o
CC io_uring/tctx.o
CC fs/quota/quota.o
CC arch/x86/pci/legacy.o
CC net/sched/sch_generic.o
CC arch/x86/kernel/cpu/mce/severity.o
CC crypto/scatterwalk.o
CC net/core/gen_stats.o
CC lib/crypto/mpi/mpicoder.o
AS arch/x86/lib/hweight.o
CC arch/x86/lib/iomem.o
AR drivers/pci/pcie/built-in.a
CC security/min_addr.o
CC drivers/pci/hotplug/pci_hotplug_core.o
CC arch/x86/kernel/apic/apic_noop.o
CC arch/x86/events/utils.o
CC security/selinux/netlink.o
CC security/keys/user_defined.o
CC sound/pci/hda/hda_sysfs.o
CC arch/x86/pci/irq.o
CC drivers/video/hdmi.o
CC arch/x86/events/intel/lbr.o
CC arch/x86/kernel/cpu/mtrr/amd.o
AR fs/iomap/built-in.a
CC sound/core/seq/seq_info.o
CC drivers/acpi/dptf/int340x_thermal.o
CC drivers/acpi/acpica/dsmthdat.o
CC kernel/sched/build_utility.o
AR fs/notify/built-in.a
CC arch/x86/pci/common.o
AR fs/sysfs/built-in.a
CC arch/x86/kernel/apic/ipi.o
CC arch/x86/lib/atomic64_32.o
AR sound/synth/emux/built-in.a
AR sound/synth/built-in.a
CC arch/x86/kernel/cpu/scattered.o
CC sound/core/seq/seq_dummy.o
CC arch/x86/lib/inat.o
CC fs/proc/generic.o
LDS arch/x86/kernel/vmlinux.lds
CC arch/x86/kernel/kprobes/core.o
CC arch/x86/kernel/cpu/mce/genpool.o
CC drivers/acpi/acpica/dsobject.o
CC arch/x86/mm/extable.o
CC mm/page-writeback.o
AR arch/x86/lib/built-in.a
CC security/keys/proc.o
CC io_uring/filetable.o
AS arch/x86/entry/thunk.o
AR arch/x86/lib/lib.a
CC block/blk-ioc.o
CC arch/x86/kernel/apic/vector.o
CC lib/crypto/aes.o
CC lib/crypto/mpi/mpi-add.o
CC arch/x86/kernel/cpu/mce/intel.o
CC lib/crypto/arc4.o
CC crypto/proc.o
AR arch/x86/entry/built-in.a
AS arch/x86/kernel/head_32.o
CC arch/x86/kernel/head32.o
CC lib/lzo/lzo1x_compress.o
AR drivers/acpi/dptf/built-in.a
CC arch/x86/events/intel/p4.o
CC fs/proc/array.o
CC fs/quota/kqid.o
CC lib/lz4/lz4_decompress.o
AR arch/x86/kernel/cpu/microcode/built-in.a
CC lib/zstd/zstd_decompress_module.o
CC kernel/locking/mutex.o
CC arch/x86/kernel/cpu/mtrr/cyrix.o
AR sound/firewire/built-in.a
AR sound/usb/misc/built-in.a
AR sound/sparc/built-in.a
CC block/blk-map.o
AR sound/usb/usx2y/built-in.a
AR drivers/pci/controller/dwc/built-in.a
AR sound/usb/caiaq/built-in.a
CC sound/pci/hda/hda_controller.o
AR drivers/pci/controller/mobiveil/built-in.a
AR sound/usb/6fire/built-in.a
CC block/blk-merge.o
AR drivers/pci/controller/plda/built-in.a
AR sound/usb/hiface/built-in.a
AR drivers/pci/controller/built-in.a
CC block/blk-timeout.o
AR sound/usb/bcd2000/built-in.a
AR sound/usb/built-in.a
CC drivers/acpi/acpica/dsopcode.o
CC drivers/pnp/pnpacpi/core.o
CC lib/xz/xz_dec_syms.o
CC drivers/pci/hotplug/acpi_pcihp.o
CC lib/crypto/mpi/mpi-bit.o
CC net/sched/sch_mq.o
CC net/sched/sch_frag.o
AR drivers/video/built-in.a
CC lib/dim/dim.o
AR sound/core/seq/built-in.a
CC sound/pci/hda/hda_proc.o
CC sound/core/device.o
CC security/selinux/nlmsgtab.o
CC security/selinux/netif.o
AR sound/spi/built-in.a
CC security/selinux/netnode.o
AR drivers/amba/built-in.a
CC arch/x86/kernel/kprobes/opt.o
CC lib/zstd/decompress/huf_decompress.o
CC lib/lzo/lzo1x_decompress_safe.o
CC drivers/pnp/pnpacpi/rsparser.o
CC arch/x86/kernel/apic/init.o
CC fs/quota/netlink.o
CC lib/xz/xz_dec_stream.o
CC security/keys/sysctl.o
CC crypto/aead.o
CC arch/x86/kernel/cpu/mce/amd.o
CC security/keys/keyctl_pkey.o
CC io_uring/rw.o
CC drivers/acpi/acpica/dspkginit.o
CC arch/x86/pci/early.o
CC arch/x86/kernel/ebda.o
CC arch/x86/kernel/apic/hw_nmi.o
CC arch/x86/mm/mmap.o
CC lib/dim/net_dim.o
CC arch/x86/kernel/cpu/mtrr/centaur.o
AR drivers/pci/switch/built-in.a
AR sound/pci/korg1212/built-in.a
CC net/sched/sch_api.o
CC lib/zstd/decompress/zstd_ddict.o
CC sound/core/info.o
CC lib/crypto/mpi/mpi-cmp.o
CC net/netlink/af_netlink.o
AR sound/parisc/built-in.a
CC kernel/locking/semaphore.o
CC kernel/locking/rwsem.o
CC arch/x86/kernel/cpu/mce/threshold.o
AR drivers/pci/hotplug/built-in.a
CC drivers/pci/access.o
CC net/core/gen_estimator.o
CC drivers/acpi/x86/apple.o
AR lib/lzo/built-in.a
CC security/security.o
CC arch/x86/events/intel/p6.o
CC fs/proc/fd.o
CC drivers/acpi/acpica/dsutils.o
CC lib/xz/xz_dec_lzma2.o
CC fs/proc/proc_tty.o
AR sound/pci/mixart/built-in.a
CC sound/core/isadma.o
CC sound/core/vmaster.o
CC arch/x86/kernel/cpu/mtrr/legacy.o
AR drivers/clk/actions/built-in.a
AR security/keys/built-in.a
AR drivers/clk/analogbits/built-in.a
CC drivers/dma/dw/core.o
CC drivers/pnp/core.o
AR drivers/clk/bcm/built-in.a
AR drivers/clk/imgtec/built-in.a
AR drivers/soc/apple/built-in.a
CC arch/x86/mm/pgtable.o
CC arch/x86/kernel/platform-quirks.o
AR arch/x86/kernel/kprobes/built-in.a
AR drivers/clk/imx/built-in.a
AR drivers/soc/aspeed/built-in.a
CC arch/x86/pci/bus_numa.o
CC arch/x86/pci/amd_bus.o
AR drivers/soc/bcm/built-in.a
AR drivers/clk/ingenic/built-in.a
AR drivers/clk/mediatek/built-in.a
AR drivers/soc/fsl/built-in.a
AR drivers/soc/fujitsu/built-in.a
AR drivers/clk/microchip/built-in.a
AR drivers/soc/hisilicon/built-in.a
AR lib/lz4/built-in.a
AR sound/pcmcia/vx/built-in.a
AR drivers/soc/imx/built-in.a
AR drivers/clk/mstar/built-in.a
AR drivers/soc/ixp4xx/built-in.a
CC security/selinux/netport.o
AR sound/pcmcia/pdaudiocf/built-in.a
CC sound/pci/hda/hda_hwdep.o
AR sound/pcmcia/built-in.a
AR drivers/clk/mvebu/built-in.a
AR drivers/soc/loongson/built-in.a
AR fs/quota/built-in.a
CC security/lsm_audit.o
AR drivers/clk/ralink/built-in.a
AR drivers/soc/mediatek/built-in.a
CC lib/dim/rdma_dim.o
AR drivers/soc/microchip/built-in.a
AR drivers/clk/renesas/built-in.a
AR drivers/clk/socfpga/built-in.a
AR drivers/soc/nuvoton/built-in.a
CC lib/crypto/mpi/mpi-sub-ui.o
AR drivers/clk/sophgo/built-in.a
AR drivers/soc/pxa/built-in.a
AR drivers/clk/sprd/built-in.a
AR drivers/soc/amlogic/built-in.a
AR drivers/clk/starfive/built-in.a
AR drivers/soc/qcom/built-in.a
CC crypto/geniv.o
AR drivers/pnp/pnpacpi/built-in.a
CC drivers/acpi/x86/cmos_rtc.o
AR drivers/soc/renesas/built-in.a
AR drivers/clk/sunxi-ng/built-in.a
AR sound/mips/built-in.a
AR sound/soc/built-in.a
AR drivers/soc/rockchip/built-in.a
AR drivers/clk/ti/built-in.a
CC arch/x86/mm/physaddr.o
AR sound/pci/nm256/built-in.a
AR drivers/soc/sunxi/built-in.a
AR drivers/clk/versatile/built-in.a
CC drivers/dma/hsu/hsu.o
CC crypto/lskcipher.o
CC drivers/dma/dw/dw.o
CC arch/x86/kernel/apic/io_apic.o
AR drivers/clk/xilinx/built-in.a
AR drivers/soc/ti/built-in.a
CC arch/x86/events/rapl.o
AR drivers/clk/built-in.a
AR drivers/soc/versatile/built-in.a
AR drivers/soc/xilinx/built-in.a
AR drivers/soc/built-in.a
CC drivers/acpi/acpica/dswexec.o
AR net/bpf/built-in.a
CC arch/x86/kernel/apic/msi.o
CC drivers/dma/dw/idma32.o
CC drivers/acpi/tables.o
CC block/blk-lib.o
CC net/ethtool/ioctl.o
CC security/device_cgroup.o
AR arch/x86/kernel/cpu/mtrr/built-in.a
CC net/core/net_namespace.o
CC arch/x86/mm/tlb.o
CC net/netlink/genetlink.o
CC net/sched/sch_blackhole.o
CC mm/folio-compat.o
CC kernel/locking/percpu-rwsem.o
CC crypto/skcipher.o
AR lib/dim/built-in.a
CC lib/zstd/decompress/zstd_decompress.o
CC drivers/pci/bus.o
CC lib/zstd/decompress/zstd_decompress_block.o
CC drivers/virtio/virtio.o
CC arch/x86/events/intel/pt.o
CC lib/xz/xz_dec_bcj.o
CC sound/core/ctljack.o
CC mm/readahead.o
CC fs/proc/cmdline.o
CC drivers/pnp/card.o
CC drivers/acpi/acpica/dswload.o
CC drivers/acpi/acpica/dswload2.o
CC arch/x86/mm/cpu_entry_area.o
CC lib/crypto/mpi/mpi-div.o
CC block/blk-mq.o
CC sound/pci/hda/hda_intel.o
CC io_uring/net.o
AR arch/x86/pci/built-in.a
CC drivers/acpi/x86/lpss.o
CC lib/zstd/zstd_common_module.o
CC drivers/tty/vt/vt_ioctl.o
AR arch/x86/kernel/cpu/mce/built-in.a
CC arch/x86/kernel/cpu/topology_common.o
CC block/blk-mq-tag.o
CC net/ethtool/common.o
CC sound/core/jack.o
CC fs/devpts/inode.o
CC kernel/locking/spinlock.o
AR drivers/dma/hsu/built-in.a
AR lib/xz/built-in.a
CC fs/netfs/buffered_read.o
CC fs/ext4/balloc.o
CC kernel/locking/osq_lock.o
CC fs/jbd2/transaction.o
CC fs/proc/consoles.o
CC drivers/dma/dw/acpi.o
CC drivers/acpi/acpica/dswscope.o
CC drivers/acpi/acpica/dswstate.o
CC fs/ramfs/inode.o
CC fs/ramfs/file-mmu.o
CC kernel/power/qos.o
CC fs/hugetlbfs/inode.o
CC net/ethtool/netlink.o
CC security/selinux/status.o
CC crypto/seqiv.o
CC drivers/virtio/virtio_ring.o
CC drivers/pci/probe.o
CC net/ethtool/bitset.o
CC drivers/pnp/driver.o
CC net/netfilter/core.o
CC drivers/pci/host-bridge.o
CC arch/x86/kernel/cpu/topology_ext.o
CC fs/ext4/bitmap.o
CC lib/crypto/mpi/mpi-mod.o
CC fs/ext4/block_validity.o
CC arch/x86/kernel/apic/probe_32.o
CC kernel/locking/qspinlock.o
CC arch/x86/mm/maccess.o
CC fs/netfs/buffered_write.o
CC net/sched/cls_api.o
CC drivers/acpi/x86/s2idle.o
CC drivers/acpi/acpica/evevent.o
CC mm/swap.o
CC fs/netfs/direct_read.o
CC fs/proc/cpuinfo.o
CC sound/core/hwdep.o
CC arch/x86/mm/pgprot.o
CC net/core/secure_seq.o
AR fs/devpts/built-in.a
AR drivers/dma/dw/built-in.a
CC arch/x86/kernel/cpu/topology_amd.o
CC net/netfilter/nf_log.o
AR drivers/dma/idxd/built-in.a
AR drivers/dma/amd/built-in.a
AR drivers/dma/mediatek/built-in.a
CC kernel/printk/printk.o
AR drivers/dma/qcom/built-in.a
CC arch/x86/events/intel/uncore.o
AR drivers/dma/stm32/built-in.a
CC crypto/echainiv.o
AR drivers/dma/ti/built-in.a
AR drivers/dma/xilinx/built-in.a
CC drivers/dma/dmaengine.o
CC sound/core/timer.o
AR kernel/sched/built-in.a
CC kernel/locking/rtmutex_api.o
CC drivers/pnp/resource.o
CC net/netfilter/nf_queue.o
CC drivers/tty/vt/vc_screen.o
AR arch/x86/kernel/apic/built-in.a
AR fs/ramfs/built-in.a
CC lib/crypto/mpi/mpi-mul.o
CC fs/proc/devices.o
CC mm/truncate.o
CC drivers/acpi/x86/utils.o
CC drivers/acpi/acpica/evgpe.o
CC drivers/acpi/osi.o
CC fs/jbd2/commit.o
CC net/netlink/policy.o
CC lib/fonts/fonts.o
CC drivers/char/hw_random/core.o
CC net/netfilter/nf_sockopt.o
CC arch/x86/kernel/cpu/common.o
CC drivers/acpi/x86/blacklist.o
CC kernel/power/main.o
CC arch/x86/mm/pgtable_32.o
AR sound/pci/hda/built-in.a
AR sound/pci/oxygen/built-in.a
CC security/selinux/ss/ebitmap.o
AR sound/pci/pcxhr/built-in.a
CC arch/x86/kernel/cpu/rdrand.o
AR sound/pci/riptide/built-in.a
AR sound/pci/rme9652/built-in.a
AR sound/pci/trident/built-in.a
AR sound/pci/ymfpci/built-in.a
AR sound/pci/vx222/built-in.a
AR sound/pci/built-in.a
CC arch/x86/kernel/cpu/match.o
CC arch/x86/kernel/cpu/bugs.o
CC arch/x86/kernel/cpu/aperfmperf.o
CC block/blk-stat.o
CC net/netfilter/utils.o
CC drivers/acpi/acpica/evgpeblk.o
CC lib/fonts/font_8x16.o
CC crypto/ahash.o
CC net/netfilter/nfnetlink.o
CC lib/crypto/mpi/mpih-cmp.o
CC drivers/acpi/acpica/evgpeinit.o
CC drivers/acpi/acpica/evgpeutil.o
CC fs/proc/interrupts.o
CC drivers/acpi/acpica/evglock.o
CC drivers/char/hw_random/intel-rng.o
CC io_uring/poll.o
CC fs/netfs/direct_write.o
AR drivers/acpi/x86/built-in.a
AR fs/hugetlbfs/built-in.a
CC drivers/char/agp/backend.o
CC arch/x86/events/intel/uncore_nhmex.o
CC drivers/virtio/virtio_anchor.o
CC kernel/locking/qrwlock.o
CC lib/zstd/common/debug.o
CC lib/zstd/common/entropy_common.o
CC drivers/tty/vt/selection.o
CC arch/x86/kernel/process_32.o
AR lib/fonts/built-in.a
CC net/ethtool/strset.o
CC lib/crypto/mpi/mpih-div.o
CC fs/ext4/dir.o
CC mm/vmscan.o
CC drivers/pci/remove.o
CC kernel/irq/irqdesc.o
CC net/core/flow_dissector.o
CC net/ethtool/linkinfo.o
CC lib/zstd/common/error_private.o
CC drivers/pnp/manager.o
AR net/netlink/built-in.a
CC drivers/pnp/support.o
CC kernel/irq/handle.o
CC drivers/acpi/acpica/evhandler.o
AR sound/atmel/built-in.a
CC lib/zstd/common/fse_decompress.o
CC arch/x86/mm/iomap_32.o
CC drivers/char/mem.o
CC fs/netfs/iterator.o
CC arch/x86/events/intel/uncore_snb.o
CC net/core/sysctl_net_core.o
CC drivers/pci/pci.o
CC fs/proc/loadavg.o
CC drivers/tty/vt/keyboard.o
CC drivers/dma/virt-dma.o
CC drivers/char/random.o
CC kernel/power/console.o
AR kernel/locking/built-in.a
CC drivers/pnp/interface.o
CC fs/fat/cache.o
CC fs/isofs/namei.o
CC drivers/char/hw_random/amd-rng.o
CC fs/jbd2/recovery.o
CC lib/crypto/gf128mul.o
CC drivers/virtio/virtio_pci_modern_dev.o
CC drivers/acpi/acpica/evmisc.o
CC sound/core/hrtimer.o
CC io_uring/eventfd.o
CC drivers/char/agp/generic.o
CC drivers/tty/hvc/hvc_console.o
CC lib/zstd/common/zstd_common.o
CC lib/argv_split.o
CC security/selinux/ss/hashtab.o
CC arch/x86/mm/hugetlbpage.o
CC drivers/char/misc.o
CC drivers/pnp/quirks.o
CC drivers/pnp/system.o
AR lib/zstd/built-in.a
CC crypto/shash.o
CC drivers/acpi/osl.o
CC fs/proc/meminfo.o
CC drivers/char/virtio_console.o
CC fs/fat/dir.o
CC kernel/irq/manage.o
CC block/blk-mq-sysfs.o
CC net/core/dev.o
CC lib/crypto/mpi/mpih-mul.o
CC net/netfilter/nfnetlink_log.o
CC drivers/acpi/acpica/evregion.o
CC drivers/dma/acpi-dma.o
CC kernel/power/process.o
CC fs/ext4/ext4_jbd2.o
CC drivers/tty/serial/8250/8250_core.o
CC sound/core/pcm.o
CC drivers/tty/serial/serial_core.o
AR drivers/iommu/amd/built-in.a
CC fs/isofs/inode.o
CC drivers/char/hw_random/geode-rng.o
AR drivers/iommu/intel/built-in.a
CC net/core/dev_addr_lists.o
CC lib/bug.o
AR drivers/iommu/arm/arm-smmu/built-in.a
CC security/selinux/ss/symtab.o
AR drivers/iommu/arm/arm-smmu-v3/built-in.a
AR drivers/iommu/arm/built-in.a
CC fs/netfs/locking.o
AR drivers/iommu/iommufd/built-in.a
CC io_uring/uring_cmd.o
AR drivers/iommu/riscv/built-in.a
CC net/ethtool/linkmodes.o
CC drivers/iommu/iommu.o
CC arch/x86/events/intel/uncore_snbep.o
CC arch/x86/kernel/cpu/cpuid-deps.o
CC lib/buildid.o
CC io_uring/openclose.o
CC arch/x86/events/intel/uncore_discovery.o
CC kernel/printk/printk_safe.o
CC fs/fat/fatent.o
CC security/selinux/ss/sidtab.o
CC net/sched/act_api.o
CC arch/x86/mm/dump_pagetables.o
CC drivers/virtio/virtio_pci_legacy_dev.o
CC kernel/printk/nbcon.o
CC drivers/acpi/acpica/evrgnini.o
CC drivers/tty/vt/vt.o
CC drivers/tty/serial/serial_base_bus.o
CC fs/jbd2/checkpoint.o
AR drivers/pnp/built-in.a
CC fs/proc/stat.o
CC fs/proc/uptime.o
CC arch/x86/kernel/cpu/umwait.o
AR drivers/tty/hvc/built-in.a
CC arch/x86/events/msr.o
CC drivers/iommu/iommu-traces.o
CC block/blk-mq-cpumap.o
CC drivers/char/agp/isoch.o
CC drivers/char/agp/amd64-agp.o
AR drivers/dma/built-in.a
CC fs/isofs/dir.o
CC lib/crypto/mpi/mpi-pow.o
CC drivers/char/hw_random/via-rng.o
CC crypto/akcipher.o
CC net/ethtool/rss.o
CC drivers/acpi/acpica/evsci.o
CC fs/isofs/util.o
CC sound/core/pcm_native.o
CC fs/netfs/main.o
CC drivers/tty/serial/8250/8250_platform.o
CC drivers/virtio/virtio_pci_modern.o
CC drivers/tty/serial/serial_ctrl.o
AR drivers/gpu/host1x/built-in.a
CC kernel/power/suspend.o
CC crypto/sig.o
AR drivers/char/hw_random/built-in.a
CC drivers/iommu/iommu-sysfs.o
CC drivers/iommu/dma-iommu.o
CC arch/x86/mm/highmem_32.o
CC mm/shrinker.o
CC kernel/printk/printk_ringbuffer.o
CC drivers/acpi/acpica/evxface.o
CC drivers/virtio/virtio_pci_common.o
AR drivers/gpu/drm/tests/built-in.a
AR drivers/gpu/drm/arm/built-in.a
CC fs/proc/util.o
AR drivers/gpu/drm/clients/built-in.a
CC arch/x86/events/intel/cstate.o
CC drivers/gpu/drm/display/drm_display_helper_mod.o
CC drivers/gpu/drm/display/drm_dp_dual_mode_helper.o
CC lib/crypto/blake2s.o
MKCAP arch/x86/kernel/cpu/capflags.c
AR drivers/tty/ipwireless/built-in.a
CC drivers/iommu/iova.o
CC kernel/irq/spurious.o
CC kernel/irq/resend.o
CC drivers/char/hpet.o
CC block/blk-mq-sched.o
CC io_uring/sqpoll.o
CC net/netfilter/nf_conntrack_core.o
CC io_uring/xattr.o
CC drivers/tty/serial/8250/8250_pnp.o
CC lib/crypto/blake2s-generic.o
CC lib/crypto/mpi/mpiutil.o
CC fs/jbd2/revoke.o
CC drivers/char/agp/intel-agp.o
CC fs/fat/file.o
CC fs/isofs/rock.o
CC security/selinux/ss/avtab.o
CC drivers/connector/cn_queue.o
CC drivers/base/power/sysfs.o
CC fs/ext4/extents.o
CC drivers/acpi/acpica/evxfevnt.o
CC crypto/kpp.o
CC drivers/acpi/acpica/evxfgpe.o
CC drivers/gpu/drm/ttm/ttm_tt.o
CC fs/proc/version.o
CC drivers/gpu/drm/ttm/ttm_bo.o
CC net/core/dst.o
CC net/ethtool/linkstate.o
CC drivers/tty/tty_io.o
AR arch/x86/mm/built-in.a
CC drivers/tty/serial/8250/8250_rsa.o
CC kernel/irq/chip.o
CC drivers/char/nvram.o
CC kernel/printk/sysctl.o
CC drivers/connector/connector.o
CC sound/core/pcm_lib.o
CC mm/shmem.o
CC drivers/gpu/drm/ttm/ttm_bo_util.o
CC arch/x86/kernel/cpu/powerflags.o
CC drivers/pci/pci-driver.o
CC fs/fat/inode.o
CC sound/hda/hda_bus_type.o
CC drivers/gpu/drm/display/drm_dp_helper.o
CC drivers/virtio/virtio_pci_legacy.o
AR lib/crypto/mpi/built-in.a
CC lib/crypto/sha1.o
CC drivers/acpi/acpica/evxfregn.o
CC mm/util.o
CC drivers/base/power/generic_ops.o
CC drivers/base/power/common.o
CC drivers/base/power/qos.o
CC net/sched/sch_fifo.o
CC kernel/power/hibernate.o
AR kernel/printk/built-in.a
CC drivers/virtio/virtio_pci_admin_legacy_io.o
CC fs/fat/misc.o
CC fs/proc/softirqs.o
CC security/selinux/ss/policydb.o
CC drivers/char/agp/intel-gtt.o
CC fs/jbd2/journal.o
CC drivers/block/loop.o
CC block/ioctl.o
CC fs/isofs/export.o
ASN.1 crypto/rsapubkey.asn1.[ch]
ASN.1 crypto/rsaprivkey.asn1.[ch]
CC crypto/rsa.o
AR arch/x86/events/intel/built-in.a
CC drivers/tty/serial/8250/8250_port.o
AR arch/x86/events/built-in.a
CC drivers/block/virtio_blk.o
CC drivers/acpi/acpica/exconcat.o
CC lib/crypto/sha256.o
CC drivers/connector/cn_proc.o
CC drivers/gpu/drm/display/drm_dp_mst_topology.o
COPY drivers/tty/vt/defkeymap.c
AR drivers/iommu/built-in.a
CC fs/proc/namespaces.o
CC drivers/gpu/drm/i915/i915_config.o
CC security/selinux/ss/services.o
CC fs/netfs/misc.o
CC drivers/tty/serial/8250/8250_dma.o
CC sound/hda/hdac_bus.o
CC drivers/base/power/runtime.o
CC drivers/tty/n_tty.o
CC kernel/irq/dummychip.o
AR drivers/gpu/drm/renesas/rcar-du/built-in.a
AR drivers/gpu/drm/renesas/rz-du/built-in.a
CC drivers/pci/search.o
AR drivers/gpu/drm/renesas/built-in.a
CC net/ethtool/debug.o
CC drivers/pci/rom.o
CC drivers/gpu/drm/i915/i915_driver.o
CC io_uring/nop.o
CC drivers/acpi/acpica/exconfig.o
CC drivers/virtio/virtio_input.o
CC net/ipv4/netfilter/nf_defrag_ipv4.o
CC drivers/virtio/virtio_dma_buf.o
CC drivers/tty/vt/consolemap.o
CC drivers/gpu/drm/ttm/ttm_bo_vm.o
CC net/sched/cls_cgroup.o
CC fs/isofs/joliet.o
CC drivers/acpi/utils.o
AR lib/crypto/built-in.a
CC lib/clz_tab.o
CC crypto/rsa_helper.o
CC lib/cmdline.o
CC net/sched/ematch.o
CC kernel/irq/devres.o
CC drivers/base/power/wakeirq.o
CC net/netfilter/nf_conntrack_standalone.o
AR drivers/char/agp/built-in.a
AR drivers/char/built-in.a
CC lib/cpumask.o
CC lib/ctype.o
CC block/genhd.o
CC drivers/acpi/acpica/exconvrt.o
AR drivers/gpu/drm/omapdrm/built-in.a
CC net/xfrm/xfrm_policy.o
CC fs/netfs/objects.o
CC fs/proc/self.o
CC drivers/gpu/drm/display/drm_dsc_helper.o
CC mm/mmzone.o
CC net/unix/af_unix.o
CC sound/hda/hdac_device.o
CC crypto/rsa-pkcs1pad.o
CC fs/fat/nfs.o
CC kernel/power/snapshot.o
CC drivers/acpi/acpica/excreate.o
CC net/ipv6/netfilter/ip6_tables.o
CC sound/core/pcm_misc.o
CC net/ipv4/route.o
CC drivers/pci/setup-res.o
AR drivers/connector/built-in.a
CC fs/isofs/compress.o
CC kernel/irq/autoprobe.o
CC drivers/tty/serial/serial_port.o
CC io_uring/fs.o
HOSTCC drivers/tty/vt/conmakehash
AR drivers/virtio/built-in.a
CC net/ipv6/af_inet6.o
CC drivers/gpu/drm/ttm/ttm_module.o
CC arch/x86/kernel/cpu/topology.o
CC net/ethtool/wol.o
CC net/xfrm/xfrm_state.o
AR drivers/block/built-in.a
AR drivers/gpu/drm/tilcdc/built-in.a
CC kernel/rcu/update.o
AR kernel/livepatch/built-in.a
CC drivers/base/power/main.o
CC net/ipv4/inetpeer.o
CC io_uring/splice.o
CC arch/x86/kernel/signal.o
CC lib/dec_and_lock.o
CC drivers/tty/vt/defkeymap.o
CC fs/proc/thread_self.o
CC drivers/acpi/acpica/exdebug.o
CC kernel/irq/irqdomain.o
CC net/ipv4/protocol.o
CC net/ipv4/netfilter/nf_reject_ipv4.o
CC net/ipv6/netfilter/ip6table_filter.o
CC lib/decompress.o
CONMK drivers/tty/vt/consolemap_deftbl.c
CC drivers/tty/vt/consolemap_deftbl.o
CC block/ioprio.o
CC security/selinux/ss/conditional.o
AR drivers/tty/vt/built-in.a
CC net/core/netevent.o
CC lib/decompress_bunzip2.o
CC crypto/rsassa-pkcs1.o
AR net/sched/built-in.a
CC sound/core/pcm_memory.o
CC lib/decompress_inflate.o
CC drivers/gpu/drm/ttm/ttm_execbuf_util.o
CC fs/fat/namei_vfat.o
CC kernel/power/swap.o
CC drivers/pci/irq.o
CC kernel/dma/mapping.o
CC drivers/acpi/acpica/exdump.o
CC fs/netfs/read_collect.o
CC drivers/tty/serial/8250/8250_dwlib.o
CC net/netfilter/nf_conntrack_expect.o
AR drivers/gpu/vga/built-in.a
CC drivers/gpu/drm/i915/i915_drm_client.o
CC drivers/acpi/acpica/exfield.o
AR fs/isofs/built-in.a
CC net/ipv4/netfilter/ip_tables.o
CC mm/vmstat.o
CC sound/hda/hdac_sysfs.o
CC fs/proc/proc_sysctl.o
CC net/core/neighbour.o
CC net/ipv6/anycast.o
CC io_uring/sync.o
CC net/core/rtnetlink.o
CC net/ethtool/features.o
CC net/core/utils.o
CC fs/proc/proc_net.o
AR fs/jbd2/built-in.a
CC drivers/tty/serial/earlycon.o
CC drivers/tty/serial/8250/8250_pcilib.o
CC drivers/acpi/acpica/exfldio.o
CC arch/x86/kernel/signal_32.o
CC drivers/gpu/drm/ttm/ttm_range_manager.o
CC lib/decompress_unlz4.o
CC crypto/acompress.o
CC fs/proc/kcore.o
CC block/badblocks.o
CC fs/proc/vmcore.o
CC drivers/pci/vpd.o
CC sound/core/memalloc.o
CC block/blk-rq-qos.o
CC net/core/link_watch.o
CC kernel/irq/proc.o
CC net/unix/garbage.o
CC kernel/dma/direct.o
CC net/ipv6/netfilter/ip6table_mangle.o
CC arch/x86/kernel/traps.o
CC sound/hda/hdac_regmap.o
CC net/netfilter/nf_conntrack_helper.o
CC security/selinux/ss/mls.o
CC drivers/acpi/acpica/exmisc.o
CC lib/decompress_unlzma.o
CC drivers/base/power/wakeup.o
CC drivers/tty/serial/8250/8250_early.o
CC drivers/base/firmware_loader/builtin/main.o
CC io_uring/msg_ring.o
CC drivers/gpu/drm/display/drm_hdcp_helper.o
CC fs/netfs/read_pgpriv2.o
CC drivers/gpu/drm/ttm/ttm_resource.o
CC drivers/gpu/drm/i915/i915_getparam.o
CC kernel/power/user.o
CC drivers/base/firmware_loader/main.o
CC fs/fat/namei_msdos.o
CC net/ethtool/privflags.o
CC fs/ext4/extents_status.o
CC fs/netfs/read_retry.o
CC crypto/scompress.o
CC security/selinux/ss/context.o
CC drivers/acpi/acpica/exmutex.o
CC net/ipv6/ip6_output.o
CC drivers/pci/setup-bus.o
AR drivers/base/firmware_loader/builtin/built-in.a
CC io_uring/advise.o
CC net/ipv6/netfilter/nf_defrag_ipv6_hooks.o
CC kernel/irq/migration.o
CC drivers/tty/tty_ioctl.o
CC drivers/gpu/drm/display/drm_hdmi_helper.o
CC block/disk-events.o
CC mm/backing-dev.o
CC arch/x86/kernel/cpu/proc.o
CC sound/core/pcm_timer.o
CC net/netfilter/nf_conntrack_proto.o
CC drivers/tty/serial/8250/8250_exar.o
CC fs/proc/kmsg.o
CC net/ipv4/netfilter/iptable_filter.o
CC drivers/misc/eeprom/eeprom_93cx6.o
CC sound/hda/hdac_controller.o
AR drivers/misc/cb710/built-in.a
CC drivers/acpi/acpica/exnames.o
CC drivers/gpu/drm/virtio/virtgpu_drv.o
CC lib/decompress_unlzo.o
CC drivers/acpi/reboot.o
CC kernel/entry/common.o
CC kernel/power/poweroff.o
CC kernel/rcu/sync.o
CC kernel/irq/cpuhotplug.o
CC kernel/rcu/srcutree.o
CC net/unix/sysctl_net_unix.o
CC kernel/module/main.o
AR drivers/misc/lis3lv02d/built-in.a
CC sound/hda/hdac_stream.o
CC net/netfilter/nf_conntrack_proto_generic.o
CC net/netfilter/nf_conntrack_proto_tcp.o
CC drivers/gpu/drm/ttm/ttm_pool.o
CC fs/proc/page.o
CC arch/x86/kernel/cpu/feat_ctl.o
AR drivers/misc/eeprom/built-in.a
CC net/ipv4/netfilter/iptable_mangle.o
CC drivers/gpu/drm/i915/i915_ioctl.o
CC drivers/gpu/drm/display/drm_scdc_helper.o
CC kernel/dma/ops_helpers.o
AR drivers/misc/cardreader/built-in.a
CC drivers/acpi/nvs.o
CC drivers/acpi/acpica/exoparg1.o
AR drivers/base/firmware_loader/built-in.a
AR drivers/misc/keba/built-in.a
CC drivers/gpu/drm/i915/i915_irq.o
AR drivers/misc/built-in.a
CC sound/core/seq_device.o
AR kernel/power/built-in.a
CC drivers/gpu/drm/i915/i915_mitigations.o
CC net/ipv4/netfilter/ipt_REJECT.o
AR fs/fat/built-in.a
CC [M] net/ipv4/netfilter/iptable_nat.o
CC crypto/algboss.o
CC io_uring/epoll.o
CC block/blk-ia-ranges.o
CC net/ethtool/rings.o
CC drivers/base/regmap/regmap.o
CC kernel/module/strict_rwx.o
CC net/xfrm/xfrm_hash.o
CC fs/netfs/write_collect.o
CC security/selinux/netlabel.o
CC kernel/module/kmod.o
CC drivers/base/power/wakeup_stats.o
CC lib/decompress_unxz.o
CC drivers/base/regmap/regcache.o
CC drivers/gpu/drm/virtio/virtgpu_kms.o
CC kernel/dma/remap.o
CC drivers/tty/serial/8250/8250_lpss.o
CC arch/x86/kernel/cpu/intel.o
CC crypto/testmgr.o
CC mm/mm_init.o
CC kernel/irq/pm.o
CC drivers/acpi/acpica/exoparg2.o
CC net/ipv6/netfilter/nf_conntrack_reasm.o
CC kernel/rcu/tree.o
CC drivers/pci/vc.o
AR sound/core/built-in.a
CC net/netfilter/nf_conntrack_proto_udp.o
CC drivers/base/power/trace.o
CC io_uring/statx.o
AR fs/proc/built-in.a
CC net/xfrm/xfrm_input.o
CC net/xfrm/xfrm_output.o
AR net/unix/built-in.a
CC arch/x86/kernel/cpu/tsx.o
CC net/ethtool/channels.o
CC net/packet/af_packet.o
CC kernel/entry/syscall_user_dispatch.o
CC lib/decompress_unzstd.o
AR drivers/gpu/drm/display/built-in.a
CC net/ipv4/ip_input.o
CC block/early-lookup.o
CC sound/hda/array.o
CC mm/percpu.o
CC drivers/gpu/drm/ttm/ttm_device.o
CC fs/nfs/client.o
CC net/ethtool/coalesce.o
CC fs/ext4/file.o
CC drivers/acpi/acpica/exoparg3.o
CC net/ipv6/netfilter/nf_reject_ipv6.o
CC fs/nfs/dir.o
AR kernel/dma/built-in.a
CC kernel/time/time.o
CC drivers/tty/serial/8250/8250_mid.o
CC drivers/acpi/wakeup.o
AR drivers/base/test/built-in.a
CC drivers/pci/mmap.o
CC crypto/cmac.o
CC net/ethtool/pause.o
CC net/ipv6/netfilter/ip6t_ipv6header.o
CC fs/netfs/write_issue.o
CC net/netfilter/nf_conntrack_proto_icmp.o
CC io_uring/timeout.o
CC drivers/gpu/drm/virtio/virtgpu_gem.o
AR net/ipv4/netfilter/built-in.a
CC arch/x86/kernel/cpu/intel_epb.o
CC drivers/gpu/drm/virtio/virtgpu_vram.o
CC kernel/irq/msi.o
CC lib/dump_stack.o
CC drivers/acpi/acpica/exoparg6.o
CC drivers/tty/serial/8250/8250_pci.o
AR kernel/entry/built-in.a
CC drivers/gpu/drm/i915/i915_module.o
CC block/bounce.o
CC io_uring/fdinfo.o
CC fs/exportfs/expfs.o
AR security/selinux/built-in.a
AR drivers/base/power/built-in.a
AR security/built-in.a
CC kernel/module/tree_lookup.o
AR drivers/gpu/drm/imx/built-in.a
CC fs/nfs/file.o
CC net/core/filter.o
CC arch/x86/kernel/idt.o
CC sound/hda/hdmi_chmap.o
CC block/bsg.o
CC drivers/acpi/acpica/exprep.o
CC drivers/base/regmap/regcache-rbtree.o
CC crypto/hmac.o
CC drivers/gpu/drm/ttm/ttm_sys_manager.o
CC arch/x86/kernel/cpu/amd.o
CC drivers/pci/devres.o
CC kernel/rcu/rcu_segcblist.o
CC lib/earlycpio.o
CC lib/extable.o
CC fs/lockd/clntlock.o
CC fs/lockd/clntproc.o
CC net/core/sock_diag.o
CC drivers/base/component.o
CC drivers/base/core.o
CC drivers/base/bus.o
AR drivers/mfd/built-in.a
CC drivers/acpi/acpica/exregion.o
CC kernel/irq/affinity.o
CC drivers/gpu/drm/virtio/virtgpu_display.o
CC fs/ext4/fsmap.o
CC kernel/time/timer.o
CC block/blk-cgroup.o
CC fs/nfs/getroot.o
CC kernel/module/kallsyms.o
CC drivers/base/regmap/regcache-flat.o
AR fs/exportfs/built-in.a
CC drivers/pci/proc.o
CC drivers/gpu/drm/ttm/ttm_agp_backend.o
CC net/ethtool/eee.o
CC net/xfrm/xfrm_sysctl.o
CC net/ipv4/ip_fragment.o
CC lib/flex_proportions.o
CC drivers/acpi/sleep.o
AR sound/x86/built-in.a
AR sound/xen/built-in.a
CC drivers/base/dd.o
CC fs/lockd/clntxdr.o
CC io_uring/cancel.o
CC net/netfilter/nf_conntrack_extend.o
AR drivers/gpu/drm/i2c/built-in.a
CC arch/x86/kernel/cpu/hygon.o
AR net/dsa/built-in.a
CC crypto/crypto_null.o
CC kernel/module/procfs.o
CC net/ipv6/netfilter/ip6t_REJECT.o
CC fs/ext4/fsync.o
AR fs/netfs/built-in.a
CC net/ethtool/tsinfo.o
CC kernel/futex/core.o
CC drivers/acpi/acpica/exresnte.o
CC drivers/acpi/device_sysfs.o
CC kernel/cgroup/cgroup.o
CC kernel/irq/matrix.o
CC drivers/gpu/drm/i915/i915_params.o
CC sound/hda/trace.o
CC kernel/cgroup/rstat.o
CC crypto/md5.o
CC arch/x86/kernel/cpu/centaur.o
CC lib/idr.o
CC drivers/base/syscore.o
CC drivers/base/regmap/regcache-maple.o
CC drivers/acpi/acpica/exresolv.o
CC drivers/tty/serial/8250/8250_pericom.o
CC drivers/gpu/drm/virtio/virtgpu_vq.o
CC kernel/futex/syscalls.o
CC drivers/acpi/device_pm.o
AR drivers/gpu/drm/ttm/built-in.a
CC io_uring/waitid.o
AR drivers/nfc/built-in.a
CC drivers/gpu/drm/virtio/virtgpu_fence.o
CC net/sunrpc/auth_gss/auth_gss.o
CC block/blk-ioprio.o
CC kernel/module/sysfs.o
CC io_uring/register.o
CC drivers/pci/pci-sysfs.o
CC arch/x86/kernel/cpu/transmeta.o
CC fs/ext4/hash.o
CC net/netfilter/nf_conntrack_acct.o
CC crypto/sha256_generic.o
CC lib/iomem_copy.o
CC drivers/acpi/acpica/exresop.o
CC kernel/time/hrtimer.o
CC mm/slab_common.o
CC drivers/gpu/drm/virtio/virtgpu_object.o
CC net/ipv6/ip6_input.o
CC drivers/gpu/drm/virtio/virtgpu_debugfs.o
CC lib/irq_regs.o
AR drivers/gpu/drm/panel/built-in.a
CC lib/is_single_threaded.o
CC arch/x86/kernel/cpu/zhaoxin.o
CC net/xfrm/xfrm_replay.o
CC net/ethtool/cabletest.o
CC kernel/futex/pi.o
CC drivers/base/regmap/regmap-debugfs.o
CC fs/lockd/host.o
CC drivers/gpu/drm/i915/i915_pci.o
CC net/core/dev_ioctl.o
AR drivers/tty/serial/8250/built-in.a
AR drivers/tty/serial/built-in.a
CC net/sunrpc/clnt.o
CC drivers/tty/tty_ldisc.o
CC sound/hda/hdac_component.o
AR net/ipv6/netfilter/built-in.a
AR drivers/gpu/drm/bridge/analogix/built-in.a
CC net/sunrpc/auth_gss/gss_generic_token.o
AR drivers/gpu/drm/bridge/cadence/built-in.a
CC drivers/acpi/acpica/exserial.o
AR drivers/gpu/drm/bridge/imx/built-in.a
CC kernel/time/sleep_timeout.o
CC net/ipv4/ip_forward.o
AR drivers/gpu/drm/bridge/synopsys/built-in.a
AR drivers/gpu/drm/bridge/built-in.a
CC crypto/sha512_generic.o
CC kernel/futex/requeue.o
CC net/sunrpc/xprt.o
CC net/ipv6/addrconf.o
CC block/blk-iolatency.o
CC lib/klist.o
CC block/blk-iocost.o
AR sound/virtio/built-in.a
CC sound/hda/hdac_i915.o
CC drivers/tty/tty_buffer.o
AR kernel/irq/built-in.a
CC arch/x86/kernel/cpu/vortex.o
CC arch/x86/kernel/cpu/perfctr-watchdog.o
CC arch/x86/kernel/cpu/vmware.o
CC sound/hda/intel-dsp-config.o
AR kernel/module/built-in.a
CC lib/kobject.o
CC kernel/futex/waitwake.o
CC drivers/tty/tty_port.o
CC kernel/cgroup/namespace.o
CC fs/nfs/inode.o
CC fs/ext4/ialloc.o
CC drivers/acpi/acpica/exstore.o
AR net/packet/built-in.a
CC mm/compaction.o
CC kernel/trace/trace_clock.o
CC drivers/gpu/drm/virtio/virtgpu_plane.o
AR drivers/gpu/drm/hisilicon/built-in.a
CC drivers/gpu/drm/i915/i915_scatterlist.o
CC net/ipv6/addrlabel.o
CC net/xfrm/xfrm_device.o
CC io_uring/truncate.o
CC net/netfilter/nf_conntrack_seqadj.o
CC mm/show_mem.o
AR drivers/base/regmap/built-in.a
CC net/core/tso.o
AR drivers/dax/hmem/built-in.a
AR drivers/dax/built-in.a
CC drivers/pci/slot.o
CC net/sunrpc/socklib.o
CC net/ipv6/route.o
CC net/ethtool/tunnels.o
CC kernel/trace/ring_buffer.o
CC fs/nls/nls_base.o
CC drivers/acpi/acpica/exstoren.o
CC kernel/trace/trace.o
CC crypto/sha3_generic.o
CC mm/interval_tree.o
CC arch/x86/kernel/cpu/hypervisor.o
CC fs/nfs/super.o
CC fs/nfs/io.o
CC drivers/base/driver.o
CC lib/kobject_uevent.o
CC net/xfrm/xfrm_nat_keepalive.o
CC sound/hda/intel-nhlt.o
CC fs/nfs/direct.o
CC kernel/time/timekeeping.o
AR kernel/futex/built-in.a
CC mm/list_lru.o
CC drivers/tty/tty_mutex.o
CC drivers/base/class.o
CC fs/lockd/svc.o
CC drivers/acpi/proc.o
AR kernel/rcu/built-in.a
CC arch/x86/kernel/cpu/mshyperv.o
CC crypto/ecb.o
CC drivers/acpi/acpica/exstorob.o
CC block/mq-deadline.o
CC drivers/gpu/drm/i915/i915_switcheroo.o
CC drivers/gpu/drm/virtio/virtgpu_ioctl.o
CC fs/nls/nls_cp437.o
CC sound/hda/intel-sdw-acpi.o
CC kernel/time/ntp.o
CC net/ipv4/ip_options.o
CC net/sunrpc/xprtsock.o
CC kernel/time/clocksource.o
AR drivers/gpu/drm/mxsfb/built-in.a
CC io_uring/memmap.o
AR fs/unicode/built-in.a
CC sound/sound_core.o
CC drivers/pci/pci-acpi.o
CC net/sunrpc/auth_gss/gss_mech_switch.o
CC net/xfrm/xfrm_algo.o
CC arch/x86/kernel/irq.o
CC drivers/acpi/acpica/exsystem.o
CC drivers/gpu/drm/virtio/virtgpu_prime.o
CC crypto/cbc.o
CC fs/nls/nls_ascii.o
CC drivers/tty/tty_ldsem.o
CC drivers/dma-buf/dma-buf.o
CC drivers/dma-buf/dma-fence.o
AR drivers/cxl/core/built-in.a
AR drivers/cxl/built-in.a
CC net/xfrm/xfrm_user.o
CC kernel/cgroup/cgroup-v1.o
CC kernel/trace/trace_output.o
AR sound/hda/built-in.a
CC net/sunrpc/auth_gss/svcauth_gss.o
CC sound/last.o
CC net/netfilter/nf_conntrack_proto_icmpv6.o
CC drivers/base/platform.o
AR drivers/gpu/drm/tiny/built-in.a
CC drivers/gpu/drm/virtio/virtgpu_trace_points.o
CC drivers/acpi/acpica/extrace.o
CC drivers/gpu/drm/i915/i915_sysfs.o
CC net/ethtool/fec.o
CC fs/nls/nls_iso8859-1.o
CC fs/ext4/indirect.o
CC lib/logic_pio.o
CC crypto/ctr.o
CC arch/x86/kernel/cpu/debugfs.o
CC arch/x86/kernel/irq_32.o
CC block/kyber-iosched.o
CC io_uring/io-wq.o
CC net/core/sock_reuseport.o
AR sound/built-in.a
CC drivers/acpi/acpica/exutils.o
CC kernel/bpf/core.o
CC fs/lockd/svclock.o
CC drivers/tty/tty_baudrate.o
CC fs/nfs/pagelist.o
CC net/ipv4/ip_output.o
CC mm/workingset.o
CC fs/nls/nls_utf8.o
CC fs/autofs/init.o
CC drivers/pci/iomap.o
CC crypto/gcm.o
CC kernel/time/jiffies.o
CC fs/autofs/inode.o
CC drivers/acpi/acpica/hwacpi.o
CC drivers/acpi/acpica/hwesleep.o
CC arch/x86/kernel/cpu/bus_lock.o
CC lib/maple_tree.o
CC mm/debug.o
CC net/sunrpc/auth_gss/gss_rpc_upcall.o
CC kernel/trace/trace_seq.o
CC drivers/acpi/bus.o
AR fs/nls/built-in.a
CC arch/x86/kernel/dumpstack_32.o
CC drivers/acpi/glue.o
CC drivers/gpu/drm/virtio/virtgpu_submit.o
CC drivers/dma-buf/dma-fence-array.o
CC drivers/tty/tty_jobctrl.o
CC drivers/dma-buf/dma-fence-chain.o
CC drivers/gpu/drm/i915/i915_utils.o
CC drivers/base/cpu.o
CC mm/gup.o
CC drivers/gpu/drm/i915/intel_clock_gating.o
CC kernel/time/timer_list.o
CC net/ethtool/eeprom.o
CC net/netfilter/nf_conntrack_netlink.o
CC drivers/acpi/acpica/hwgpe.o
CC crypto/ccm.o
CC net/core/fib_notifier.o
CC drivers/macintosh/mac_hid.o
CC kernel/trace/trace_stat.o
CC io_uring/futex.o
CC kernel/cgroup/freezer.o
CC drivers/pci/quirks.o
CC kernel/cgroup/legacy_freezer.o
CC crypto/aes_generic.o
CC drivers/tty/n_null.o
CC drivers/base/firmware.o
CC fs/autofs/root.o
CC drivers/dma-buf/dma-fence-unwrap.o
CC net/sunrpc/sched.o
AR net/wireless/tests/built-in.a
CC net/wireless/core.o
CC drivers/dma-buf/dma-resv.o
CC drivers/acpi/acpica/hwregs.o
CC net/sunrpc/auth_gss/gss_rpc_xdr.o
CC fs/ext4/inline.o
CC net/ipv6/ip6_fib.o
CC kernel/time/timeconv.o
CC fs/nfs/read.o
CC arch/x86/kernel/cpu/capflags.o
CC net/ethtool/stats.o
CC fs/lockd/svcshare.o
AR arch/x86/kernel/cpu/built-in.a
AR drivers/gpu/drm/virtio/built-in.a
CC arch/x86/kernel/time.o
CC lib/memcat_p.o
CC block/blk-mq-pci.o
CC drivers/pci/pci-label.o
AR drivers/macintosh/built-in.a
CC drivers/gpu/drm/i915/intel_cpu_info.o
CC kernel/events/core.o
CC kernel/events/ring_buffer.o
CC drivers/base/init.o
CC net/wireless/sysfs.o
CC drivers/acpi/acpica/hwsleep.o
CC lib/nmi_backtrace.o
CC net/ethtool/phc_vclocks.o
CC drivers/tty/pty.o
CC fs/lockd/svcproc.o
CC kernel/time/timecounter.o
CC block/blk-mq-virtio.o
CC net/sunrpc/auth.o
CC fs/9p/vfs_super.o
CC kernel/time/alarmtimer.o
CC drivers/pci/vgaarb.o
CC kernel/trace/trace_printk.o
CC drivers/tty/tty_audit.o
CC fs/autofs/symlink.o
CC fs/ext4/inode.o
CC net/wireless/radiotap.o
CC arch/x86/kernel/ioport.o
CC crypto/crc32c_generic.o
CC io_uring/napi.o
CC kernel/cgroup/pids.o
CC drivers/gpu/drm/i915/intel_device_info.o
CC drivers/acpi/acpica/hwvalid.o
CC fs/9p/vfs_inode.o
AR net/xfrm/built-in.a
CC net/sunrpc/auth_gss/trace.o
CC kernel/fork.o
CC kernel/trace/pid_list.o
CC drivers/dma-buf/sync_file.o
CC net/ipv4/ip_sockglue.o
CC drivers/base/map.o
CC crypto/authenc.o
CC net/sunrpc/auth_gss/gss_krb5_mech.o
CC kernel/cgroup/rdma.o
CC drivers/tty/sysrq.o
CC fs/ext4/ioctl.o
CC block/blk-mq-debugfs.o
CC drivers/acpi/acpica/hwxface.o
CC mm/mmap_lock.o
CC drivers/acpi/scan.o
CC net/sunrpc/auth_null.o
CC arch/x86/kernel/dumpstack.o
CC fs/autofs/waitq.o
CC kernel/exec_domain.o
CC net/sunrpc/auth_tls.o
CC mm/highmem.o
CC net/ethtool/mm.o
CC net/netfilter/nf_conntrack_ftp.o
CC drivers/base/devres.o
AR net/mac80211/tests/built-in.a
CC kernel/panic.o
CC net/mac80211/main.o
CC net/core/xdp.o
CC fs/nfs/symlink.o
AR kernel/bpf/built-in.a
CC kernel/trace/trace_sched_switch.o
CC kernel/events/callchain.o
CC fs/autofs/expire.o
CC drivers/acpi/acpica/hwxfsleep.o
AR drivers/dma-buf/built-in.a
CC kernel/time/posix-timers.o
CC fs/lockd/svcsubs.o
CC fs/nfs/unlink.o
CC block/blk-pm.o
CC kernel/trace/trace_nop.o
CC net/ipv4/inet_hashtables.o
CC drivers/gpu/drm/i915/intel_memory_region.o
CC kernel/cgroup/cpuset.o
AR drivers/pci/built-in.a
AR fs/hostfs/built-in.a
CC net/ethtool/module.o
CC net/sunrpc/auth_unix.o
CC fs/9p/vfs_inode_dotl.o
CC drivers/acpi/acpica/hwpci.o
CC fs/nfs/write.o
CC arch/x86/kernel/nmi.o
CC fs/ext4/mballoc.o
CC crypto/authencesn.o
CC net/ipv6/ipv6_sockglue.o
CC drivers/base/attribute_container.o
CC net/sunrpc/auth_gss/gss_krb5_seal.o
AR drivers/tty/built-in.a
CC net/core/flow_offload.o
CC net/wireless/util.o
AR io_uring/built-in.a
CC arch/x86/kernel/ldt.o
CC net/netfilter/nf_conntrack_irc.o
AR drivers/gpu/drm/xlnx/built-in.a
CC kernel/time/posix-cpu-timers.o
CC kernel/events/hw_breakpoint.o
CC mm/memory.o
CC crypto/lzo.o
CC fs/lockd/mon.o
CC block/holder.o
CC drivers/acpi/acpica/nsaccess.o
CC fs/autofs/dev-ioctl.o
CC net/ipv6/ndisc.o
CC fs/debugfs/inode.o
CC drivers/acpi/mipi-disco-img.o
CC fs/9p/vfs_addr.o
CC drivers/base/transport_class.o
CC fs/debugfs/file.o
CC kernel/trace/blktrace.o
CC net/mac80211/status.o
CC fs/ext4/migrate.o
CC drivers/acpi/acpica/nsalloc.o
CC fs/lockd/trace.o
CC mm/mincore.o
CC drivers/gpu/drm/i915/intel_pcode.o
CC kernel/trace/trace_events.o
AR drivers/gpu/drm/gud/built-in.a
CC mm/mlock.o
CC net/core/gro.o
CC net/netlabel/netlabel_user.o
CC net/ethtool/cmis_fw_update.o
CC net/netfilter/nf_conntrack_sip.o
CC kernel/events/uprobes.o
AR block/built-in.a
CC drivers/base/topology.o
CC net/ipv6/udp.o
CC net/sunrpc/svc.o
CC net/mac80211/driver-ops.o
CC drivers/acpi/resource.o
CC arch/x86/kernel/setup.o
CC crypto/lzo-rle.o
CC net/sunrpc/auth_gss/gss_krb5_unseal.o
CC drivers/acpi/acpica/nsarguments.o
CC drivers/acpi/acpi_processor.o
CC net/ipv4/inet_timewait_sock.o
CC kernel/time/posix-clock.o
AR fs/autofs/built-in.a
CC net/ipv6/udplite.o
CC net/sunrpc/auth_gss/gss_krb5_wrap.o
CC fs/tracefs/inode.o
CC fs/9p/vfs_file.o
CC fs/tracefs/event_inode.o
CC lib/objpool.o
CC fs/nfs/namespace.o
CC drivers/base/container.o
CC net/netlabel/netlabel_kapi.o
CC drivers/acpi/acpica/nsconvert.o
CC crypto/rng.o
CC crypto/drbg.o
CC drivers/acpi/acpica/nsdump.o
CC net/netlabel/netlabel_domainhash.o
CC drivers/gpu/drm/i915/intel_region_ttm.o
AR drivers/scsi/pcmcia/built-in.a
CC drivers/scsi/scsi.o
CC kernel/cgroup/misc.o
CC net/wireless/reg.o
CC net/sunrpc/svcsock.o
CC drivers/base/property.o
CC fs/nfs/mount_clnt.o
AR fs/debugfs/built-in.a
AR drivers/nvme/common/built-in.a
AR drivers/nvme/host/built-in.a
CC fs/lockd/xdr.o
AR drivers/nvme/target/built-in.a
AR drivers/nvme/built-in.a
CC kernel/cgroup/debug.o
CC net/ipv4/inet_connection_sock.o
CC net/ethtool/cmis_cdb.o
CC drivers/acpi/acpica/nseval.o
CC kernel/time/itimer.o
CC drivers/ata/libata-core.o
CC fs/9p/vfs_dir.o
CC net/sunrpc/auth_gss/gss_krb5_crypto.o
CC arch/x86/kernel/x86_init.o
CC net/core/netdev-genl.o
AR drivers/net/phy/mediatek/built-in.a
AR drivers/net/phy/qcom/built-in.a
CC drivers/net/phy/mdio-boardinfo.o
CC net/core/netdev-genl-gen.o
CC net/ethtool/pse-pd.o
CC crypto/jitterentropy.o
AR fs/tracefs/built-in.a
CC drivers/base/cacheinfo.o
CC drivers/acpi/acpica/nsinit.o
CC net/netfilter/nf_nat_core.o
CC drivers/net/phy/stubs.o
CC net/mac80211/sta_info.o
CC net/wireless/scan.o
CC net/sunrpc/svcauth.o
CC drivers/ata/libata-scsi.o
CC [M] fs/efivarfs/inode.o
CC crypto/jitterentropy-kcapi.o
CC net/mac80211/wep.o
AR drivers/net/pse-pd/built-in.a
CC kernel/trace/trace_export.o
CC drivers/net/phy/mdio_devres.o
CC net/mac80211/aead_api.o
CC drivers/gpu/drm/i915/intel_runtime_pm.o
AR kernel/cgroup/built-in.a
CC drivers/ata/libata-eh.o
CC drivers/acpi/acpica/nsload.o
CC lib/plist.o
CC fs/9p/vfs_dentry.o
CC drivers/scsi/hosts.o
CC arch/x86/kernel/i8259.o
CC net/core/gso.o
CC lib/radix-tree.o
CC fs/nfs/nfstrace.o
CC kernel/time/clockevents.o
CC net/netlabel/netlabel_addrlist.o
CC crypto/ghash-generic.o
CC drivers/firewire/init_ohci1394_dma.o
CC drivers/cdrom/cdrom.o
CC drivers/acpi/processor_core.o
CC fs/lockd/clnt4xdr.o
CC net/sunrpc/auth_gss/gss_krb5_keys.o
CC [M] fs/efivarfs/file.o
CC drivers/net/mdio/acpi_mdio.o
CC arch/x86/kernel/irqinit.o
CC drivers/acpi/acpica/nsnames.o
AR drivers/net/pcs/built-in.a
CC drivers/base/swnode.o
AR drivers/auxdisplay/built-in.a
CC net/rfkill/core.o
CC kernel/cpu.o
CC fs/nfs/export.o
CC arch/x86/kernel/jump_label.o
CC kernel/trace/trace_event_perf.o
CC net/ipv6/raw.o
CC net/ethtool/plca.o
CC mm/mmap.o
CC crypto/hash_info.o
CC drivers/net/phy/phy.o
CC fs/9p/v9fs.o
CC crypto/rsapubkey.asn1.o
CC [M] fs/efivarfs/super.o
CC kernel/exit.o
CC crypto/rsaprivkey.asn1.o
AR crypto/built-in.a
CC kernel/softirq.o
CC drivers/acpi/acpica/nsobject.o
CC kernel/time/tick-common.o
CC net/netfilter/nf_nat_proto.o
CC net/core/net-sysfs.o
CC drivers/scsi/scsi_ioctl.o
CC fs/open.o
AR drivers/firewire/built-in.a
CC drivers/net/phy/phy-c45.o
CC kernel/trace/trace_events_filter.o
CC drivers/ata/libata-transport.o
CC net/ipv4/tcp.o
CC net/mac80211/wpa.o
CC drivers/gpu/drm/i915/intel_sbi.o
CC lib/ratelimit.o
CC lib/rbtree.o
CC net/netlabel/netlabel_mgmt.o
CC drivers/net/mdio/fwnode_mdio.o
CC drivers/acpi/acpica/nsparse.o
AR drivers/gpu/drm/solomon/built-in.a
CC arch/x86/kernel/irq_work.o
CC fs/read_write.o
CC [M] drivers/gpu/drm/scheduler/sched_main.o
AR drivers/net/ethernet/3com/built-in.a
CC drivers/net/ethernet/8390/ne2k-pci.o
CC drivers/base/auxiliary.o
AR drivers/net/ethernet/adaptec/built-in.a
CC fs/9p/fid.o
CC net/rfkill/input.o
CC fs/lockd/xdr4.o
CC drivers/acpi/acpica/nspredef.o
CC drivers/net/ethernet/8390/8390.o
AR net/sunrpc/auth_gss/built-in.a
CC net/core/hotdata.o
CC lib/seq_buf.o
CC [M] fs/efivarfs/vars.o
CC drivers/acpi/processor_pdc.o
CC net/sunrpc/svcauth_unix.o
CC net/ethtool/phy.o
CC fs/ext4/mmp.o
CC drivers/scsi/scsicam.o
CC drivers/base/devtmpfs.o
CC drivers/scsi/scsi_error.o
CC net/ipv6/icmp.o
CC drivers/acpi/acpica/nsprepkg.o
CC drivers/pcmcia/cs.o
CC kernel/time/tick-broadcast.o
CC drivers/gpu/drm/i915/intel_step.o
AR net/rfkill/built-in.a
CC drivers/pcmcia/socket_sysfs.o
AR kernel/events/built-in.a
CC kernel/resource.o
CC lib/siphash.o
AR drivers/cdrom/built-in.a
CC drivers/acpi/ec.o
AR drivers/net/mdio/built-in.a
CC net/sunrpc/addr.o
CC fs/9p/xattr.o
AR drivers/net/wireless/admtek/built-in.a
CC drivers/acpi/acpica/nsrepair.o
AR drivers/net/wireless/ath/built-in.a
CC net/netfilter/nf_nat_helper.o
AR drivers/net/wireless/atmel/built-in.a
CC fs/file_table.o
AR drivers/net/wireless/broadcom/built-in.a
AR drivers/net/wireless/intel/built-in.a
AR drivers/net/wireless/intersil/built-in.a
CC kernel/sysctl.o
AR drivers/net/wireless/marvell/built-in.a
AR drivers/net/wireless/mediatek/built-in.a
AR drivers/net/wireless/microchip/built-in.a
CC arch/x86/kernel/probe_roms.o
AR drivers/net/wireless/purelifi/built-in.a
AR drivers/net/wireless/quantenna/built-in.a
AR drivers/net/wireless/ralink/built-in.a
CC drivers/net/phy/phy-core.o
AR drivers/net/wireless/realtek/built-in.a
AR drivers/net/wireless/rsi/built-in.a
CC kernel/trace/trace_events_trigger.o
AR drivers/net/wireless/silabs/built-in.a
LD [M] fs/efivarfs/efivarfs.o
AR drivers/net/wireless/st/built-in.a
CC drivers/scsi/scsi_lib.o
CC net/9p/mod.o
AR drivers/net/wireless/ti/built-in.a
AR drivers/net/wireless/zydas/built-in.a
CC mm/mmu_gather.o
AR drivers/net/wireless/virtual/built-in.a
CC net/netlabel/netlabel_unlabeled.o
AR drivers/net/wireless/built-in.a
CC fs/nfs/sysfs.o
CC drivers/acpi/dock.o
CC drivers/acpi/pci_root.o
AR drivers/net/ethernet/agere/built-in.a
CC drivers/usb/common/common.o
CC net/ipv4/tcp_input.o
CC drivers/acpi/pci_link.o
CC kernel/time/tick-broadcast-hrtimer.o
CC lib/string.o
CC drivers/usb/core/usb.o
CC drivers/acpi/acpica/nsrepair2.o
AR drivers/usb/phy/built-in.a
CC drivers/usb/core/hub.o
CC fs/ext4/move_extent.o
CC [M] drivers/gpu/drm/scheduler/sched_fence.o
CC fs/lockd/svc4proc.o
AR drivers/net/ethernet/8390/built-in.a
AR drivers/net/ethernet/alacritech/built-in.a
CC net/netlabel/netlabel_cipso_v4.o
AR drivers/net/ethernet/alteon/built-in.a
CC drivers/acpi/pci_irq.o
AR drivers/net/ethernet/amazon/built-in.a
AR drivers/net/ethernet/amd/built-in.a
AR drivers/net/ethernet/aquantia/built-in.a
CC drivers/base/module.o
AR drivers/net/ethernet/arc/built-in.a
AR drivers/net/ethernet/asix/built-in.a
AR drivers/net/usb/built-in.a
CC net/dns_resolver/dns_key.o
CC lib/timerqueue.o
AR drivers/net/ethernet/atheros/built-in.a
AR net/ethtool/built-in.a
AR drivers/net/ethernet/cadence/built-in.a
AR drivers/net/ethernet/brocade/built-in.a
CC drivers/net/ethernet/broadcom/bnx2.o
CC drivers/pcmcia/cardbus.o
CC fs/lockd/procfs.o
CC net/core/netdev_rx_queue.o
HOSTCC drivers/gpu/drm/xe/xe_gen_wa_oob
CC drivers/net/mii.o
AR fs/9p/built-in.a
CC net/sunrpc/rpcb_clnt.o
CC net/9p/client.o
CC kernel/time/tick-oneshot.o
GEN xe_wa_oob.c xe_wa_oob.h
CC mm/mprotect.o
CC [M] drivers/gpu/drm/xe/xe_bb.o
CC drivers/gpu/drm/i915/intel_uncore.o
CC lib/union_find.o
CC arch/x86/kernel/sys_ia32.o
CC lib/vsprintf.o
CC drivers/acpi/acpica/nssearch.o
CC lib/win_minmax.o
CC [M] drivers/gpu/drm/scheduler/sched_entity.o
CC net/netlabel/netlabel_calipso.o
CC drivers/base/auxiliary_sysfs.o
CC drivers/usb/common/debug.o
CC drivers/gpu/drm/i915/intel_uncore_trace.o
CC arch/x86/kernel/ksysfs.o
CC [M] drivers/gpu/drm/xe/xe_bo.o
CC kernel/time/tick-sched.o
AR drivers/usb/common/built-in.a
CC drivers/base/devcoredump.o
CC drivers/ata/libata-trace.o
CC net/mac80211/scan.o
CC drivers/net/ethernet/broadcom/tg3.o
CC net/dns_resolver/dns_query.o
CC drivers/net/phy/phy_device.o
CC drivers/acpi/acpica/nsutils.o
CC drivers/pcmcia/ds.o
CC net/ipv6/mcast.o
CC net/netfilter/nf_nat_masquerade.o
CC net/netfilter/nf_nat_ftp.o
CC net/sunrpc/timer.o
CC fs/super.o
CC drivers/gpu/drm/drm_atomic.o
CC arch/x86/kernel/bootflag.o
CC drivers/gpu/drm/drm_atomic_uapi.o
CC kernel/trace/trace_eprobe.o
CC kernel/trace/trace_kprobe.o
CC drivers/pcmcia/pcmcia_resource.o
CC lib/xarray.o
CC net/wireless/nl80211.o
CC fs/ext4/namei.o
CC net/core/net-procfs.o
CC kernel/time/timer_migration.o
LD [M] drivers/gpu/drm/scheduler/gpu-sched.o
CC drivers/pcmcia/cistpl.o
AR fs/lockd/built-in.a
CC drivers/gpu/drm/i915/intel_wakeref.o
CC net/handshake/alert.o
CC net/9p/error.o
CC drivers/base/platform-msi.o
CC kernel/trace/error_report-traces.o
CC drivers/acpi/acpica/nswalk.o
CC fs/ext4/page-io.o
CC drivers/scsi/constants.o
CC net/netfilter/nf_nat_irc.o
CC net/netfilter/nf_nat_sip.o
CC drivers/ata/libata-sata.o
CC mm/mremap.o
AR net/dns_resolver/built-in.a
CC drivers/pcmcia/pcmcia_cis.o
CC arch/x86/kernel/e820.o
AR net/netlabel/built-in.a
CC net/core/netpoll.o
CC fs/char_dev.o
CC drivers/acpi/acpica/nsxfeval.o
CC drivers/usb/core/hcd.o
CC drivers/base/physical_location.o
CC fs/nfs/fs_context.o
CC lib/lockref.o
AR drivers/net/ethernet/cavium/common/built-in.a
AR drivers/net/ethernet/cavium/thunder/built-in.a
AR drivers/net/ethernet/cavium/liquidio/built-in.a
AR drivers/net/ethernet/cavium/octeon/built-in.a
AR drivers/net/ethernet/cavium/built-in.a
CC net/mac80211/offchannel.o
CC kernel/capability.o
CC net/devres.o
CC mm/msync.o
CC net/ipv6/reassembly.o
CC net/handshake/genl.o
CC drivers/scsi/scsi_lib_dma.o
CC net/handshake/netlink.o
CC net/9p/protocol.o
CC fs/ext4/readpage.o
CC drivers/acpi/acpica/nsxfname.o
CC drivers/input/serio/serio.o
CC drivers/base/trace.o
CC drivers/acpi/acpi_apd.o
CC drivers/input/serio/i8042.o
CC drivers/net/phy/linkmode.o
CC lib/bcd.o
CC net/sunrpc/xdr.o
CC fs/nfs/nfsroot.o
CC drivers/net/phy/phy_link_topology.o
CC drivers/usb/mon/mon_main.o
CC drivers/net/loopback.o
CC drivers/gpu/drm/drm_auth.o
CC drivers/usb/host/pci-quirks.o
CC drivers/usb/mon/mon_stat.o
CC drivers/gpu/drm/drm_blend.o
CC drivers/scsi/scsi_scan.o
CC drivers/ata/libata-sff.o
CC drivers/pcmcia/rsrc_mgr.o
CC drivers/acpi/acpica/nsxfobj.o
CC drivers/input/keyboard/atkbd.o
CC drivers/gpu/drm/i915/vlv_sideband.o
CC [M] drivers/gpu/drm/xe/xe_bo_evict.o
AR drivers/net/ethernet/chelsio/built-in.a
CC net/netfilter/x_tables.o
CC drivers/net/phy/mdio_bus.o
CC fs/stat.o
CC mm/page_vma_mapped.o
CC arch/x86/kernel/pci-dma.o
CC drivers/usb/host/ehci-hcd.o
CC kernel/trace/power-traces.o
CC fs/nfs/sysctl.o
CC kernel/ptrace.o
CC drivers/usb/class/usblp.o
CC drivers/usb/storage/scsiglue.o
CC kernel/time/vsyscall.o
CC kernel/user.o
CC net/9p/trans_common.o
AR drivers/base/built-in.a
CC fs/exec.o
CC drivers/acpi/acpica/psargs.o
CC drivers/gpu/drm/i915/vlv_suspend.o
CC drivers/usb/mon/mon_text.o
CC drivers/gpu/drm/drm_bridge.o
CC drivers/input/serio/serport.o
CC net/core/fib_rules.o
CC net/socket.o
CC lib/sort.o
CC net/sunrpc/sunrpc_syms.o
CC drivers/usb/core/urb.o
CC drivers/pcmcia/rsrc_nonstatic.o
CC drivers/input/mouse/psmouse-base.o
CC kernel/time/timekeeping_debug.o
CC net/handshake/request.o
CC drivers/input/serio/libps2.o
CC lib/parser.o
CC drivers/acpi/acpica/psloop.o
CC net/core/net-traces.o
CC drivers/usb/storage/protocol.o
CC net/9p/trans_fd.o
CC arch/x86/kernel/quirks.o
GEN drivers/scsi/scsi_devinfo_tbl.c
CC fs/pipe.o
CC net/sysctl_net.o
CC net/ipv6/tcp_ipv6.o
CC kernel/signal.o
CC net/core/selftests.o
CC mm/pagewalk.o
CC [M] drivers/gpu/drm/xe/xe_devcoredump.o
CC drivers/rtc/lib.o
AR drivers/input/keyboard/built-in.a
CC drivers/input/mouse/synaptics.o
CC lib/debug_locks.o
CC net/netfilter/xt_tcpudp.o
AR drivers/usb/class/built-in.a
CC drivers/scsi/scsi_devinfo.o
CC mm/pgtable-generic.o
CC drivers/ata/libata-pmp.o
CC drivers/acpi/acpica/psobject.o
AR drivers/net/ethernet/cisco/built-in.a
CC drivers/gpu/drm/drm_cache.o
CC drivers/usb/mon/mon_bin.o
CC lib/random32.o
CC fs/nfs/nfs3super.o
CC net/ipv6/ping.o
CC drivers/acpi/acpi_platform.o
CC arch/x86/kernel/kdebugfs.o
CC kernel/time/namespace.o
AR drivers/input/serio/built-in.a
CC drivers/pcmcia/yenta_socket.o
CC drivers/net/phy/mdio_device.o
CC drivers/usb/core/message.o
CC drivers/usb/storage/transport.o
CC drivers/acpi/acpi_pnp.o
CC mm/rmap.o
CC drivers/acpi/acpica/psopcode.o
CC lib/bust_spinlocks.o
CC drivers/gpu/drm/i915/soc/intel_dram.o
CC drivers/net/phy/swphy.o
CC drivers/rtc/class.o
CC fs/ext4/resize.o
CC net/core/ptp_classifier.o
CC net/mac80211/ht.o
CC net/ipv4/tcp_output.o
CC net/ipv4/tcp_timer.o
CC drivers/ata/libata-acpi.o
CC kernel/trace/rpm-traces.o
CC lib/kasprintf.o
CC lib/bitmap.o
CC arch/x86/kernel/alternative.o
CC drivers/scsi/scsi_sysctl.o
CC [M] drivers/gpu/drm/xe/xe_device.o
AR drivers/usb/misc/built-in.a
CC drivers/gpu/drm/drm_color_mgmt.o
CC drivers/acpi/acpica/psopinfo.o
CC net/netfilter/xt_CONNSECMARK.o
CC drivers/acpi/acpica/psparse.o
CC net/handshake/tlshd.o
CC drivers/acpi/acpica/psscope.o
CC drivers/acpi/acpica/pstree.o
AR kernel/time/built-in.a
CC fs/ext4/super.o
AR drivers/input/joystick/built-in.a
CC lib/scatterlist.o
CC drivers/scsi/scsi_proc.o
CC net/mac80211/agg-tx.o
CC net/9p/trans_virtio.o
CC drivers/acpi/acpica/psutils.o
CC [M] drivers/gpu/drm/xe/xe_device_sysfs.o
CC drivers/usb/host/ehci-pci.o
CC drivers/usb/host/ohci-hcd.o
AR drivers/usb/mon/built-in.a
CC net/ipv4/tcp_ipv4.o
CC drivers/rtc/interface.o
CC drivers/input/mouse/focaltech.o
CC drivers/usb/core/driver.o
CC fs/nfs/nfs3client.o
CC drivers/gpu/drm/i915/soc/intel_gmch.o
CC drivers/usb/host/ohci-pci.o
CC fs/ext4/symlink.o
CC drivers/gpu/drm/drm_connector.o
CC net/handshake/trace.o
CC drivers/usb/storage/usb.o
CC drivers/net/phy/fixed_phy.o
CC net/core/netprio_cgroup.o
CC net/sunrpc/cache.o
CC drivers/acpi/acpica/pswalk.o
CC drivers/net/netconsole.o
CC fs/namei.o
AR drivers/pcmcia/built-in.a
CC drivers/gpu/drm/i915/soc/intel_pch.o
CC fs/nfs/nfs3proc.o
CC net/ipv4/tcp_minisocks.o
CC kernel/trace/trace_dynevent.o
CC kernel/sys.o
CC drivers/scsi/scsi_debugfs.o
CC drivers/ata/libata-pata-timings.o
CC drivers/i2c/algos/i2c-algo-bit.o
CC arch/x86/kernel/i8253.o
CC drivers/acpi/acpica/psxface.o
CC drivers/input/mouse/alps.o
CC drivers/usb/storage/initializers.o
CC drivers/ata/ahci.o
CC drivers/ata/libahci.o
CC net/netfilter/xt_NFLOG.o
CC fs/nfs/nfs3xdr.o
CC drivers/net/phy/realtek.o
CC net/ipv4/tcp_cong.o
CC drivers/input/mouse/byd.o
CC lib/list_sort.o
CC [M] drivers/gpu/drm/xe/xe_dma_buf.o
CC mm/vmalloc.o
CC drivers/acpi/acpica/rsaddr.o
CC drivers/net/virtio_net.o
CC lib/uuid.o
CC drivers/usb/early/ehci-dbgp.o
CC fs/ext4/sysfs.o
CC arch/x86/kernel/hw_breakpoint.o
CC net/ipv6/exthdrs.o
AR drivers/i3c/built-in.a
CC drivers/usb/core/config.o
CC drivers/gpu/drm/i915/soc/intel_rom.o
CC lib/iov_iter.o
CC drivers/rtc/nvmem.o
CC net/wireless/mlme.o
AR net/9p/built-in.a
CC drivers/i2c/busses/i2c-i801.o
AR drivers/media/i2c/built-in.a
AR drivers/media/tuners/built-in.a
AR drivers/media/rc/keymaps/built-in.a
AR drivers/media/rc/built-in.a
CC drivers/scsi/scsi_trace.o
AR drivers/media/common/b2c2/built-in.a
AR drivers/pps/clients/built-in.a
AR drivers/media/common/saa7146/built-in.a
AR drivers/pps/generators/built-in.a
AR drivers/input/tablet/built-in.a
CC drivers/pps/pps.o
CC drivers/usb/storage/sierra_ms.o
CC drivers/gpu/drm/i915/i915_memcpy.o
AR drivers/media/common/siano/built-in.a
AR drivers/media/common/v4l2-tpg/built-in.a
CC kernel/trace/trace_probe.o
AR drivers/media/common/videobuf2/built-in.a
AR drivers/media/common/built-in.a
CC drivers/acpi/acpica/rscalc.o
AR drivers/media/platform/allegro-dvt/built-in.a
CC net/core/netclassid_cgroup.o
AR drivers/media/platform/amlogic/meson-ge2d/built-in.a
AR drivers/media/platform/amlogic/built-in.a
AR drivers/media/platform/amphion/built-in.a
AR drivers/input/touchscreen/built-in.a
CC net/ipv4/tcp_metrics.o
AR drivers/media/platform/aspeed/built-in.a
AR drivers/media/platform/atmel/built-in.a
CC drivers/usb/core/file.o
AR drivers/media/platform/broadcom/built-in.a
CC net/ipv4/tcp_fastopen.o
AR drivers/media/platform/cadence/built-in.a
CC drivers/ptp/ptp_clock.o
CC drivers/net/net_failover.o
AR drivers/media/platform/chips-media/coda/built-in.a
AR drivers/media/platform/chips-media/wave5/built-in.a
AR drivers/media/platform/chips-media/built-in.a
AR drivers/media/platform/imagination/built-in.a
AR drivers/media/platform/intel/built-in.a
AR net/handshake/built-in.a
AR drivers/media/platform/marvell/built-in.a
CC [M] drivers/gpu/drm/xe/xe_drm_client.o
AR drivers/i2c/algos/built-in.a
AR drivers/media/platform/mediatek/jpeg/built-in.a
AR drivers/media/platform/mediatek/mdp/built-in.a
CC net/netfilter/xt_SECMARK.o
CC drivers/power/supply/power_supply_core.o
AR drivers/media/platform/mediatek/vcodec/common/built-in.a
AR drivers/media/platform/mediatek/vcodec/encoder/built-in.a
CC kernel/trace/trace_uprobe.o
AR drivers/media/platform/mediatek/vcodec/decoder/built-in.a
AR drivers/media/platform/mediatek/vcodec/built-in.a
AR drivers/media/platform/mediatek/vpu/built-in.a
AR drivers/media/platform/mediatek/mdp3/built-in.a
AR drivers/media/platform/mediatek/built-in.a
CC drivers/rtc/dev.o
AR drivers/media/platform/microchip/built-in.a
AR drivers/media/platform/nuvoton/built-in.a
AR drivers/media/platform/nvidia/tegra-vde/built-in.a
AR drivers/media/platform/nvidia/built-in.a
CC fs/fcntl.o
AR drivers/media/platform/nxp/dw100/built-in.a
AR drivers/media/platform/nxp/imx-jpeg/built-in.a
AR drivers/media/platform/nxp/imx8-isi/built-in.a
CC drivers/acpi/acpica/rscreate.o
AR drivers/media/platform/nxp/built-in.a
AR drivers/media/platform/qcom/camss/built-in.a
CC drivers/usb/host/uhci-hcd.o
AR drivers/media/platform/qcom/venus/built-in.a
AR drivers/media/platform/qcom/built-in.a
AR drivers/media/pci/ttpci/built-in.a
AR drivers/media/usb/b2c2/built-in.a
AR drivers/media/pci/b2c2/built-in.a
AR drivers/media/usb/dvb-usb/built-in.a
AR drivers/media/platform/raspberrypi/pisp_be/built-in.a
AR drivers/media/pci/pluto2/built-in.a
AR drivers/media/platform/raspberrypi/rp1-cfe/built-in.a
AR drivers/media/usb/dvb-usb-v2/built-in.a
AR drivers/media/pci/dm1105/built-in.a
AR drivers/media/platform/raspberrypi/built-in.a
AR drivers/media/usb/s2255/built-in.a
CC drivers/pps/kapi.o
AR drivers/media/pci/pt1/built-in.a
CC arch/x86/kernel/tsc.o
AR drivers/media/usb/siano/built-in.a
AR drivers/media/platform/renesas/rcar-vin/built-in.a
AR drivers/media/pci/pt3/built-in.a
AR drivers/media/usb/ttusb-budget/built-in.a
CC kernel/umh.o
AR drivers/media/platform/renesas/rzg2l-cru/built-in.a
AR drivers/media/pci/mantis/built-in.a
AR drivers/media/usb/ttusb-dec/built-in.a
AR drivers/media/usb/built-in.a
AR drivers/media/platform/renesas/vsp1/built-in.a
AR drivers/media/pci/ngene/built-in.a
AR drivers/media/platform/renesas/built-in.a
AR drivers/net/phy/built-in.a
AR drivers/media/pci/ddbridge/built-in.a
AR drivers/usb/early/built-in.a
CC drivers/gpu/drm/drm_crtc.o
AR drivers/media/pci/saa7146/built-in.a
AR drivers/media/mmc/siano/built-in.a
CC drivers/usb/host/xhci.o
AR drivers/net/ethernet/cortina/built-in.a
AR drivers/media/platform/rockchip/rga/built-in.a
CC drivers/usb/host/xhci-mem.o
AR drivers/media/mmc/built-in.a
AR drivers/media/pci/smipcie/built-in.a
CC drivers/usb/storage/option_ms.o
CC drivers/input/mouse/logips2pp.o
AR drivers/media/platform/rockchip/rkisp1/built-in.a
AR drivers/media/pci/netup_unidvb/built-in.a
AR drivers/media/platform/rockchip/built-in.a
AR drivers/media/pci/intel/ipu3/built-in.a
AR drivers/media/platform/samsung/exynos-gsc/built-in.a
AR drivers/media/pci/intel/ivsc/built-in.a
AR drivers/media/platform/samsung/exynos4-is/built-in.a
AR drivers/media/pci/intel/built-in.a
AR drivers/media/pci/built-in.a
AR drivers/media/platform/samsung/s3c-camif/built-in.a
AR drivers/media/platform/samsung/s5p-g2d/built-in.a
CC drivers/gpu/drm/i915/i915_mm.o
CC net/ipv4/tcp_rate.o
CC net/ipv4/tcp_recovery.o
CC drivers/scsi/scsi_logging.o
AR drivers/media/platform/samsung/s5p-jpeg/built-in.a
AR drivers/media/platform/samsung/s5p-mfc/built-in.a
AR drivers/media/platform/samsung/built-in.a
AR drivers/media/platform/st/sti/bdisp/built-in.a
AR drivers/media/platform/st/sti/c8sectpfe/built-in.a
CC net/mac80211/agg-rx.o
AR drivers/media/platform/st/sti/delta/built-in.a
CC net/core/dst_cache.o
AR drivers/media/platform/st/sti/hva/built-in.a
AR drivers/media/platform/st/stm32/built-in.a
AR drivers/media/platform/st/built-in.a
CC drivers/usb/core/buffer.o
CC drivers/acpi/acpica/rsdumpinfo.o
AR drivers/i2c/muxes/built-in.a
AR drivers/media/platform/sunxi/sun4i-csi/built-in.a
CC mm/vma.o
AR drivers/media/platform/sunxi/sun6i-csi/built-in.a
AR drivers/media/platform/sunxi/sun6i-mipi-csi2/built-in.a
AR drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/built-in.a
AR drivers/media/platform/sunxi/sun8i-di/built-in.a
AR drivers/media/platform/sunxi/sun8i-rotate/built-in.a
AR drivers/media/platform/sunxi/built-in.a
CC drivers/ata/ata_piix.o
CC drivers/scsi/scsi_pm.o
CC drivers/scsi/scsi_bsg.o
AR drivers/media/platform/ti/am437x/built-in.a
AR drivers/media/platform/ti/cal/built-in.a
CC drivers/rtc/proc.o
AR drivers/media/platform/ti/vpe/built-in.a
AR drivers/media/platform/ti/davinci/built-in.a
AR drivers/media/platform/ti/j721e-csi2rx/built-in.a
AR drivers/media/platform/ti/omap/built-in.a
CC drivers/power/supply/power_supply_sysfs.o
AR drivers/media/platform/ti/omap3isp/built-in.a
AR drivers/media/platform/ti/built-in.a
AR drivers/media/platform/verisilicon/built-in.a
CC drivers/ptp/ptp_chardev.o
AR drivers/i2c/busses/built-in.a
AR drivers/media/platform/via/built-in.a
CC drivers/i2c/i2c-boardinfo.o
CC net/netfilter/xt_TCPMSS.o
CC drivers/pps/sysfs.o
AR drivers/media/platform/xilinx/built-in.a
AR drivers/media/platform/built-in.a
AR drivers/media/firewire/built-in.a
AR drivers/media/spi/built-in.a
CC drivers/acpi/acpica/rsinfo.o
AR drivers/media/test-drivers/built-in.a
AR drivers/media/built-in.a
CC lib/clz_ctz.o
CC drivers/input/mouse/lifebook.o
CC lib/bsearch.o
CC drivers/usb/storage/usual-tables.o
CC net/netfilter/xt_conntrack.o
CC net/ipv6/datagram.o
CC fs/ioctl.o
CC net/ipv6/ip6_flowlabel.o
CC net/ipv6/inet6_connection_sock.o
CC drivers/hwmon/hwmon.o
AR drivers/thermal/broadcom/built-in.a
CC fs/nfs/nfs3acl.o
AR drivers/thermal/renesas/built-in.a
CC [M] drivers/gpu/drm/xe/xe_exec.o
AR drivers/thermal/samsung/built-in.a
CC net/netfilter/xt_policy.o
CC drivers/thermal/intel/intel_tcc.o
CC drivers/thermal/intel/therm_throt.o
CC net/sunrpc/rpc_pipe.o
CC drivers/acpi/acpica/rsio.o
AR drivers/pps/built-in.a
CC drivers/usb/core/sysfs.o
CC net/netfilter/xt_state.o
AR drivers/thermal/st/built-in.a
AR drivers/thermal/qcom/built-in.a
CC drivers/input/mouse/trackpoint.o
CC net/ipv6/udp_offload.o
CC drivers/rtc/sysfs.o
CC drivers/power/supply/power_supply_leds.o
CC net/wireless/ibss.o
CC arch/x86/kernel/tsc_msr.o
CC drivers/gpu/drm/i915/i915_sw_fence.o
CC drivers/ata/pata_amd.o
CC drivers/scsi/scsi_common.o
CC net/mac80211/vht.o
AR drivers/usb/storage/built-in.a
CC drivers/acpi/power.o
CC kernel/workqueue.o
CC [M] drivers/gpu/drm/xe/xe_execlist.o
CC drivers/acpi/acpica/rsirq.o
CC drivers/i2c/i2c-core-base.o
CC net/core/gro_cells.o
CC drivers/ptp/ptp_sysfs.o
CC net/ipv4/tcp_ulp.o
CC lib/find_bit.o
CC kernel/trace/rethook.o
CC drivers/power/supply/power_supply_hwmon.o
CC drivers/gpu/drm/i915/i915_sw_fence_work.o
CC drivers/ptp/ptp_vclock.o
CC arch/x86/kernel/io_delay.o
CC mm/process_vm_access.o
CC drivers/scsi/scsi_transport_spi.o
CC drivers/acpi/acpica/rslist.o
CC drivers/gpu/drm/drm_displayid.o
CC lib/llist.o
CC drivers/rtc/rtc-mc146818-lib.o
CC [M] drivers/thermal/intel/x86_pkg_temp_thermal.o
CC drivers/input/mouse/cypress_ps2.o
CC lib/lwq.o
CC drivers/rtc/rtc-cmos.o
CC drivers/gpu/drm/i915/i915_syncmap.o
CC drivers/usb/core/endpoint.o
CC arch/x86/kernel/rtc.o
AR drivers/input/misc/built-in.a
CC drivers/acpi/acpica/rsmemory.o
CC drivers/ptp/ptp_kvm_x86.o
CC drivers/scsi/virtio_scsi.o
CC drivers/scsi/sd.o
AR drivers/power/supply/built-in.a
CC drivers/ata/pata_oldpiix.o
AR drivers/power/built-in.a
CC net/core/failover.o
CC net/ipv6/seg6.o
CC lib/memweight.o
CC fs/ext4/xattr.o
CC net/ipv4/tcp_offload.o
CC drivers/acpi/event.o
CC [M] net/netfilter/nf_log_syslog.o
CC drivers/usb/host/xhci-ext-caps.o
CC drivers/scsi/sr.o
CC fs/nfs/nfs4proc.o
AR drivers/net/ethernet/dec/tulip/built-in.a
AR drivers/net/ethernet/dec/built-in.a
CC lib/kfifo.o
CC fs/ext4/xattr_hurd.o
CC drivers/i2c/i2c-core-smbus.o
AR drivers/net/ethernet/dlink/built-in.a
AR kernel/trace/built-in.a
CC drivers/usb/host/xhci-ring.o
AR drivers/hwmon/built-in.a
CC drivers/input/input.o
CC drivers/input/input-compat.o
CC fs/ext4/xattr_trusted.o
CC fs/ext4/xattr_user.o
CC drivers/acpi/acpica/rsmisc.o
CC drivers/input/input-mt.o
CC drivers/input/input-poller.o
CC [M] drivers/gpu/drm/xe/xe_exec_queue.o
CC lib/percpu-refcount.o
CC drivers/scsi/sr_ioctl.o
CC drivers/gpu/drm/i915/i915_user_extensions.o
CC mm/page_alloc.o
CC kernel/pid.o
CC net/sunrpc/sysfs.o
CC drivers/input/mouse/psmouse-smbus.o
AR drivers/thermal/intel/built-in.a
AR drivers/thermal/tegra/built-in.a
AR drivers/thermal/mediatek/built-in.a
CC drivers/acpi/evged.o
CC drivers/thermal/thermal_core.o
CC drivers/usb/core/devio.o
CC arch/x86/kernel/resource.o
CC fs/nfs/nfs4xdr.o
CC drivers/ptp/ptp_kvm_common.o
AS arch/x86/kernel/irqflags.o
CC drivers/gpu/drm/i915/i915_debugfs.o
CC drivers/acpi/sysfs.o
CC drivers/acpi/acpica/rsserial.o
CC arch/x86/kernel/static_call.o
CC arch/x86/kernel/process.o
AR drivers/net/ethernet/broadcom/built-in.a
AR drivers/net/ethernet/emulex/built-in.a
CC drivers/ata/pata_sch.o
AR drivers/net/ethernet/engleder/built-in.a
CC net/mac80211/he.o
AR drivers/net/ethernet/ezchip/built-in.a
AR drivers/net/ethernet/fujitsu/built-in.a
AR drivers/net/ethernet/fungible/built-in.a
AR drivers/net/ethernet/google/built-in.a
AR drivers/rtc/built-in.a
AR drivers/net/ethernet/hisilicon/built-in.a
CC drivers/i2c/i2c-core-acpi.o
AR drivers/net/ethernet/huawei/built-in.a
CC lib/rhashtable.o
AR drivers/net/ethernet/i825xx/built-in.a
CC drivers/net/ethernet/intel/e1000/e1000_main.o
CC drivers/net/ethernet/intel/e100.o
CC drivers/net/ethernet/intel/e1000e/82571.o
CC drivers/i2c/i2c-smbus.o
CC drivers/gpu/drm/i915/i915_debugfs_params.o
AR net/core/built-in.a
CC drivers/gpu/drm/i915/i915_pmu.o
CC net/ipv4/tcp_plb.o
CC net/wireless/sme.o
CC drivers/net/ethernet/intel/e1000e/ich8lan.o
CC fs/nfs/nfs4state.o
CC net/mac80211/s1g.o
CC net/sunrpc/svc_xprt.o
AR drivers/watchdog/built-in.a
CC drivers/gpu/drm/i915/gt/gen2_engine_cs.o
CC drivers/acpi/acpica/rsutils.o
CC net/ipv6/fib6_notifier.o
CC [M] net/netfilter/xt_mark.o
CC net/ipv4/datagram.o
CC net/ipv4/raw.o
AR drivers/input/mouse/built-in.a
CC drivers/thermal/thermal_sysfs.o
CC [M] drivers/gpu/drm/xe/xe_force_wake.o
AR drivers/ptp/built-in.a
CC [M] net/netfilter/xt_nat.o
CC net/ipv6/rpl.o
CC drivers/net/ethernet/intel/e1000/e1000_hw.o
CC drivers/usb/host/xhci-hub.o
CC drivers/acpi/acpica/rsxface.o
CC drivers/ata/pata_mpiix.o
CC fs/readdir.o
CC fs/nfs/nfs4renewd.o
CC drivers/net/ethernet/intel/e1000e/80003es2lan.o
CC fs/nfs/nfs4super.o
CC drivers/input/ff-core.o
CC drivers/usb/core/notify.o
CC net/mac80211/ibss.o
AR drivers/i2c/built-in.a
CC fs/ext4/fast_commit.o
CC [M] drivers/gpu/drm/xe/xe_ggtt.o
CC drivers/gpu/drm/i915/gt/gen6_engine_cs.o
CC drivers/ata/ata_generic.o
CC lib/base64.o
CC drivers/acpi/acpica/tbdata.o
CC drivers/thermal/thermal_trip.o
CC net/ipv6/ioam6.o
CC drivers/gpu/drm/drm_drv.o
CC drivers/usb/core/generic.o
CC lib/once.o
CC net/sunrpc/xprtmultipath.o
CC drivers/net/ethernet/intel/e1000/e1000_ethtool.o
AR drivers/net/ethernet/microsoft/built-in.a
CC net/mac80211/iface.o
CC drivers/usb/host/xhci-dbg.o
CC arch/x86/kernel/ptrace.o
CC net/ipv6/sysctl_net_ipv6.o
CC kernel/task_work.o
CC drivers/scsi/sr_vendor.o
CC drivers/input/touchscreen.o
CC drivers/input/ff-memless.o
CC drivers/input/sparse-keymap.o
CC lib/refcount.o
CC drivers/gpu/drm/drm_dumb_buffers.o
CC kernel/extable.o
CC drivers/thermal/thermal_helpers.o
CC drivers/thermal/thermal_thresholds.o
CC drivers/acpi/acpica/tbfadt.o
CC drivers/input/vivaldi-fmap.o
CC fs/ext4/orphan.o
CC [M] net/netfilter/xt_LOG.o
CC lib/rcuref.o
CC drivers/acpi/acpica/tbfind.o
AR drivers/ata/built-in.a
CC arch/x86/kernel/tls.o
CC drivers/usb/core/quirks.o
CC drivers/usb/core/devices.o
CC net/sunrpc/stats.o
CC lib/usercopy.o
CC drivers/usb/core/phy.o
CC drivers/input/input-leds.o
CC drivers/gpu/drm/i915/gt/gen6_ppgtt.o
CC [M] drivers/gpu/drm/xe/xe_gpu_scheduler.o
CC net/ipv4/udp.o
AR drivers/net/ethernet/litex/built-in.a
CC drivers/acpi/property.o
AR drivers/net/ethernet/marvell/octeon_ep/built-in.a
AR drivers/net/ethernet/marvell/octeon_ep_vf/built-in.a
CC net/sunrpc/sysctl.o
CC arch/x86/kernel/step.o
AR drivers/net/ethernet/marvell/octeontx2/built-in.a
CC fs/nfs/nfs4file.o
AR drivers/net/ethernet/mellanox/built-in.a
CC drivers/thermal/thermal_hwmon.o
AR drivers/net/ethernet/marvell/prestera/built-in.a
CC drivers/thermal/gov_step_wise.o
CC drivers/net/ethernet/marvell/sky2.o
CC drivers/usb/core/port.o
CC drivers/usb/host/xhci-trace.o
CC drivers/scsi/sg.o
CC lib/errseq.o
CC drivers/acpi/acpica/tbinstal.o
CC fs/ext4/acl.o
CC drivers/net/ethernet/intel/e1000/e1000_param.o
CC net/ipv4/udplite.o
CC lib/bucket_locks.o
CC net/mac80211/link.o
CC net/wireless/chan.o
CC [M] drivers/gpu/drm/xe/xe_gsc.o
CC net/ipv6/xfrm6_policy.o
CC net/ipv6/xfrm6_state.o
CC drivers/gpu/drm/drm_edid.o
CC kernel/params.o
CC drivers/net/ethernet/intel/e1000e/mac.o
AR drivers/net/ethernet/meta/built-in.a
CC drivers/input/evdev.o
CC drivers/acpi/acpica/tbprint.o
CC drivers/scsi/scsi_sysfs.o
CC drivers/thermal/gov_user_space.o
CC net/mac80211/rate.o
CC drivers/md/md.o
CC drivers/acpi/acpica/tbutils.o
CC net/ipv4/udp_offload.o
CC mm/page_frag_cache.o
CC arch/x86/kernel/i8237.o
CC net/wireless/ethtool.o
CC drivers/cpufreq/cpufreq.o
CC mm/init-mm.o
CC net/ipv6/xfrm6_input.o
CC net/ipv4/arp.o
CC lib/generic-radix-tree.o
CC [M] net/netfilter/xt_MASQUERADE.o
CC [M] drivers/gpu/drm/xe/xe_gsc_debugfs.o
AR drivers/thermal/built-in.a
CC fs/ext4/xattr_security.o
CC drivers/net/ethernet/intel/e1000e/manage.o
CC drivers/usb/host/xhci-debugfs.o
CC net/ipv6/xfrm6_output.o
CC kernel/kthread.o
CC drivers/usb/core/hcd-pci.o
CC arch/x86/kernel/stacktrace.o
CC drivers/cpufreq/freq_table.o
CC drivers/acpi/acpica/tbxface.o
CC net/wireless/mesh.o
CC net/ipv4/icmp.o
CC fs/select.o
CC drivers/gpu/drm/i915/gt/gen7_renderclear.o
CC drivers/net/ethernet/intel/e1000e/nvm.o
CC lib/bitmap-str.o
CC mm/memblock.o
CC drivers/acpi/debugfs.o
AR drivers/net/ethernet/intel/e1000/built-in.a
CC kernel/sys_ni.o
CC drivers/acpi/acpica/tbxfload.o
CC drivers/usb/core/usb-acpi.o
CC arch/x86/kernel/reboot.o
CC drivers/cpuidle/governors/menu.o
CC drivers/cpuidle/cpuidle.o
AR drivers/input/built-in.a
CC kernel/nsproxy.o
CC mm/slub.o
CC [M] net/netfilter/xt_addrtype.o
CC drivers/gpu/drm/drm_eld.o
CC kernel/notifier.o
CC drivers/gpu/drm/i915/gt/gen8_engine_cs.o
CC arch/x86/kernel/msr.o
AR drivers/scsi/built-in.a
CC drivers/acpi/acpica/tbxfroot.o
CC drivers/acpi/acpi_lpat.o
CC net/wireless/ap.o
CC fs/nfs/delegation.o
CC [M] drivers/gpu/drm/xe/xe_gsc_proxy.o
AR fs/ext4/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gsc_submit.o
CC arch/x86/kernel/cpuid.o
CC drivers/gpu/drm/i915/gt/gen8_ppgtt.o
CC mm/madvise.o
AR net/sunrpc/built-in.a
CC drivers/usb/host/xhci-pci.o
AR drivers/net/ethernet/micrel/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt.o
CC lib/string_helpers.o
CC drivers/cpuidle/driver.o
CC drivers/cpufreq/cpufreq_performance.o
CC drivers/cpuidle/governors/haltpoll.o
CC drivers/md/md-bitmap.o
CC arch/x86/kernel/early-quirks.o
CC drivers/acpi/acpica/utaddress.o
AR drivers/net/ethernet/microchip/built-in.a
CC net/wireless/trace.o
AR drivers/usb/core/built-in.a
CC net/ipv6/xfrm6_protocol.o
CC drivers/md/md-autodetect.o
CC net/wireless/ocb.o
CC mm/page_io.o
CC fs/dcache.o
CC [M] drivers/gpu/drm/xe/xe_gt_ccs_mode.o
CC drivers/md/dm.o
CC drivers/acpi/acpi_pcc.o
CC drivers/acpi/acpica/utalloc.o
CC drivers/gpu/drm/i915/gt/intel_breadcrumbs.o
CC drivers/net/ethernet/intel/e1000e/phy.o
CC net/mac80211/michael.o
CC mm/swap_state.o
CC drivers/net/ethernet/intel/e1000e/param.o
AR drivers/net/ethernet/mscc/built-in.a
CC drivers/cpufreq/cpufreq_userspace.o
CC fs/inode.o
CC lib/hexdump.o
CC kernel/ksysfs.o
CC net/mac80211/tkip.o
CC net/mac80211/aes_cmac.o
CC drivers/net/ethernet/intel/e1000e/ethtool.o
CC net/wireless/pmsr.o
CC [M] drivers/gpu/drm/xe/xe_gt_clock.o
CC drivers/acpi/acpica/utascii.o
CC drivers/gpu/drm/drm_encoder.o
CC drivers/cpufreq/cpufreq_ondemand.o
AR net/netfilter/built-in.a
CC arch/x86/kernel/smp.o
CC fs/nfs/nfs4idmap.o
CC drivers/md/dm-table.o
CC lib/kstrtox.o
CC net/ipv4/devinet.o
CC kernel/cred.o
CC drivers/gpu/drm/i915/gt/intel_context.o
CC fs/attr.o
AR drivers/net/ethernet/marvell/built-in.a
AR drivers/cpuidle/governors/built-in.a
CC drivers/net/ethernet/intel/e1000e/netdev.o
CC drivers/cpuidle/governor.o
CC drivers/gpu/drm/drm_file.o
AR drivers/mmc/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt_freq.o
CC mm/swapfile.o
CC drivers/acpi/acpica/utbuffer.o
CC kernel/reboot.o
CC fs/bad_inode.o
CC drivers/cpuidle/sysfs.o
CC drivers/cpufreq/cpufreq_governor.o
CC net/mac80211/aes_gmac.o
AR drivers/net/ethernet/myricom/built-in.a
CC mm/swap_slots.o
CC drivers/acpi/ac.o
CC lib/iomap.o
CC fs/nfs/callback.o
AR drivers/usb/host/built-in.a
AR drivers/usb/built-in.a
AR drivers/ufs/built-in.a
CC drivers/cpuidle/poll_state.o
CC drivers/net/ethernet/intel/e1000e/ptp.o
CC net/ipv6/netfilter.o
CC lib/iomap_copy.o
CC [M] drivers/gpu/drm/xe/xe_gt_idle.o
CC drivers/cpufreq/cpufreq_governor_attr_set.o
CC drivers/md/dm-target.o
CC drivers/acpi/acpica/utcksum.o
CC [M] drivers/gpu/drm/xe/xe_gt_mcr.o
CC net/ipv6/proc.o
CC fs/file.o
CC drivers/acpi/button.o
CC lib/devres.o
CC arch/x86/kernel/smpboot.o
CC fs/nfs/callback_xdr.o
CC drivers/acpi/acpica/utcopy.o
CC fs/filesystems.o
CC drivers/cpuidle/cpuidle-haltpoll.o
AR drivers/firmware/arm_ffa/built-in.a
AR drivers/firmware/arm_scmi/built-in.a
AR drivers/firmware/broadcom/built-in.a
AR drivers/firmware/cirrus/built-in.a
AR drivers/firmware/meson/built-in.a
AR drivers/firmware/microchip/built-in.a
AR drivers/crypto/stm32/built-in.a
AR drivers/crypto/xilinx/built-in.a
AR drivers/firmware/imx/built-in.a
CC drivers/firmware/efi/efi-bgrt.o
CC drivers/firmware/efi/efi.o
AR drivers/crypto/hisilicon/built-in.a
AR drivers/crypto/intel/keembay/built-in.a
AR drivers/crypto/intel/ixp4xx/built-in.a
AR drivers/crypto/intel/built-in.a
CC net/ipv6/syncookies.o
CC drivers/gpu/drm/drm_fourcc.o
AR drivers/crypto/starfive/built-in.a
CC drivers/firmware/efi/libstub/efi-stub-helper.o
AR drivers/crypto/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt_pagefault.o
CC fs/namespace.o
CC fs/seq_file.o
CC drivers/cpufreq/acpi-cpufreq.o
CC fs/xattr.o
CC lib/check_signature.o
CC drivers/acpi/fan_core.o
CC drivers/firmware/efi/vars.o
CC mm/dmapool.o
CC drivers/firmware/efi/libstub/gop.o
CC lib/interval_tree.o
CC drivers/acpi/acpica/utexcep.o
CC kernel/async.o
AR drivers/cpuidle/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt_sysfs.o
CC arch/x86/kernel/tsc_sync.o
CC lib/assoc_array.o
CC drivers/cpufreq/amd-pstate.o
CC drivers/md/dm-linear.o
CC fs/libfs.o
CC fs/nfs/callback_proc.o
CC drivers/acpi/fan_attr.o
CC arch/x86/kernel/setup_percpu.o
CC net/ipv4/af_inet.o
CC drivers/clocksource/acpi_pm.o
CC drivers/gpu/drm/i915/gt/intel_context_sseu.o
CC drivers/clocksource/i8253.o
CC drivers/acpi/acpica/utdebug.o
CC drivers/acpi/fan_hwmon.o
AR drivers/net/ethernet/natsemi/built-in.a
CC drivers/gpu/drm/drm_framebuffer.o
CC drivers/gpu/drm/i915/gt/intel_engine_cs.o
CC drivers/md/dm-stripe.o
CC drivers/hid/usbhid/hid-core.o
CC kernel/range.o
CC drivers/gpu/drm/drm_gem.o
CC net/ipv6/calipso.o
CC kernel/smpboot.o
CC net/mac80211/fils_aead.o
CC mm/hugetlb.o
CC drivers/cpufreq/amd-pstate-trace.o
CC drivers/hid/usbhid/hiddev.o
CC drivers/gpu/drm/i915/gt/intel_engine_heartbeat.o
AR drivers/firmware/psci/built-in.a
CC drivers/hid/hid-core.o
AR drivers/net/ethernet/neterion/built-in.a
CC drivers/gpu/drm/i915/gt/intel_engine_pm.o
CC arch/x86/kernel/mpparse.o
CC kernel/ucount.o
CC drivers/firmware/efi/libstub/secureboot.o
CC drivers/acpi/acpica/utdecode.o
CC lib/bitrev.o
GEN net/wireless/shipped-certs.c
CC drivers/hid/usbhid/hid-pidff.o
CC drivers/acpi/acpica/utdelete.o
CC [M] drivers/gpu/drm/xe/xe_gt_throttle.o
CC drivers/acpi/acpica/uterror.o
CC arch/x86/kernel/trace_clock.o
CC net/ipv4/igmp.o
CC drivers/gpu/drm/i915/gt/intel_engine_user.o
CC net/mac80211/cfg.o
CC net/ipv6/ah6.o
CC drivers/hid/hid-input.o
AR drivers/firmware/qcom/built-in.a
CC drivers/firmware/efi/reboot.o
CC net/ipv4/fib_frontend.o
AR drivers/clocksource/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
CC net/ipv6/esp6.o
CC drivers/gpu/drm/drm_ioctl.o
CC drivers/gpu/drm/i915/gt/intel_execlists_submission.o
CC drivers/acpi/acpi_video.o
CC mm/mmu_notifier.o
CC lib/crc-ccitt.o
AR drivers/net/ethernet/netronome/built-in.a
CC kernel/regset.o
AR drivers/platform/x86/amd/built-in.a
AR drivers/platform/surface/built-in.a
AR drivers/platform/x86/intel/built-in.a
CC drivers/acpi/acpica/uteval.o
CC mm/migrate.o
CC drivers/platform/x86/wmi.o
CC drivers/acpi/video_detect.o
CC net/ipv4/fib_semantics.o
CC net/wireless/shipped-certs.o
AR drivers/firmware/smccc/built-in.a
CC drivers/firmware/efi/memattr.o
CC kernel/ksyms_common.o
CC drivers/firmware/efi/libstub/tpm.o
CC drivers/hid/hid-quirks.o
CC drivers/cpufreq/intel_pstate.o
CC drivers/gpu/drm/drm_lease.o
CC lib/crc16.o
CC net/mac80211/ethtool.o
CC drivers/md/dm-ioctl.o
CC kernel/groups.o
CC drivers/acpi/acpica/utglobal.o
AR drivers/net/ethernet/ni/built-in.a
CC drivers/acpi/processor_driver.o
CC arch/x86/kernel/trace.o
CC [M] drivers/gpu/drm/xe/xe_gt_topology.o
CC drivers/firmware/efi/libstub/file.o
CC fs/nfs/nfs4namespace.o
CC drivers/firmware/efi/libstub/mem.o
CC mm/page_counter.o
CC drivers/acpi/acpica/uthex.o
CC kernel/kcmp.o
CC drivers/mailbox/mailbox.o
HOSTCC lib/gen_crc32table
CC net/ipv4/fib_trie.o
CC mm/hugetlb_cgroup.o
CC drivers/gpu/drm/drm_managed.o
CC net/mac80211/rx.o
CC lib/xxhash.o
CC drivers/md/dm-io.o
CC fs/nfs/nfs4getroot.o
CC drivers/gpu/drm/i915/gt/intel_ggtt.o
AR drivers/hid/usbhid/built-in.a
CC drivers/acpi/processor_thermal.o
CC drivers/hid/hid-debug.o
CC drivers/net/ethernet/nvidia/forcedeth.o
CC drivers/gpu/drm/i915/gt/intel_ggtt_fencing.o
CC drivers/platform/x86/wmi-bmof.o
CC net/mac80211/spectmgmt.o
CC drivers/acpi/acpica/utids.o
CC lib/genalloc.o
AR drivers/net/ethernet/oki-semi/built-in.a
CC drivers/gpu/drm/drm_mm.o
CC drivers/mailbox/pcc.o
CC [M] drivers/gpu/drm/xe/xe_guc.o
CC drivers/firmware/efi/tpm.o
CC arch/x86/kernel/rethook.o
AR drivers/firmware/tegra/built-in.a
CC arch/x86/kernel/vmcore_info_32.o
CC kernel/freezer.o
AR drivers/net/ethernet/packetengines/built-in.a
CC lib/percpu_counter.o
CC drivers/acpi/acpica/utinit.o
CC lib/audit.o
CC drivers/firmware/efi/libstub/random.o
CC lib/syscall.o
CC [M] drivers/gpu/drm/xe/xe_guc_ads.o
CC drivers/md/dm-kcopyd.o
CC net/mac80211/tx.o
CC fs/fs-writeback.o
AR drivers/net/ethernet/qlogic/built-in.a
CC drivers/hid/hidraw.o
CC mm/early_ioremap.o
CC [M] drivers/gpu/drm/xe/xe_guc_buf.o
AR drivers/firmware/xilinx/built-in.a
CC arch/x86/kernel/machine_kexec_32.o
CC drivers/platform/x86/eeepc-laptop.o
CC net/ipv6/sit.o
CC drivers/acpi/acpica/utlock.o
CC fs/nfs/nfs4client.o
AR drivers/mailbox/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gt.o
CC drivers/acpi/acpica/utmath.o
CC mm/secretmem.o
CC drivers/md/dm-sysfs.o
CC kernel/profile.o
CC drivers/firmware/efi/memmap.o
AR drivers/net/ethernet/qualcomm/emac/built-in.a
AR drivers/net/ethernet/qualcomm/built-in.a
CC drivers/firmware/efi/capsule.o
AS arch/x86/kernel/relocate_kernel_32.o
CC kernel/stacktrace.o
CC [M] drivers/gpu/drm/xe/xe_guc_capture.o
CC drivers/hid/hid-generic.o
CC kernel/dma.o
CC lib/errname.o
CC drivers/md/dm-stats.o
CC drivers/acpi/acpica/utmisc.o
CC [M] drivers/gpu/drm/xe/xe_guc_ct.o
CC drivers/firmware/dmi_scan.o
CC drivers/firmware/efi/libstub/randomalloc.o
CC lib/nlattr.o
AR drivers/perf/built-in.a
CC drivers/platform/x86/p2sb.o
AR drivers/hwtracing/intel_th/built-in.a
CC net/ipv6/addrconf_core.o
AR drivers/android/built-in.a
CC net/ipv4/fib_notifier.o
CC drivers/firmware/dmi-id.o
CC [M] drivers/gpu/drm/xe/xe_guc_db_mgr.o
CC fs/pnode.o
CC drivers/acpi/processor_idle.o
CC lib/cpu_rmap.o
CC drivers/hid/hid-a4tech.o
AR drivers/net/ethernet/intel/e1000e/built-in.a
CC drivers/acpi/acpica/utmutex.o
AR drivers/net/ethernet/intel/built-in.a
CC arch/x86/kernel/crash_dump_32.o
CC net/ipv4/inet_fragment.o
CC drivers/firmware/efi/libstub/pci.o
CC [M] drivers/gpu/drm/xe/xe_guc_hwconfig.o
AR drivers/nvmem/layouts/built-in.a
CC drivers/nvmem/core.o
CC net/ipv6/exthdrs_core.o
AR drivers/cpufreq/built-in.a
CC net/ipv4/ping.o
CC drivers/firmware/efi/libstub/skip_spaces.o
CC net/ipv4/ip_tunnel_core.o
CC drivers/acpi/processor_throttling.o
CC kernel/smp.o
CC mm/hmm.o
CC drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.o
CC drivers/acpi/acpica/utnonansi.o
CC lib/dynamic_queue_limits.o
CC drivers/firmware/efi/libstub/lib-cmdline.o
CC kernel/uid16.o
CC net/mac80211/key.o
CC arch/x86/kernel/crash.o
CC drivers/acpi/processor_perflib.o
CC net/ipv4/gre_offload.o
CC drivers/firmware/efi/esrt.o
CC net/ipv4/metrics.o
CC drivers/firmware/memmap.o
CC kernel/kallsyms.o
CC kernel/acct.o
AR drivers/platform/x86/built-in.a
CC net/ipv6/ip6_checksum.o
AR drivers/platform/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.o
/workspace/kernel/drivers/gpu/drm/xe/xe_guc_ct.c: In function ‘xe_guc_ct_snapshot_print’:
/workspace/kernel/drivers/gpu/drm/xe/xe_guc_ct.c:1727:58: error: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘size_t’ {aka ‘unsigned int’} [-Werror=format=]
1727 | drm_printf(p, "[CTB].length: 0x%lx\n", snapshot->ctb_size);
| ~~^ ~~~~~~~~~~~~~~~~~~
| | |
| | size_t {aka unsigned int}
| long unsigned int
| %x
CC drivers/hid/hid-apple.o
CC drivers/acpi/container.o
CC drivers/gpu/drm/drm_mode_config.o
CC drivers/acpi/acpica/utobject.o
CC drivers/acpi/acpica/utosi.o
CC drivers/firmware/efi/libstub/lib-ctype.o
CC net/mac80211/util.o
CC fs/nfs/nfs4session.o
CC drivers/firmware/efi/libstub/alignedmem.o
CC drivers/md/dm-rq.o
CC drivers/firmware/efi/runtime-wrappers.o
CC [M] drivers/gpu/drm/xe/xe_guc_id_mgr.o
CC drivers/gpu/drm/drm_mode_object.o
CC drivers/net/ethernet/realtek/8139too.o
CC net/ipv6/ip6_icmp.o
CC arch/x86/kernel/module.o
CC drivers/hid/hid-belkin.o
CC net/mac80211/parse.o
CC arch/x86/kernel/doublefault_32.o
CC drivers/acpi/thermal_lib.o
CC drivers/net/ethernet/realtek/r8169_main.o
CC net/mac80211/wme.o
CC arch/x86/kernel/early_printk.o
CC net/ipv4/netlink.o
CC mm/memfd.o
CC drivers/acpi/acpica/utownerid.o
CC [M] drivers/gpu/drm/xe/xe_guc_klv_helpers.o
cc1: all warnings being treated as errors
make[6]: *** [/workspace/kernel/scripts/Makefile.build:194: drivers/gpu/drm/xe/xe_guc_ct.o] Error 1
make[6]: *** Waiting for unfinished jobs....
CC drivers/gpu/drm/drm_modes.o
CC drivers/hid/hid-cherry.o
AR drivers/net/ethernet/renesas/built-in.a
CC drivers/firmware/efi/libstub/relocate.o
CC fs/nfs/dns_resolve.o
CC drivers/md/dm-io-rewind.o
CC lib/glob.o
AR drivers/nvmem/built-in.a
CC drivers/hid/hid-chicony.o
CC drivers/acpi/thermal.o
CC arch/x86/kernel/hpet.o
CC drivers/gpu/drm/i915/gt/intel_gt_clock_utils.o
CC mm/ptdump.o
CC kernel/vmcore_info.o
CC drivers/acpi/acpica/utpredef.o
CC lib/strncpy_from_user.o
CC drivers/acpi/nhlt.o
CC net/mac80211/chan.o
CC drivers/firmware/efi/capsule-loader.o
CC drivers/net/ethernet/realtek/r8169_firmware.o
CC fs/nfs/nfs4trace.o
CC drivers/firmware/efi/libstub/printk.o
CC drivers/hid/hid-cypress.o
CC drivers/acpi/acpica/utresdecode.o
CC drivers/gpu/drm/drm_modeset_lock.o
CC drivers/hid/hid-ezkey.o
AR drivers/net/ethernet/nvidia/built-in.a
CC kernel/elfcorehdr.o
CC fs/splice.o
CC drivers/md/dm-builtin.o
make[5]: *** [/workspace/kernel/scripts/Makefile.build:440: drivers/gpu/drm/xe] Error 2
make[5]: *** Waiting for unfinished jobs....
CC drivers/firmware/efi/earlycon.o
CC drivers/net/ethernet/realtek/r8169_phy_config.o
CC drivers/gpu/drm/i915/gt/intel_gt_debugfs.o
CC net/ipv6/output_core.o
CC fs/nfs/nfs4sysctl.o
CC drivers/acpi/acpi_memhotplug.o
CC drivers/acpi/acpica/utresrc.o
CC net/mac80211/trace.o
CC lib/strnlen_user.o
CC drivers/gpu/drm/i915/gt/intel_gt_engines_debugfs.o
CC mm/execmem.o
CC arch/x86/kernel/amd_nb.o
CC drivers/acpi/ioapic.o
CC net/ipv6/protocol.o
CC drivers/acpi/battery.o
CC arch/x86/kernel/kvm.o
CC drivers/gpu/drm/i915/gt/intel_gt_irq.o
CC fs/sync.o
CC drivers/acpi/bgrt.o
CC net/ipv4/nexthop.o
AR drivers/net/ethernet/rdc/built-in.a
AR drivers/net/ethernet/rocker/built-in.a
CC kernel/crash_reserve.o
CC drivers/acpi/spcr.o
CC net/ipv6/ip6_offload.o
CC fs/utimes.o
CC drivers/acpi/acpica/utstate.o
CC arch/x86/kernel/kvmclock.o
CC net/ipv4/udp_tunnel_stub.o
AR drivers/net/ethernet/samsung/built-in.a
CC net/mac80211/mlme.o
CC drivers/firmware/efi/libstub/vsprintf.o
CC drivers/hid/hid-gyration.o
CC drivers/gpu/drm/i915/gt/intel_gt_mcr.o
CC lib/net_utils.o
CC drivers/hid/hid-ite.o
CC drivers/md/dm-raid1.o
CC net/ipv4/ip_tunnel.o
CC arch/x86/kernel/paravirt.o
CC drivers/acpi/acpica/utstring.o
CC drivers/gpu/drm/i915/gt/intel_gt_pm.o
CC net/ipv4/sysctl_net_ipv4.o
CC drivers/firmware/efi/libstub/x86-stub.o
CC drivers/acpi/acpica/utstrsuppt.o
CC drivers/acpi/acpica/utstrtoul64.o
CC fs/d_path.o
CC arch/x86/kernel/pvclock.o
AR mm/built-in.a
AR drivers/firmware/efi/built-in.a
AR drivers/net/ethernet/seeq/built-in.a
CC net/ipv6/tcpv6_offload.o
CC drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.o
CC net/ipv4/proc.o
CC arch/x86/kernel/pcspeaker.o
CC net/ipv4/fib_rules.o
CC lib/sg_pool.o
CC arch/x86/kernel/check.o
CC kernel/kexec_core.o
AR drivers/net/ethernet/silan/built-in.a
CC fs/stack.o
CC kernel/crash_core.o
CC drivers/hid/hid-kensington.o
CC arch/x86/kernel/uprobes.o
CC drivers/acpi/acpica/utxface.o
CC net/mac80211/tdls.o
CC net/ipv4/ipmr.o
CC lib/stackdepot.o
CC drivers/md/dm-log.o
CC lib/asn1_decoder.o
AR drivers/net/ethernet/sis/built-in.a
CC drivers/firmware/efi/libstub/smbios.o
CC net/mac80211/ocb.o
CC net/ipv6/exthdrs_offload.o
CC fs/fs_struct.o
CC drivers/gpu/drm/i915/gt/intel_gt_pm_irq.o
CC net/mac80211/airtime.o
GEN lib/oid_registry_data.c
STUBCPY drivers/firmware/efi/libstub/alignedmem.stub.o
CC drivers/md/dm-region-hash.o
CC arch/x86/kernel/perf_regs.o
CC net/mac80211/eht.o
AR drivers/net/ethernet/sfc/built-in.a
CC drivers/acpi/acpica/utxfinit.o
CC net/ipv4/ipmr_base.o
CC kernel/kexec.o
CC net/ipv6/inet6_hashtables.o
CC lib/ucs2_string.o
STUBCPY drivers/firmware/efi/libstub/efi-stub-helper.stub.o
CC drivers/md/dm-zero.o
CC lib/sbitmap.o
AR drivers/net/ethernet/smsc/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gt_requests.o
CC arch/x86/kernel/tracepoint.o
CC net/ipv6/mcast_snoop.o
CC kernel/utsname.o
CC drivers/hid/hid-lg.o
CC drivers/acpi/acpica/utxferror.o
CC lib/group_cpus.o
STUBCPY drivers/firmware/efi/libstub/file.stub.o
CC net/mac80211/led.o
STUBCPY drivers/firmware/efi/libstub/gop.stub.o
CC net/mac80211/pm.o
CC kernel/pid_namespace.o
CC kernel/stop_machine.o
CC drivers/hid/hid-lgff.o
STUBCPY drivers/firmware/efi/libstub/lib-cmdline.stub.o
STUBCPY drivers/firmware/efi/libstub/lib-ctype.stub.o
CC drivers/acpi/acpica/utxfmutex.o
STUBCPY drivers/firmware/efi/libstub/mem.stub.o
STUBCPY drivers/firmware/efi/libstub/pci.stub.o
CC drivers/gpu/drm/i915/gt/intel_gt_sysfs.o
STUBCPY drivers/firmware/efi/libstub/printk.stub.o
STUBCPY drivers/firmware/efi/libstub/random.stub.o
STUBCPY drivers/firmware/efi/libstub/randomalloc.stub.o
STUBCPY drivers/firmware/efi/libstub/relocate.stub.o
CC net/ipv4/syncookies.o
STUBCPY drivers/firmware/efi/libstub/secureboot.stub.o
AR drivers/net/ethernet/socionext/built-in.a
AR drivers/net/ethernet/stmicro/built-in.a
CC net/ipv4/tunnel4.o
STUBCPY drivers/firmware/efi/libstub/skip_spaces.stub.o
CC fs/statfs.o
STUBCPY drivers/firmware/efi/libstub/smbios.stub.o
STUBCPY drivers/firmware/efi/libstub/tpm.stub.o
STUBCPY drivers/firmware/efi/libstub/vsprintf.stub.o
CC kernel/audit.o
STUBCPY drivers/firmware/efi/libstub/x86-stub.stub.o
AR drivers/firmware/efi/libstub/lib.a
CC arch/x86/kernel/itmt.o
CC net/mac80211/rc80211_minstrel_ht.o
CC arch/x86/kernel/umip.o
AR drivers/firmware/built-in.a
CC fs/fs_pin.o
CC arch/x86/kernel/unwind_frame.o
CC net/mac80211/wbrf.o
CC drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.o
CC fs/nsfs.o
CC kernel/auditfilter.o
AR drivers/net/ethernet/sun/built-in.a
CC lib/fw_table.o
CC fs/fs_types.o
CC drivers/hid/hid-lg4ff.o
AR drivers/md/built-in.a
CC fs/fs_context.o
CC kernel/auditsc.o
CC drivers/hid/hid-lg-g15.o
AR drivers/acpi/acpica/built-in.a
CC kernel/audit_watch.o
AR drivers/acpi/built-in.a
AR drivers/net/ethernet/tehuti/built-in.a
CC fs/fs_parser.o
AR drivers/net/ethernet/realtek/built-in.a
CC drivers/hid/hid-microsoft.o
AR drivers/net/ethernet/ti/built-in.a
AR drivers/net/ethernet/vertexcom/built-in.a
AR drivers/net/ethernet/via/built-in.a
AR drivers/net/ethernet/wangxun/built-in.a
AR drivers/net/ethernet/wiznet/built-in.a
AR drivers/net/ethernet/xilinx/built-in.a
AR drivers/net/ethernet/xircom/built-in.a
AR drivers/net/ethernet/synopsys/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gtt.o
CC net/ipv4/ipconfig.o
CC kernel/audit_fsnotify.o
AR drivers/net/ethernet/pensando/built-in.a
AR drivers/net/ethernet/built-in.a
CC fs/fsopen.o
AR lib/lib.a
CC net/ipv4/netfilter.o
CC net/ipv4/tcp_cubic.o
CC fs/init.o
CC kernel/audit_tree.o
CC net/ipv4/tcp_sigpool.o
CC drivers/gpu/drm/i915/gt/intel_llc.o
GEN lib/crc32table.h
CC fs/kernel_read_file.o
CC net/ipv4/cipso_ipv4.o
CC lib/oid_registry.o
CC fs/mnt_idmapping.o
AR drivers/net/built-in.a
CC kernel/kprobes.o
CC drivers/gpu/drm/i915/gt/intel_lrc.o
CC kernel/seccomp.o
CC drivers/hid/hid-monterey.o
CC drivers/gpu/drm/i915/gt/intel_migrate.o
CC kernel/relay.o
AR arch/x86/kernel/built-in.a
AR net/ipv6/built-in.a
AR arch/x86/built-in.a
CC drivers/gpu/drm/i915/gt/intel_mocs.o
CC net/ipv4/xfrm4_policy.o
CC drivers/hid/hid-ntrig.o
CC kernel/utsname_sysctl.o
CC net/ipv4/xfrm4_state.o
AR fs/nfs/built-in.a
CC drivers/gpu/drm/i915/gt/intel_ppgtt.o
CC net/ipv4/xfrm4_input.o
CC lib/crc32.o
CC fs/remap_range.o
CC drivers/hid/hid-pl.o
CC kernel/delayacct.o
CC drivers/hid/hid-petalynx.o
CC drivers/hid/hid-redragon.o
CC fs/pidfs.o
CC kernel/taskstats.o
CC drivers/gpu/drm/i915/gt/intel_rc6.o
CC kernel/tsacct.o
CC net/ipv4/xfrm4_output.o
CC fs/buffer.o
CC kernel/tracepoint.o
CC drivers/hid/hid-samsung.o
CC fs/mpage.o
CC fs/proc_namespace.o
CC net/ipv4/xfrm4_protocol.o
CC drivers/gpu/drm/i915/gt/intel_region_lmem.o
CC drivers/hid/hid-sony.o
AR net/wireless/built-in.a
CC kernel/irq_work.o
CC drivers/gpu/drm/i915/gt/intel_renderstate.o
AR lib/built-in.a
CC fs/direct-io.o
CC drivers/hid/hid-sunplus.o
CC kernel/static_call.o
CC drivers/gpu/drm/i915/gt/intel_reset.o
CC kernel/padata.o
CC drivers/hid/hid-topseed.o
CC fs/eventpoll.o
CC drivers/gpu/drm/i915/gt/intel_ring.o
CC kernel/jump_label.o
CC fs/anon_inodes.o
CC drivers/gpu/drm/i915/gt/intel_ring_submission.o
CC fs/signalfd.o
CC kernel/context_tracking.o
CC fs/timerfd.o
CC kernel/iomem.o
CC drivers/gpu/drm/i915/gt/intel_rps.o
CC kernel/rseq.o
CC fs/eventfd.o
CC fs/aio.o
CC drivers/gpu/drm/i915/gt/intel_sa_media.o
CC drivers/gpu/drm/i915/gt/intel_sseu.o
CC fs/locks.o
CC drivers/gpu/drm/i915/gt/intel_sseu_debugfs.o
CC fs/binfmt_misc.o
CC fs/binfmt_script.o
CC drivers/gpu/drm/i915/gt/intel_timeline.o
CC drivers/gpu/drm/i915/gt/intel_tlb.o
CC fs/binfmt_elf.o
CC fs/mbcache.o
CC drivers/gpu/drm/i915/gt/intel_wopcm.o
CC drivers/gpu/drm/i915/gt/intel_workarounds.o
CC fs/posix_acl.o
CC drivers/gpu/drm/i915/gt/shmem_utils.o
CC fs/coredump.o
CC drivers/gpu/drm/i915/gt/sysfs_engines.o
CC fs/drop_caches.o
CC drivers/gpu/drm/i915/gt/intel_ggtt_gmch.o
CC fs/sysctls.o
CC fs/fhandle.o
CC drivers/gpu/drm/i915/gt/gen6_renderstate.o
CC drivers/gpu/drm/i915/gt/gen7_renderstate.o
CC drivers/gpu/drm/i915/gt/gen8_renderstate.o
AR net/ipv4/built-in.a
CC drivers/gpu/drm/i915/gt/gen9_renderstate.o
CC drivers/gpu/drm/i915/gem/i915_gem_busy.o
CC drivers/gpu/drm/i915/gem/i915_gem_clflush.o
CC drivers/gpu/drm/i915/gem/i915_gem_context.o
CC drivers/gpu/drm/i915/gem/i915_gem_create.o
CC drivers/gpu/drm/i915/gem/i915_gem_dmabuf.o
CC drivers/gpu/drm/i915/gem/i915_gem_domain.o
CC drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o
CC drivers/gpu/drm/i915/gem/i915_gem_internal.o
AR drivers/hid/built-in.a
CC drivers/gpu/drm/i915/gem/i915_gem_lmem.o
CC drivers/gpu/drm/i915/gem/i915_gem_mman.o
CC drivers/gpu/drm/i915/gem/i915_gem_object.o
CC drivers/gpu/drm/i915/gem/i915_gem_pages.o
CC drivers/gpu/drm/i915/gem/i915_gem_phys.o
CC drivers/gpu/drm/i915/gem/i915_gem_pm.o
CC drivers/gpu/drm/i915/gem/i915_gem_region.o
CC drivers/gpu/drm/i915/gem/i915_gem_shmem.o
CC drivers/gpu/drm/i915/gem/i915_gem_shrinker.o
CC drivers/gpu/drm/i915/gem/i915_gem_stolen.o
CC drivers/gpu/drm/i915/gem/i915_gem_throttle.o
CC drivers/gpu/drm/i915/gem/i915_gem_tiling.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm_move.o
AR kernel/built-in.a
CC drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.o
CC drivers/gpu/drm/i915/gem/i915_gem_userptr.o
CC drivers/gpu/drm/i915/gem/i915_gem_wait.o
CC drivers/gpu/drm/i915/gem/i915_gemfs.o
CC drivers/gpu/drm/i915/i915_active.o
CC drivers/gpu/drm/i915/i915_cmd_parser.o
CC drivers/gpu/drm/i915/i915_deps.o
CC drivers/gpu/drm/i915/i915_gem.o
CC drivers/gpu/drm/i915/i915_gem_evict.o
CC drivers/gpu/drm/i915/i915_gem_gtt.o
CC drivers/gpu/drm/i915/i915_gem_ww.o
CC drivers/gpu/drm/i915/i915_query.o
CC drivers/gpu/drm/i915/i915_request.o
CC drivers/gpu/drm/i915/i915_scheduler.o
CC drivers/gpu/drm/i915/i915_trace_points.o
CC drivers/gpu/drm/i915/i915_ttm_buddy_manager.o
CC drivers/gpu/drm/i915/i915_vma.o
CC drivers/gpu/drm/i915/i915_vma_resource.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_heci_cmd_submit.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_ads.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_capture.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_ct.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_fw.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_hwconfig.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_log.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_log_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_rc.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_submission.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc_fw.o
CC drivers/gpu/drm/i915/gt/uc/intel_uc.o
CC drivers/gpu/drm/i915/gt/uc/intel_uc_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_uc_fw.o
CC drivers/gpu/drm/i915/gt/intel_gsc.o
CC drivers/gpu/drm/i915/i915_hwmon.o
CC drivers/gpu/drm/i915/display/hsw_ips.o
CC drivers/gpu/drm/i915/display/i9xx_plane.o
CC drivers/gpu/drm/i915/display/i9xx_display_sr.o
CC drivers/gpu/drm/i915/display/i9xx_wm.o
CC drivers/gpu/drm/i915/display/intel_alpm.o
CC drivers/gpu/drm/i915/display/intel_atomic.o
CC drivers/gpu/drm/i915/display/intel_atomic_plane.o
CC drivers/gpu/drm/i915/display/intel_audio.o
AR fs/built-in.a
CC drivers/gpu/drm/i915/display/intel_bios.o
CC drivers/gpu/drm/i915/display/intel_bo.o
CC drivers/gpu/drm/i915/display/intel_bw.o
CC drivers/gpu/drm/i915/display/intel_cdclk.o
CC drivers/gpu/drm/i915/display/intel_cmtg.o
CC drivers/gpu/drm/i915/display/intel_color.o
CC drivers/gpu/drm/i915/display/intel_combo_phy.o
CC drivers/gpu/drm/i915/display/intel_connector.o
CC drivers/gpu/drm/i915/display/intel_crtc.o
CC drivers/gpu/drm/i915/display/intel_crtc_state_dump.o
CC drivers/gpu/drm/i915/display/intel_cursor.o
CC drivers/gpu/drm/i915/display/intel_display.o
CC drivers/gpu/drm/i915/display/intel_display_conversion.o
CC drivers/gpu/drm/i915/display/intel_display_driver.o
CC drivers/gpu/drm/i915/display/intel_display_irq.o
CC drivers/gpu/drm/i915/display/intel_display_params.o
CC drivers/gpu/drm/i915/display/intel_display_power.o
CC drivers/gpu/drm/i915/display/intel_display_power_map.o
CC drivers/gpu/drm/i915/display/intel_display_power_well.o
CC drivers/gpu/drm/i915/display/intel_display_reset.o
CC drivers/gpu/drm/i915/display/intel_display_rps.o
CC drivers/gpu/drm/i915/display/intel_display_snapshot.o
CC drivers/gpu/drm/i915/display/intel_display_wa.o
CC drivers/gpu/drm/i915/display/intel_dmc.o
CC drivers/gpu/drm/i915/display/intel_dmc_wl.o
CC drivers/gpu/drm/i915/display/intel_dpio_phy.o
CC drivers/gpu/drm/i915/display/intel_dpll.o
CC drivers/gpu/drm/i915/display/intel_dpll_mgr.o
CC drivers/gpu/drm/i915/display/intel_dpt.o
CC drivers/gpu/drm/i915/display/intel_dpt_common.o
CC drivers/gpu/drm/i915/display/intel_drrs.o
CC drivers/gpu/drm/i915/display/intel_dsb.o
CC drivers/gpu/drm/i915/display/intel_dsb_buffer.o
CC drivers/gpu/drm/i915/display/intel_fb.o
CC drivers/gpu/drm/i915/display/intel_fb_bo.o
CC drivers/gpu/drm/i915/display/intel_fb_pin.o
CC drivers/gpu/drm/i915/display/intel_fbc.o
CC drivers/gpu/drm/i915/display/intel_fdi.o
CC drivers/gpu/drm/i915/display/intel_fifo_underrun.o
CC drivers/gpu/drm/i915/display/intel_frontbuffer.o
CC drivers/gpu/drm/i915/display/intel_global_state.o
CC drivers/gpu/drm/i915/display/intel_hdcp.o
CC drivers/gpu/drm/i915/display/intel_hdcp_gsc.o
CC drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.o
CC drivers/gpu/drm/i915/display/intel_hotplug.o
CC drivers/gpu/drm/i915/display/intel_hotplug_irq.o
CC drivers/gpu/drm/i915/display/intel_hti.o
CC drivers/gpu/drm/i915/display/intel_link_bw.o
CC drivers/gpu/drm/i915/display/intel_load_detect.o
CC drivers/gpu/drm/i915/display/intel_lpe_audio.o
CC drivers/gpu/drm/i915/display/intel_modeset_lock.o
CC drivers/gpu/drm/i915/display/intel_modeset_setup.o
CC drivers/gpu/drm/i915/display/intel_modeset_verify.o
CC drivers/gpu/drm/i915/display/intel_overlay.o
CC drivers/gpu/drm/i915/display/intel_pch_display.o
CC drivers/gpu/drm/i915/display/intel_pch_refclk.o
CC drivers/gpu/drm/i915/display/intel_plane_initial.o
CC drivers/gpu/drm/i915/display/intel_pmdemand.o
AR net/mac80211/built-in.a
AR net/built-in.a
CC drivers/gpu/drm/i915/display/intel_psr.o
CC drivers/gpu/drm/i915/display/intel_quirks.o
CC drivers/gpu/drm/i915/display/intel_sprite.o
CC drivers/gpu/drm/i915/display/intel_sprite_uapi.o
CC drivers/gpu/drm/i915/display/intel_tc.o
CC drivers/gpu/drm/i915/display/intel_vblank.o
CC drivers/gpu/drm/i915/display/intel_vga.o
CC drivers/gpu/drm/i915/display/intel_wm.o
CC drivers/gpu/drm/i915/display/skl_scaler.o
CC drivers/gpu/drm/i915/display/skl_universal_plane.o
CC drivers/gpu/drm/i915/display/skl_watermark.o
CC drivers/gpu/drm/i915/display/intel_acpi.o
CC drivers/gpu/drm/i915/display/intel_opregion.o
CC drivers/gpu/drm/i915/display/intel_display_debugfs.o
CC drivers/gpu/drm/i915/display/intel_display_debugfs_params.o
CC drivers/gpu/drm/i915/display/intel_pipe_crc.o
CC drivers/gpu/drm/i915/display/dvo_ch7017.o
CC drivers/gpu/drm/i915/display/dvo_ch7xxx.o
CC drivers/gpu/drm/i915/display/dvo_ivch.o
CC drivers/gpu/drm/i915/display/dvo_ns2501.o
CC drivers/gpu/drm/i915/display/dvo_sil164.o
CC drivers/gpu/drm/i915/display/dvo_tfp410.o
CC drivers/gpu/drm/i915/display/g4x_dp.o
CC drivers/gpu/drm/i915/display/g4x_hdmi.o
CC drivers/gpu/drm/i915/display/icl_dsi.o
CC drivers/gpu/drm/i915/display/intel_backlight.o
CC drivers/gpu/drm/i915/display/intel_crt.o
CC drivers/gpu/drm/i915/display/intel_cx0_phy.o
CC drivers/gpu/drm/i915/display/intel_ddi.o
CC drivers/gpu/drm/i915/display/intel_ddi_buf_trans.o
CC drivers/gpu/drm/i915/display/intel_display_device.o
CC drivers/gpu/drm/i915/display/intel_display_trace.o
CC drivers/gpu/drm/i915/display/intel_dkl_phy.o
CC drivers/gpu/drm/i915/display/intel_dp.o
CC drivers/gpu/drm/i915/display/intel_dp_aux.o
CC drivers/gpu/drm/i915/display/intel_dp_aux_backlight.o
CC drivers/gpu/drm/i915/display/intel_dp_hdcp.o
CC drivers/gpu/drm/i915/display/intel_dp_link_training.o
CC drivers/gpu/drm/i915/display/intel_dp_mst.o
CC drivers/gpu/drm/i915/display/intel_dp_test.o
CC drivers/gpu/drm/i915/display/intel_dsi.o
CC drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.o
CC drivers/gpu/drm/i915/display/intel_dsi_vbt.o
CC drivers/gpu/drm/i915/display/intel_dvo.o
CC drivers/gpu/drm/i915/display/intel_encoder.o
CC drivers/gpu/drm/i915/display/intel_gmbus.o
CC drivers/gpu/drm/i915/display/intel_hdmi.o
CC drivers/gpu/drm/i915/display/intel_lspcon.o
CC drivers/gpu/drm/i915/display/intel_lvds.o
CC drivers/gpu/drm/i915/display/intel_panel.o
CC drivers/gpu/drm/i915/display/intel_pfit.o
CC drivers/gpu/drm/i915/display/intel_pps.o
CC drivers/gpu/drm/i915/display/intel_qp_tables.o
CC drivers/gpu/drm/i915/display/intel_sdvo.o
CC drivers/gpu/drm/i915/display/intel_snps_hdmi_pll.o
CC drivers/gpu/drm/i915/display/intel_snps_phy.o
CC drivers/gpu/drm/i915/display/intel_tv.o
CC drivers/gpu/drm/i915/display/intel_vdsc.o
CC drivers/gpu/drm/i915/display/intel_vrr.o
CC drivers/gpu/drm/i915/display/vlv_dsi.o
CC drivers/gpu/drm/i915/display/vlv_dsi_pll.o
CC drivers/gpu/drm/i915/i915_perf.o
CC drivers/gpu/drm/i915/pxp/intel_pxp.o
CC drivers/gpu/drm/i915/pxp/intel_pxp_huc.o
CC drivers/gpu/drm/i915/pxp/intel_pxp_tee.o
CC drivers/gpu/drm/i915/i915_gpu_error.o
CC drivers/gpu/drm/i915/i915_vgpu.o
AR drivers/gpu/drm/i915/built-in.a
make[4]: *** [/workspace/kernel/scripts/Makefile.build:440: drivers/gpu/drm] Error 2
make[3]: *** [/workspace/kernel/scripts/Makefile.build:440: drivers/gpu] Error 2
make[2]: *** [/workspace/kernel/scripts/Makefile.build:440: drivers] Error 2
make[1]: *** [/workspace/kernel/Makefile:1989: .] Error 2
make: *** [/workspace/kernel/Makefile:251: __sub-make] Error 2
run-parts: /workspace/ci/hooks/11-build-32b exited with return code 2
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✓ CI.checksparse: success for drm/sched: Use struct for drm_sched_init() params (rev2)
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
` (5 preceding siblings ...)
2025-01-28 15:49 ` ✗ CI.Hooks: failure " Patchwork
@ 2025-01-28 15:50 ` Patchwork
2025-01-28 16:12 ` ✓ Xe.CI.BAT: " Patchwork
` (8 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2025-01-28 15:50 UTC (permalink / raw)
To: Philipp Stanner; +Cc: intel-xe
== Series Details ==
Series: drm/sched: Use struct for drm_sched_init() params (rev2)
URL : https://patchwork.freedesktop.org/series/143883/
State : success
== Summary ==
+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast f85f4e698972bc6021185ccba59e6e3638a8e060
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
Okay!
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✓ Xe.CI.BAT: success for drm/sched: Use struct for drm_sched_init() params (rev2)
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
` (6 preceding siblings ...)
2025-01-28 15:50 ` ✓ CI.checksparse: success " Patchwork
@ 2025-01-28 16:12 ` Patchwork
2025-01-28 16:17 ` [PATCH v2] drm/sched: Use struct for drm_sched_init() params Liviu Dudau
` (7 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2025-01-28 16:12 UTC (permalink / raw)
To: Philipp Stanner; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 2655 bytes --]
== Series Details ==
Series: drm/sched: Use struct for drm_sched_init() params (rev2)
URL : https://patchwork.freedesktop.org/series/143883/
State : success
== Summary ==
CI Bug Log - changes from xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84_BAT -> xe-pw-143883v2_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (9 -> 8)
------------------------------
Missing (1): bat-adlp-vm
Known issues
------------
Here are the changes found in xe-pw-143883v2_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@xe_live_ktest@xe_migrate:
- bat-adlp-vf: [PASS][1] -> [SKIP][2] ([Intel XE#1192]) +1 other test skip
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/bat-adlp-vf/igt@xe_live_ktest@xe_migrate.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/bat-adlp-vf/igt@xe_live_ktest@xe_migrate.html
* igt@xe_pat@pat-index-xelp@render:
- bat-adlp-vf: [PASS][3] -> [DMESG-WARN][4] ([Intel XE#3970] / [Intel XE#4078]) +1 other test dmesg-warn
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/bat-adlp-vf/igt@xe_pat@pat-index-xelp@render.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/bat-adlp-vf/igt@xe_pat@pat-index-xelp@render.html
#### Warnings ####
* igt@xe_live_ktest@xe_bo:
- bat-adlp-vf: [SKIP][5] ([Intel XE#2229] / [Intel XE#455]) -> [SKIP][6] ([Intel XE#1192])
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/bat-adlp-vf/igt@xe_live_ktest@xe_bo.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/bat-adlp-vf/igt@xe_live_ktest@xe_bo.html
[Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192
[Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
[Intel XE#3970]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3970
[Intel XE#4078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4078
[Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
Build changes
-------------
* Linux: xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84 -> xe-pw-143883v2
IGT_8212: 76102a17560c6e6fc6528db29286b0266ccc48ef @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84: 016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84
xe-pw-143883v2: 143883v2
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/index.html
[-- Attachment #2: Type: text/html, Size: 3332 bytes --]
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2] drm/sched: Use struct for drm_sched_init() params
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
` (7 preceding siblings ...)
2025-01-28 16:12 ` ✓ Xe.CI.BAT: " Patchwork
@ 2025-01-28 16:17 ` Liviu Dudau
2025-01-28 21:49 ` Christian Gmeiner
` (6 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Liviu Dudau @ 2025-01-28 16:17 UTC (permalink / raw)
To: Philipp Stanner
Cc: Alex Deucher, Christian König, Xinhui Pan, David Airlie,
Simona Vetter, Lucas Stach, Russell King, Christian Gmeiner,
Frank Binns, Matt Coster, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Qiang Yu, Rob Clark, Sean Paul, Konrad Dybcio,
Abhinav Kumar, Dmitry Baryshkov, Marijn Suijten, Karol Herbst,
Lyude Paul, Danilo Krummrich, Boris Brezillon, Rob Herring,
Steven Price, Matthew Brost, Melissa Wen, Maíra Canal,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Sunil Khatri, Lijo Lazar, Hawking Zhang, Mario Limonciello,
Ma Jun, Yunxiang Li, amd-gfx, dri-devel, linux-kernel, etnaviv,
lima, linux-arm-msm, freedreno, nouveau, intel-xe
On Tue, Jan 28, 2025 at 03:29:27PM +0100, Philipp Stanner wrote:
> drm_sched_init() has a great many parameters and upcoming new
> functionality for the scheduler might add even more. Generally, the
> great number of parameters reduces readability and has already caused
> one missnaming in:
>
> commit 6f1cacf4eba7 ("drm/nouveau: Improve variable name in nouveau_sched_init()").
>
> Introduce a new struct for the scheduler init parameters and port all
> users.
>
> Signed-off-by: Philipp Stanner <phasta@kernel.org>
[Mostly for drm/panthor, but I had a quick look over the whole patch]
Reviewed-by: Liviu Dudau <liviu.dudau@arm.com>
Best regards,
Liviu
> ---
> Changes in v2:
> - Point out that the hang-limit is deprecated. (Christian)
> - Initialize the structs to 0 at declaration. (Planet Earth)
> - Don't set stuff explicitly to 0 / NULL. (Tvrtko)
> - Make the structs const where possible. (Boris)
> - v3d: Use just 1, universal, function for sched-init. (Maíra)
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 18 ++++--
> drivers/gpu/drm/etnaviv/etnaviv_sched.c | 20 +++----
> drivers/gpu/drm/imagination/pvr_queue.c | 18 ++++--
> drivers/gpu/drm/lima/lima_sched.c | 16 +++--
> drivers/gpu/drm/msm/msm_ringbuffer.c | 17 +++---
> drivers/gpu/drm/nouveau/nouveau_sched.c | 15 +++--
> drivers/gpu/drm/panfrost/panfrost_job.c | 20 ++++---
> drivers/gpu/drm/panthor/panthor_mmu.c | 16 +++--
> drivers/gpu/drm/panthor/panthor_sched.c | 29 +++++----
> drivers/gpu/drm/scheduler/sched_main.c | 50 ++++++----------
> drivers/gpu/drm/v3d/v3d_sched.c | 68 +++++++++-------------
> drivers/gpu/drm/xe/xe_execlist.c | 16 +++--
> drivers/gpu/drm/xe/xe_gpu_scheduler.c | 17 +++++-
> include/drm/gpu_scheduler.h | 37 ++++++++++--
> 14 files changed, 206 insertions(+), 151 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 96316111300a..daf58b0ff0fa 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -2816,6 +2816,12 @@ static int amdgpu_device_fw_loading(struct amdgpu_device *adev)
>
> static int amdgpu_device_init_schedulers(struct amdgpu_device *adev)
> {
> + struct drm_sched_init_args args = {
> + .ops = &amdgpu_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .timeout_wq = adev->reset_domain->wq,
> + .dev = adev->dev
> + };
> long timeout;
> int r, i;
>
> @@ -2841,12 +2847,12 @@ static int amdgpu_device_init_schedulers(struct amdgpu_device *adev)
> break;
> }
>
> - r = drm_sched_init(&ring->sched, &amdgpu_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - ring->num_hw_submission, 0,
> - timeout, adev->reset_domain->wq,
> - ring->sched_score, ring->name,
> - adev->dev);
> + args.timeout = timeout;
> + args.credit_limit = ring->num_hw_submission;
> + args.score = ring->sched_score;
> + args.name = ring->name;
> +
> + r = drm_sched_init(&ring->sched, &args);
> if (r) {
> DRM_ERROR("Failed to create scheduler on ring %s.\n",
> ring->name);
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_sched.c b/drivers/gpu/drm/etnaviv/etnaviv_sched.c
> index 5b67eda122db..1693fd660bf1 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_sched.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_sched.c
> @@ -144,17 +144,17 @@ int etnaviv_sched_push_job(struct etnaviv_gem_submit *submit)
>
> int etnaviv_sched_init(struct etnaviv_gpu *gpu)
> {
> - int ret;
> + const struct drm_sched_init_args args = {
> + .ops = &etnaviv_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = etnaviv_hw_jobs_limit,
> + .hang_limit = etnaviv_job_hang_limit,
> + .timeout = msecs_to_jiffies(500),
> + .name = dev_name(gpu->dev),
> + .dev = gpu->dev
> + };
>
> - ret = drm_sched_init(&gpu->sched, &etnaviv_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - etnaviv_hw_jobs_limit, etnaviv_job_hang_limit,
> - msecs_to_jiffies(500), NULL, NULL,
> - dev_name(gpu->dev), gpu->dev);
> - if (ret)
> - return ret;
> -
> - return 0;
> + return drm_sched_init(&gpu->sched, &args);
> }
>
> void etnaviv_sched_fini(struct etnaviv_gpu *gpu)
> diff --git a/drivers/gpu/drm/imagination/pvr_queue.c b/drivers/gpu/drm/imagination/pvr_queue.c
> index c4f08432882b..d5c22874a9c1 100644
> --- a/drivers/gpu/drm/imagination/pvr_queue.c
> +++ b/drivers/gpu/drm/imagination/pvr_queue.c
> @@ -1210,6 +1210,17 @@ struct pvr_queue *pvr_queue_create(struct pvr_context *ctx,
> },
> };
> struct pvr_device *pvr_dev = ctx->pvr_dev;
> + const struct drm_sched_init_args sched_args = {
> + .ops = &pvr_queue_sched_ops,
> + .submit_wq = pvr_dev->sched_wq,
> + .num_rqs = 1,
> + .credit_limit = 64 * 1024,
> + .hang_limit = 1,
> + .timeout = msecs_to_jiffies(500),
> + .timeout_wq = pvr_dev->sched_wq,
> + .name = "pvr-queue",
> + .dev = pvr_dev->base.dev
> + };
> struct drm_gpu_scheduler *sched;
> struct pvr_queue *queue;
> int ctx_state_size, err;
> @@ -1282,12 +1293,7 @@ struct pvr_queue *pvr_queue_create(struct pvr_context *ctx,
>
> queue->timeline_ufo.value = cpu_map;
>
> - err = drm_sched_init(&queue->scheduler,
> - &pvr_queue_sched_ops,
> - pvr_dev->sched_wq, 1, 64 * 1024, 1,
> - msecs_to_jiffies(500),
> - pvr_dev->sched_wq, NULL, "pvr-queue",
> - pvr_dev->base.dev);
> + err = drm_sched_init(&queue->scheduler, &sched_args);
> if (err)
> goto err_release_ufo;
>
> diff --git a/drivers/gpu/drm/lima/lima_sched.c b/drivers/gpu/drm/lima/lima_sched.c
> index b40c90e97d7e..137adbd2b52d 100644
> --- a/drivers/gpu/drm/lima/lima_sched.c
> +++ b/drivers/gpu/drm/lima/lima_sched.c
> @@ -515,18 +515,22 @@ int lima_sched_pipe_init(struct lima_sched_pipe *pipe, const char *name)
> {
> unsigned int timeout = lima_sched_timeout_ms > 0 ?
> lima_sched_timeout_ms : 10000;
> + const struct drm_sched_init_args args = {
> + .ops = &lima_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = 1,
> + .hang_limit = lima_job_hang_limit,
> + .timeout = msecs_to_jiffies(timeout),
> + .name = name,
> + .dev = pipe->ldev->dev
> + };
>
> pipe->fence_context = dma_fence_context_alloc(1);
> spin_lock_init(&pipe->fence_lock);
>
> INIT_WORK(&pipe->recover_work, lima_sched_recover_work);
>
> - return drm_sched_init(&pipe->base, &lima_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - 1,
> - lima_job_hang_limit,
> - msecs_to_jiffies(timeout), NULL,
> - NULL, name, pipe->ldev->dev);
> + return drm_sched_init(&pipe->base, &args);
> }
>
> void lima_sched_pipe_fini(struct lima_sched_pipe *pipe)
> diff --git a/drivers/gpu/drm/msm/msm_ringbuffer.c b/drivers/gpu/drm/msm/msm_ringbuffer.c
> index c803556a8f64..c9d5283df3e3 100644
> --- a/drivers/gpu/drm/msm/msm_ringbuffer.c
> +++ b/drivers/gpu/drm/msm/msm_ringbuffer.c
> @@ -59,8 +59,14 @@ static const struct drm_sched_backend_ops msm_sched_ops = {
> struct msm_ringbuffer *msm_ringbuffer_new(struct msm_gpu *gpu, int id,
> void *memptrs, uint64_t memptrs_iova)
> {
> + struct drm_sched_init_args args = {
> + .ops = &msm_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = num_hw_submissions,
> + .timeout = MAX_SCHEDULE_TIMEOUT,
> + .dev = gpu->dev->dev
> + };
> struct msm_ringbuffer *ring;
> - long sched_timeout;
> char name[32];
> int ret;
>
> @@ -87,6 +93,7 @@ struct msm_ringbuffer *msm_ringbuffer_new(struct msm_gpu *gpu, int id,
> }
>
> msm_gem_object_set_name(ring->bo, "ring%d", id);
> + args.name = to_msm_bo(ring->bo)->name,
>
> ring->end = ring->start + (MSM_GPU_RINGBUFFER_SZ >> 2);
> ring->next = ring->start;
> @@ -95,13 +102,7 @@ struct msm_ringbuffer *msm_ringbuffer_new(struct msm_gpu *gpu, int id,
> ring->memptrs = memptrs;
> ring->memptrs_iova = memptrs_iova;
>
> - /* currently managing hangcheck ourselves: */
> - sched_timeout = MAX_SCHEDULE_TIMEOUT;
> -
> - ret = drm_sched_init(&ring->sched, &msm_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - num_hw_submissions, 0, sched_timeout,
> - NULL, NULL, to_msm_bo(ring->bo)->name, gpu->dev->dev);
> + ret = drm_sched_init(&ring->sched, &args);
> if (ret) {
> goto fail;
> }
> diff --git a/drivers/gpu/drm/nouveau/nouveau_sched.c b/drivers/gpu/drm/nouveau/nouveau_sched.c
> index 4412f2711fb5..b5aac8eebfdd 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_sched.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_sched.c
> @@ -404,7 +404,15 @@ nouveau_sched_init(struct nouveau_sched *sched, struct nouveau_drm *drm,
> {
> struct drm_gpu_scheduler *drm_sched = &sched->base;
> struct drm_sched_entity *entity = &sched->entity;
> - const long timeout = msecs_to_jiffies(NOUVEAU_SCHED_JOB_TIMEOUT_MS);
> + const struct drm_sched_init_args args = {
> + .ops = &nouveau_sched_ops,
> + .submit_wq = wq,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = credit_limit,
> + .timeout = msecs_to_jiffies(NOUVEAU_SCHED_JOB_TIMEOUT_MS),
> + .name = "nouveau_sched",
> + .dev = drm->dev->dev
> + };
> int ret;
>
> if (!wq) {
> @@ -416,10 +424,7 @@ nouveau_sched_init(struct nouveau_sched *sched, struct nouveau_drm *drm,
> sched->wq = wq;
> }
>
> - ret = drm_sched_init(drm_sched, &nouveau_sched_ops, wq,
> - NOUVEAU_SCHED_PRIORITY_COUNT,
> - credit_limit, 0, timeout,
> - NULL, NULL, "nouveau_sched", drm->dev->dev);
> + ret = drm_sched_init(drm_sched, &args);
> if (ret)
> goto fail_wq;
>
> diff --git a/drivers/gpu/drm/panfrost/panfrost_job.c b/drivers/gpu/drm/panfrost/panfrost_job.c
> index 9b8e82fb8bc4..893fd91cf5b0 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_job.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_job.c
> @@ -836,8 +836,16 @@ static irqreturn_t panfrost_job_irq_handler(int irq, void *data)
>
> int panfrost_job_init(struct panfrost_device *pfdev)
> {
> + struct drm_sched_init_args args = {
> + .ops = &panfrost_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = 2,
> + .timeout = msecs_to_jiffies(JOB_TIMEOUT_MS),
> + .timeout_wq = pfdev->reset.wq,
> + .name = "pan_js",
> + .dev = pfdev->dev
> + };
> struct panfrost_job_slot *js;
> - unsigned int nentries = 2;
> int ret, j;
>
> /* All GPUs have two entries per queue, but without jobchain
> @@ -845,7 +853,7 @@ int panfrost_job_init(struct panfrost_device *pfdev)
> * so let's just advertise one entry in that case.
> */
> if (!panfrost_has_hw_feature(pfdev, HW_FEATURE_JOBCHAIN_DISAMBIGUATION))
> - nentries = 1;
> + args.credit_limit = 1;
>
> pfdev->js = js = devm_kzalloc(pfdev->dev, sizeof(*js), GFP_KERNEL);
> if (!js)
> @@ -875,13 +883,7 @@ int panfrost_job_init(struct panfrost_device *pfdev)
> for (j = 0; j < NUM_JOB_SLOTS; j++) {
> js->queue[j].fence_context = dma_fence_context_alloc(1);
>
> - ret = drm_sched_init(&js->queue[j].sched,
> - &panfrost_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - nentries, 0,
> - msecs_to_jiffies(JOB_TIMEOUT_MS),
> - pfdev->reset.wq,
> - NULL, "pan_js", pfdev->dev);
> + ret = drm_sched_init(&js->queue[j].sched, &args);
> if (ret) {
> dev_err(pfdev->dev, "Failed to create scheduler: %d.", ret);
> goto err_sched;
> diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c
> index 5ce80e2532d5..22b196ff686c 100644
> --- a/drivers/gpu/drm/panthor/panthor_mmu.c
> +++ b/drivers/gpu/drm/panthor/panthor_mmu.c
> @@ -2278,6 +2278,16 @@ panthor_vm_create(struct panthor_device *ptdev, bool for_mcu,
> u64 full_va_range = 1ull << va_bits;
> struct drm_gem_object *dummy_gem;
> struct drm_gpu_scheduler *sched;
> + const struct drm_sched_init_args sched_args = {
> + .ops = &panthor_vm_bind_ops,
> + .submit_wq = ptdev->mmu->vm.wq,
> + .num_rqs = 1,
> + .credit_limit = 1,
> + /* Bind operations are synchronous for now, no timeout needed. */
> + .timeout = MAX_SCHEDULE_TIMEOUT,
> + .name = "panthor-vm-bind",
> + .dev = ptdev->base.dev
> + };
> struct io_pgtable_cfg pgtbl_cfg;
> u64 mair, min_va, va_range;
> struct panthor_vm *vm;
> @@ -2335,11 +2345,7 @@ panthor_vm_create(struct panthor_device *ptdev, bool for_mcu,
> goto err_mm_takedown;
> }
>
> - /* Bind operations are synchronous for now, no timeout needed. */
> - ret = drm_sched_init(&vm->sched, &panthor_vm_bind_ops, ptdev->mmu->vm.wq,
> - 1, 1, 0,
> - MAX_SCHEDULE_TIMEOUT, NULL, NULL,
> - "panthor-vm-bind", ptdev->base.dev);
> + ret = drm_sched_init(&vm->sched, &sched_args);
> if (ret)
> goto err_free_io_pgtable;
>
> diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/panthor/panthor_sched.c
> index 5844a7f639e0..44713cfdcd74 100644
> --- a/drivers/gpu/drm/panthor/panthor_sched.c
> +++ b/drivers/gpu/drm/panthor/panthor_sched.c
> @@ -3284,6 +3284,22 @@ static struct panthor_queue *
> group_create_queue(struct panthor_group *group,
> const struct drm_panthor_queue_create *args)
> {
> + const struct drm_sched_init_args sched_args = {
> + .ops = &panthor_queue_sched_ops,
> + .submit_wq = group->ptdev->scheduler->wq,
> + .num_rqs = 1,
> + /*
> + * The credit limit argument tells us the total number of
> + * instructions across all CS slots in the ringbuffer, with
> + * some jobs requiring twice as many as others, depending on
> + * their profiling status.
> + */
> + .credit_limit = args->ringbuf_size / sizeof(u64),
> + .timeout = msecs_to_jiffies(JOB_TIMEOUT_MS),
> + .timeout_wq = group->ptdev->reset.wq,
> + .name = "panthor-queue",
> + .dev = group->ptdev->base.dev
> + };
> struct drm_gpu_scheduler *drm_sched;
> struct panthor_queue *queue;
> int ret;
> @@ -3354,17 +3370,8 @@ group_create_queue(struct panthor_group *group,
> if (ret)
> goto err_free_queue;
>
> - /*
> - * Credit limit argument tells us the total number of instructions
> - * across all CS slots in the ringbuffer, with some jobs requiring
> - * twice as many as others, depending on their profiling status.
> - */
> - ret = drm_sched_init(&queue->scheduler, &panthor_queue_sched_ops,
> - group->ptdev->scheduler->wq, 1,
> - args->ringbuf_size / sizeof(u64),
> - 0, msecs_to_jiffies(JOB_TIMEOUT_MS),
> - group->ptdev->reset.wq,
> - NULL, "panthor-queue", group->ptdev->base.dev);
> +
> + ret = drm_sched_init(&queue->scheduler, &sched_args);
> if (ret)
> goto err_free_queue;
>
> diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c
> index a48be16ab84f..6295b2654a7c 100644
> --- a/drivers/gpu/drm/scheduler/sched_main.c
> +++ b/drivers/gpu/drm/scheduler/sched_main.c
> @@ -1244,40 +1244,24 @@ static void drm_sched_run_job_work(struct work_struct *w)
> * drm_sched_init - Init a gpu scheduler instance
> *
> * @sched: scheduler instance
> - * @ops: backend operations for this scheduler
> - * @submit_wq: workqueue to use for submission. If NULL, an ordered wq is
> - * allocated and used
> - * @num_rqs: number of runqueues, one for each priority, up to DRM_SCHED_PRIORITY_COUNT
> - * @credit_limit: the number of credits this scheduler can hold from all jobs
> - * @hang_limit: number of times to allow a job to hang before dropping it
> - * @timeout: timeout value in jiffies for the scheduler
> - * @timeout_wq: workqueue to use for timeout work. If NULL, the system_wq is
> - * used
> - * @score: optional score atomic shared with other schedulers
> - * @name: name used for debugging
> - * @dev: target &struct device
> + * @args: scheduler initialization arguments
> *
> * Return 0 on success, otherwise error code.
> */
> -int drm_sched_init(struct drm_gpu_scheduler *sched,
> - const struct drm_sched_backend_ops *ops,
> - struct workqueue_struct *submit_wq,
> - u32 num_rqs, u32 credit_limit, unsigned int hang_limit,
> - long timeout, struct workqueue_struct *timeout_wq,
> - atomic_t *score, const char *name, struct device *dev)
> +int drm_sched_init(struct drm_gpu_scheduler *sched, const struct drm_sched_init_args *args)
> {
> int i;
>
> - sched->ops = ops;
> - sched->credit_limit = credit_limit;
> - sched->name = name;
> - sched->timeout = timeout;
> - sched->timeout_wq = timeout_wq ? : system_wq;
> - sched->hang_limit = hang_limit;
> - sched->score = score ? score : &sched->_score;
> - sched->dev = dev;
> + sched->ops = args->ops;
> + sched->credit_limit = args->credit_limit;
> + sched->name = args->name;
> + sched->timeout = args->timeout;
> + sched->timeout_wq = args->timeout_wq ? : system_wq;
> + sched->hang_limit = args->hang_limit;
> + sched->score = args->score ? args->score : &sched->_score;
> + sched->dev = args->dev;
>
> - if (num_rqs > DRM_SCHED_PRIORITY_COUNT) {
> + if (args->num_rqs > DRM_SCHED_PRIORITY_COUNT) {
> /* This is a gross violation--tell drivers what the problem is.
> */
> drm_err(sched, "%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n",
> @@ -1292,16 +1276,16 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
> return 0;
> }
>
> - if (submit_wq) {
> - sched->submit_wq = submit_wq;
> + if (args->submit_wq) {
> + sched->submit_wq = args->submit_wq;
> sched->own_submit_wq = false;
> } else {
> #ifdef CONFIG_LOCKDEP
> - sched->submit_wq = alloc_ordered_workqueue_lockdep_map(name,
> + sched->submit_wq = alloc_ordered_workqueue_lockdep_map(args->name,
> WQ_MEM_RECLAIM,
> &drm_sched_lockdep_map);
> #else
> - sched->submit_wq = alloc_ordered_workqueue(name, WQ_MEM_RECLAIM);
> + sched->submit_wq = alloc_ordered_workqueue(args->name, WQ_MEM_RECLAIM);
> #endif
> if (!sched->submit_wq)
> return -ENOMEM;
> @@ -1309,11 +1293,11 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
> sched->own_submit_wq = true;
> }
>
> - sched->sched_rq = kmalloc_array(num_rqs, sizeof(*sched->sched_rq),
> + sched->sched_rq = kmalloc_array(args->num_rqs, sizeof(*sched->sched_rq),
> GFP_KERNEL | __GFP_ZERO);
> if (!sched->sched_rq)
> goto Out_check_own;
> - sched->num_rqs = num_rqs;
> + sched->num_rqs = args->num_rqs;
> for (i = DRM_SCHED_PRIORITY_KERNEL; i < sched->num_rqs; i++) {
> sched->sched_rq[i] = kzalloc(sizeof(*sched->sched_rq[i]), GFP_KERNEL);
> if (!sched->sched_rq[i])
> diff --git a/drivers/gpu/drm/v3d/v3d_sched.c b/drivers/gpu/drm/v3d/v3d_sched.c
> index 961465128d80..dfccb4cda3a1 100644
> --- a/drivers/gpu/drm/v3d/v3d_sched.c
> +++ b/drivers/gpu/drm/v3d/v3d_sched.c
> @@ -820,67 +820,57 @@ static const struct drm_sched_backend_ops v3d_cpu_sched_ops = {
> .free_job = v3d_cpu_job_free
> };
>
> +/*
> + * v3d's scheduler instances are all identical, except for ops and name.
> + */
> +static int
> +v3d_queue_sched_init(struct v3d_dev *v3d, const struct drm_sched_backend_ops *ops,
> + enum v3d_queue queue, const char *name)
> +{
> + struct drm_sched_init_args args = {
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = 1,
> + .timeout = msecs_to_jiffies(500),
> + .dev = v3d->drm.dev
> + };
> +
> + args.ops = ops;
> + args.name = name;
> +
> + return drm_sched_init(&v3d->queue[queue].sched, &args);
> +}
> +
> int
> v3d_sched_init(struct v3d_dev *v3d)
> {
> - int hw_jobs_limit = 1;
> - int job_hang_limit = 0;
> - int hang_limit_ms = 500;
> int ret;
>
> - ret = drm_sched_init(&v3d->queue[V3D_BIN].sched,
> - &v3d_bin_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_bin", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_bin_sched_ops, V3D_BIN, "v3d_bin");
> if (ret)
> return ret;
>
> - ret = drm_sched_init(&v3d->queue[V3D_RENDER].sched,
> - &v3d_render_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_render", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_render_sched_ops, V3D_RENDER,
> + "v3d_render");
> if (ret)
> goto fail;
>
> - ret = drm_sched_init(&v3d->queue[V3D_TFU].sched,
> - &v3d_tfu_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_tfu", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_tfu_sched_ops, V3D_TFU, "v3d_tfu");
> if (ret)
> goto fail;
>
> if (v3d_has_csd(v3d)) {
> - ret = drm_sched_init(&v3d->queue[V3D_CSD].sched,
> - &v3d_csd_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_csd", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_csd_sched_ops, V3D_CSD,
> + "v3d_csd");
> if (ret)
> goto fail;
>
> - ret = drm_sched_init(&v3d->queue[V3D_CACHE_CLEAN].sched,
> - &v3d_cache_clean_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_cache_clean", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_cache_clean_sched_ops,
> + V3D_CACHE_CLEAN, "v3d_cache_clean");
> if (ret)
> goto fail;
> }
>
> - ret = drm_sched_init(&v3d->queue[V3D_CPU].sched,
> - &v3d_cpu_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - 1, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_cpu", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_cpu_sched_ops, V3D_CPU, "v3d_cpu");
> if (ret)
> goto fail;
>
> diff --git a/drivers/gpu/drm/xe/xe_execlist.c b/drivers/gpu/drm/xe/xe_execlist.c
> index a8c416a48812..db1c52dcf1a6 100644
> --- a/drivers/gpu/drm/xe/xe_execlist.c
> +++ b/drivers/gpu/drm/xe/xe_execlist.c
> @@ -332,6 +332,15 @@ static const struct drm_sched_backend_ops drm_sched_ops = {
> static int execlist_exec_queue_init(struct xe_exec_queue *q)
> {
> struct drm_gpu_scheduler *sched;
> + const struct drm_sched_init_args args = {
> + .ops = &drm_sched_ops,
> + .num_rqs = 1,
> + .credit_limit = q->lrc[0]->ring.size / MAX_JOB_SIZE_BYTES,
> + .hang_limit = XE_SCHED_HANG_LIMIT,
> + .timeout = XE_SCHED_JOB_TIMEOUT,
> + .name = q->hwe->name,
> + .dev = gt_to_xe(q->gt)->drm.dev
> + };
> struct xe_execlist_exec_queue *exl;
> struct xe_device *xe = gt_to_xe(q->gt);
> int err;
> @@ -346,11 +355,8 @@ static int execlist_exec_queue_init(struct xe_exec_queue *q)
>
> exl->q = q;
>
> - err = drm_sched_init(&exl->sched, &drm_sched_ops, NULL, 1,
> - q->lrc[0]->ring.size / MAX_JOB_SIZE_BYTES,
> - XE_SCHED_HANG_LIMIT, XE_SCHED_JOB_TIMEOUT,
> - NULL, NULL, q->hwe->name,
> - gt_to_xe(q->gt)->drm.dev);
> +
> + err = drm_sched_init(&exl->sched, &args);
> if (err)
> goto err_free;
>
> diff --git a/drivers/gpu/drm/xe/xe_gpu_scheduler.c b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> index 50361b4638f9..be95f4cca007 100644
> --- a/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> +++ b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> @@ -63,13 +63,24 @@ int xe_sched_init(struct xe_gpu_scheduler *sched,
> atomic_t *score, const char *name,
> struct device *dev)
> {
> + const struct drm_sched_init_args args = {
> + .ops = ops,
> + .submit_wq = submit_wq,
> + .num_rqs = 1,
> + .credit_limit = hw_submission,
> + .hang_limit = hang_limit,
> + .timeout = timeout,
> + .timeout_wq = timeout_wq,
> + .score = score,
> + .name = name,
> + .dev = dev
> + };
> +
> sched->ops = xe_ops;
> INIT_LIST_HEAD(&sched->msgs);
> INIT_WORK(&sched->work_process_msg, xe_sched_process_msg_work);
>
> - return drm_sched_init(&sched->base, ops, submit_wq, 1, hw_submission,
> - hang_limit, timeout, timeout_wq, score, name,
> - dev);
> + return drm_sched_init(&sched->base, &args);
> }
>
> void xe_sched_fini(struct xe_gpu_scheduler *sched)
> diff --git a/include/drm/gpu_scheduler.h b/include/drm/gpu_scheduler.h
> index a0ff08123f07..f0f5435598a8 100644
> --- a/include/drm/gpu_scheduler.h
> +++ b/include/drm/gpu_scheduler.h
> @@ -540,12 +540,39 @@ struct drm_gpu_scheduler {
> struct device *dev;
> };
>
> +/**
> + * struct drm_sched_init_args - parameters for initializing a DRM GPU scheduler
> + *
> + * @ops: backend operations provided by the driver
> + * @submit_wq: workqueue to use for submission. May be NULL.
> + * If NULL, an ordered wq is allocated and used.
> + * @num_rqs: Number of run-queues. This may be at most DRM_SCHED_PRIORITY_COUNT,
> + * as there's usually one run-queue per priority, but may be less.
> + * @credit_limit: the number of credits this scheduler can hold from all jobs
> + * @hang_limit: number of times to allow a job to hang before dropping it.
> + * This mechanism is DEPRECATED. Set it to 0.
> + * @timeout: timeout value in jiffies for the scheduler
> + * @timeout_wq: workqueue to use for timeout work. May be NULL.
> + * If NULL, the system_wq is used.
> + * @score: score atomic shared with other schedulers. May be NULL.
> + * @name: name used for debugging
> + * @dev: associated device. Used for debugging
> + */
> +struct drm_sched_init_args {
> + const struct drm_sched_backend_ops *ops;
> + struct workqueue_struct *submit_wq;
> + struct workqueue_struct *timeout_wq;
> + u32 num_rqs;
> + u32 credit_limit;
> + unsigned int hang_limit;
> + long timeout;
> + atomic_t *score;
> + const char *name;
> + struct device *dev;
> +};
> +
> int drm_sched_init(struct drm_gpu_scheduler *sched,
> - const struct drm_sched_backend_ops *ops,
> - struct workqueue_struct *submit_wq,
> - u32 num_rqs, u32 credit_limit, unsigned int hang_limit,
> - long timeout, struct workqueue_struct *timeout_wq,
> - atomic_t *score, const char *name, struct device *dev);
> + const struct drm_sched_init_args *args);
>
> void drm_sched_fini(struct drm_gpu_scheduler *sched);
> int drm_sched_job_init(struct drm_sched_job *job,
> --
> 2.47.1
>
--
====================
| I would like to |
| fix the world, |
| but they're not |
| giving me the |
\ source code! /
---------------
¯\_(ツ)_/¯
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2] drm/sched: Use struct for drm_sched_init() params
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
` (8 preceding siblings ...)
2025-01-28 16:17 ` [PATCH v2] drm/sched: Use struct for drm_sched_init() params Liviu Dudau
@ 2025-01-28 21:49 ` Christian Gmeiner
2025-01-29 7:56 ` Boris Brezillon
2025-01-29 3:32 ` Matthew Brost
` (5 subsequent siblings)
15 siblings, 1 reply; 23+ messages in thread
From: Christian Gmeiner @ 2025-01-28 21:49 UTC (permalink / raw)
To: Philipp Stanner
Cc: Alex Deucher, Christian König, Xinhui Pan, David Airlie,
Simona Vetter, Lucas Stach, Russell King, Frank Binns,
Matt Coster, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Qiang Yu, Rob Clark, Sean Paul, Konrad Dybcio, Abhinav Kumar,
Dmitry Baryshkov, Marijn Suijten, Karol Herbst, Lyude Paul,
Danilo Krummrich, Boris Brezillon, Rob Herring, Steven Price,
Liviu Dudau, Matthew Brost, Melissa Wen, Maíra Canal,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Sunil Khatri, Lijo Lazar, Hawking Zhang, Mario Limonciello,
Ma Jun, Yunxiang Li, amd-gfx, dri-devel, linux-kernel, etnaviv,
lima, linux-arm-msm, freedreno, nouveau, intel-xe
>
> drm_sched_init() has a great many parameters and upcoming new
> functionality for the scheduler might add even more. Generally, the
> great number of parameters reduces readability and has already caused
> one missnaming in:
>
> commit 6f1cacf4eba7 ("drm/nouveau: Improve variable name in nouveau_sched_init()").
>
> Introduce a new struct for the scheduler init parameters and port all
> users.
>
> Signed-off-by: Philipp Stanner <phasta@kernel.org>
> ---
> Changes in v2:
> - Point out that the hang-limit is deprecated. (Christian)
> - Initialize the structs to 0 at declaration. (Planet Earth)
> - Don't set stuff explicitly to 0 / NULL. (Tvrtko)
> - Make the structs const where possible. (Boris)
> - v3d: Use just 1, universal, function for sched-init. (Maíra)
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 18 ++++--
> drivers/gpu/drm/etnaviv/etnaviv_sched.c | 20 +++----
> drivers/gpu/drm/imagination/pvr_queue.c | 18 ++++--
> drivers/gpu/drm/lima/lima_sched.c | 16 +++--
> drivers/gpu/drm/msm/msm_ringbuffer.c | 17 +++---
> drivers/gpu/drm/nouveau/nouveau_sched.c | 15 +++--
> drivers/gpu/drm/panfrost/panfrost_job.c | 20 ++++---
> drivers/gpu/drm/panthor/panthor_mmu.c | 16 +++--
> drivers/gpu/drm/panthor/panthor_sched.c | 29 +++++----
> drivers/gpu/drm/scheduler/sched_main.c | 50 ++++++----------
> drivers/gpu/drm/v3d/v3d_sched.c | 68 +++++++++-------------
> drivers/gpu/drm/xe/xe_execlist.c | 16 +++--
> drivers/gpu/drm/xe/xe_gpu_scheduler.c | 17 +++++-
> include/drm/gpu_scheduler.h | 37 ++++++++++--
> 14 files changed, 206 insertions(+), 151 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 96316111300a..daf58b0ff0fa 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -2816,6 +2816,12 @@ static int amdgpu_device_fw_loading(struct amdgpu_device *adev)
>
> static int amdgpu_device_init_schedulers(struct amdgpu_device *adev)
> {
> + struct drm_sched_init_args args = {
> + .ops = &amdgpu_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .timeout_wq = adev->reset_domain->wq,
> + .dev = adev->dev
> + };
> long timeout;
> int r, i;
>
> @@ -2841,12 +2847,12 @@ static int amdgpu_device_init_schedulers(struct amdgpu_device *adev)
> break;
> }
>
> - r = drm_sched_init(&ring->sched, &amdgpu_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - ring->num_hw_submission, 0,
> - timeout, adev->reset_domain->wq,
> - ring->sched_score, ring->name,
> - adev->dev);
> + args.timeout = timeout;
> + args.credit_limit = ring->num_hw_submission;
> + args.score = ring->sched_score;
> + args.name = ring->name;
> +
> + r = drm_sched_init(&ring->sched, &args);
> if (r) {
> DRM_ERROR("Failed to create scheduler on ring %s.\n",
> ring->name);
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_sched.c b/drivers/gpu/drm/etnaviv/etnaviv_sched.c
> index 5b67eda122db..1693fd660bf1 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_sched.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_sched.c
> @@ -144,17 +144,17 @@ int etnaviv_sched_push_job(struct etnaviv_gem_submit *submit)
>
> int etnaviv_sched_init(struct etnaviv_gpu *gpu)
> {
> - int ret;
> + const struct drm_sched_init_args args = {
Why not declare it as static const struct drm_sched_init_args args = { ?
This question applies to all similar occurrences in the patch.
> + .ops = &etnaviv_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = etnaviv_hw_jobs_limit,
> + .hang_limit = etnaviv_job_hang_limit,
> + .timeout = msecs_to_jiffies(500),
> + .name = dev_name(gpu->dev),
> + .dev = gpu->dev
> + };
>
> - ret = drm_sched_init(&gpu->sched, &etnaviv_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - etnaviv_hw_jobs_limit, etnaviv_job_hang_limit,
> - msecs_to_jiffies(500), NULL, NULL,
> - dev_name(gpu->dev), gpu->dev);
> - if (ret)
> - return ret;
> -
> - return 0;
> + return drm_sched_init(&gpu->sched, &args);
> }
>
> void etnaviv_sched_fini(struct etnaviv_gpu *gpu)
> diff --git a/drivers/gpu/drm/imagination/pvr_queue.c b/drivers/gpu/drm/imagination/pvr_queue.c
> index c4f08432882b..d5c22874a9c1 100644
> --- a/drivers/gpu/drm/imagination/pvr_queue.c
> +++ b/drivers/gpu/drm/imagination/pvr_queue.c
> @@ -1210,6 +1210,17 @@ struct pvr_queue *pvr_queue_create(struct pvr_context *ctx,
> },
> };
> struct pvr_device *pvr_dev = ctx->pvr_dev;
> + const struct drm_sched_init_args sched_args = {
> + .ops = &pvr_queue_sched_ops,
> + .submit_wq = pvr_dev->sched_wq,
> + .num_rqs = 1,
> + .credit_limit = 64 * 1024,
> + .hang_limit = 1,
> + .timeout = msecs_to_jiffies(500),
> + .timeout_wq = pvr_dev->sched_wq,
> + .name = "pvr-queue",
> + .dev = pvr_dev->base.dev
> + };
> struct drm_gpu_scheduler *sched;
> struct pvr_queue *queue;
> int ctx_state_size, err;
> @@ -1282,12 +1293,7 @@ struct pvr_queue *pvr_queue_create(struct pvr_context *ctx,
>
> queue->timeline_ufo.value = cpu_map;
>
> - err = drm_sched_init(&queue->scheduler,
> - &pvr_queue_sched_ops,
> - pvr_dev->sched_wq, 1, 64 * 1024, 1,
> - msecs_to_jiffies(500),
> - pvr_dev->sched_wq, NULL, "pvr-queue",
> - pvr_dev->base.dev);
> + err = drm_sched_init(&queue->scheduler, &sched_args);
> if (err)
> goto err_release_ufo;
>
> diff --git a/drivers/gpu/drm/lima/lima_sched.c b/drivers/gpu/drm/lima/lima_sched.c
> index b40c90e97d7e..137adbd2b52d 100644
> --- a/drivers/gpu/drm/lima/lima_sched.c
> +++ b/drivers/gpu/drm/lima/lima_sched.c
> @@ -515,18 +515,22 @@ int lima_sched_pipe_init(struct lima_sched_pipe *pipe, const char *name)
> {
> unsigned int timeout = lima_sched_timeout_ms > 0 ?
> lima_sched_timeout_ms : 10000;
> + const struct drm_sched_init_args args = {
> + .ops = &lima_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = 1,
> + .hang_limit = lima_job_hang_limit,
> + .timeout = msecs_to_jiffies(timeout),
> + .name = name,
> + .dev = pipe->ldev->dev
> + };
>
> pipe->fence_context = dma_fence_context_alloc(1);
> spin_lock_init(&pipe->fence_lock);
>
> INIT_WORK(&pipe->recover_work, lima_sched_recover_work);
>
> - return drm_sched_init(&pipe->base, &lima_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - 1,
> - lima_job_hang_limit,
> - msecs_to_jiffies(timeout), NULL,
> - NULL, name, pipe->ldev->dev);
> + return drm_sched_init(&pipe->base, &args);
> }
>
> void lima_sched_pipe_fini(struct lima_sched_pipe *pipe)
> diff --git a/drivers/gpu/drm/msm/msm_ringbuffer.c b/drivers/gpu/drm/msm/msm_ringbuffer.c
> index c803556a8f64..c9d5283df3e3 100644
> --- a/drivers/gpu/drm/msm/msm_ringbuffer.c
> +++ b/drivers/gpu/drm/msm/msm_ringbuffer.c
> @@ -59,8 +59,14 @@ static const struct drm_sched_backend_ops msm_sched_ops = {
> struct msm_ringbuffer *msm_ringbuffer_new(struct msm_gpu *gpu, int id,
> void *memptrs, uint64_t memptrs_iova)
> {
> + struct drm_sched_init_args args = {
> + .ops = &msm_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = num_hw_submissions,
> + .timeout = MAX_SCHEDULE_TIMEOUT,
> + .dev = gpu->dev->dev
> + };
> struct msm_ringbuffer *ring;
> - long sched_timeout;
> char name[32];
> int ret;
>
> @@ -87,6 +93,7 @@ struct msm_ringbuffer *msm_ringbuffer_new(struct msm_gpu *gpu, int id,
> }
>
> msm_gem_object_set_name(ring->bo, "ring%d", id);
> + args.name = to_msm_bo(ring->bo)->name,
>
> ring->end = ring->start + (MSM_GPU_RINGBUFFER_SZ >> 2);
> ring->next = ring->start;
> @@ -95,13 +102,7 @@ struct msm_ringbuffer *msm_ringbuffer_new(struct msm_gpu *gpu, int id,
> ring->memptrs = memptrs;
> ring->memptrs_iova = memptrs_iova;
>
> - /* currently managing hangcheck ourselves: */
> - sched_timeout = MAX_SCHEDULE_TIMEOUT;
> -
> - ret = drm_sched_init(&ring->sched, &msm_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - num_hw_submissions, 0, sched_timeout,
> - NULL, NULL, to_msm_bo(ring->bo)->name, gpu->dev->dev);
> + ret = drm_sched_init(&ring->sched, &args);
> if (ret) {
> goto fail;
> }
> diff --git a/drivers/gpu/drm/nouveau/nouveau_sched.c b/drivers/gpu/drm/nouveau/nouveau_sched.c
> index 4412f2711fb5..b5aac8eebfdd 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_sched.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_sched.c
> @@ -404,7 +404,15 @@ nouveau_sched_init(struct nouveau_sched *sched, struct nouveau_drm *drm,
> {
> struct drm_gpu_scheduler *drm_sched = &sched->base;
> struct drm_sched_entity *entity = &sched->entity;
> - const long timeout = msecs_to_jiffies(NOUVEAU_SCHED_JOB_TIMEOUT_MS);
> + const struct drm_sched_init_args args = {
> + .ops = &nouveau_sched_ops,
> + .submit_wq = wq,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = credit_limit,
> + .timeout = msecs_to_jiffies(NOUVEAU_SCHED_JOB_TIMEOUT_MS),
> + .name = "nouveau_sched",
> + .dev = drm->dev->dev
> + };
> int ret;
>
> if (!wq) {
> @@ -416,10 +424,7 @@ nouveau_sched_init(struct nouveau_sched *sched, struct nouveau_drm *drm,
> sched->wq = wq;
> }
>
> - ret = drm_sched_init(drm_sched, &nouveau_sched_ops, wq,
> - NOUVEAU_SCHED_PRIORITY_COUNT,
> - credit_limit, 0, timeout,
> - NULL, NULL, "nouveau_sched", drm->dev->dev);
> + ret = drm_sched_init(drm_sched, &args);
> if (ret)
> goto fail_wq;
>
> diff --git a/drivers/gpu/drm/panfrost/panfrost_job.c b/drivers/gpu/drm/panfrost/panfrost_job.c
> index 9b8e82fb8bc4..893fd91cf5b0 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_job.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_job.c
> @@ -836,8 +836,16 @@ static irqreturn_t panfrost_job_irq_handler(int irq, void *data)
>
> int panfrost_job_init(struct panfrost_device *pfdev)
> {
> + struct drm_sched_init_args args = {
> + .ops = &panfrost_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = 2,
> + .timeout = msecs_to_jiffies(JOB_TIMEOUT_MS),
> + .timeout_wq = pfdev->reset.wq,
> + .name = "pan_js",
> + .dev = pfdev->dev
> + };
> struct panfrost_job_slot *js;
> - unsigned int nentries = 2;
> int ret, j;
>
> /* All GPUs have two entries per queue, but without jobchain
> @@ -845,7 +853,7 @@ int panfrost_job_init(struct panfrost_device *pfdev)
> * so let's just advertise one entry in that case.
> */
> if (!panfrost_has_hw_feature(pfdev, HW_FEATURE_JOBCHAIN_DISAMBIGUATION))
> - nentries = 1;
> + args.credit_limit = 1;
>
> pfdev->js = js = devm_kzalloc(pfdev->dev, sizeof(*js), GFP_KERNEL);
> if (!js)
> @@ -875,13 +883,7 @@ int panfrost_job_init(struct panfrost_device *pfdev)
> for (j = 0; j < NUM_JOB_SLOTS; j++) {
> js->queue[j].fence_context = dma_fence_context_alloc(1);
>
> - ret = drm_sched_init(&js->queue[j].sched,
> - &panfrost_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - nentries, 0,
> - msecs_to_jiffies(JOB_TIMEOUT_MS),
> - pfdev->reset.wq,
> - NULL, "pan_js", pfdev->dev);
> + ret = drm_sched_init(&js->queue[j].sched, &args);
> if (ret) {
> dev_err(pfdev->dev, "Failed to create scheduler: %d.", ret);
> goto err_sched;
> diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c
> index 5ce80e2532d5..22b196ff686c 100644
> --- a/drivers/gpu/drm/panthor/panthor_mmu.c
> +++ b/drivers/gpu/drm/panthor/panthor_mmu.c
> @@ -2278,6 +2278,16 @@ panthor_vm_create(struct panthor_device *ptdev, bool for_mcu,
> u64 full_va_range = 1ull << va_bits;
> struct drm_gem_object *dummy_gem;
> struct drm_gpu_scheduler *sched;
> + const struct drm_sched_init_args sched_args = {
> + .ops = &panthor_vm_bind_ops,
> + .submit_wq = ptdev->mmu->vm.wq,
> + .num_rqs = 1,
> + .credit_limit = 1,
> + /* Bind operations are synchronous for now, no timeout needed. */
> + .timeout = MAX_SCHEDULE_TIMEOUT,
> + .name = "panthor-vm-bind",
> + .dev = ptdev->base.dev
> + };
> struct io_pgtable_cfg pgtbl_cfg;
> u64 mair, min_va, va_range;
> struct panthor_vm *vm;
> @@ -2335,11 +2345,7 @@ panthor_vm_create(struct panthor_device *ptdev, bool for_mcu,
> goto err_mm_takedown;
> }
>
> - /* Bind operations are synchronous for now, no timeout needed. */
> - ret = drm_sched_init(&vm->sched, &panthor_vm_bind_ops, ptdev->mmu->vm.wq,
> - 1, 1, 0,
> - MAX_SCHEDULE_TIMEOUT, NULL, NULL,
> - "panthor-vm-bind", ptdev->base.dev);
> + ret = drm_sched_init(&vm->sched, &sched_args);
> if (ret)
> goto err_free_io_pgtable;
>
> diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/panthor/panthor_sched.c
> index 5844a7f639e0..44713cfdcd74 100644
> --- a/drivers/gpu/drm/panthor/panthor_sched.c
> +++ b/drivers/gpu/drm/panthor/panthor_sched.c
> @@ -3284,6 +3284,22 @@ static struct panthor_queue *
> group_create_queue(struct panthor_group *group,
> const struct drm_panthor_queue_create *args)
> {
> + const struct drm_sched_init_args sched_args = {
> + .ops = &panthor_queue_sched_ops,
> + .submit_wq = group->ptdev->scheduler->wq,
> + .num_rqs = 1,
> + /*
> + * The credit limit argument tells us the total number of
> + * instructions across all CS slots in the ringbuffer, with
> + * some jobs requiring twice as many as others, depending on
> + * their profiling status.
> + */
> + .credit_limit = args->ringbuf_size / sizeof(u64),
> + .timeout = msecs_to_jiffies(JOB_TIMEOUT_MS),
> + .timeout_wq = group->ptdev->reset.wq,
> + .name = "panthor-queue",
> + .dev = group->ptdev->base.dev
> + };
> struct drm_gpu_scheduler *drm_sched;
> struct panthor_queue *queue;
> int ret;
> @@ -3354,17 +3370,8 @@ group_create_queue(struct panthor_group *group,
> if (ret)
> goto err_free_queue;
>
> - /*
> - * Credit limit argument tells us the total number of instructions
> - * across all CS slots in the ringbuffer, with some jobs requiring
> - * twice as many as others, depending on their profiling status.
> - */
> - ret = drm_sched_init(&queue->scheduler, &panthor_queue_sched_ops,
> - group->ptdev->scheduler->wq, 1,
> - args->ringbuf_size / sizeof(u64),
> - 0, msecs_to_jiffies(JOB_TIMEOUT_MS),
> - group->ptdev->reset.wq,
> - NULL, "panthor-queue", group->ptdev->base.dev);
> +
> + ret = drm_sched_init(&queue->scheduler, &sched_args);
> if (ret)
> goto err_free_queue;
>
> diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c
> index a48be16ab84f..6295b2654a7c 100644
> --- a/drivers/gpu/drm/scheduler/sched_main.c
> +++ b/drivers/gpu/drm/scheduler/sched_main.c
> @@ -1244,40 +1244,24 @@ static void drm_sched_run_job_work(struct work_struct *w)
> * drm_sched_init - Init a gpu scheduler instance
> *
> * @sched: scheduler instance
> - * @ops: backend operations for this scheduler
> - * @submit_wq: workqueue to use for submission. If NULL, an ordered wq is
> - * allocated and used
> - * @num_rqs: number of runqueues, one for each priority, up to DRM_SCHED_PRIORITY_COUNT
> - * @credit_limit: the number of credits this scheduler can hold from all jobs
> - * @hang_limit: number of times to allow a job to hang before dropping it
> - * @timeout: timeout value in jiffies for the scheduler
> - * @timeout_wq: workqueue to use for timeout work. If NULL, the system_wq is
> - * used
> - * @score: optional score atomic shared with other schedulers
> - * @name: name used for debugging
> - * @dev: target &struct device
> + * @args: scheduler initialization arguments
> *
> * Return 0 on success, otherwise error code.
> */
> -int drm_sched_init(struct drm_gpu_scheduler *sched,
> - const struct drm_sched_backend_ops *ops,
> - struct workqueue_struct *submit_wq,
> - u32 num_rqs, u32 credit_limit, unsigned int hang_limit,
> - long timeout, struct workqueue_struct *timeout_wq,
> - atomic_t *score, const char *name, struct device *dev)
> +int drm_sched_init(struct drm_gpu_scheduler *sched, const struct drm_sched_init_args *args)
> {
> int i;
>
> - sched->ops = ops;
> - sched->credit_limit = credit_limit;
> - sched->name = name;
> - sched->timeout = timeout;
> - sched->timeout_wq = timeout_wq ? : system_wq;
> - sched->hang_limit = hang_limit;
> - sched->score = score ? score : &sched->_score;
> - sched->dev = dev;
> + sched->ops = args->ops;
> + sched->credit_limit = args->credit_limit;
> + sched->name = args->name;
> + sched->timeout = args->timeout;
> + sched->timeout_wq = args->timeout_wq ? : system_wq;
> + sched->hang_limit = args->hang_limit;
> + sched->score = args->score ? args->score : &sched->_score;
> + sched->dev = args->dev;
>
> - if (num_rqs > DRM_SCHED_PRIORITY_COUNT) {
> + if (args->num_rqs > DRM_SCHED_PRIORITY_COUNT) {
> /* This is a gross violation--tell drivers what the problem is.
> */
> drm_err(sched, "%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n",
> @@ -1292,16 +1276,16 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
> return 0;
> }
>
> - if (submit_wq) {
> - sched->submit_wq = submit_wq;
> + if (args->submit_wq) {
> + sched->submit_wq = args->submit_wq;
> sched->own_submit_wq = false;
> } else {
> #ifdef CONFIG_LOCKDEP
> - sched->submit_wq = alloc_ordered_workqueue_lockdep_map(name,
> + sched->submit_wq = alloc_ordered_workqueue_lockdep_map(args->name,
> WQ_MEM_RECLAIM,
> &drm_sched_lockdep_map);
> #else
> - sched->submit_wq = alloc_ordered_workqueue(name, WQ_MEM_RECLAIM);
> + sched->submit_wq = alloc_ordered_workqueue(args->name, WQ_MEM_RECLAIM);
> #endif
> if (!sched->submit_wq)
> return -ENOMEM;
> @@ -1309,11 +1293,11 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
> sched->own_submit_wq = true;
> }
>
> - sched->sched_rq = kmalloc_array(num_rqs, sizeof(*sched->sched_rq),
> + sched->sched_rq = kmalloc_array(args->num_rqs, sizeof(*sched->sched_rq),
> GFP_KERNEL | __GFP_ZERO);
> if (!sched->sched_rq)
> goto Out_check_own;
> - sched->num_rqs = num_rqs;
> + sched->num_rqs = args->num_rqs;
> for (i = DRM_SCHED_PRIORITY_KERNEL; i < sched->num_rqs; i++) {
> sched->sched_rq[i] = kzalloc(sizeof(*sched->sched_rq[i]), GFP_KERNEL);
> if (!sched->sched_rq[i])
> diff --git a/drivers/gpu/drm/v3d/v3d_sched.c b/drivers/gpu/drm/v3d/v3d_sched.c
> index 961465128d80..dfccb4cda3a1 100644
> --- a/drivers/gpu/drm/v3d/v3d_sched.c
> +++ b/drivers/gpu/drm/v3d/v3d_sched.c
> @@ -820,67 +820,57 @@ static const struct drm_sched_backend_ops v3d_cpu_sched_ops = {
> .free_job = v3d_cpu_job_free
> };
>
> +/*
> + * v3d's scheduler instances are all identical, except for ops and name.
> + */
> +static int
> +v3d_queue_sched_init(struct v3d_dev *v3d, const struct drm_sched_backend_ops *ops,
> + enum v3d_queue queue, const char *name)
> +{
> + struct drm_sched_init_args args = {
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = 1,
> + .timeout = msecs_to_jiffies(500),
> + .dev = v3d->drm.dev
> + };
> +
> + args.ops = ops;
> + args.name = name;
> +
> + return drm_sched_init(&v3d->queue[queue].sched, &args);
> +}
> +
> int
> v3d_sched_init(struct v3d_dev *v3d)
> {
> - int hw_jobs_limit = 1;
> - int job_hang_limit = 0;
> - int hang_limit_ms = 500;
> int ret;
>
> - ret = drm_sched_init(&v3d->queue[V3D_BIN].sched,
> - &v3d_bin_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_bin", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_bin_sched_ops, V3D_BIN, "v3d_bin");
> if (ret)
> return ret;
>
> - ret = drm_sched_init(&v3d->queue[V3D_RENDER].sched,
> - &v3d_render_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_render", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_render_sched_ops, V3D_RENDER,
> + "v3d_render");
> if (ret)
> goto fail;
>
> - ret = drm_sched_init(&v3d->queue[V3D_TFU].sched,
> - &v3d_tfu_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_tfu", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_tfu_sched_ops, V3D_TFU, "v3d_tfu");
> if (ret)
> goto fail;
>
> if (v3d_has_csd(v3d)) {
> - ret = drm_sched_init(&v3d->queue[V3D_CSD].sched,
> - &v3d_csd_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_csd", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_csd_sched_ops, V3D_CSD,
> + "v3d_csd");
> if (ret)
> goto fail;
>
> - ret = drm_sched_init(&v3d->queue[V3D_CACHE_CLEAN].sched,
> - &v3d_cache_clean_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_cache_clean", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_cache_clean_sched_ops,
> + V3D_CACHE_CLEAN, "v3d_cache_clean");
> if (ret)
> goto fail;
> }
>
> - ret = drm_sched_init(&v3d->queue[V3D_CPU].sched,
> - &v3d_cpu_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - 1, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_cpu", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_cpu_sched_ops, V3D_CPU, "v3d_cpu");
> if (ret)
> goto fail;
>
> diff --git a/drivers/gpu/drm/xe/xe_execlist.c b/drivers/gpu/drm/xe/xe_execlist.c
> index a8c416a48812..db1c52dcf1a6 100644
> --- a/drivers/gpu/drm/xe/xe_execlist.c
> +++ b/drivers/gpu/drm/xe/xe_execlist.c
> @@ -332,6 +332,15 @@ static const struct drm_sched_backend_ops drm_sched_ops = {
> static int execlist_exec_queue_init(struct xe_exec_queue *q)
> {
> struct drm_gpu_scheduler *sched;
> + const struct drm_sched_init_args args = {
> + .ops = &drm_sched_ops,
> + .num_rqs = 1,
> + .credit_limit = q->lrc[0]->ring.size / MAX_JOB_SIZE_BYTES,
> + .hang_limit = XE_SCHED_HANG_LIMIT,
> + .timeout = XE_SCHED_JOB_TIMEOUT,
> + .name = q->hwe->name,
> + .dev = gt_to_xe(q->gt)->drm.dev
> + };
> struct xe_execlist_exec_queue *exl;
> struct xe_device *xe = gt_to_xe(q->gt);
> int err;
> @@ -346,11 +355,8 @@ static int execlist_exec_queue_init(struct xe_exec_queue *q)
>
> exl->q = q;
>
> - err = drm_sched_init(&exl->sched, &drm_sched_ops, NULL, 1,
> - q->lrc[0]->ring.size / MAX_JOB_SIZE_BYTES,
> - XE_SCHED_HANG_LIMIT, XE_SCHED_JOB_TIMEOUT,
> - NULL, NULL, q->hwe->name,
> - gt_to_xe(q->gt)->drm.dev);
> +
> + err = drm_sched_init(&exl->sched, &args);
> if (err)
> goto err_free;
>
> diff --git a/drivers/gpu/drm/xe/xe_gpu_scheduler.c b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> index 50361b4638f9..be95f4cca007 100644
> --- a/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> +++ b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> @@ -63,13 +63,24 @@ int xe_sched_init(struct xe_gpu_scheduler *sched,
> atomic_t *score, const char *name,
> struct device *dev)
> {
> + const struct drm_sched_init_args args = {
> + .ops = ops,
> + .submit_wq = submit_wq,
> + .num_rqs = 1,
> + .credit_limit = hw_submission,
> + .hang_limit = hang_limit,
> + .timeout = timeout,
> + .timeout_wq = timeout_wq,
> + .score = score,
> + .name = name,
> + .dev = dev
> + };
> +
> sched->ops = xe_ops;
> INIT_LIST_HEAD(&sched->msgs);
> INIT_WORK(&sched->work_process_msg, xe_sched_process_msg_work);
>
> - return drm_sched_init(&sched->base, ops, submit_wq, 1, hw_submission,
> - hang_limit, timeout, timeout_wq, score, name,
> - dev);
> + return drm_sched_init(&sched->base, &args);
> }
>
> void xe_sched_fini(struct xe_gpu_scheduler *sched)
> diff --git a/include/drm/gpu_scheduler.h b/include/drm/gpu_scheduler.h
> index a0ff08123f07..f0f5435598a8 100644
> --- a/include/drm/gpu_scheduler.h
> +++ b/include/drm/gpu_scheduler.h
> @@ -540,12 +540,39 @@ struct drm_gpu_scheduler {
> struct device *dev;
> };
>
> +/**
> + * struct drm_sched_init_args - parameters for initializing a DRM GPU scheduler
> + *
> + * @ops: backend operations provided by the driver
> + * @submit_wq: workqueue to use for submission. May be NULL.
> + * If NULL, an ordered wq is allocated and used.
> + * @num_rqs: Number of run-queues. This may be at most DRM_SCHED_PRIORITY_COUNT,
> + * as there's usually one run-queue per priority, but may be less.
> + * @credit_limit: the number of credits this scheduler can hold from all jobs
> + * @hang_limit: number of times to allow a job to hang before dropping it.
> + * This mechanism is DEPRECATED. Set it to 0.
> + * @timeout: timeout value in jiffies for the scheduler
> + * @timeout_wq: workqueue to use for timeout work. May be NULL.
> + * If NULL, the system_wq is used.
> + * @score: score atomic shared with other schedulers. May be NULL.
> + * @name: name used for debugging
> + * @dev: associated device. Used for debugging
> + */
> +struct drm_sched_init_args {
> + const struct drm_sched_backend_ops *ops;
> + struct workqueue_struct *submit_wq;
> + struct workqueue_struct *timeout_wq;
> + u32 num_rqs;
> + u32 credit_limit;
> + unsigned int hang_limit;
> + long timeout;
> + atomic_t *score;
> + const char *name;
> + struct device *dev;
> +};
> +
> int drm_sched_init(struct drm_gpu_scheduler *sched,
> - const struct drm_sched_backend_ops *ops,
> - struct workqueue_struct *submit_wq,
> - u32 num_rqs, u32 credit_limit, unsigned int hang_limit,
> - long timeout, struct workqueue_struct *timeout_wq,
> - atomic_t *score, const char *name, struct device *dev);
> + const struct drm_sched_init_args *args);
>
> void drm_sched_fini(struct drm_gpu_scheduler *sched);
> int drm_sched_job_init(struct drm_sched_job *job,
> --
> 2.47.1
>
--
greets
--
Christian Gmeiner, MSc
https://christian-gmeiner.info/privacypolicy
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2] drm/sched: Use struct for drm_sched_init() params
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
` (9 preceding siblings ...)
2025-01-28 21:49 ` Christian Gmeiner
@ 2025-01-29 3:32 ` Matthew Brost
2025-01-29 3:47 ` ✗ Xe.CI.Full: failure for drm/sched: Use struct for drm_sched_init() params (rev2) Patchwork
` (4 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Matthew Brost @ 2025-01-29 3:32 UTC (permalink / raw)
To: Philipp Stanner
Cc: Alex Deucher, Christian König, Xinhui Pan, David Airlie,
Simona Vetter, Lucas Stach, Russell King, Christian Gmeiner,
Frank Binns, Matt Coster, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Qiang Yu, Rob Clark, Sean Paul, Konrad Dybcio,
Abhinav Kumar, Dmitry Baryshkov, Marijn Suijten, Karol Herbst,
Lyude Paul, Danilo Krummrich, Boris Brezillon, Rob Herring,
Steven Price, Liviu Dudau, Melissa Wen, Maíra Canal,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Sunil Khatri, Lijo Lazar, Hawking Zhang, Mario Limonciello,
Ma Jun, Yunxiang Li, amd-gfx, dri-devel, linux-kernel, etnaviv,
lima, linux-arm-msm, freedreno, nouveau, intel-xe
On Tue, Jan 28, 2025 at 03:29:27PM +0100, Philipp Stanner wrote:
> drm_sched_init() has a great many parameters and upcoming new
> functionality for the scheduler might add even more. Generally, the
> great number of parameters reduces readability and has already caused
> one missnaming in:
>
> commit 6f1cacf4eba7 ("drm/nouveau: Improve variable name in nouveau_sched_init()").
>
> Introduce a new struct for the scheduler init parameters and port all
> users.
>
> Signed-off-by: Philipp Stanner <phasta@kernel.org>
For the Xe changes:
Acked-by: Matthew Brost <matthew.brost@intel.com>
> ---
> Changes in v2:
> - Point out that the hang-limit is deprecated. (Christian)
> - Initialize the structs to 0 at declaration. (Planet Earth)
> - Don't set stuff explicitly to 0 / NULL. (Tvrtko)
> - Make the structs const where possible. (Boris)
> - v3d: Use just 1, universal, function for sched-init. (Maíra)
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 18 ++++--
> drivers/gpu/drm/etnaviv/etnaviv_sched.c | 20 +++----
> drivers/gpu/drm/imagination/pvr_queue.c | 18 ++++--
> drivers/gpu/drm/lima/lima_sched.c | 16 +++--
> drivers/gpu/drm/msm/msm_ringbuffer.c | 17 +++---
> drivers/gpu/drm/nouveau/nouveau_sched.c | 15 +++--
> drivers/gpu/drm/panfrost/panfrost_job.c | 20 ++++---
> drivers/gpu/drm/panthor/panthor_mmu.c | 16 +++--
> drivers/gpu/drm/panthor/panthor_sched.c | 29 +++++----
> drivers/gpu/drm/scheduler/sched_main.c | 50 ++++++----------
> drivers/gpu/drm/v3d/v3d_sched.c | 68 +++++++++-------------
> drivers/gpu/drm/xe/xe_execlist.c | 16 +++--
> drivers/gpu/drm/xe/xe_gpu_scheduler.c | 17 +++++-
> include/drm/gpu_scheduler.h | 37 ++++++++++--
> 14 files changed, 206 insertions(+), 151 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 96316111300a..daf58b0ff0fa 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -2816,6 +2816,12 @@ static int amdgpu_device_fw_loading(struct amdgpu_device *adev)
>
> static int amdgpu_device_init_schedulers(struct amdgpu_device *adev)
> {
> + struct drm_sched_init_args args = {
> + .ops = &amdgpu_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .timeout_wq = adev->reset_domain->wq,
> + .dev = adev->dev
> + };
> long timeout;
> int r, i;
>
> @@ -2841,12 +2847,12 @@ static int amdgpu_device_init_schedulers(struct amdgpu_device *adev)
> break;
> }
>
> - r = drm_sched_init(&ring->sched, &amdgpu_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - ring->num_hw_submission, 0,
> - timeout, adev->reset_domain->wq,
> - ring->sched_score, ring->name,
> - adev->dev);
> + args.timeout = timeout;
> + args.credit_limit = ring->num_hw_submission;
> + args.score = ring->sched_score;
> + args.name = ring->name;
> +
> + r = drm_sched_init(&ring->sched, &args);
> if (r) {
> DRM_ERROR("Failed to create scheduler on ring %s.\n",
> ring->name);
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_sched.c b/drivers/gpu/drm/etnaviv/etnaviv_sched.c
> index 5b67eda122db..1693fd660bf1 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_sched.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_sched.c
> @@ -144,17 +144,17 @@ int etnaviv_sched_push_job(struct etnaviv_gem_submit *submit)
>
> int etnaviv_sched_init(struct etnaviv_gpu *gpu)
> {
> - int ret;
> + const struct drm_sched_init_args args = {
> + .ops = &etnaviv_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = etnaviv_hw_jobs_limit,
> + .hang_limit = etnaviv_job_hang_limit,
> + .timeout = msecs_to_jiffies(500),
> + .name = dev_name(gpu->dev),
> + .dev = gpu->dev
> + };
>
> - ret = drm_sched_init(&gpu->sched, &etnaviv_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - etnaviv_hw_jobs_limit, etnaviv_job_hang_limit,
> - msecs_to_jiffies(500), NULL, NULL,
> - dev_name(gpu->dev), gpu->dev);
> - if (ret)
> - return ret;
> -
> - return 0;
> + return drm_sched_init(&gpu->sched, &args);
> }
>
> void etnaviv_sched_fini(struct etnaviv_gpu *gpu)
> diff --git a/drivers/gpu/drm/imagination/pvr_queue.c b/drivers/gpu/drm/imagination/pvr_queue.c
> index c4f08432882b..d5c22874a9c1 100644
> --- a/drivers/gpu/drm/imagination/pvr_queue.c
> +++ b/drivers/gpu/drm/imagination/pvr_queue.c
> @@ -1210,6 +1210,17 @@ struct pvr_queue *pvr_queue_create(struct pvr_context *ctx,
> },
> };
> struct pvr_device *pvr_dev = ctx->pvr_dev;
> + const struct drm_sched_init_args sched_args = {
> + .ops = &pvr_queue_sched_ops,
> + .submit_wq = pvr_dev->sched_wq,
> + .num_rqs = 1,
> + .credit_limit = 64 * 1024,
> + .hang_limit = 1,
> + .timeout = msecs_to_jiffies(500),
> + .timeout_wq = pvr_dev->sched_wq,
> + .name = "pvr-queue",
> + .dev = pvr_dev->base.dev
> + };
> struct drm_gpu_scheduler *sched;
> struct pvr_queue *queue;
> int ctx_state_size, err;
> @@ -1282,12 +1293,7 @@ struct pvr_queue *pvr_queue_create(struct pvr_context *ctx,
>
> queue->timeline_ufo.value = cpu_map;
>
> - err = drm_sched_init(&queue->scheduler,
> - &pvr_queue_sched_ops,
> - pvr_dev->sched_wq, 1, 64 * 1024, 1,
> - msecs_to_jiffies(500),
> - pvr_dev->sched_wq, NULL, "pvr-queue",
> - pvr_dev->base.dev);
> + err = drm_sched_init(&queue->scheduler, &sched_args);
> if (err)
> goto err_release_ufo;
>
> diff --git a/drivers/gpu/drm/lima/lima_sched.c b/drivers/gpu/drm/lima/lima_sched.c
> index b40c90e97d7e..137adbd2b52d 100644
> --- a/drivers/gpu/drm/lima/lima_sched.c
> +++ b/drivers/gpu/drm/lima/lima_sched.c
> @@ -515,18 +515,22 @@ int lima_sched_pipe_init(struct lima_sched_pipe *pipe, const char *name)
> {
> unsigned int timeout = lima_sched_timeout_ms > 0 ?
> lima_sched_timeout_ms : 10000;
> + const struct drm_sched_init_args args = {
> + .ops = &lima_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = 1,
> + .hang_limit = lima_job_hang_limit,
> + .timeout = msecs_to_jiffies(timeout),
> + .name = name,
> + .dev = pipe->ldev->dev
> + };
>
> pipe->fence_context = dma_fence_context_alloc(1);
> spin_lock_init(&pipe->fence_lock);
>
> INIT_WORK(&pipe->recover_work, lima_sched_recover_work);
>
> - return drm_sched_init(&pipe->base, &lima_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - 1,
> - lima_job_hang_limit,
> - msecs_to_jiffies(timeout), NULL,
> - NULL, name, pipe->ldev->dev);
> + return drm_sched_init(&pipe->base, &args);
> }
>
> void lima_sched_pipe_fini(struct lima_sched_pipe *pipe)
> diff --git a/drivers/gpu/drm/msm/msm_ringbuffer.c b/drivers/gpu/drm/msm/msm_ringbuffer.c
> index c803556a8f64..c9d5283df3e3 100644
> --- a/drivers/gpu/drm/msm/msm_ringbuffer.c
> +++ b/drivers/gpu/drm/msm/msm_ringbuffer.c
> @@ -59,8 +59,14 @@ static const struct drm_sched_backend_ops msm_sched_ops = {
> struct msm_ringbuffer *msm_ringbuffer_new(struct msm_gpu *gpu, int id,
> void *memptrs, uint64_t memptrs_iova)
> {
> + struct drm_sched_init_args args = {
> + .ops = &msm_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = num_hw_submissions,
> + .timeout = MAX_SCHEDULE_TIMEOUT,
> + .dev = gpu->dev->dev
> + };
> struct msm_ringbuffer *ring;
> - long sched_timeout;
> char name[32];
> int ret;
>
> @@ -87,6 +93,7 @@ struct msm_ringbuffer *msm_ringbuffer_new(struct msm_gpu *gpu, int id,
> }
>
> msm_gem_object_set_name(ring->bo, "ring%d", id);
> + args.name = to_msm_bo(ring->bo)->name,
>
> ring->end = ring->start + (MSM_GPU_RINGBUFFER_SZ >> 2);
> ring->next = ring->start;
> @@ -95,13 +102,7 @@ struct msm_ringbuffer *msm_ringbuffer_new(struct msm_gpu *gpu, int id,
> ring->memptrs = memptrs;
> ring->memptrs_iova = memptrs_iova;
>
> - /* currently managing hangcheck ourselves: */
> - sched_timeout = MAX_SCHEDULE_TIMEOUT;
> -
> - ret = drm_sched_init(&ring->sched, &msm_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - num_hw_submissions, 0, sched_timeout,
> - NULL, NULL, to_msm_bo(ring->bo)->name, gpu->dev->dev);
> + ret = drm_sched_init(&ring->sched, &args);
> if (ret) {
> goto fail;
> }
> diff --git a/drivers/gpu/drm/nouveau/nouveau_sched.c b/drivers/gpu/drm/nouveau/nouveau_sched.c
> index 4412f2711fb5..b5aac8eebfdd 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_sched.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_sched.c
> @@ -404,7 +404,15 @@ nouveau_sched_init(struct nouveau_sched *sched, struct nouveau_drm *drm,
> {
> struct drm_gpu_scheduler *drm_sched = &sched->base;
> struct drm_sched_entity *entity = &sched->entity;
> - const long timeout = msecs_to_jiffies(NOUVEAU_SCHED_JOB_TIMEOUT_MS);
> + const struct drm_sched_init_args args = {
> + .ops = &nouveau_sched_ops,
> + .submit_wq = wq,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = credit_limit,
> + .timeout = msecs_to_jiffies(NOUVEAU_SCHED_JOB_TIMEOUT_MS),
> + .name = "nouveau_sched",
> + .dev = drm->dev->dev
> + };
> int ret;
>
> if (!wq) {
> @@ -416,10 +424,7 @@ nouveau_sched_init(struct nouveau_sched *sched, struct nouveau_drm *drm,
> sched->wq = wq;
> }
>
> - ret = drm_sched_init(drm_sched, &nouveau_sched_ops, wq,
> - NOUVEAU_SCHED_PRIORITY_COUNT,
> - credit_limit, 0, timeout,
> - NULL, NULL, "nouveau_sched", drm->dev->dev);
> + ret = drm_sched_init(drm_sched, &args);
> if (ret)
> goto fail_wq;
>
> diff --git a/drivers/gpu/drm/panfrost/panfrost_job.c b/drivers/gpu/drm/panfrost/panfrost_job.c
> index 9b8e82fb8bc4..893fd91cf5b0 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_job.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_job.c
> @@ -836,8 +836,16 @@ static irqreturn_t panfrost_job_irq_handler(int irq, void *data)
>
> int panfrost_job_init(struct panfrost_device *pfdev)
> {
> + struct drm_sched_init_args args = {
> + .ops = &panfrost_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = 2,
> + .timeout = msecs_to_jiffies(JOB_TIMEOUT_MS),
> + .timeout_wq = pfdev->reset.wq,
> + .name = "pan_js",
> + .dev = pfdev->dev
> + };
> struct panfrost_job_slot *js;
> - unsigned int nentries = 2;
> int ret, j;
>
> /* All GPUs have two entries per queue, but without jobchain
> @@ -845,7 +853,7 @@ int panfrost_job_init(struct panfrost_device *pfdev)
> * so let's just advertise one entry in that case.
> */
> if (!panfrost_has_hw_feature(pfdev, HW_FEATURE_JOBCHAIN_DISAMBIGUATION))
> - nentries = 1;
> + args.credit_limit = 1;
>
> pfdev->js = js = devm_kzalloc(pfdev->dev, sizeof(*js), GFP_KERNEL);
> if (!js)
> @@ -875,13 +883,7 @@ int panfrost_job_init(struct panfrost_device *pfdev)
> for (j = 0; j < NUM_JOB_SLOTS; j++) {
> js->queue[j].fence_context = dma_fence_context_alloc(1);
>
> - ret = drm_sched_init(&js->queue[j].sched,
> - &panfrost_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - nentries, 0,
> - msecs_to_jiffies(JOB_TIMEOUT_MS),
> - pfdev->reset.wq,
> - NULL, "pan_js", pfdev->dev);
> + ret = drm_sched_init(&js->queue[j].sched, &args);
> if (ret) {
> dev_err(pfdev->dev, "Failed to create scheduler: %d.", ret);
> goto err_sched;
> diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c
> index 5ce80e2532d5..22b196ff686c 100644
> --- a/drivers/gpu/drm/panthor/panthor_mmu.c
> +++ b/drivers/gpu/drm/panthor/panthor_mmu.c
> @@ -2278,6 +2278,16 @@ panthor_vm_create(struct panthor_device *ptdev, bool for_mcu,
> u64 full_va_range = 1ull << va_bits;
> struct drm_gem_object *dummy_gem;
> struct drm_gpu_scheduler *sched;
> + const struct drm_sched_init_args sched_args = {
> + .ops = &panthor_vm_bind_ops,
> + .submit_wq = ptdev->mmu->vm.wq,
> + .num_rqs = 1,
> + .credit_limit = 1,
> + /* Bind operations are synchronous for now, no timeout needed. */
> + .timeout = MAX_SCHEDULE_TIMEOUT,
> + .name = "panthor-vm-bind",
> + .dev = ptdev->base.dev
> + };
> struct io_pgtable_cfg pgtbl_cfg;
> u64 mair, min_va, va_range;
> struct panthor_vm *vm;
> @@ -2335,11 +2345,7 @@ panthor_vm_create(struct panthor_device *ptdev, bool for_mcu,
> goto err_mm_takedown;
> }
>
> - /* Bind operations are synchronous for now, no timeout needed. */
> - ret = drm_sched_init(&vm->sched, &panthor_vm_bind_ops, ptdev->mmu->vm.wq,
> - 1, 1, 0,
> - MAX_SCHEDULE_TIMEOUT, NULL, NULL,
> - "panthor-vm-bind", ptdev->base.dev);
> + ret = drm_sched_init(&vm->sched, &sched_args);
> if (ret)
> goto err_free_io_pgtable;
>
> diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/panthor/panthor_sched.c
> index 5844a7f639e0..44713cfdcd74 100644
> --- a/drivers/gpu/drm/panthor/panthor_sched.c
> +++ b/drivers/gpu/drm/panthor/panthor_sched.c
> @@ -3284,6 +3284,22 @@ static struct panthor_queue *
> group_create_queue(struct panthor_group *group,
> const struct drm_panthor_queue_create *args)
> {
> + const struct drm_sched_init_args sched_args = {
> + .ops = &panthor_queue_sched_ops,
> + .submit_wq = group->ptdev->scheduler->wq,
> + .num_rqs = 1,
> + /*
> + * The credit limit argument tells us the total number of
> + * instructions across all CS slots in the ringbuffer, with
> + * some jobs requiring twice as many as others, depending on
> + * their profiling status.
> + */
> + .credit_limit = args->ringbuf_size / sizeof(u64),
> + .timeout = msecs_to_jiffies(JOB_TIMEOUT_MS),
> + .timeout_wq = group->ptdev->reset.wq,
> + .name = "panthor-queue",
> + .dev = group->ptdev->base.dev
> + };
> struct drm_gpu_scheduler *drm_sched;
> struct panthor_queue *queue;
> int ret;
> @@ -3354,17 +3370,8 @@ group_create_queue(struct panthor_group *group,
> if (ret)
> goto err_free_queue;
>
> - /*
> - * Credit limit argument tells us the total number of instructions
> - * across all CS slots in the ringbuffer, with some jobs requiring
> - * twice as many as others, depending on their profiling status.
> - */
> - ret = drm_sched_init(&queue->scheduler, &panthor_queue_sched_ops,
> - group->ptdev->scheduler->wq, 1,
> - args->ringbuf_size / sizeof(u64),
> - 0, msecs_to_jiffies(JOB_TIMEOUT_MS),
> - group->ptdev->reset.wq,
> - NULL, "panthor-queue", group->ptdev->base.dev);
> +
> + ret = drm_sched_init(&queue->scheduler, &sched_args);
> if (ret)
> goto err_free_queue;
>
> diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c
> index a48be16ab84f..6295b2654a7c 100644
> --- a/drivers/gpu/drm/scheduler/sched_main.c
> +++ b/drivers/gpu/drm/scheduler/sched_main.c
> @@ -1244,40 +1244,24 @@ static void drm_sched_run_job_work(struct work_struct *w)
> * drm_sched_init - Init a gpu scheduler instance
> *
> * @sched: scheduler instance
> - * @ops: backend operations for this scheduler
> - * @submit_wq: workqueue to use for submission. If NULL, an ordered wq is
> - * allocated and used
> - * @num_rqs: number of runqueues, one for each priority, up to DRM_SCHED_PRIORITY_COUNT
> - * @credit_limit: the number of credits this scheduler can hold from all jobs
> - * @hang_limit: number of times to allow a job to hang before dropping it
> - * @timeout: timeout value in jiffies for the scheduler
> - * @timeout_wq: workqueue to use for timeout work. If NULL, the system_wq is
> - * used
> - * @score: optional score atomic shared with other schedulers
> - * @name: name used for debugging
> - * @dev: target &struct device
> + * @args: scheduler initialization arguments
> *
> * Return 0 on success, otherwise error code.
> */
> -int drm_sched_init(struct drm_gpu_scheduler *sched,
> - const struct drm_sched_backend_ops *ops,
> - struct workqueue_struct *submit_wq,
> - u32 num_rqs, u32 credit_limit, unsigned int hang_limit,
> - long timeout, struct workqueue_struct *timeout_wq,
> - atomic_t *score, const char *name, struct device *dev)
> +int drm_sched_init(struct drm_gpu_scheduler *sched, const struct drm_sched_init_args *args)
> {
> int i;
>
> - sched->ops = ops;
> - sched->credit_limit = credit_limit;
> - sched->name = name;
> - sched->timeout = timeout;
> - sched->timeout_wq = timeout_wq ? : system_wq;
> - sched->hang_limit = hang_limit;
> - sched->score = score ? score : &sched->_score;
> - sched->dev = dev;
> + sched->ops = args->ops;
> + sched->credit_limit = args->credit_limit;
> + sched->name = args->name;
> + sched->timeout = args->timeout;
> + sched->timeout_wq = args->timeout_wq ? : system_wq;
> + sched->hang_limit = args->hang_limit;
> + sched->score = args->score ? args->score : &sched->_score;
> + sched->dev = args->dev;
>
> - if (num_rqs > DRM_SCHED_PRIORITY_COUNT) {
> + if (args->num_rqs > DRM_SCHED_PRIORITY_COUNT) {
> /* This is a gross violation--tell drivers what the problem is.
> */
> drm_err(sched, "%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n",
> @@ -1292,16 +1276,16 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
> return 0;
> }
>
> - if (submit_wq) {
> - sched->submit_wq = submit_wq;
> + if (args->submit_wq) {
> + sched->submit_wq = args->submit_wq;
> sched->own_submit_wq = false;
> } else {
> #ifdef CONFIG_LOCKDEP
> - sched->submit_wq = alloc_ordered_workqueue_lockdep_map(name,
> + sched->submit_wq = alloc_ordered_workqueue_lockdep_map(args->name,
> WQ_MEM_RECLAIM,
> &drm_sched_lockdep_map);
> #else
> - sched->submit_wq = alloc_ordered_workqueue(name, WQ_MEM_RECLAIM);
> + sched->submit_wq = alloc_ordered_workqueue(args->name, WQ_MEM_RECLAIM);
> #endif
> if (!sched->submit_wq)
> return -ENOMEM;
> @@ -1309,11 +1293,11 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
> sched->own_submit_wq = true;
> }
>
> - sched->sched_rq = kmalloc_array(num_rqs, sizeof(*sched->sched_rq),
> + sched->sched_rq = kmalloc_array(args->num_rqs, sizeof(*sched->sched_rq),
> GFP_KERNEL | __GFP_ZERO);
> if (!sched->sched_rq)
> goto Out_check_own;
> - sched->num_rqs = num_rqs;
> + sched->num_rqs = args->num_rqs;
> for (i = DRM_SCHED_PRIORITY_KERNEL; i < sched->num_rqs; i++) {
> sched->sched_rq[i] = kzalloc(sizeof(*sched->sched_rq[i]), GFP_KERNEL);
> if (!sched->sched_rq[i])
> diff --git a/drivers/gpu/drm/v3d/v3d_sched.c b/drivers/gpu/drm/v3d/v3d_sched.c
> index 961465128d80..dfccb4cda3a1 100644
> --- a/drivers/gpu/drm/v3d/v3d_sched.c
> +++ b/drivers/gpu/drm/v3d/v3d_sched.c
> @@ -820,67 +820,57 @@ static const struct drm_sched_backend_ops v3d_cpu_sched_ops = {
> .free_job = v3d_cpu_job_free
> };
>
> +/*
> + * v3d's scheduler instances are all identical, except for ops and name.
> + */
> +static int
> +v3d_queue_sched_init(struct v3d_dev *v3d, const struct drm_sched_backend_ops *ops,
> + enum v3d_queue queue, const char *name)
> +{
> + struct drm_sched_init_args args = {
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = 1,
> + .timeout = msecs_to_jiffies(500),
> + .dev = v3d->drm.dev
> + };
> +
> + args.ops = ops;
> + args.name = name;
> +
> + return drm_sched_init(&v3d->queue[queue].sched, &args);
> +}
> +
> int
> v3d_sched_init(struct v3d_dev *v3d)
> {
> - int hw_jobs_limit = 1;
> - int job_hang_limit = 0;
> - int hang_limit_ms = 500;
> int ret;
>
> - ret = drm_sched_init(&v3d->queue[V3D_BIN].sched,
> - &v3d_bin_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_bin", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_bin_sched_ops, V3D_BIN, "v3d_bin");
> if (ret)
> return ret;
>
> - ret = drm_sched_init(&v3d->queue[V3D_RENDER].sched,
> - &v3d_render_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_render", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_render_sched_ops, V3D_RENDER,
> + "v3d_render");
> if (ret)
> goto fail;
>
> - ret = drm_sched_init(&v3d->queue[V3D_TFU].sched,
> - &v3d_tfu_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_tfu", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_tfu_sched_ops, V3D_TFU, "v3d_tfu");
> if (ret)
> goto fail;
>
> if (v3d_has_csd(v3d)) {
> - ret = drm_sched_init(&v3d->queue[V3D_CSD].sched,
> - &v3d_csd_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_csd", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_csd_sched_ops, V3D_CSD,
> + "v3d_csd");
> if (ret)
> goto fail;
>
> - ret = drm_sched_init(&v3d->queue[V3D_CACHE_CLEAN].sched,
> - &v3d_cache_clean_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_cache_clean", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_cache_clean_sched_ops,
> + V3D_CACHE_CLEAN, "v3d_cache_clean");
> if (ret)
> goto fail;
> }
>
> - ret = drm_sched_init(&v3d->queue[V3D_CPU].sched,
> - &v3d_cpu_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - 1, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_cpu", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_cpu_sched_ops, V3D_CPU, "v3d_cpu");
> if (ret)
> goto fail;
>
> diff --git a/drivers/gpu/drm/xe/xe_execlist.c b/drivers/gpu/drm/xe/xe_execlist.c
> index a8c416a48812..db1c52dcf1a6 100644
> --- a/drivers/gpu/drm/xe/xe_execlist.c
> +++ b/drivers/gpu/drm/xe/xe_execlist.c
> @@ -332,6 +332,15 @@ static const struct drm_sched_backend_ops drm_sched_ops = {
> static int execlist_exec_queue_init(struct xe_exec_queue *q)
> {
> struct drm_gpu_scheduler *sched;
> + const struct drm_sched_init_args args = {
> + .ops = &drm_sched_ops,
> + .num_rqs = 1,
> + .credit_limit = q->lrc[0]->ring.size / MAX_JOB_SIZE_BYTES,
> + .hang_limit = XE_SCHED_HANG_LIMIT,
> + .timeout = XE_SCHED_JOB_TIMEOUT,
> + .name = q->hwe->name,
> + .dev = gt_to_xe(q->gt)->drm.dev
> + };
> struct xe_execlist_exec_queue *exl;
> struct xe_device *xe = gt_to_xe(q->gt);
> int err;
> @@ -346,11 +355,8 @@ static int execlist_exec_queue_init(struct xe_exec_queue *q)
>
> exl->q = q;
>
> - err = drm_sched_init(&exl->sched, &drm_sched_ops, NULL, 1,
> - q->lrc[0]->ring.size / MAX_JOB_SIZE_BYTES,
> - XE_SCHED_HANG_LIMIT, XE_SCHED_JOB_TIMEOUT,
> - NULL, NULL, q->hwe->name,
> - gt_to_xe(q->gt)->drm.dev);
> +
> + err = drm_sched_init(&exl->sched, &args);
> if (err)
> goto err_free;
>
> diff --git a/drivers/gpu/drm/xe/xe_gpu_scheduler.c b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> index 50361b4638f9..be95f4cca007 100644
> --- a/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> +++ b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> @@ -63,13 +63,24 @@ int xe_sched_init(struct xe_gpu_scheduler *sched,
> atomic_t *score, const char *name,
> struct device *dev)
> {
> + const struct drm_sched_init_args args = {
> + .ops = ops,
> + .submit_wq = submit_wq,
> + .num_rqs = 1,
> + .credit_limit = hw_submission,
> + .hang_limit = hang_limit,
> + .timeout = timeout,
> + .timeout_wq = timeout_wq,
> + .score = score,
> + .name = name,
> + .dev = dev
> + };
> +
> sched->ops = xe_ops;
> INIT_LIST_HEAD(&sched->msgs);
> INIT_WORK(&sched->work_process_msg, xe_sched_process_msg_work);
>
> - return drm_sched_init(&sched->base, ops, submit_wq, 1, hw_submission,
> - hang_limit, timeout, timeout_wq, score, name,
> - dev);
> + return drm_sched_init(&sched->base, &args);
> }
>
> void xe_sched_fini(struct xe_gpu_scheduler *sched)
> diff --git a/include/drm/gpu_scheduler.h b/include/drm/gpu_scheduler.h
> index a0ff08123f07..f0f5435598a8 100644
> --- a/include/drm/gpu_scheduler.h
> +++ b/include/drm/gpu_scheduler.h
> @@ -540,12 +540,39 @@ struct drm_gpu_scheduler {
> struct device *dev;
> };
>
> +/**
> + * struct drm_sched_init_args - parameters for initializing a DRM GPU scheduler
> + *
> + * @ops: backend operations provided by the driver
> + * @submit_wq: workqueue to use for submission. May be NULL.
> + * If NULL, an ordered wq is allocated and used.
> + * @num_rqs: Number of run-queues. This may be at most DRM_SCHED_PRIORITY_COUNT,
> + * as there's usually one run-queue per priority, but may be less.
> + * @credit_limit: the number of credits this scheduler can hold from all jobs
> + * @hang_limit: number of times to allow a job to hang before dropping it.
> + * This mechanism is DEPRECATED. Set it to 0.
> + * @timeout: timeout value in jiffies for the scheduler
> + * @timeout_wq: workqueue to use for timeout work. May be NULL.
> + * If NULL, the system_wq is used.
> + * @score: score atomic shared with other schedulers. May be NULL.
> + * @name: name used for debugging
> + * @dev: associated device. Used for debugging
> + */
> +struct drm_sched_init_args {
> + const struct drm_sched_backend_ops *ops;
> + struct workqueue_struct *submit_wq;
> + struct workqueue_struct *timeout_wq;
> + u32 num_rqs;
> + u32 credit_limit;
> + unsigned int hang_limit;
> + long timeout;
> + atomic_t *score;
> + const char *name;
> + struct device *dev;
> +};
> +
> int drm_sched_init(struct drm_gpu_scheduler *sched,
> - const struct drm_sched_backend_ops *ops,
> - struct workqueue_struct *submit_wq,
> - u32 num_rqs, u32 credit_limit, unsigned int hang_limit,
> - long timeout, struct workqueue_struct *timeout_wq,
> - atomic_t *score, const char *name, struct device *dev);
> + const struct drm_sched_init_args *args);
>
> void drm_sched_fini(struct drm_gpu_scheduler *sched);
> int drm_sched_job_init(struct drm_sched_job *job,
> --
> 2.47.1
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✗ Xe.CI.Full: failure for drm/sched: Use struct for drm_sched_init() params (rev2)
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
` (10 preceding siblings ...)
2025-01-29 3:32 ` Matthew Brost
@ 2025-01-29 3:47 ` Patchwork
2025-01-29 7:59 ` [PATCH v2] drm/sched: Use struct for drm_sched_init() params Boris Brezillon
` (3 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2025-01-29 3:47 UTC (permalink / raw)
To: Philipp Stanner; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 69592 bytes --]
== Series Details ==
Series: drm/sched: Use struct for drm_sched_init() params (rev2)
URL : https://patchwork.freedesktop.org/series/143883/
State : failure
== Summary ==
CI Bug Log - changes from xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84_full -> xe-pw-143883v2_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-143883v2_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-143883v2_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (4 -> 4)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-143883v2_full:
### IGT changes ###
#### Possible regressions ####
* igt@kms_dirtyfb@fbc-dirtyfb-ioctl:
- shard-bmg: NOTRUN -> [SKIP][1]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@kms_dirtyfb@fbc-dirtyfb-ioctl.html
* igt@kms_frontbuffer_tracking@fbc-tiling-linear:
- shard-adlp: [PASS][2] -> [DMESG-WARN][3] +2 other tests dmesg-warn
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-9/igt@kms_frontbuffer_tracking@fbc-tiling-linear.html
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_frontbuffer_tracking@fbc-tiling-linear.html
Known issues
------------
Here are the changes found in xe-pw-143883v2_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-6-4-mc-ccs:
- shard-dg2-set2: NOTRUN -> [SKIP][4] ([Intel XE#2550] / [Intel XE#3767]) +15 other tests skip
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-6-4-mc-ccs.html
* igt@kms_atomic_transition@plane-toggle-modeset-transition:
- shard-adlp: [PASS][5] -> [FAIL][6] ([Intel XE#3908]) +1 other test fail
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-6/igt@kms_atomic_transition@plane-toggle-modeset-transition.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-6/igt@kms_atomic_transition@plane-toggle-modeset-transition.html
* igt@kms_big_fb@4-tiled-64bpp-rotate-90:
- shard-bmg: NOTRUN -> [SKIP][7] ([Intel XE#2327]) +4 other tests skip
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html
* igt@kms_big_fb@x-tiled-64bpp-rotate-90:
- shard-adlp: NOTRUN -> [SKIP][8] ([Intel XE#316])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_big_fb@x-tiled-64bpp-rotate-90.html
* igt@kms_big_fb@x-tiled-8bpp-rotate-270:
- shard-dg2-set2: NOTRUN -> [SKIP][9] ([Intel XE#316]) +4 other tests skip
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-addfb:
- shard-dg2-set2: NOTRUN -> [SKIP][10] ([Intel XE#619])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@kms_big_fb@y-tiled-addfb.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
- shard-adlp: [PASS][11] -> [DMESG-FAIL][12] ([Intel XE#1033])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-6/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-6/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0:
- shard-adlp: NOTRUN -> [SKIP][13] ([Intel XE#1124]) +1 other test skip
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#1124]) +8 other tests skip
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip:
- shard-dg2-set2: NOTRUN -> [SKIP][15] ([Intel XE#1124]) +5 other tests skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180:
- shard-lnl: NOTRUN -> [SKIP][16] ([Intel XE#1124]) +1 other test skip
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180.html
* igt@kms_bw@connected-linear-tiling-3-displays-3840x2160p:
- shard-dg2-set2: NOTRUN -> [SKIP][17] ([Intel XE#2191])
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@kms_bw@connected-linear-tiling-3-displays-3840x2160p.html
* igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p:
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#2314] / [Intel XE#2894])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p.html
* igt@kms_bw@linear-tiling-1-displays-1920x1080p:
- shard-adlp: NOTRUN -> [SKIP][19] ([Intel XE#367])
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_bw@linear-tiling-1-displays-1920x1080p.html
* igt@kms_bw@linear-tiling-2-displays-3840x2160p:
- shard-dg2-set2: NOTRUN -> [SKIP][20] ([Intel XE#367]) +2 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@kms_bw@linear-tiling-2-displays-3840x2160p.html
* igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][21] ([Intel XE#787]) +5 other tests skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-d-dp-2:
- shard-dg2-set2: NOTRUN -> [ABORT][22] ([Intel XE#2625])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-432/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-d-dp-2.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-mc-ccs:
- shard-lnl: NOTRUN -> [SKIP][23] ([Intel XE#2887]) +1 other test skip
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-mc-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-2:
- shard-dg2-set2: NOTRUN -> [SKIP][24] ([Intel XE#787]) +111 other tests skip
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-432/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-2.html
* igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs@pipe-d-dp-4:
- shard-dg2-set2: NOTRUN -> [SKIP][25] ([Intel XE#455] / [Intel XE#787]) +26 other tests skip
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs@pipe-d-dp-4.html
* igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-rc-ccs:
- shard-bmg: NOTRUN -> [SKIP][26] ([Intel XE#2887]) +6 other tests skip
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-rc-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-b-dp-4:
- shard-dg2-set2: NOTRUN -> [INCOMPLETE][27] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#3124] / [Intel XE#4010])
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-b-dp-4.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
- shard-dg2-set2: [PASS][28] -> [INCOMPLETE][29] ([Intel XE#1727] / [Intel XE#3124] / [Intel XE#4010])
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-432/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-433/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4:
- shard-dg2-set2: NOTRUN -> [DMESG-WARN][30] ([Intel XE#1727] / [Intel XE#3113])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-433/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-6:
- shard-dg2-set2: NOTRUN -> [INCOMPLETE][31] ([Intel XE#3124] / [Intel XE#4010])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-433/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-6.html
* igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-d-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][32] ([Intel XE#455] / [Intel XE#787]) +3 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-d-hdmi-a-1.html
* igt@kms_cdclk@mode-transition@pipe-a-dp-2:
- shard-dg2-set2: NOTRUN -> [SKIP][33] ([Intel XE#314]) +3 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-432/igt@kms_cdclk@mode-transition@pipe-a-dp-2.html
* igt@kms_cdclk@plane-scaling@pipe-b-dp-4:
- shard-dg2-set2: NOTRUN -> [SKIP][34] ([Intel XE#1152]) +3 other tests skip
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@kms_cdclk@plane-scaling@pipe-b-dp-4.html
* igt@kms_chamelium_audio@hdmi-audio-edid:
- shard-bmg: NOTRUN -> [SKIP][35] ([Intel XE#2252]) +6 other tests skip
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@kms_chamelium_audio@hdmi-audio-edid.html
* igt@kms_chamelium_color@ctm-0-50:
- shard-dg2-set2: NOTRUN -> [SKIP][36] ([Intel XE#306]) +1 other test skip
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-433/igt@kms_chamelium_color@ctm-0-50.html
* igt@kms_chamelium_edid@hdmi-edid-stress-resolution-4k:
- shard-lnl: NOTRUN -> [SKIP][37] ([Intel XE#373]) +1 other test skip
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@kms_chamelium_edid@hdmi-edid-stress-resolution-4k.html
* igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats:
- shard-adlp: NOTRUN -> [SKIP][38] ([Intel XE#373])
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats.html
* igt@kms_chamelium_hpd@vga-hpd:
- shard-dg2-set2: NOTRUN -> [SKIP][39] ([Intel XE#373]) +4 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@kms_chamelium_hpd@vga-hpd.html
* igt@kms_content_protection@dp-mst-lic-type-0:
- shard-bmg: NOTRUN -> [SKIP][40] ([Intel XE#2390])
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@kms_content_protection@dp-mst-lic-type-0.html
* igt@kms_content_protection@dp-mst-type-0:
- shard-dg2-set2: NOTRUN -> [SKIP][41] ([Intel XE#307])
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-466/igt@kms_content_protection@dp-mst-type-0.html
* igt@kms_content_protection@mei-interface:
- shard-adlp: NOTRUN -> [SKIP][42] ([Intel XE#455]) +4 other tests skip
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_content_protection@mei-interface.html
* igt@kms_content_protection@srm@pipe-a-dp-4:
- shard-dg2-set2: NOTRUN -> [FAIL][43] ([Intel XE#1178]) +1 other test fail
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@kms_content_protection@srm@pipe-a-dp-4.html
* igt@kms_content_protection@uevent:
- shard-bmg: NOTRUN -> [FAIL][44] ([Intel XE#1188]) +1 other test fail
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@kms_content_protection@uevent.html
* igt@kms_cursor_crc@cursor-onscreen-32x32:
- shard-bmg: NOTRUN -> [SKIP][45] ([Intel XE#2320]) +2 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@kms_cursor_crc@cursor-onscreen-32x32.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-dg2-set2: NOTRUN -> [SKIP][46] ([Intel XE#308]) +1 other test skip
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_cursor_crc@cursor-onscreen-64x64:
- shard-dg2-set2: NOTRUN -> [DMESG-WARN][47] ([Intel XE#1033]) +41 other tests dmesg-warn
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@kms_cursor_crc@cursor-onscreen-64x64.html
* igt@kms_cursor_crc@cursor-random-512x512:
- shard-lnl: NOTRUN -> [SKIP][48] ([Intel XE#2321])
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@kms_cursor_crc@cursor-random-512x512.html
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
- shard-adlp: NOTRUN -> [SKIP][49] ([Intel XE#309])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
- shard-adlp: NOTRUN -> [SKIP][50] ([Intel XE#323])
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
- shard-lnl: NOTRUN -> [SKIP][51] ([Intel XE#323])
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-toggle:
- shard-bmg: [PASS][52] -> [DMESG-WARN][53] ([Intel XE#877])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-bmg-8/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-4/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
- shard-dg2-set2: NOTRUN -> [SKIP][54] ([Intel XE#323])
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
* igt@kms_dp_linktrain_fallback@dp-fallback:
- shard-lnl: NOTRUN -> [SKIP][55] ([Intel XE#3070])
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@kms_dp_linktrain_fallback@dp-fallback.html
* igt@kms_dsc@dsc-with-output-formats-with-bpc:
- shard-bmg: NOTRUN -> [SKIP][56] ([Intel XE#2244])
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@kms_dsc@dsc-with-output-formats-with-bpc.html
* igt@kms_feature_discovery@display-3x:
- shard-dg2-set2: NOTRUN -> [SKIP][57] ([Intel XE#703])
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-433/igt@kms_feature_discovery@display-3x.html
* igt@kms_feature_discovery@display-4x:
- shard-adlp: NOTRUN -> [SKIP][58] ([Intel XE#1138])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_feature_discovery@display-4x.html
* igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ac-hdmi-a2-dp2:
- shard-dg2-set2: [PASS][59] -> [FAIL][60] ([Intel XE#301]) +2 other tests fail
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-432/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ac-hdmi-a2-dp2.html
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-432/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ac-hdmi-a2-dp2.html
* igt@kms_flip@2x-flip-vs-expired-vblank@ab-dp2-hdmi-a3:
- shard-bmg: [PASS][61] -> [FAIL][62] ([Intel XE#3321]) +4 other tests fail
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-bmg-7/igt@kms_flip@2x-flip-vs-expired-vblank@ab-dp2-hdmi-a3.html
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-1/igt@kms_flip@2x-flip-vs-expired-vblank@ab-dp2-hdmi-a3.html
* igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset:
- shard-adlp: NOTRUN -> [SKIP][63] ([Intel XE#310]) +1 other test skip
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset.html
* igt@kms_flip@flip-vs-blocking-wf-vblank@a-dp2:
- shard-bmg: [PASS][64] -> [FAIL][65] ([Intel XE#2882]) +3 other tests fail
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-bmg-7/igt@kms_flip@flip-vs-blocking-wf-vblank@a-dp2.html
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-4/igt@kms_flip@flip-vs-blocking-wf-vblank@a-dp2.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling:
- shard-bmg: NOTRUN -> [SKIP][66] ([Intel XE#2293] / [Intel XE#2380])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling@pipe-a-valid-mode:
- shard-bmg: NOTRUN -> [SKIP][67] ([Intel XE#2293])
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-valid-mode:
- shard-dg2-set2: NOTRUN -> [SKIP][68] ([Intel XE#455]) +13 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-466/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-valid-mode.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][69] ([Intel XE#2311]) +15 other tests skip
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-render:
- shard-adlp: NOTRUN -> [SKIP][70] ([Intel XE#656]) +6 other tests skip
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render:
- shard-adlp: NOTRUN -> [SKIP][71] ([Intel XE#651]) +3 other tests skip
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][72] ([Intel XE#656]) +3 other tests skip
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen:
- shard-bmg: NOTRUN -> [SKIP][73] ([Intel XE#4141]) +6 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html
* igt@kms_frontbuffer_tracking@fbc-tiling-y:
- shard-bmg: NOTRUN -> [SKIP][74] ([Intel XE#2352])
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-tiling-y.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-pgflip-blt:
- shard-lnl: NOTRUN -> [SKIP][75] ([Intel XE#651]) +1 other test skip
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-plflip-blt:
- shard-dg2-set2: NOTRUN -> [SKIP][76] ([Intel XE#651]) +19 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-433/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][77] ([Intel XE#2313]) +15 other tests skip
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt:
- shard-adlp: NOTRUN -> [SKIP][78] ([Intel XE#653])
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
- shard-lnl: NOTRUN -> [SKIP][79] ([Intel XE#1469])
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt:
- shard-dg2-set2: NOTRUN -> [SKIP][80] ([Intel XE#653]) +22 other tests skip
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt.html
* igt@kms_hdr@static-toggle-suspend@pipe-a-hdmi-a-3:
- shard-bmg: NOTRUN -> [DMESG-WARN][81] ([Intel XE#4172])
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-1/igt@kms_hdr@static-toggle-suspend@pipe-a-hdmi-a-3.html
* igt@kms_joiner@basic-force-ultra-joiner:
- shard-dg2-set2: NOTRUN -> [SKIP][82] ([Intel XE#2925])
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@kms_joiner@basic-force-ultra-joiner.html
* igt@kms_plane_cursor@viewport:
- shard-dg2-set2: [PASS][83] -> [FAIL][84] ([Intel XE#616]) +1 other test fail
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-433/igt@kms_plane_cursor@viewport.html
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-434/igt@kms_plane_cursor@viewport.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-b:
- shard-lnl: NOTRUN -> [SKIP][85] ([Intel XE#2763]) +1 other test skip
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-b.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-c:
- shard-dg2-set2: NOTRUN -> [SKIP][86] ([Intel XE#2763]) +2 other tests skip
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-c.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-d:
- shard-dg2-set2: NOTRUN -> [SKIP][87] ([Intel XE#2763] / [Intel XE#455]) +1 other test skip
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-d.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25:
- shard-adlp: NOTRUN -> [SKIP][88] ([Intel XE#2763] / [Intel XE#455]) +1 other test skip
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-a:
- shard-adlp: NOTRUN -> [SKIP][89] ([Intel XE#2763]) +2 other tests skip
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-a.html
* igt@kms_pm_backlight@fade-with-suspend:
- shard-dg2-set2: NOTRUN -> [SKIP][90] ([Intel XE#870]) +1 other test skip
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-466/igt@kms_pm_backlight@fade-with-suspend.html
* igt@kms_pm_dc@dc5-dpms:
- shard-lnl: NOTRUN -> [FAIL][91] ([Intel XE#718])
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@kms_pm_dc@dc5-dpms.html
* igt@kms_pm_dc@dc5-retention-flops:
- shard-dg2-set2: NOTRUN -> [SKIP][92] ([Intel XE#3309])
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-433/igt@kms_pm_dc@dc5-retention-flops.html
* igt@kms_pm_dc@deep-pkgc:
- shard-bmg: NOTRUN -> [SKIP][93] ([Intel XE#2505])
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@kms_pm_dc@deep-pkgc.html
* igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-sf:
- shard-dg2-set2: NOTRUN -> [SKIP][94] ([Intel XE#1489]) +6 other tests skip
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-433/igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-sf.html
* igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf:
- shard-adlp: NOTRUN -> [SKIP][95] ([Intel XE#1489]) +2 other tests skip
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf.html
* igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area:
- shard-bmg: NOTRUN -> [SKIP][96] ([Intel XE#1489]) +2 other tests skip
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area.html
* igt@kms_psr@fbc-pr-sprite-blt:
- shard-adlp: NOTRUN -> [SKIP][97] ([Intel XE#2850] / [Intel XE#929]) +2 other tests skip
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_psr@fbc-pr-sprite-blt.html
* igt@kms_psr@fbc-psr2-primary-render:
- shard-dg2-set2: NOTRUN -> [SKIP][98] ([Intel XE#2850] / [Intel XE#929]) +11 other tests skip
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-466/igt@kms_psr@fbc-psr2-primary-render.html
* igt@kms_psr@psr-basic:
- shard-bmg: NOTRUN -> [SKIP][99] ([Intel XE#2234] / [Intel XE#2850]) +7 other tests skip
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@kms_psr@psr-basic.html
* igt@kms_rotation_crc@sprite-rotation-270:
- shard-dg2-set2: NOTRUN -> [SKIP][100] ([Intel XE#3414]) +1 other test skip
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@kms_rotation_crc@sprite-rotation-270.html
* igt@kms_rotation_crc@sprite-rotation-90-pos-100-0:
- shard-bmg: NOTRUN -> [SKIP][101] ([Intel XE#3414] / [Intel XE#3904])
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-adlp: NOTRUN -> [SKIP][102] ([Intel XE#362])
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
- shard-dg2-set2: NOTRUN -> [SKIP][103] ([Intel XE#1091] / [Intel XE#2849])
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html
* igt@testdisplay:
- shard-dg2-set2: NOTRUN -> [DMESG-WARN][104] ([Intel XE#2705])
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@testdisplay.html
* igt@xe_ccs@block-copy-uncompressed-inc-dimension@tile64-uncompressed-compfmt0-system-vram01-451x451:
- shard-dg2-set2: [PASS][105] -> [DMESG-WARN][106] ([Intel XE#1033]) +6 other tests dmesg-warn
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-463/igt@xe_ccs@block-copy-uncompressed-inc-dimension@tile64-uncompressed-compfmt0-system-vram01-451x451.html
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@xe_ccs@block-copy-uncompressed-inc-dimension@tile64-uncompressed-compfmt0-system-vram01-451x451.html
* igt@xe_ccs@suspend-resume@tile64-compressed-compfmt0-vram01-vram01:
- shard-dg2-set2: [PASS][107] -> [ABORT][108] ([Intel XE#2625]) +4 other tests abort
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-433/igt@xe_ccs@suspend-resume@tile64-compressed-compfmt0-vram01-vram01.html
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-432/igt@xe_ccs@suspend-resume@tile64-compressed-compfmt0-vram01-vram01.html
* igt@xe_copy_basic@mem-set-linear-0x3fff:
- shard-dg2-set2: NOTRUN -> [SKIP][109] ([Intel XE#1126]) +1 other test skip
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@xe_copy_basic@mem-set-linear-0x3fff.html
* igt@xe_eudebug@basic-close:
- shard-adlp: NOTRUN -> [SKIP][110] ([Intel XE#2905])
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@xe_eudebug@basic-close.html
* igt@xe_eudebug@basic-vm-bind-metadata-discovery:
- shard-bmg: NOTRUN -> [SKIP][111] ([Intel XE#2905]) +5 other tests skip
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@xe_eudebug@basic-vm-bind-metadata-discovery.html
* igt@xe_eudebug@basic-vm-bind-ufence-delay-ack:
- shard-lnl: NOTRUN -> [SKIP][112] ([Intel XE#3889])
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@xe_eudebug@basic-vm-bind-ufence-delay-ack.html
* igt@xe_eudebug_online@interrupt-other:
- shard-lnl: NOTRUN -> [SKIP][113] ([Intel XE#2905])
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@xe_eudebug_online@interrupt-other.html
* igt@xe_eudebug_online@writes-caching-sram-bb-vram-target-sram:
- shard-dg2-set2: NOTRUN -> [SKIP][114] ([Intel XE#2905]) +9 other tests skip
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@xe_eudebug_online@writes-caching-sram-bb-vram-target-sram.html
* igt@xe_evict@evict-beng-large-multi-vm:
- shard-lnl: NOTRUN -> [SKIP][115] ([Intel XE#688])
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@xe_evict@evict-beng-large-multi-vm.html
* igt@xe_evict@evict-large-multi-vm:
- shard-dg2-set2: NOTRUN -> [DMESG-WARN][116] ([Intel XE#1033] / [Intel XE#1473])
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@xe_evict@evict-large-multi-vm.html
* igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen:
- shard-adlp: NOTRUN -> [SKIP][117] ([Intel XE#688])
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen.html
* igt@xe_exec_basic@multigpu-no-exec-null:
- shard-bmg: NOTRUN -> [SKIP][118] ([Intel XE#2322]) +3 other tests skip
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@xe_exec_basic@multigpu-no-exec-null.html
* igt@xe_exec_basic@multigpu-no-exec-userptr-invalidate-race:
- shard-dg2-set2: [PASS][119] -> [SKIP][120] ([Intel XE#1392]) +5 other tests skip
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-436/igt@xe_exec_basic@multigpu-no-exec-userptr-invalidate-race.html
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-432/igt@xe_exec_basic@multigpu-no-exec-userptr-invalidate-race.html
* igt@xe_exec_basic@multigpu-once-bindexecqueue-rebind:
- shard-adlp: NOTRUN -> [SKIP][121] ([Intel XE#1392])
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@xe_exec_basic@multigpu-once-bindexecqueue-rebind.html
* igt@xe_exec_basic@multigpu-once-null-rebind:
- shard-lnl: NOTRUN -> [SKIP][122] ([Intel XE#1392])
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@xe_exec_basic@multigpu-once-null-rebind.html
* igt@xe_exec_fault_mode@once-rebind-prefetch:
- shard-dg2-set2: NOTRUN -> [SKIP][123] ([Intel XE#288]) +21 other tests skip
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@xe_exec_fault_mode@once-rebind-prefetch.html
* igt@xe_exec_fault_mode@once-userptr-rebind-imm:
- shard-adlp: NOTRUN -> [SKIP][124] ([Intel XE#288]) +3 other tests skip
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@xe_exec_fault_mode@once-userptr-rebind-imm.html
* igt@xe_fault_injection@vm-bind-fail-xe_pt_update_ops_run:
- shard-adlp: [PASS][125] -> [DMESG-WARN][126] ([Intel XE#4173]) +1 other test dmesg-warn
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-9/igt@xe_fault_injection@vm-bind-fail-xe_pt_update_ops_run.html
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@xe_fault_injection@vm-bind-fail-xe_pt_update_ops_run.html
* igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit:
- shard-bmg: NOTRUN -> [SKIP][127] ([Intel XE#2229])
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit.html
* igt@xe_live_ktest@xe_dma_buf:
- shard-bmg: NOTRUN -> [SKIP][128] ([Intel XE#1192])
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@xe_live_ktest@xe_dma_buf.html
* igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit:
- shard-dg2-set2: NOTRUN -> [SKIP][129] ([Intel XE#2229])
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit.html
* igt@xe_live_ktest@xe_mocs:
- shard-bmg: [PASS][130] -> [SKIP][131] ([Intel XE#1192])
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-bmg-1/igt@xe_live_ktest@xe_mocs.html
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@xe_live_ktest@xe_mocs.html
* igt@xe_mmap@small-bar:
- shard-bmg: NOTRUN -> [SKIP][132] ([Intel XE#586])
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@xe_mmap@small-bar.html
* igt@xe_module_load@force-load:
- shard-bmg: NOTRUN -> [SKIP][133] ([Intel XE#2457])
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@xe_module_load@force-load.html
* igt@xe_oa@create-destroy-userspace-config:
- shard-adlp: NOTRUN -> [SKIP][134] ([Intel XE#2541] / [Intel XE#3573]) +1 other test skip
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@xe_oa@create-destroy-userspace-config.html
* igt@xe_oa@syncs-ufence-wait-cfg:
- shard-dg2-set2: NOTRUN -> [SKIP][135] ([Intel XE#2541] / [Intel XE#3573]) +5 other tests skip
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@xe_oa@syncs-ufence-wait-cfg.html
* igt@xe_pat@pat-index-xehpc:
- shard-bmg: NOTRUN -> [SKIP][136] ([Intel XE#1420])
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@xe_pat@pat-index-xehpc.html
* igt@xe_peer2peer@read@read-gpua-vram01-gpub-system-p2p:
- shard-dg2-set2: NOTRUN -> [FAIL][137] ([Intel XE#1173]) +3 other tests fail
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@xe_peer2peer@read@read-gpua-vram01-gpub-system-p2p.html
* igt@xe_pm@d3cold-multiple-execs:
- shard-dg2-set2: NOTRUN -> [SKIP][138] ([Intel XE#2284] / [Intel XE#366])
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-466/igt@xe_pm@d3cold-multiple-execs.html
* igt@xe_pm@s3-basic-exec:
- shard-dg2-set2: [PASS][139] -> [ABORT][140] ([Intel XE#1358]) +1 other test abort
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-436/igt@xe_pm@s3-basic-exec.html
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-432/igt@xe_pm@s3-basic-exec.html
* igt@xe_pm@s3-vm-bind-userptr:
- shard-bmg: [PASS][141] -> [DMESG-WARN][142] ([Intel XE#4172] / [Intel XE#569])
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-bmg-4/igt@xe_pm@s3-vm-bind-userptr.html
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-1/igt@xe_pm@s3-vm-bind-userptr.html
* igt@xe_pm@s4-d3cold-basic-exec:
- shard-bmg: NOTRUN -> [SKIP][143] ([Intel XE#2284])
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@xe_pm@s4-d3cold-basic-exec.html
* igt@xe_pm@s4-d3hot-basic-exec:
- shard-adlp: [PASS][144] -> [ABORT][145] ([Intel XE#1358] / [Intel XE#1607])
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-2/igt@xe_pm@s4-d3hot-basic-exec.html
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-9/igt@xe_pm@s4-d3hot-basic-exec.html
* igt@xe_pm@s4-multiple-execs:
- shard-adlp: [PASS][146] -> [ABORT][147] ([Intel XE#1358] / [Intel XE#1607] / [Intel XE#1794])
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-8/igt@xe_pm@s4-multiple-execs.html
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-9/igt@xe_pm@s4-multiple-execs.html
* igt@xe_pm@s4-vm-bind-unbind-all:
- shard-lnl: [PASS][148] -> [ABORT][149] ([Intel XE#1358] / [Intel XE#1607] / [Intel XE#1794])
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-lnl-8/igt@xe_pm@s4-vm-bind-unbind-all.html
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-2/igt@xe_pm@s4-vm-bind-unbind-all.html
* igt@xe_query@multigpu-query-invalid-extension:
- shard-adlp: NOTRUN -> [SKIP][150] ([Intel XE#944])
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@xe_query@multigpu-query-invalid-extension.html
* igt@xe_query@multigpu-query-oa-units:
- shard-bmg: NOTRUN -> [SKIP][151] ([Intel XE#944]) +1 other test skip
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@xe_query@multigpu-query-oa-units.html
* igt@xe_query@multigpu-query-topology:
- shard-dg2-set2: NOTRUN -> [SKIP][152] ([Intel XE#944]) +2 other tests skip
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@xe_query@multigpu-query-topology.html
* igt@xe_sriov_flr@flr-vf1-clear:
- shard-bmg: NOTRUN -> [SKIP][153] ([Intel XE#3342])
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@xe_sriov_flr@flr-vf1-clear.html
* igt@xe_sysfs_scheduler@preempt_timeout_us-invalid:
- shard-bmg: [PASS][154] -> [DMESG-WARN][155] ([Intel XE#4172]) +16 other tests dmesg-warn
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-bmg-2/igt@xe_sysfs_scheduler@preempt_timeout_us-invalid.html
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@xe_sysfs_scheduler@preempt_timeout_us-invalid.html
#### Possible fixes ####
* igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p:
- shard-dg2-set2: [DMESG-WARN][156] ([Intel XE#1033]) -> [PASS][157] +6 other tests pass
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-433/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-434/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-bmg: [INCOMPLETE][158] ([Intel XE#3862]) -> [PASS][159] +1 other test pass
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-bmg-1/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-dp-4:
- shard-dg2-set2: [INCOMPLETE][160] ([Intel XE#3124] / [Intel XE#4010]) -> [PASS][161]
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-434/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-dp-4.html
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-dp-4.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-6:
- shard-dg2-set2: [DMESG-WARN][162] ([Intel XE#1727]) -> [PASS][163]
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-434/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-6.html
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-6.html
* igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible:
- shard-lnl: [INCOMPLETE][164] ([Intel XE#2049]) -> [PASS][165]
[164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-lnl-4/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html
[165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html
* igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@b-edp1:
- shard-lnl: [INCOMPLETE][166] -> [PASS][167]
[166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-lnl-4/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@b-edp1.html
[167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@b-edp1.html
* igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a6:
- shard-dg2-set2: [FAIL][168] ([Intel XE#301]) -> [PASS][169] +6 other tests pass
[168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-436/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a6.html
[169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a6.html
* igt@kms_flip@flip-vs-expired-vblank@c-dp4:
- shard-dg2-set2: [FAIL][170] ([Intel XE#301] / [Intel XE#3321]) -> [PASS][171] +1 other test pass
[170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-436/igt@kms_flip@flip-vs-expired-vblank@c-dp4.html
[171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@kms_flip@flip-vs-expired-vblank@c-dp4.html
* igt@kms_flip@flip-vs-expired-vblank@d-dp2:
- shard-bmg: [FAIL][172] ([Intel XE#3321]) -> [PASS][173] +3 other tests pass
[172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-bmg-2/igt@kms_flip@flip-vs-expired-vblank@d-dp2.html
[173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@kms_flip@flip-vs-expired-vblank@d-dp2.html
* igt@kms_flip@flip-vs-suspend-interruptible:
- shard-adlp: [DMESG-WARN][174] ([Intel XE#2953]) -> [PASS][175] +1 other test pass
[174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-6/igt@kms_flip@flip-vs-suspend-interruptible.html
[175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-6/igt@kms_flip@flip-vs-suspend-interruptible.html
- shard-bmg: [INCOMPLETE][176] ([Intel XE#2049] / [Intel XE#2597]) -> [PASS][177] +1 other test pass
[176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-bmg-8/igt@kms_flip@flip-vs-suspend-interruptible.html
[177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@kms_flip@flip-vs-suspend-interruptible.html
* igt@kms_flip@flip-vs-suspend@c-dp4:
- shard-dg2-set2: [INCOMPLETE][178] ([Intel XE#2049] / [Intel XE#2597]) -> [PASS][179] +1 other test pass
[178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-466/igt@kms_flip@flip-vs-suspend@c-dp4.html
[179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-466/igt@kms_flip@flip-vs-suspend@c-dp4.html
* igt@kms_flip@plain-flip-ts-check-interruptible:
- shard-lnl: [FAIL][180] ([Intel XE#886]) -> [PASS][181] +1 other test pass
[180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-lnl-5/igt@kms_flip@plain-flip-ts-check-interruptible.html
[181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-4/igt@kms_flip@plain-flip-ts-check-interruptible.html
* igt@kms_hdr@invalid-hdr:
- shard-dg2-set2: [SKIP][182] ([Intel XE#455]) -> [PASS][183]
[182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-433/igt@kms_hdr@invalid-hdr.html
[183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@kms_hdr@invalid-hdr.html
* igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-3:
- shard-bmg: [DMESG-WARN][184] ([Intel XE#4172]) -> [PASS][185] +34 other tests pass
[184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-bmg-7/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-3.html
[185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-1/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-3.html
* igt@xe_fault_injection@vm-bind-fail-vm_bind_ioctl_ops_execute:
- shard-adlp: [DMESG-WARN][186] ([Intel XE#4173]) -> [PASS][187] +1 other test pass
[186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-8/igt@xe_fault_injection@vm-bind-fail-vm_bind_ioctl_ops_execute.html
[187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-4/igt@xe_fault_injection@vm-bind-fail-vm_bind_ioctl_ops_execute.html
* igt@xe_module_load@load:
- shard-adlp: ([PASS][188], [PASS][189], [PASS][190], [PASS][191], [PASS][192], [PASS][193], [PASS][194], [PASS][195], [PASS][196], [PASS][197], [PASS][198], [PASS][199], [PASS][200], [PASS][201], [PASS][202], [PASS][203], [PASS][204], [PASS][205], [PASS][206], [SKIP][207], [PASS][208], [PASS][209], [PASS][210], [PASS][211], [PASS][212], [PASS][213]) ([Intel XE#378]) -> ([PASS][214], [PASS][215], [PASS][216], [PASS][217], [PASS][218], [PASS][219], [PASS][220], [PASS][221], [PASS][222], [PASS][223], [PASS][224], [PASS][225], [PASS][226], [PASS][227], [PASS][228], [PASS][229], [PASS][230], [PASS][231], [PASS][232], [PASS][233], [PASS][234], [PASS][235], [PASS][236], [PASS][237], [PASS][238])
[188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-8/igt@xe_module_load@load.html
[189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-9/igt@xe_module_load@load.html
[190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-9/igt@xe_module_load@load.html
[191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-4/igt@xe_module_load@load.html
[192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-4/igt@xe_module_load@load.html
[193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-3/igt@xe_module_load@load.html
[194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-4/igt@xe_module_load@load.html
[195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-4/igt@xe_module_load@load.html
[196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-9/igt@xe_module_load@load.html
[197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-9/igt@xe_module_load@load.html
[198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-3/igt@xe_module_load@load.html
[199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-3/igt@xe_module_load@load.html
[200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-3/igt@xe_module_load@load.html
[201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-6/igt@xe_module_load@load.html
[202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-2/igt@xe_module_load@load.html
[203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-6/igt@xe_module_load@load.html
[204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-6/igt@xe_module_load@load.html
[205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-6/igt@xe_module_load@load.html
[206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-2/igt@xe_module_load@load.html
[207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-8/igt@xe_module_load@load.html
[208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-8/igt@xe_module_load@load.html
[209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-8/igt@xe_module_load@load.html
[210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-8/igt@xe_module_load@load.html
[211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-8/igt@xe_module_load@load.html
[212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-2/igt@xe_module_load@load.html
[213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-2/igt@xe_module_load@load.html
[214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-8/igt@xe_module_load@load.html
[215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@xe_module_load@load.html
[216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@xe_module_load@load.html
[217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-6/igt@xe_module_load@load.html
[218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-6/igt@xe_module_load@load.html
[219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@xe_module_load@load.html
[220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-8/igt@xe_module_load@load.html
[221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-6/igt@xe_module_load@load.html
[222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-6/igt@xe_module_load@load.html
[223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-6/igt@xe_module_load@load.html
[224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-4/igt@xe_module_load@load.html
[225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-4/igt@xe_module_load@load.html
[226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-4/igt@xe_module_load@load.html
[227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-4/igt@xe_module_load@load.html
[228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@xe_module_load@load.html
[229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@xe_module_load@load.html
[230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-2/igt@xe_module_load@load.html
[231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-8/igt@xe_module_load@load.html
[232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-8/igt@xe_module_load@load.html
[233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-8/igt@xe_module_load@load.html
[234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-9/igt@xe_module_load@load.html
[235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-9/igt@xe_module_load@load.html
[236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-2/igt@xe_module_load@load.html
[237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-2/igt@xe_module_load@load.html
[238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-2/igt@xe_module_load@load.html
* igt@xe_pm@d3hot-basic-exec:
- shard-adlp: [DMESG-WARN][239] -> [PASS][240] +1 other test pass
[239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-4/igt@xe_pm@d3hot-basic-exec.html
[240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-6/igt@xe_pm@d3hot-basic-exec.html
* igt@xe_pm@d3hot-mmap-system:
- shard-bmg: [INCOMPLETE][241] ([Intel XE#1358]) -> [PASS][242]
[241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-bmg-4/igt@xe_pm@d3hot-mmap-system.html
[242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@xe_pm@d3hot-mmap-system.html
* igt@xe_pm@s3-vm-bind-prefetch:
- shard-dg2-set2: [ABORT][243] ([Intel XE#1358] / [Intel XE#1794]) -> [PASS][244]
[243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-432/igt@xe_pm@s3-vm-bind-prefetch.html
[244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@xe_pm@s3-vm-bind-prefetch.html
* igt@xe_pm@s4-basic-exec:
- shard-lnl: [ABORT][245] ([Intel XE#1358] / [Intel XE#1607] / [Intel XE#1794]) -> [PASS][246]
[245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-lnl-2/igt@xe_pm@s4-basic-exec.html
[246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-lnl-7/igt@xe_pm@s4-basic-exec.html
* igt@xe_pm@s4-d3hot-basic-exec:
- shard-dg2-set2: [ABORT][247] ([Intel XE#1358]) -> [PASS][248]
[247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-432/igt@xe_pm@s4-d3hot-basic-exec.html
[248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-463/igt@xe_pm@s4-d3hot-basic-exec.html
* igt@xe_pm@s4-vm-bind-unbind-all:
- shard-adlp: [ABORT][249] ([Intel XE#1358] / [Intel XE#1607] / [Intel XE#1794]) -> [PASS][250]
[249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-adlp-9/igt@xe_pm@s4-vm-bind-unbind-all.html
[250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-adlp-3/igt@xe_pm@s4-vm-bind-unbind-all.html
* igt@xe_pm_residency@cpg-basic:
- shard-dg2-set2: [ABORT][251] ([Intel XE#4046]) -> [PASS][252]
[251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-432/igt@xe_pm_residency@cpg-basic.html
[252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-433/igt@xe_pm_residency@cpg-basic.html
#### Warnings ####
* igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size:
- shard-bmg: [DMESG-WARN][253] ([Intel XE#4172]) -> [DMESG-WARN][254] ([Intel XE#4172] / [Intel XE#877])
[253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-bmg-2/igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size.html
[254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-8/igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size.html
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][255] ([Intel XE#3374] / [Intel XE#3544]) -> [SKIP][256] ([Intel XE#3544])
[255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-bmg-4/igt@kms_hdr@brightness-with-hdr.html
[256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-1/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][257] ([Intel XE#2426]) -> [SKIP][258] ([Intel XE#2509])
[257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-bmg-7/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-1/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@xe_evict@evict-large-multi-vm:
- shard-bmg: [DMESG-WARN][259] ([Intel XE#1473] / [Intel XE#4172]) -> [DMESG-WARN][260] ([Intel XE#4172])
[259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-bmg-4/igt@xe_evict@evict-large-multi-vm.html
[260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-1/igt@xe_evict@evict-large-multi-vm.html
* igt@xe_exec_threads@threads-hang-rebind:
- shard-dg2-set2: [DMESG-WARN][261] ([Intel XE#1033] / [Intel XE#3876]) -> [DMESG-WARN][262] ([Intel XE#1033])
[261]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-463/igt@xe_exec_threads@threads-hang-rebind.html
[262]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-436/igt@xe_exec_threads@threads-hang-rebind.html
* igt@xe_live_ktest@xe_eudebug:
- shard-bmg: [SKIP][263] ([Intel XE#2833]) -> [SKIP][264] ([Intel XE#1192])
[263]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-bmg-4/igt@xe_live_ktest@xe_eudebug.html
[264]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-bmg-2/igt@xe_live_ktest@xe_eudebug.html
* igt@xe_pm@s3-mocs:
- shard-dg2-set2: [DMESG-WARN][265] ([Intel XE#1033] / [Intel XE#569]) -> [ABORT][266] ([Intel XE#1033] / [Intel XE#1358] / [Intel XE#1794])
[265]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84/shard-dg2-436/igt@xe_pm@s3-mocs.html
[266]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/shard-dg2-432/igt@xe_pm@s3-mocs.html
[Intel XE#1033]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1033
[Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126
[Intel XE#1138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1138
[Intel XE#1152]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1152
[Intel XE#1173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1173
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1188]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1188
[Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192
[Intel XE#1358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1358
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1420]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1420
[Intel XE#1469]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1469
[Intel XE#1473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1473
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1607
[Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
[Intel XE#1794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1794
[Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
[Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
[Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2352
[Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
[Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
[Intel XE#2505]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2505
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#2541]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2541
[Intel XE#2550]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2550
[Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
[Intel XE#2625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2625
[Intel XE#2705]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2705
[Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
[Intel XE#2833]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2833
[Intel XE#2849]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2849
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
[Intel XE#2882]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2882
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
[Intel XE#2905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2905
[Intel XE#2925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2925
[Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
[Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
[Intel XE#3070]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3070
[Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
[Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
[Intel XE#3124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3124
[Intel XE#314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/314
[Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
[Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
[Intel XE#3309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3309
[Intel XE#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321
[Intel XE#3342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3342
[Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
[Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
[Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
[Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#3767]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3767
[Intel XE#378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/378
[Intel XE#3862]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3862
[Intel XE#3876]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3876
[Intel XE#3889]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3889
[Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
[Intel XE#3908]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3908
[Intel XE#4010]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4010
[Intel XE#4046]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4046
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4172]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4172
[Intel XE#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
[Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
[Intel XE#569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/569
[Intel XE#586]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/586
[Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
[Intel XE#619]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/619
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/703
[Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
[Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
[Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
[Intel XE#877]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/877
[Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886
[Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* Linux: xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84 -> xe-pw-143883v2
IGT_8212: 76102a17560c6e6fc6528db29286b0266ccc48ef @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-2564-016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84: 016c921dcfd5d324bbd5c8326fd9fecc7b5fbb84
xe-pw-143883v2: 143883v2
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-143883v2/index.html
[-- Attachment #2: Type: text/html, Size: 82084 bytes --]
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2] drm/sched: Use struct for drm_sched_init() params
2025-01-28 21:49 ` Christian Gmeiner
@ 2025-01-29 7:56 ` Boris Brezillon
2025-01-29 7:58 ` Christian Gmeiner
0 siblings, 1 reply; 23+ messages in thread
From: Boris Brezillon @ 2025-01-29 7:56 UTC (permalink / raw)
To: Christian Gmeiner
Cc: Philipp Stanner, Alex Deucher, Christian König, Xinhui Pan,
David Airlie, Simona Vetter, Lucas Stach, Russell King,
Frank Binns, Matt Coster, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Qiang Yu, Rob Clark, Sean Paul, Konrad Dybcio,
Abhinav Kumar, Dmitry Baryshkov, Marijn Suijten, Karol Herbst,
Lyude Paul, Danilo Krummrich, Rob Herring, Steven Price,
Liviu Dudau, Matthew Brost, Melissa Wen, Maíra Canal,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Sunil Khatri, Lijo Lazar, Hawking Zhang, Mario Limonciello,
Ma Jun, Yunxiang Li, amd-gfx, dri-devel, linux-kernel, etnaviv,
lima, linux-arm-msm, freedreno, nouveau, intel-xe
On Tue, 28 Jan 2025 22:49:47 +0100
Christian Gmeiner <christian.gmeiner@gmail.com> wrote:
> > int etnaviv_sched_init(struct etnaviv_gpu *gpu)
> > {
> > - int ret;
> > + const struct drm_sched_init_args args = {
>
> Why not declare it as static const struct drm_sched_init_args args = { ?
Because some bits in there are not static, in this particular case,
gpu->dev is not static for instance.
> This question applies to all similar occurrences in the patch.
>
> > + .ops = &etnaviv_sched_ops,
> > + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> > + .credit_limit = etnaviv_hw_jobs_limit,
> > + .hang_limit = etnaviv_job_hang_limit,
> > + .timeout = msecs_to_jiffies(500),
> > + .name = dev_name(gpu->dev),
> > + .dev = gpu->dev
> > + };
> >
> > - ret = drm_sched_init(&gpu->sched, &etnaviv_sched_ops, NULL,
> > - DRM_SCHED_PRIORITY_COUNT,
> > - etnaviv_hw_jobs_limit, etnaviv_job_hang_limit,
> > - msecs_to_jiffies(500), NULL, NULL,
> > - dev_name(gpu->dev), gpu->dev);
> > - if (ret)
> > - return ret;
> > -
> > - return 0;
> > + return drm_sched_init(&gpu->sched, &args);
> > }
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2] drm/sched: Use struct for drm_sched_init() params
2025-01-29 7:56 ` Boris Brezillon
@ 2025-01-29 7:58 ` Christian Gmeiner
0 siblings, 0 replies; 23+ messages in thread
From: Christian Gmeiner @ 2025-01-29 7:58 UTC (permalink / raw)
To: Boris Brezillon
Cc: Philipp Stanner, Alex Deucher, Christian König, Xinhui Pan,
David Airlie, Simona Vetter, Lucas Stach, Russell King,
Frank Binns, Matt Coster, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Qiang Yu, Rob Clark, Sean Paul, Konrad Dybcio,
Abhinav Kumar, Dmitry Baryshkov, Marijn Suijten, Karol Herbst,
Lyude Paul, Danilo Krummrich, Rob Herring, Steven Price,
Liviu Dudau, Matthew Brost, Melissa Wen, Maíra Canal,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Sunil Khatri, Lijo Lazar, Hawking Zhang, Mario Limonciello,
Ma Jun, Yunxiang Li, amd-gfx, dri-devel, linux-kernel, etnaviv,
lima, linux-arm-msm, freedreno, nouveau, intel-xe
>
> > > int etnaviv_sched_init(struct etnaviv_gpu *gpu)
> > > {
> > > - int ret;
> > > + const struct drm_sched_init_args args = {
> >
> > Why not declare it as static const struct drm_sched_init_args args = { ?
>
> Because some bits in there are not static, in this particular case,
> gpu->dev is not static for instance.
>
Ah.. yes - thanks.
--
greets
--
Christian Gmeiner, MSc
https://christian-gmeiner.info/privacypolicy
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2] drm/sched: Use struct for drm_sched_init() params
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
` (11 preceding siblings ...)
2025-01-29 3:47 ` ✗ Xe.CI.Full: failure for drm/sched: Use struct for drm_sched_init() params (rev2) Patchwork
@ 2025-01-29 7:59 ` Boris Brezillon
2025-01-29 8:09 ` Christian Gmeiner
` (2 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Boris Brezillon @ 2025-01-29 7:59 UTC (permalink / raw)
To: Philipp Stanner
Cc: Alex Deucher, Christian König, Xinhui Pan, David Airlie,
Simona Vetter, Lucas Stach, Russell King, Christian Gmeiner,
Frank Binns, Matt Coster, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Qiang Yu, Rob Clark, Sean Paul, Konrad Dybcio,
Abhinav Kumar, Dmitry Baryshkov, Marijn Suijten, Karol Herbst,
Lyude Paul, Danilo Krummrich, Rob Herring, Steven Price,
Liviu Dudau, Matthew Brost, Melissa Wen, Maíra Canal,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Sunil Khatri, Lijo Lazar, Hawking Zhang, Mario Limonciello,
Ma Jun, Yunxiang Li, amd-gfx, dri-devel, linux-kernel, etnaviv,
lima, linux-arm-msm, freedreno, nouveau, intel-xe
On Tue, 28 Jan 2025 15:29:27 +0100
Philipp Stanner <phasta@kernel.org> wrote:
> drm_sched_init() has a great many parameters and upcoming new
> functionality for the scheduler might add even more. Generally, the
> great number of parameters reduces readability and has already caused
> one missnaming in:
>
> commit 6f1cacf4eba7 ("drm/nouveau: Improve variable name in nouveau_sched_init()").
>
> Introduce a new struct for the scheduler init parameters and port all
> users.
>
> Signed-off-by: Philipp Stanner <phasta@kernel.org>
> ---
> Changes in v2:
> - Point out that the hang-limit is deprecated. (Christian)
> - Initialize the structs to 0 at declaration. (Planet Earth)
> - Don't set stuff explicitly to 0 / NULL. (Tvrtko)
> - Make the structs const where possible. (Boris)
> - v3d: Use just 1, universal, function for sched-init. (Maíra)
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 18 ++++--
> drivers/gpu/drm/etnaviv/etnaviv_sched.c | 20 +++----
> drivers/gpu/drm/imagination/pvr_queue.c | 18 ++++--
> drivers/gpu/drm/lima/lima_sched.c | 16 +++--
> drivers/gpu/drm/msm/msm_ringbuffer.c | 17 +++---
> drivers/gpu/drm/nouveau/nouveau_sched.c | 15 +++--
> drivers/gpu/drm/panfrost/panfrost_job.c | 20 ++++---
> drivers/gpu/drm/panthor/panthor_mmu.c | 16 +++--
> drivers/gpu/drm/panthor/panthor_sched.c | 29 +++++----
Panfrost and panthor changes are
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
> drivers/gpu/drm/scheduler/sched_main.c | 50 ++++++----------
> drivers/gpu/drm/v3d/v3d_sched.c | 68 +++++++++-------------
> drivers/gpu/drm/xe/xe_execlist.c | 16 +++--
> drivers/gpu/drm/xe/xe_gpu_scheduler.c | 17 +++++-
> include/drm/gpu_scheduler.h | 37 ++++++++++--
> 14 files changed, 206 insertions(+), 151 deletions(-)
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2] drm/sched: Use struct for drm_sched_init() params
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
` (12 preceding siblings ...)
2025-01-29 7:59 ` [PATCH v2] drm/sched: Use struct for drm_sched_init() params Boris Brezillon
@ 2025-01-29 8:09 ` Christian Gmeiner
2025-01-29 8:54 ` Frank Binns
2025-01-29 10:53 ` Maíra Canal
15 siblings, 0 replies; 23+ messages in thread
From: Christian Gmeiner @ 2025-01-29 8:09 UTC (permalink / raw)
To: Philipp Stanner
Cc: Alex Deucher, Christian König, Xinhui Pan, David Airlie,
Simona Vetter, Lucas Stach, Russell King, Frank Binns,
Matt Coster, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Qiang Yu, Rob Clark, Sean Paul, Konrad Dybcio, Abhinav Kumar,
Dmitry Baryshkov, Marijn Suijten, Karol Herbst, Lyude Paul,
Danilo Krummrich, Boris Brezillon, Rob Herring, Steven Price,
Liviu Dudau, Matthew Brost, Melissa Wen, Maíra Canal,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Sunil Khatri, Lijo Lazar, Hawking Zhang, Mario Limonciello,
Ma Jun, Yunxiang Li, amd-gfx, dri-devel, linux-kernel, etnaviv,
lima, linux-arm-msm, freedreno, nouveau, intel-xe
>
> drm_sched_init() has a great many parameters and upcoming new
> functionality for the scheduler might add even more. Generally, the
> great number of parameters reduces readability and has already caused
> one missnaming in:
>
> commit 6f1cacf4eba7 ("drm/nouveau: Improve variable name in nouveau_sched_init()").
>
> Introduce a new struct for the scheduler init parameters and port all
> users.
>
> Signed-off-by: Philipp Stanner <phasta@kernel.org>
> ---
> Changes in v2:
> - Point out that the hang-limit is deprecated. (Christian)
> - Initialize the structs to 0 at declaration. (Planet Earth)
> - Don't set stuff explicitly to 0 / NULL. (Tvrtko)
> - Make the structs const where possible. (Boris)
> - v3d: Use just 1, universal, function for sched-init. (Maíra)
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 18 ++++--
> drivers/gpu/drm/etnaviv/etnaviv_sched.c | 20 +++----
> drivers/gpu/drm/imagination/pvr_queue.c | 18 ++++--
> drivers/gpu/drm/lima/lima_sched.c | 16 +++--
> drivers/gpu/drm/msm/msm_ringbuffer.c | 17 +++---
> drivers/gpu/drm/nouveau/nouveau_sched.c | 15 +++--
> drivers/gpu/drm/panfrost/panfrost_job.c | 20 ++++---
> drivers/gpu/drm/panthor/panthor_mmu.c | 16 +++--
> drivers/gpu/drm/panthor/panthor_sched.c | 29 +++++----
> drivers/gpu/drm/scheduler/sched_main.c | 50 ++++++----------
> drivers/gpu/drm/v3d/v3d_sched.c | 68 +++++++++-------------
> drivers/gpu/drm/xe/xe_execlist.c | 16 +++--
> drivers/gpu/drm/xe/xe_gpu_scheduler.c | 17 +++++-
> include/drm/gpu_scheduler.h | 37 ++++++++++--
> 14 files changed, 206 insertions(+), 151 deletions(-)
>
etnaviv changes are
Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
--
greets
--
Christian Gmeiner, MSc
https://christian-gmeiner.info/privacypolicy
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2] drm/sched: Use struct for drm_sched_init() params
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
` (13 preceding siblings ...)
2025-01-29 8:09 ` Christian Gmeiner
@ 2025-01-29 8:54 ` Frank Binns
2025-01-29 10:53 ` Maíra Canal
15 siblings, 0 replies; 23+ messages in thread
From: Frank Binns @ 2025-01-29 8:54 UTC (permalink / raw)
To: quic_abhinavk@quicinc.com, mcanal@igalia.com, kherbst@redhat.com,
lijo.lazar@amd.com, dakr@redhat.com,
marijn.suijten@somainline.org, Matt Coster, mripard@kernel.org,
sunil.khatri@amd.com, mario.limonciello@amd.com, Jun.Ma2@amd.com,
Xinhui.Pan@amd.com, christian.koenig@amd.com,
dmitry.baryshkov@linaro.org, lucas.demarchi@intel.com,
thomas.hellstrom@linux.intel.com, rodrigo.vivi@intel.com,
sean@poorly.run, mwen@igalia.com, simona@ffwll.ch,
airlied@gmail.com, phasta@kernel.org, christian.gmeiner@gmail.com,
konradybcio@kernel.org, boris.brezillon@collabora.com,
matthew.brost@intel.com, lyude@redhat.com, l.stach@pengutronix.de,
linux+etnaviv@armlinux.org.uk, alexander.deucher@amd.com,
robh@kernel.org, yuq825@gmail.com, liviu.dudau@arm.com,
Hawking.Zhang@amd.com, robdclark@gmail.com,
maarten.lankhorst@linux.intel.com, steven.price@arm.com,
tzimmermann@suse.de, Yunxiang.Li@amd.com
Cc: intel-xe@lists.freedesktop.org, freedreno@lists.freedesktop.org,
etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
amd-gfx@lists.freedesktop.org, nouveau@lists.freedesktop.org,
linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org,
lima@lists.freedesktop.org
On Tue, 2025-01-28 at 15:29 +0100, Philipp Stanner wrote:
> drm_sched_init() has a great many parameters and upcoming new
> functionality for the scheduler might add even more. Generally, the
> great number of parameters reduces readability and has already caused
> one missnaming in:
>
> commit 6f1cacf4eba7 ("drm/nouveau: Improve variable name in nouveau_sched_init()").
>
> Introduce a new struct for the scheduler init parameters and port all
> users.
>
> Signed-off-by: Philipp Stanner <phasta@kernel.org>
> ---
> Changes in v2:
> - Point out that the hang-limit is deprecated. (Christian)
> - Initialize the structs to 0 at declaration. (Planet Earth)
> - Don't set stuff explicitly to 0 / NULL. (Tvrtko)
> - Make the structs const where possible. (Boris)
> - v3d: Use just 1, universal, function for sched-init. (Maíra)
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 18 ++++--
> drivers/gpu/drm/etnaviv/etnaviv_sched.c | 20 +++----
> drivers/gpu/drm/imagination/pvr_queue.c | 18 ++++--
Imagination changes are:
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
> drivers/gpu/drm/lima/lima_sched.c | 16 +++--
> drivers/gpu/drm/msm/msm_ringbuffer.c | 17 +++---
> drivers/gpu/drm/nouveau/nouveau_sched.c | 15 +++--
> drivers/gpu/drm/panfrost/panfrost_job.c | 20 ++++---
> drivers/gpu/drm/panthor/panthor_mmu.c | 16 +++--
> drivers/gpu/drm/panthor/panthor_sched.c | 29 +++++----
> drivers/gpu/drm/scheduler/sched_main.c | 50 ++++++----------
> drivers/gpu/drm/v3d/v3d_sched.c | 68 +++++++++-------------
> drivers/gpu/drm/xe/xe_execlist.c | 16 +++--
> drivers/gpu/drm/xe/xe_gpu_scheduler.c | 17 +++++-
> include/drm/gpu_scheduler.h | 37 ++++++++++--
> 14 files changed, 206 insertions(+), 151 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 96316111300a..daf58b0ff0fa 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -2816,6 +2816,12 @@ static int amdgpu_device_fw_loading(struct amdgpu_device *adev)
>
> static int amdgpu_device_init_schedulers(struct amdgpu_device *adev)
> {
> + struct drm_sched_init_args args = {
> + .ops = &amdgpu_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .timeout_wq = adev->reset_domain->wq,
> + .dev = adev->dev
> + };
> long timeout;
> int r, i;
>
> @@ -2841,12 +2847,12 @@ static int amdgpu_device_init_schedulers(struct amdgpu_device *adev)
> break;
> }
>
> - r = drm_sched_init(&ring->sched, &amdgpu_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - ring->num_hw_submission, 0,
> - timeout, adev->reset_domain->wq,
> - ring->sched_score, ring->name,
> - adev->dev);
> + args.timeout = timeout;
> + args.credit_limit = ring->num_hw_submission;
> + args.score = ring->sched_score;
> + args.name = ring->name;
> +
> + r = drm_sched_init(&ring->sched, &args);
> if (r) {
> DRM_ERROR("Failed to create scheduler on ring %s.\n",
> ring->name);
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_sched.c b/drivers/gpu/drm/etnaviv/etnaviv_sched.c
> index 5b67eda122db..1693fd660bf1 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_sched.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_sched.c
> @@ -144,17 +144,17 @@ int etnaviv_sched_push_job(struct etnaviv_gem_submit *submit)
>
> int etnaviv_sched_init(struct etnaviv_gpu *gpu)
> {
> - int ret;
> + const struct drm_sched_init_args args = {
> + .ops = &etnaviv_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = etnaviv_hw_jobs_limit,
> + .hang_limit = etnaviv_job_hang_limit,
> + .timeout = msecs_to_jiffies(500),
> + .name = dev_name(gpu->dev),
> + .dev = gpu->dev
> + };
>
> - ret = drm_sched_init(&gpu->sched, &etnaviv_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - etnaviv_hw_jobs_limit, etnaviv_job_hang_limit,
> - msecs_to_jiffies(500), NULL, NULL,
> - dev_name(gpu->dev), gpu->dev);
> - if (ret)
> - return ret;
> -
> - return 0;
> + return drm_sched_init(&gpu->sched, &args);
> }
>
> void etnaviv_sched_fini(struct etnaviv_gpu *gpu)
> diff --git a/drivers/gpu/drm/imagination/pvr_queue.c b/drivers/gpu/drm/imagination/pvr_queue.c
> index c4f08432882b..d5c22874a9c1 100644
> --- a/drivers/gpu/drm/imagination/pvr_queue.c
> +++ b/drivers/gpu/drm/imagination/pvr_queue.c
> @@ -1210,6 +1210,17 @@ struct pvr_queue *pvr_queue_create(struct pvr_context *ctx,
> },
> };
> struct pvr_device *pvr_dev = ctx->pvr_dev;
> + const struct drm_sched_init_args sched_args = {
> + .ops = &pvr_queue_sched_ops,
> + .submit_wq = pvr_dev->sched_wq,
> + .num_rqs = 1,
> + .credit_limit = 64 * 1024,
> + .hang_limit = 1,
> + .timeout = msecs_to_jiffies(500),
> + .timeout_wq = pvr_dev->sched_wq,
> + .name = "pvr-queue",
> + .dev = pvr_dev->base.dev
> + };
> struct drm_gpu_scheduler *sched;
> struct pvr_queue *queue;
> int ctx_state_size, err;
> @@ -1282,12 +1293,7 @@ struct pvr_queue *pvr_queue_create(struct pvr_context *ctx,
>
> queue->timeline_ufo.value = cpu_map;
>
> - err = drm_sched_init(&queue->scheduler,
> - &pvr_queue_sched_ops,
> - pvr_dev->sched_wq, 1, 64 * 1024, 1,
> - msecs_to_jiffies(500),
> - pvr_dev->sched_wq, NULL, "pvr-queue",
> - pvr_dev->base.dev);
> + err = drm_sched_init(&queue->scheduler, &sched_args);
> if (err)
> goto err_release_ufo;
>
> diff --git a/drivers/gpu/drm/lima/lima_sched.c b/drivers/gpu/drm/lima/lima_sched.c
> index b40c90e97d7e..137adbd2b52d 100644
> --- a/drivers/gpu/drm/lima/lima_sched.c
> +++ b/drivers/gpu/drm/lima/lima_sched.c
> @@ -515,18 +515,22 @@ int lima_sched_pipe_init(struct lima_sched_pipe *pipe, const char *name)
> {
> unsigned int timeout = lima_sched_timeout_ms > 0 ?
> lima_sched_timeout_ms : 10000;
> + const struct drm_sched_init_args args = {
> + .ops = &lima_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = 1,
> + .hang_limit = lima_job_hang_limit,
> + .timeout = msecs_to_jiffies(timeout),
> + .name = name,
> + .dev = pipe->ldev->dev
> + };
>
> pipe->fence_context = dma_fence_context_alloc(1);
> spin_lock_init(&pipe->fence_lock);
>
> INIT_WORK(&pipe->recover_work, lima_sched_recover_work);
>
> - return drm_sched_init(&pipe->base, &lima_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - 1,
> - lima_job_hang_limit,
> - msecs_to_jiffies(timeout), NULL,
> - NULL, name, pipe->ldev->dev);
> + return drm_sched_init(&pipe->base, &args);
> }
>
> void lima_sched_pipe_fini(struct lima_sched_pipe *pipe)
> diff --git a/drivers/gpu/drm/msm/msm_ringbuffer.c b/drivers/gpu/drm/msm/msm_ringbuffer.c
> index c803556a8f64..c9d5283df3e3 100644
> --- a/drivers/gpu/drm/msm/msm_ringbuffer.c
> +++ b/drivers/gpu/drm/msm/msm_ringbuffer.c
> @@ -59,8 +59,14 @@ static const struct drm_sched_backend_ops msm_sched_ops = {
> struct msm_ringbuffer *msm_ringbuffer_new(struct msm_gpu *gpu, int id,
> void *memptrs, uint64_t memptrs_iova)
> {
> + struct drm_sched_init_args args = {
> + .ops = &msm_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = num_hw_submissions,
> + .timeout = MAX_SCHEDULE_TIMEOUT,
> + .dev = gpu->dev->dev
> + };
> struct msm_ringbuffer *ring;
> - long sched_timeout;
> char name[32];
> int ret;
>
> @@ -87,6 +93,7 @@ struct msm_ringbuffer *msm_ringbuffer_new(struct msm_gpu *gpu, int id,
> }
>
> msm_gem_object_set_name(ring->bo, "ring%d", id);
> + args.name = to_msm_bo(ring->bo)->name,
>
> ring->end = ring->start + (MSM_GPU_RINGBUFFER_SZ >> 2);
> ring->next = ring->start;
> @@ -95,13 +102,7 @@ struct msm_ringbuffer *msm_ringbuffer_new(struct msm_gpu *gpu, int id,
> ring->memptrs = memptrs;
> ring->memptrs_iova = memptrs_iova;
>
> - /* currently managing hangcheck ourselves: */
> - sched_timeout = MAX_SCHEDULE_TIMEOUT;
> -
> - ret = drm_sched_init(&ring->sched, &msm_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - num_hw_submissions, 0, sched_timeout,
> - NULL, NULL, to_msm_bo(ring->bo)->name, gpu->dev->dev);
> + ret = drm_sched_init(&ring->sched, &args);
> if (ret) {
> goto fail;
> }
> diff --git a/drivers/gpu/drm/nouveau/nouveau_sched.c b/drivers/gpu/drm/nouveau/nouveau_sched.c
> index 4412f2711fb5..b5aac8eebfdd 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_sched.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_sched.c
> @@ -404,7 +404,15 @@ nouveau_sched_init(struct nouveau_sched *sched, struct nouveau_drm *drm,
> {
> struct drm_gpu_scheduler *drm_sched = &sched->base;
> struct drm_sched_entity *entity = &sched->entity;
> - const long timeout = msecs_to_jiffies(NOUVEAU_SCHED_JOB_TIMEOUT_MS);
> + const struct drm_sched_init_args args = {
> + .ops = &nouveau_sched_ops,
> + .submit_wq = wq,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = credit_limit,
> + .timeout = msecs_to_jiffies(NOUVEAU_SCHED_JOB_TIMEOUT_MS),
> + .name = "nouveau_sched",
> + .dev = drm->dev->dev
> + };
> int ret;
>
> if (!wq) {
> @@ -416,10 +424,7 @@ nouveau_sched_init(struct nouveau_sched *sched, struct nouveau_drm *drm,
> sched->wq = wq;
> }
>
> - ret = drm_sched_init(drm_sched, &nouveau_sched_ops, wq,
> - NOUVEAU_SCHED_PRIORITY_COUNT,
> - credit_limit, 0, timeout,
> - NULL, NULL, "nouveau_sched", drm->dev->dev);
> + ret = drm_sched_init(drm_sched, &args);
> if (ret)
> goto fail_wq;
>
> diff --git a/drivers/gpu/drm/panfrost/panfrost_job.c b/drivers/gpu/drm/panfrost/panfrost_job.c
> index 9b8e82fb8bc4..893fd91cf5b0 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_job.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_job.c
> @@ -836,8 +836,16 @@ static irqreturn_t panfrost_job_irq_handler(int irq, void *data)
>
> int panfrost_job_init(struct panfrost_device *pfdev)
> {
> + struct drm_sched_init_args args = {
> + .ops = &panfrost_sched_ops,
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = 2,
> + .timeout = msecs_to_jiffies(JOB_TIMEOUT_MS),
> + .timeout_wq = pfdev->reset.wq,
> + .name = "pan_js",
> + .dev = pfdev->dev
> + };
> struct panfrost_job_slot *js;
> - unsigned int nentries = 2;
> int ret, j;
>
> /* All GPUs have two entries per queue, but without jobchain
> @@ -845,7 +853,7 @@ int panfrost_job_init(struct panfrost_device *pfdev)
> * so let's just advertise one entry in that case.
> */
> if (!panfrost_has_hw_feature(pfdev, HW_FEATURE_JOBCHAIN_DISAMBIGUATION))
> - nentries = 1;
> + args.credit_limit = 1;
>
> pfdev->js = js = devm_kzalloc(pfdev->dev, sizeof(*js), GFP_KERNEL);
> if (!js)
> @@ -875,13 +883,7 @@ int panfrost_job_init(struct panfrost_device *pfdev)
> for (j = 0; j < NUM_JOB_SLOTS; j++) {
> js->queue[j].fence_context = dma_fence_context_alloc(1);
>
> - ret = drm_sched_init(&js->queue[j].sched,
> - &panfrost_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - nentries, 0,
> - msecs_to_jiffies(JOB_TIMEOUT_MS),
> - pfdev->reset.wq,
> - NULL, "pan_js", pfdev->dev);
> + ret = drm_sched_init(&js->queue[j].sched, &args);
> if (ret) {
> dev_err(pfdev->dev, "Failed to create scheduler: %d.", ret);
> goto err_sched;
> diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c
> index 5ce80e2532d5..22b196ff686c 100644
> --- a/drivers/gpu/drm/panthor/panthor_mmu.c
> +++ b/drivers/gpu/drm/panthor/panthor_mmu.c
> @@ -2278,6 +2278,16 @@ panthor_vm_create(struct panthor_device *ptdev, bool for_mcu,
> u64 full_va_range = 1ull << va_bits;
> struct drm_gem_object *dummy_gem;
> struct drm_gpu_scheduler *sched;
> + const struct drm_sched_init_args sched_args = {
> + .ops = &panthor_vm_bind_ops,
> + .submit_wq = ptdev->mmu->vm.wq,
> + .num_rqs = 1,
> + .credit_limit = 1,
> + /* Bind operations are synchronous for now, no timeout needed. */
> + .timeout = MAX_SCHEDULE_TIMEOUT,
> + .name = "panthor-vm-bind",
> + .dev = ptdev->base.dev
> + };
> struct io_pgtable_cfg pgtbl_cfg;
> u64 mair, min_va, va_range;
> struct panthor_vm *vm;
> @@ -2335,11 +2345,7 @@ panthor_vm_create(struct panthor_device *ptdev, bool for_mcu,
> goto err_mm_takedown;
> }
>
> - /* Bind operations are synchronous for now, no timeout needed. */
> - ret = drm_sched_init(&vm->sched, &panthor_vm_bind_ops, ptdev->mmu->vm.wq,
> - 1, 1, 0,
> - MAX_SCHEDULE_TIMEOUT, NULL, NULL,
> - "panthor-vm-bind", ptdev->base.dev);
> + ret = drm_sched_init(&vm->sched, &sched_args);
> if (ret)
> goto err_free_io_pgtable;
>
> diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/panthor/panthor_sched.c
> index 5844a7f639e0..44713cfdcd74 100644
> --- a/drivers/gpu/drm/panthor/panthor_sched.c
> +++ b/drivers/gpu/drm/panthor/panthor_sched.c
> @@ -3284,6 +3284,22 @@ static struct panthor_queue *
> group_create_queue(struct panthor_group *group,
> const struct drm_panthor_queue_create *args)
> {
> + const struct drm_sched_init_args sched_args = {
> + .ops = &panthor_queue_sched_ops,
> + .submit_wq = group->ptdev->scheduler->wq,
> + .num_rqs = 1,
> + /*
> + * The credit limit argument tells us the total number of
> + * instructions across all CS slots in the ringbuffer, with
> + * some jobs requiring twice as many as others, depending on
> + * their profiling status.
> + */
> + .credit_limit = args->ringbuf_size / sizeof(u64),
> + .timeout = msecs_to_jiffies(JOB_TIMEOUT_MS),
> + .timeout_wq = group->ptdev->reset.wq,
> + .name = "panthor-queue",
> + .dev = group->ptdev->base.dev
> + };
> struct drm_gpu_scheduler *drm_sched;
> struct panthor_queue *queue;
> int ret;
> @@ -3354,17 +3370,8 @@ group_create_queue(struct panthor_group *group,
> if (ret)
> goto err_free_queue;
>
> - /*
> - * Credit limit argument tells us the total number of instructions
> - * across all CS slots in the ringbuffer, with some jobs requiring
> - * twice as many as others, depending on their profiling status.
> - */
> - ret = drm_sched_init(&queue->scheduler, &panthor_queue_sched_ops,
> - group->ptdev->scheduler->wq, 1,
> - args->ringbuf_size / sizeof(u64),
> - 0, msecs_to_jiffies(JOB_TIMEOUT_MS),
> - group->ptdev->reset.wq,
> - NULL, "panthor-queue", group->ptdev->base.dev);
> +
> + ret = drm_sched_init(&queue->scheduler, &sched_args);
> if (ret)
> goto err_free_queue;
>
> diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c
> index a48be16ab84f..6295b2654a7c 100644
> --- a/drivers/gpu/drm/scheduler/sched_main.c
> +++ b/drivers/gpu/drm/scheduler/sched_main.c
> @@ -1244,40 +1244,24 @@ static void drm_sched_run_job_work(struct work_struct *w)
> * drm_sched_init - Init a gpu scheduler instance
> *
> * @sched: scheduler instance
> - * @ops: backend operations for this scheduler
> - * @submit_wq: workqueue to use for submission. If NULL, an ordered wq is
> - * allocated and used
> - * @num_rqs: number of runqueues, one for each priority, up to DRM_SCHED_PRIORITY_COUNT
> - * @credit_limit: the number of credits this scheduler can hold from all jobs
> - * @hang_limit: number of times to allow a job to hang before dropping it
> - * @timeout: timeout value in jiffies for the scheduler
> - * @timeout_wq: workqueue to use for timeout work. If NULL, the system_wq is
> - * used
> - * @score: optional score atomic shared with other schedulers
> - * @name: name used for debugging
> - * @dev: target &struct device
> + * @args: scheduler initialization arguments
> *
> * Return 0 on success, otherwise error code.
> */
> -int drm_sched_init(struct drm_gpu_scheduler *sched,
> - const struct drm_sched_backend_ops *ops,
> - struct workqueue_struct *submit_wq,
> - u32 num_rqs, u32 credit_limit, unsigned int hang_limit,
> - long timeout, struct workqueue_struct *timeout_wq,
> - atomic_t *score, const char *name, struct device *dev)
> +int drm_sched_init(struct drm_gpu_scheduler *sched, const struct drm_sched_init_args *args)
> {
> int i;
>
> - sched->ops = ops;
> - sched->credit_limit = credit_limit;
> - sched->name = name;
> - sched->timeout = timeout;
> - sched->timeout_wq = timeout_wq ? : system_wq;
> - sched->hang_limit = hang_limit;
> - sched->score = score ? score : &sched->_score;
> - sched->dev = dev;
> + sched->ops = args->ops;
> + sched->credit_limit = args->credit_limit;
> + sched->name = args->name;
> + sched->timeout = args->timeout;
> + sched->timeout_wq = args->timeout_wq ? : system_wq;
> + sched->hang_limit = args->hang_limit;
> + sched->score = args->score ? args->score : &sched->_score;
> + sched->dev = args->dev;
>
> - if (num_rqs > DRM_SCHED_PRIORITY_COUNT) {
> + if (args->num_rqs > DRM_SCHED_PRIORITY_COUNT) {
> /* This is a gross violation--tell drivers what the problem is.
> */
> drm_err(sched, "%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n",
> @@ -1292,16 +1276,16 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
> return 0;
> }
>
> - if (submit_wq) {
> - sched->submit_wq = submit_wq;
> + if (args->submit_wq) {
> + sched->submit_wq = args->submit_wq;
> sched->own_submit_wq = false;
> } else {
> #ifdef CONFIG_LOCKDEP
> - sched->submit_wq = alloc_ordered_workqueue_lockdep_map(name,
> + sched->submit_wq = alloc_ordered_workqueue_lockdep_map(args->name,
> WQ_MEM_RECLAIM,
> &drm_sched_lockdep_map);
> #else
> - sched->submit_wq = alloc_ordered_workqueue(name, WQ_MEM_RECLAIM);
> + sched->submit_wq = alloc_ordered_workqueue(args->name, WQ_MEM_RECLAIM);
> #endif
> if (!sched->submit_wq)
> return -ENOMEM;
> @@ -1309,11 +1293,11 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
> sched->own_submit_wq = true;
> }
>
> - sched->sched_rq = kmalloc_array(num_rqs, sizeof(*sched->sched_rq),
> + sched->sched_rq = kmalloc_array(args->num_rqs, sizeof(*sched->sched_rq),
> GFP_KERNEL | __GFP_ZERO);
> if (!sched->sched_rq)
> goto Out_check_own;
> - sched->num_rqs = num_rqs;
> + sched->num_rqs = args->num_rqs;
> for (i = DRM_SCHED_PRIORITY_KERNEL; i < sched->num_rqs; i++) {
> sched->sched_rq[i] = kzalloc(sizeof(*sched->sched_rq[i]), GFP_KERNEL);
> if (!sched->sched_rq[i])
> diff --git a/drivers/gpu/drm/v3d/v3d_sched.c b/drivers/gpu/drm/v3d/v3d_sched.c
> index 961465128d80..dfccb4cda3a1 100644
> --- a/drivers/gpu/drm/v3d/v3d_sched.c
> +++ b/drivers/gpu/drm/v3d/v3d_sched.c
> @@ -820,67 +820,57 @@ static const struct drm_sched_backend_ops v3d_cpu_sched_ops = {
> .free_job = v3d_cpu_job_free
> };
>
> +/*
> + * v3d's scheduler instances are all identical, except for ops and name.
> + */
> +static int
> +v3d_queue_sched_init(struct v3d_dev *v3d, const struct drm_sched_backend_ops *ops,
> + enum v3d_queue queue, const char *name)
> +{
> + struct drm_sched_init_args args = {
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = 1,
> + .timeout = msecs_to_jiffies(500),
> + .dev = v3d->drm.dev
> + };
> +
> + args.ops = ops;
> + args.name = name;
> +
> + return drm_sched_init(&v3d->queue[queue].sched, &args);
> +}
> +
> int
> v3d_sched_init(struct v3d_dev *v3d)
> {
> - int hw_jobs_limit = 1;
> - int job_hang_limit = 0;
> - int hang_limit_ms = 500;
> int ret;
>
> - ret = drm_sched_init(&v3d->queue[V3D_BIN].sched,
> - &v3d_bin_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_bin", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_bin_sched_ops, V3D_BIN, "v3d_bin");
> if (ret)
> return ret;
>
> - ret = drm_sched_init(&v3d->queue[V3D_RENDER].sched,
> - &v3d_render_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_render", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_render_sched_ops, V3D_RENDER,
> + "v3d_render");
> if (ret)
> goto fail;
>
> - ret = drm_sched_init(&v3d->queue[V3D_TFU].sched,
> - &v3d_tfu_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_tfu", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_tfu_sched_ops, V3D_TFU, "v3d_tfu");
> if (ret)
> goto fail;
>
> if (v3d_has_csd(v3d)) {
> - ret = drm_sched_init(&v3d->queue[V3D_CSD].sched,
> - &v3d_csd_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_csd", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_csd_sched_ops, V3D_CSD,
> + "v3d_csd");
> if (ret)
> goto fail;
>
> - ret = drm_sched_init(&v3d->queue[V3D_CACHE_CLEAN].sched,
> - &v3d_cache_clean_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_cache_clean", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_cache_clean_sched_ops,
> + V3D_CACHE_CLEAN, "v3d_cache_clean");
> if (ret)
> goto fail;
> }
>
> - ret = drm_sched_init(&v3d->queue[V3D_CPU].sched,
> - &v3d_cpu_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - 1, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_cpu", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_cpu_sched_ops, V3D_CPU, "v3d_cpu");
> if (ret)
> goto fail;
>
> diff --git a/drivers/gpu/drm/xe/xe_execlist.c b/drivers/gpu/drm/xe/xe_execlist.c
> index a8c416a48812..db1c52dcf1a6 100644
> --- a/drivers/gpu/drm/xe/xe_execlist.c
> +++ b/drivers/gpu/drm/xe/xe_execlist.c
> @@ -332,6 +332,15 @@ static const struct drm_sched_backend_ops drm_sched_ops = {
> static int execlist_exec_queue_init(struct xe_exec_queue *q)
> {
> struct drm_gpu_scheduler *sched;
> + const struct drm_sched_init_args args = {
> + .ops = &drm_sched_ops,
> + .num_rqs = 1,
> + .credit_limit = q->lrc[0]->ring.size / MAX_JOB_SIZE_BYTES,
> + .hang_limit = XE_SCHED_HANG_LIMIT,
> + .timeout = XE_SCHED_JOB_TIMEOUT,
> + .name = q->hwe->name,
> + .dev = gt_to_xe(q->gt)->drm.dev
> + };
> struct xe_execlist_exec_queue *exl;
> struct xe_device *xe = gt_to_xe(q->gt);
> int err;
> @@ -346,11 +355,8 @@ static int execlist_exec_queue_init(struct xe_exec_queue *q)
>
> exl->q = q;
>
> - err = drm_sched_init(&exl->sched, &drm_sched_ops, NULL, 1,
> - q->lrc[0]->ring.size / MAX_JOB_SIZE_BYTES,
> - XE_SCHED_HANG_LIMIT, XE_SCHED_JOB_TIMEOUT,
> - NULL, NULL, q->hwe->name,
> - gt_to_xe(q->gt)->drm.dev);
> +
> + err = drm_sched_init(&exl->sched, &args);
> if (err)
> goto err_free;
>
> diff --git a/drivers/gpu/drm/xe/xe_gpu_scheduler.c b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> index 50361b4638f9..be95f4cca007 100644
> --- a/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> +++ b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> @@ -63,13 +63,24 @@ int xe_sched_init(struct xe_gpu_scheduler *sched,
> atomic_t *score, const char *name,
> struct device *dev)
> {
> + const struct drm_sched_init_args args = {
> + .ops = ops,
> + .submit_wq = submit_wq,
> + .num_rqs = 1,
> + .credit_limit = hw_submission,
> + .hang_limit = hang_limit,
> + .timeout = timeout,
> + .timeout_wq = timeout_wq,
> + .score = score,
> + .name = name,
> + .dev = dev
> + };
> +
> sched->ops = xe_ops;
> INIT_LIST_HEAD(&sched->msgs);
> INIT_WORK(&sched->work_process_msg, xe_sched_process_msg_work);
>
> - return drm_sched_init(&sched->base, ops, submit_wq, 1, hw_submission,
> - hang_limit, timeout, timeout_wq, score, name,
> - dev);
> + return drm_sched_init(&sched->base, &args);
> }
>
> void xe_sched_fini(struct xe_gpu_scheduler *sched)
> diff --git a/include/drm/gpu_scheduler.h b/include/drm/gpu_scheduler.h
> index a0ff08123f07..f0f5435598a8 100644
> --- a/include/drm/gpu_scheduler.h
> +++ b/include/drm/gpu_scheduler.h
> @@ -540,12 +540,39 @@ struct drm_gpu_scheduler {
> struct device *dev;
> };
>
> +/**
> + * struct drm_sched_init_args - parameters for initializing a DRM GPU scheduler
> + *
> + * @ops: backend operations provided by the driver
> + * @submit_wq: workqueue to use for submission. May be NULL.
> + * If NULL, an ordered wq is allocated and used.
> + * @num_rqs: Number of run-queues. This may be at most DRM_SCHED_PRIORITY_COUNT,
> + * as there's usually one run-queue per priority, but may be less.
> + * @credit_limit: the number of credits this scheduler can hold from all jobs
> + * @hang_limit: number of times to allow a job to hang before dropping it.
> + * This mechanism is DEPRECATED. Set it to 0.
> + * @timeout: timeout value in jiffies for the scheduler
> + * @timeout_wq: workqueue to use for timeout work. May be NULL.
> + * If NULL, the system_wq is used.
> + * @score: score atomic shared with other schedulers. May be NULL.
> + * @name: name used for debugging
> + * @dev: associated device. Used for debugging
> + */
> +struct drm_sched_init_args {
> + const struct drm_sched_backend_ops *ops;
> + struct workqueue_struct *submit_wq;
> + struct workqueue_struct *timeout_wq;
> + u32 num_rqs;
> + u32 credit_limit;
> + unsigned int hang_limit;
> + long timeout;
> + atomic_t *score;
> + const char *name;
> + struct device *dev;
> +};
> +
> int drm_sched_init(struct drm_gpu_scheduler *sched,
> - const struct drm_sched_backend_ops *ops,
> - struct workqueue_struct *submit_wq,
> - u32 num_rqs, u32 credit_limit, unsigned int hang_limit,
> - long timeout, struct workqueue_struct *timeout_wq,
> - atomic_t *score, const char *name, struct device *dev);
> + const struct drm_sched_init_args *args);
>
> void drm_sched_fini(struct drm_gpu_scheduler *sched);
> int drm_sched_job_init(struct drm_sched_job *job,
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2] drm/sched: Use struct for drm_sched_init() params
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
` (14 preceding siblings ...)
2025-01-29 8:54 ` Frank Binns
@ 2025-01-29 10:53 ` Maíra Canal
2025-01-29 12:39 ` Philipp Stanner
15 siblings, 1 reply; 23+ messages in thread
From: Maíra Canal @ 2025-01-29 10:53 UTC (permalink / raw)
To: Philipp Stanner, Alex Deucher, Christian König, Xinhui Pan,
David Airlie, Simona Vetter, Lucas Stach, Russell King,
Christian Gmeiner, Frank Binns, Matt Coster, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, Qiang Yu, Rob Clark, Sean Paul,
Konrad Dybcio, Abhinav Kumar, Dmitry Baryshkov, Marijn Suijten,
Karol Herbst, Lyude Paul, Danilo Krummrich, Boris Brezillon,
Rob Herring, Steven Price, Liviu Dudau, Matthew Brost,
Melissa Wen, Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Sunil Khatri, Lijo Lazar, Hawking Zhang, Mario Limonciello,
Ma Jun, Yunxiang Li
Cc: amd-gfx, dri-devel, linux-kernel, etnaviv, lima, linux-arm-msm,
freedreno, nouveau, intel-xe
Hi Philipp,
On 28/01/25 11:29, Philipp Stanner wrote:
> drm_sched_init() has a great many parameters and upcoming new
> functionality for the scheduler might add even more. Generally, the
> great number of parameters reduces readability and has already caused
> one missnaming in:
>
> commit 6f1cacf4eba7 ("drm/nouveau: Improve variable name in nouveau_sched_init()").
>
> Introduce a new struct for the scheduler init parameters and port all
> users.
>
> Signed-off-by: Philipp Stanner <phasta@kernel.org>
> ---
> Changes in v2:
> - Point out that the hang-limit is deprecated. (Christian)
> - Initialize the structs to 0 at declaration. (Planet Earth)
> - Don't set stuff explicitly to 0 / NULL. (Tvrtko)
> - Make the structs const where possible. (Boris)
> - v3d: Use just 1, universal, function for sched-init. (Maíra)
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 18 ++++--
> drivers/gpu/drm/etnaviv/etnaviv_sched.c | 20 +++----
> drivers/gpu/drm/imagination/pvr_queue.c | 18 ++++--
> drivers/gpu/drm/lima/lima_sched.c | 16 +++--
> drivers/gpu/drm/msm/msm_ringbuffer.c | 17 +++---
> drivers/gpu/drm/nouveau/nouveau_sched.c | 15 +++--
> drivers/gpu/drm/panfrost/panfrost_job.c | 20 ++++---
> drivers/gpu/drm/panthor/panthor_mmu.c | 16 +++--
> drivers/gpu/drm/panthor/panthor_sched.c | 29 +++++----
> drivers/gpu/drm/scheduler/sched_main.c | 50 ++++++----------
> drivers/gpu/drm/v3d/v3d_sched.c | 68 +++++++++-------------
> drivers/gpu/drm/xe/xe_execlist.c | 16 +++--
> drivers/gpu/drm/xe/xe_gpu_scheduler.c | 17 +++++-
> include/drm/gpu_scheduler.h | 37 ++++++++++--
> 14 files changed, 206 insertions(+), 151 deletions(-)
>
[...]
> diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/panthor/panthor_sched.c
> index 5844a7f639e0..44713cfdcd74 100644
> --- a/drivers/gpu/drm/panthor/panthor_sched.c
> +++ b/drivers/gpu/drm/panthor/panthor_sched.c
> @@ -3284,6 +3284,22 @@ static struct panthor_queue *
> group_create_queue(struct panthor_group *group,
> const struct drm_panthor_queue_create *args)
> {
> + const struct drm_sched_init_args sched_args = {
> + .ops = &panthor_queue_sched_ops,
> + .submit_wq = group->ptdev->scheduler->wq,
> + .num_rqs = 1,
> + /*
> + * The credit limit argument tells us the total number of
> + * instructions across all CS slots in the ringbuffer, with
> + * some jobs requiring twice as many as others, depending on
> + * their profiling status.
> + */
> + .credit_limit = args->ringbuf_size / sizeof(u64),
> + .timeout = msecs_to_jiffies(JOB_TIMEOUT_MS),
> + .timeout_wq = group->ptdev->reset.wq,
> + .name = "panthor-queue",
> + .dev = group->ptdev->base.dev
> + };
> struct drm_gpu_scheduler *drm_sched;
> struct panthor_queue *queue;
> int ret;
> @@ -3354,17 +3370,8 @@ group_create_queue(struct panthor_group *group,
> if (ret)
> goto err_free_queue;
>
> - /*
> - * Credit limit argument tells us the total number of instructions
> - * across all CS slots in the ringbuffer, with some jobs requiring
> - * twice as many as others, depending on their profiling status.
> - */
> - ret = drm_sched_init(&queue->scheduler, &panthor_queue_sched_ops,
> - group->ptdev->scheduler->wq, 1,
> - args->ringbuf_size / sizeof(u64),
> - 0, msecs_to_jiffies(JOB_TIMEOUT_MS),
> - group->ptdev->reset.wq,
> - NULL, "panthor-queue", group->ptdev->base.dev);
> +
Please don't use multiple blank lines.
> + ret = drm_sched_init(&queue->scheduler, &sched_args);
> if (ret)
> goto err_free_queue;
>
> diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c
> index a48be16ab84f..6295b2654a7c 100644
> --- a/drivers/gpu/drm/scheduler/sched_main.c
> +++ b/drivers/gpu/drm/scheduler/sched_main.c
> @@ -1244,40 +1244,24 @@ static void drm_sched_run_job_work(struct work_struct *w)
> * drm_sched_init - Init a gpu scheduler instance
> *
> * @sched: scheduler instance
> - * @ops: backend operations for this scheduler
> - * @submit_wq: workqueue to use for submission. If NULL, an ordered wq is
> - * allocated and used
> - * @num_rqs: number of runqueues, one for each priority, up to DRM_SCHED_PRIORITY_COUNT
> - * @credit_limit: the number of credits this scheduler can hold from all jobs
> - * @hang_limit: number of times to allow a job to hang before dropping it
> - * @timeout: timeout value in jiffies for the scheduler
> - * @timeout_wq: workqueue to use for timeout work. If NULL, the system_wq is
> - * used
> - * @score: optional score atomic shared with other schedulers
> - * @name: name used for debugging
> - * @dev: target &struct device
> + * @args: scheduler initialization arguments
> *
> * Return 0 on success, otherwise error code.
> */
> -int drm_sched_init(struct drm_gpu_scheduler *sched,
> - const struct drm_sched_backend_ops *ops,
> - struct workqueue_struct *submit_wq,
> - u32 num_rqs, u32 credit_limit, unsigned int hang_limit,
> - long timeout, struct workqueue_struct *timeout_wq,
> - atomic_t *score, const char *name, struct device *dev)
> +int drm_sched_init(struct drm_gpu_scheduler *sched, const struct drm_sched_init_args *args)
> {
> int i;
>
> - sched->ops = ops;
> - sched->credit_limit = credit_limit;
> - sched->name = name;
> - sched->timeout = timeout;
> - sched->timeout_wq = timeout_wq ? : system_wq;
> - sched->hang_limit = hang_limit;
> - sched->score = score ? score : &sched->_score;
> - sched->dev = dev;
> + sched->ops = args->ops;
> + sched->credit_limit = args->credit_limit;
> + sched->name = args->name;
> + sched->timeout = args->timeout;
> + sched->timeout_wq = args->timeout_wq ? : system_wq;
> + sched->hang_limit = args->hang_limit;
> + sched->score = args->score ? args->score : &sched->_score;
Could we keep it consistent and use the Elvis Operator here as well?
Just like `sched->timeout_wq`.
> + sched->dev = args->dev;
>
> - if (num_rqs > DRM_SCHED_PRIORITY_COUNT) {
> + if (args->num_rqs > DRM_SCHED_PRIORITY_COUNT) {
> /* This is a gross violation--tell drivers what the problem is.
> */
> drm_err(sched, "%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n",
> @@ -1292,16 +1276,16 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
> return 0;
> }
>
> - if (submit_wq) {
> - sched->submit_wq = submit_wq;
> + if (args->submit_wq) {
> + sched->submit_wq = args->submit_wq;
> sched->own_submit_wq = false;
> } else {
> #ifdef CONFIG_LOCKDEP
> - sched->submit_wq = alloc_ordered_workqueue_lockdep_map(name,
> + sched->submit_wq = alloc_ordered_workqueue_lockdep_map(args->name,
> WQ_MEM_RECLAIM,
> &drm_sched_lockdep_map);
> #else
> - sched->submit_wq = alloc_ordered_workqueue(name, WQ_MEM_RECLAIM);
> + sched->submit_wq = alloc_ordered_workqueue(args->name, WQ_MEM_RECLAIM);
> #endif
> if (!sched->submit_wq)
> return -ENOMEM;
> @@ -1309,11 +1293,11 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,
> sched->own_submit_wq = true;
> }
>
> - sched->sched_rq = kmalloc_array(num_rqs, sizeof(*sched->sched_rq),
> + sched->sched_rq = kmalloc_array(args->num_rqs, sizeof(*sched->sched_rq),
> GFP_KERNEL | __GFP_ZERO);
> if (!sched->sched_rq)
> goto Out_check_own;
> - sched->num_rqs = num_rqs;
> + sched->num_rqs = args->num_rqs;
> for (i = DRM_SCHED_PRIORITY_KERNEL; i < sched->num_rqs; i++) {
> sched->sched_rq[i] = kzalloc(sizeof(*sched->sched_rq[i]), GFP_KERNEL);
> if (!sched->sched_rq[i])
> diff --git a/drivers/gpu/drm/v3d/v3d_sched.c b/drivers/gpu/drm/v3d/v3d_sched.c
> index 961465128d80..dfccb4cda3a1 100644
> --- a/drivers/gpu/drm/v3d/v3d_sched.c
> +++ b/drivers/gpu/drm/v3d/v3d_sched.c
> @@ -820,67 +820,57 @@ static const struct drm_sched_backend_ops v3d_cpu_sched_ops = {
> .free_job = v3d_cpu_job_free
> };
>
> +/*
> + * v3d's scheduler instances are all identical, except for ops and name.
> + */
Could you remove this comment? The function is self-explanatory.
> +static int
> +v3d_queue_sched_init(struct v3d_dev *v3d, const struct drm_sched_backend_ops *ops,
> + enum v3d_queue queue, const char *name)
> +{
> + struct drm_sched_init_args args = {
> + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> + .credit_limit = 1,
> + .timeout = msecs_to_jiffies(500),
> + .dev = v3d->drm.dev
> + };
> +
> + args.ops = ops;
> + args.name = name;
> +
> + return drm_sched_init(&v3d->queue[queue].sched, &args);
> +}
> +
> int
> v3d_sched_init(struct v3d_dev *v3d)
> {
> - int hw_jobs_limit = 1;
> - int job_hang_limit = 0;
> - int hang_limit_ms = 500;
> int ret;
>
> - ret = drm_sched_init(&v3d->queue[V3D_BIN].sched,
> - &v3d_bin_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_bin", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_bin_sched_ops, V3D_BIN, "v3d_bin");
> if (ret)
> return ret;
>
> - ret = drm_sched_init(&v3d->queue[V3D_RENDER].sched,
> - &v3d_render_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_render", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_render_sched_ops, V3D_RENDER,
> + "v3d_render");
> if (ret)
> goto fail;
>
> - ret = drm_sched_init(&v3d->queue[V3D_TFU].sched,
> - &v3d_tfu_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_tfu", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_tfu_sched_ops, V3D_TFU, "v3d_tfu");
> if (ret)
> goto fail;
>
> if (v3d_has_csd(v3d)) {
> - ret = drm_sched_init(&v3d->queue[V3D_CSD].sched,
> - &v3d_csd_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_csd", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_csd_sched_ops, V3D_CSD,
> + "v3d_csd");
> if (ret)
> goto fail;
>
> - ret = drm_sched_init(&v3d->queue[V3D_CACHE_CLEAN].sched,
> - &v3d_cache_clean_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - hw_jobs_limit, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_cache_clean", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_cache_clean_sched_ops,
> + V3D_CACHE_CLEAN, "v3d_cache_clean");
> if (ret)
> goto fail;
> }
>
> - ret = drm_sched_init(&v3d->queue[V3D_CPU].sched,
> - &v3d_cpu_sched_ops, NULL,
> - DRM_SCHED_PRIORITY_COUNT,
> - 1, job_hang_limit,
> - msecs_to_jiffies(hang_limit_ms), NULL,
> - NULL, "v3d_cpu", v3d->drm.dev);
> + ret = v3d_queue_sched_init(v3d, &v3d_cpu_sched_ops, V3D_CPU, "v3d_cpu");
> if (ret)
> goto fail;
>
> diff --git a/drivers/gpu/drm/xe/xe_execlist.c b/drivers/gpu/drm/xe/xe_execlist.c
> index a8c416a48812..db1c52dcf1a6 100644
> --- a/drivers/gpu/drm/xe/xe_execlist.c
> +++ b/drivers/gpu/drm/xe/xe_execlist.c
> @@ -332,6 +332,15 @@ static const struct drm_sched_backend_ops drm_sched_ops = {
> static int execlist_exec_queue_init(struct xe_exec_queue *q)
> {
> struct drm_gpu_scheduler *sched;
> + const struct drm_sched_init_args args = {
> + .ops = &drm_sched_ops,
> + .num_rqs = 1,
> + .credit_limit = q->lrc[0]->ring.size / MAX_JOB_SIZE_BYTES,
> + .hang_limit = XE_SCHED_HANG_LIMIT,
> + .timeout = XE_SCHED_JOB_TIMEOUT,
> + .name = q->hwe->name,
> + .dev = gt_to_xe(q->gt)->drm.dev
> + };
> struct xe_execlist_exec_queue *exl;
> struct xe_device *xe = gt_to_xe(q->gt);
> int err;
> @@ -346,11 +355,8 @@ static int execlist_exec_queue_init(struct xe_exec_queue *q)
>
> exl->q = q;
>
> - err = drm_sched_init(&exl->sched, &drm_sched_ops, NULL, 1,
> - q->lrc[0]->ring.size / MAX_JOB_SIZE_BYTES,
> - XE_SCHED_HANG_LIMIT, XE_SCHED_JOB_TIMEOUT,
> - NULL, NULL, q->hwe->name,
> - gt_to_xe(q->gt)->drm.dev);
> +
Please don't use multiple blank lines.
> + err = drm_sched_init(&exl->sched, &args);
> if (err)
> goto err_free;
>
[...]
> diff --git a/include/drm/gpu_scheduler.h b/include/drm/gpu_scheduler.h
> index a0ff08123f07..f0f5435598a8 100644
> --- a/include/drm/gpu_scheduler.h
> +++ b/include/drm/gpu_scheduler.h
> @@ -540,12 +540,39 @@ struct drm_gpu_scheduler {
> struct device *dev;
> };
>
> +/**
> + * struct drm_sched_init_args - parameters for initializing a DRM GPU scheduler
> + *
> + * @ops: backend operations provided by the driver
> + * @submit_wq: workqueue to use for submission. May be NULL.
> + * If NULL, an ordered wq is allocated and used.
Could you align this line to the first word from the previous line? You
have examples of correct alignment in this file, such as `struct
drm_gpu_scheduler`. Also, you can check examples in [1].
[1] https://docs.kernel.org/doc-guide/kernel-doc.html
> + * @num_rqs: Number of run-queues. This may be at most DRM_SCHED_PRIORITY_COUNT,
> + * as there's usually one run-queue per priority, but may be less.
> + * @credit_limit: the number of credits this scheduler can hold from all jobs
> + * @hang_limit: number of times to allow a job to hang before dropping it.
> + * This mechanism is DEPRECATED. Set it to 0.
> + * @timeout: timeout value in jiffies for the scheduler
> + * @timeout_wq: workqueue to use for timeout work. May be NULL.
> + * If NULL, the system_wq is used.
> + * @score: score atomic shared with other schedulers. May be NULL.
> + * @name: name used for debugging
> + * @dev: associated device. Used for debugging
How do you feel about using the same description of `struct
drm_gpu_scheduler` for @name and @dev?
> + */
> +struct drm_sched_init_args {
> + const struct drm_sched_backend_ops *ops;
> + struct workqueue_struct *submit_wq;
> + struct workqueue_struct *timeout_wq;
> + u32 num_rqs;
> + u32 credit_limit;
> + unsigned int hang_limit;
> + long timeout;
> + atomic_t *score;
> + const char *name;
> + struct device *dev;
> +};
> +
> int drm_sched_init(struct drm_gpu_scheduler *sched,
> - const struct drm_sched_backend_ops *ops,
> - struct workqueue_struct *submit_wq,
> - u32 num_rqs, u32 credit_limit, unsigned int hang_limit,
> - long timeout, struct workqueue_struct *timeout_wq,
> - atomic_t *score, const char *name, struct device *dev);
> + const struct drm_sched_init_args *args);
Could you keep it aligned to the "("?
Best Regards,
- Maíra
>
> void drm_sched_fini(struct drm_gpu_scheduler *sched);
> int drm_sched_job_init(struct drm_sched_job *job,
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2] drm/sched: Use struct for drm_sched_init() params
2025-01-29 10:53 ` Maíra Canal
@ 2025-01-29 12:39 ` Philipp Stanner
2025-01-29 14:53 ` Maíra Canal
0 siblings, 1 reply; 23+ messages in thread
From: Philipp Stanner @ 2025-01-29 12:39 UTC (permalink / raw)
To: Maíra Canal, Philipp Stanner, Alex Deucher,
Christian König, Xinhui Pan, David Airlie, Simona Vetter,
Lucas Stach, Russell King, Christian Gmeiner, Frank Binns,
Matt Coster, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Qiang Yu, Rob Clark, Sean Paul, Konrad Dybcio, Abhinav Kumar,
Dmitry Baryshkov, Marijn Suijten, Karol Herbst, Lyude Paul,
Danilo Krummrich, Boris Brezillon, Rob Herring, Steven Price,
Liviu Dudau, Matthew Brost, Melissa Wen, Lucas De Marchi,
Thomas Hellström, Rodrigo Vivi, Sunil Khatri, Lijo Lazar,
Hawking Zhang, Mario Limonciello, Ma Jun, Yunxiang Li
Cc: amd-gfx, dri-devel, linux-kernel, etnaviv, lima, linux-arm-msm,
freedreno, nouveau, intel-xe
On Wed, 2025-01-29 at 07:53 -0300, Maíra Canal wrote:
> Hi Philipp,
>
> On 28/01/25 11:29, Philipp Stanner wrote:
> > drm_sched_init() has a great many parameters and upcoming new
> > functionality for the scheduler might add even more. Generally, the
> > great number of parameters reduces readability and has already
> > caused
> > one missnaming in:
> >
> > commit 6f1cacf4eba7 ("drm/nouveau: Improve variable name in
> > nouveau_sched_init()").
> >
> > Introduce a new struct for the scheduler init parameters and port
> > all
> > users.
> >
> > Signed-off-by: Philipp Stanner <phasta@kernel.org>
> > ---
> > Changes in v2:
> > - Point out that the hang-limit is deprecated. (Christian)
> > - Initialize the structs to 0 at declaration. (Planet Earth)
> > - Don't set stuff explicitly to 0 / NULL. (Tvrtko)
> > - Make the structs const where possible. (Boris)
> > - v3d: Use just 1, universal, function for sched-init. (Maíra)
> > ---
> > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 18 ++++--
> > drivers/gpu/drm/etnaviv/etnaviv_sched.c | 20 +++----
> > drivers/gpu/drm/imagination/pvr_queue.c | 18 ++++--
> > drivers/gpu/drm/lima/lima_sched.c | 16 +++--
> > drivers/gpu/drm/msm/msm_ringbuffer.c | 17 +++---
> > drivers/gpu/drm/nouveau/nouveau_sched.c | 15 +++--
> > drivers/gpu/drm/panfrost/panfrost_job.c | 20 ++++---
> > drivers/gpu/drm/panthor/panthor_mmu.c | 16 +++--
> > drivers/gpu/drm/panthor/panthor_sched.c | 29 +++++----
> > drivers/gpu/drm/scheduler/sched_main.c | 50 ++++++----------
> > drivers/gpu/drm/v3d/v3d_sched.c | 68 +++++++++--------
> > -----
> > drivers/gpu/drm/xe/xe_execlist.c | 16 +++--
> > drivers/gpu/drm/xe/xe_gpu_scheduler.c | 17 +++++-
> > include/drm/gpu_scheduler.h | 37 ++++++++++--
> > 14 files changed, 206 insertions(+), 151 deletions(-)
> >
>
> [...]
>
> > diff --git a/drivers/gpu/drm/panthor/panthor_sched.c
> > b/drivers/gpu/drm/panthor/panthor_sched.c
> > index 5844a7f639e0..44713cfdcd74 100644
> > --- a/drivers/gpu/drm/panthor/panthor_sched.c
> > +++ b/drivers/gpu/drm/panthor/panthor_sched.c
> > @@ -3284,6 +3284,22 @@ static struct panthor_queue *
> > group_create_queue(struct panthor_group *group,
> > const struct drm_panthor_queue_create *args)
> > {
> > + const struct drm_sched_init_args sched_args = {
> > + .ops = &panthor_queue_sched_ops,
> > + .submit_wq = group->ptdev->scheduler->wq,
> > + .num_rqs = 1,
> > + /*
> > + * The credit limit argument tells us the total
> > number of
> > + * instructions across all CS slots in the
> > ringbuffer, with
> > + * some jobs requiring twice as many as others,
> > depending on
> > + * their profiling status.
> > + */
> > + .credit_limit = args->ringbuf_size / sizeof(u64),
> > + .timeout = msecs_to_jiffies(JOB_TIMEOUT_MS),
> > + .timeout_wq = group->ptdev->reset.wq,
> > + .name = "panthor-queue",
> > + .dev = group->ptdev->base.dev
> > + };
> > struct drm_gpu_scheduler *drm_sched;
> > struct panthor_queue *queue;
> > int ret;
> > @@ -3354,17 +3370,8 @@ group_create_queue(struct panthor_group
> > *group,
> > if (ret)
> > goto err_free_queue;
> >
> > - /*
> > - * Credit limit argument tells us the total number of
> > instructions
> > - * across all CS slots in the ringbuffer, with some jobs
> > requiring
> > - * twice as many as others, depending on their profiling
> > status.
> > - */
> > - ret = drm_sched_init(&queue->scheduler,
> > &panthor_queue_sched_ops,
> > - group->ptdev->scheduler->wq, 1,
> > - args->ringbuf_size / sizeof(u64),
> > - 0, msecs_to_jiffies(JOB_TIMEOUT_MS),
> > - group->ptdev->reset.wq,
> > - NULL, "panthor-queue", group->ptdev-
> > >base.dev);
> > +
>
> Please don't use multiple blank lines.
>
> > + ret = drm_sched_init(&queue->scheduler, &sched_args);
> > if (ret)
> > goto err_free_queue;
> >
> > diff --git a/drivers/gpu/drm/scheduler/sched_main.c
> > b/drivers/gpu/drm/scheduler/sched_main.c
> > index a48be16ab84f..6295b2654a7c 100644
> > --- a/drivers/gpu/drm/scheduler/sched_main.c
> > +++ b/drivers/gpu/drm/scheduler/sched_main.c
> > @@ -1244,40 +1244,24 @@ static void drm_sched_run_job_work(struct
> > work_struct *w)
> > * drm_sched_init - Init a gpu scheduler instance
> > *
> > * @sched: scheduler instance
> > - * @ops: backend operations for this scheduler
> > - * @submit_wq: workqueue to use for submission. If NULL, an
> > ordered wq is
> > - * allocated and used
> > - * @num_rqs: number of runqueues, one for each priority, up to
> > DRM_SCHED_PRIORITY_COUNT
> > - * @credit_limit: the number of credits this scheduler can hold
> > from all jobs
> > - * @hang_limit: number of times to allow a job to hang before
> > dropping it
> > - * @timeout: timeout value in jiffies for the scheduler
> > - * @timeout_wq: workqueue to use for timeout work. If NULL, the
> > system_wq is
> > - * used
> > - * @score: optional score atomic shared with other schedulers
> > - * @name: name used for debugging
> > - * @dev: target &struct device
> > + * @args: scheduler initialization arguments
> > *
> > * Return 0 on success, otherwise error code.
> > */
> > -int drm_sched_init(struct drm_gpu_scheduler *sched,
> > - const struct drm_sched_backend_ops *ops,
> > - struct workqueue_struct *submit_wq,
> > - u32 num_rqs, u32 credit_limit, unsigned int
> > hang_limit,
> > - long timeout, struct workqueue_struct
> > *timeout_wq,
> > - atomic_t *score, const char *name, struct
> > device *dev)
> > +int drm_sched_init(struct drm_gpu_scheduler *sched, const struct
> > drm_sched_init_args *args)
> > {
> > int i;
> >
> > - sched->ops = ops;
> > - sched->credit_limit = credit_limit;
> > - sched->name = name;
> > - sched->timeout = timeout;
> > - sched->timeout_wq = timeout_wq ? : system_wq;
> > - sched->hang_limit = hang_limit;
> > - sched->score = score ? score : &sched->_score;
> > - sched->dev = dev;
> > + sched->ops = args->ops;
> > + sched->credit_limit = args->credit_limit;
> > + sched->name = args->name;
> > + sched->timeout = args->timeout;
> > + sched->timeout_wq = args->timeout_wq ? : system_wq;
> > + sched->hang_limit = args->hang_limit;
> > + sched->score = args->score ? args->score : &sched->_score;
>
> Could we keep it consistent and use the Elvis Operator here as well?
> Just like `sched->timeout_wq`.
This is literally just the old code.
And if at all, this insanely stupid GCC extension should not be used.
It's one of the typical compiler people rampages that make the C
language so terrible.
>
> > + sched->dev = args->dev;
> >
> > - if (num_rqs > DRM_SCHED_PRIORITY_COUNT) {
> > + if (args->num_rqs > DRM_SCHED_PRIORITY_COUNT) {
> > /* This is a gross violation--tell drivers what
> > the problem is.
> > */
> > drm_err(sched, "%s: num_rqs cannot be greater than
> > DRM_SCHED_PRIORITY_COUNT\n",
> > @@ -1292,16 +1276,16 @@ int drm_sched_init(struct drm_gpu_scheduler
> > *sched,
> > return 0;
> > }
> >
> > - if (submit_wq) {
> > - sched->submit_wq = submit_wq;
> > + if (args->submit_wq) {
> > + sched->submit_wq = args->submit_wq;
> > sched->own_submit_wq = false;
> > } else {
> > #ifdef CONFIG_LOCKDEP
> > - sched->submit_wq =
> > alloc_ordered_workqueue_lockdep_map(name,
> > + sched->submit_wq =
> > alloc_ordered_workqueue_lockdep_map(args->name,
> >
> > WQ_MEM_RECLAIM,
> >
> > &drm_sched_lockdep_map);
> > #else
> > - sched->submit_wq = alloc_ordered_workqueue(name,
> > WQ_MEM_RECLAIM);
> > + sched->submit_wq = alloc_ordered_workqueue(args-
> > >name, WQ_MEM_RECLAIM);
> > #endif
> > if (!sched->submit_wq)
> > return -ENOMEM;
> > @@ -1309,11 +1293,11 @@ int drm_sched_init(struct drm_gpu_scheduler
> > *sched,
> > sched->own_submit_wq = true;
> > }
> >
> > - sched->sched_rq = kmalloc_array(num_rqs, sizeof(*sched-
> > >sched_rq),
> > + sched->sched_rq = kmalloc_array(args->num_rqs,
> > sizeof(*sched->sched_rq),
> > GFP_KERNEL | __GFP_ZERO);
> > if (!sched->sched_rq)
> > goto Out_check_own;
> > - sched->num_rqs = num_rqs;
> > + sched->num_rqs = args->num_rqs;
> > for (i = DRM_SCHED_PRIORITY_KERNEL; i < sched->num_rqs;
> > i++) {
> > sched->sched_rq[i] = kzalloc(sizeof(*sched-
> > >sched_rq[i]), GFP_KERNEL);
> > if (!sched->sched_rq[i])
> > diff --git a/drivers/gpu/drm/v3d/v3d_sched.c
> > b/drivers/gpu/drm/v3d/v3d_sched.c
> > index 961465128d80..dfccb4cda3a1 100644
> > --- a/drivers/gpu/drm/v3d/v3d_sched.c
> > +++ b/drivers/gpu/drm/v3d/v3d_sched.c
> > @@ -820,67 +820,57 @@ static const struct drm_sched_backend_ops
> > v3d_cpu_sched_ops = {
> > .free_job = v3d_cpu_job_free
> > };
> >
> > +/*
> > + * v3d's scheduler instances are all identical, except for ops and
> > name.
> > + */
>
> Could you remove this comment? The function is self-explanatory.
>
> > +static int
> > +v3d_queue_sched_init(struct v3d_dev *v3d, const struct
> > drm_sched_backend_ops *ops,
> > + enum v3d_queue queue, const char *name)
> > +{
> > + struct drm_sched_init_args args = {
> > + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> > + .credit_limit = 1,
> > + .timeout = msecs_to_jiffies(500),
> > + .dev = v3d->drm.dev
> > + };
> > +
> > + args.ops = ops;
> > + args.name = name;
> > +
> > + return drm_sched_init(&v3d->queue[queue].sched, &args);
> > +}
> > +
> > int
> > v3d_sched_init(struct v3d_dev *v3d)
> > {
> > - int hw_jobs_limit = 1;
> > - int job_hang_limit = 0;
> > - int hang_limit_ms = 500;
> > int ret;
> >
> > - ret = drm_sched_init(&v3d->queue[V3D_BIN].sched,
> > - &v3d_bin_sched_ops, NULL,
> > - DRM_SCHED_PRIORITY_COUNT,
> > - hw_jobs_limit, job_hang_limit,
> > - msecs_to_jiffies(hang_limit_ms),
> > NULL,
> > - NULL, "v3d_bin", v3d->drm.dev);
> > + ret = v3d_queue_sched_init(v3d, &v3d_bin_sched_ops,
> > V3D_BIN, "v3d_bin");
> > if (ret)
> > return ret;
> >
> > - ret = drm_sched_init(&v3d->queue[V3D_RENDER].sched,
> > - &v3d_render_sched_ops, NULL,
> > - DRM_SCHED_PRIORITY_COUNT,
> > - hw_jobs_limit, job_hang_limit,
> > - msecs_to_jiffies(hang_limit_ms),
> > NULL,
> > - NULL, "v3d_render", v3d->drm.dev);
> > + ret = v3d_queue_sched_init(v3d, &v3d_render_sched_ops,
> > V3D_RENDER,
> > + "v3d_render");
> > if (ret)
> > goto fail;
> >
> > - ret = drm_sched_init(&v3d->queue[V3D_TFU].sched,
> > - &v3d_tfu_sched_ops, NULL,
> > - DRM_SCHED_PRIORITY_COUNT,
> > - hw_jobs_limit, job_hang_limit,
> > - msecs_to_jiffies(hang_limit_ms),
> > NULL,
> > - NULL, "v3d_tfu", v3d->drm.dev);
> > + ret = v3d_queue_sched_init(v3d, &v3d_tfu_sched_ops,
> > V3D_TFU, "v3d_tfu");
> > if (ret)
> > goto fail;
> >
> > if (v3d_has_csd(v3d)) {
> > - ret = drm_sched_init(&v3d->queue[V3D_CSD].sched,
> > - &v3d_csd_sched_ops, NULL,
> > - DRM_SCHED_PRIORITY_COUNT,
> > - hw_jobs_limit,
> > job_hang_limit,
> > -
> > msecs_to_jiffies(hang_limit_ms), NULL,
> > - NULL, "v3d_csd", v3d-
> > >drm.dev);
> > + ret = v3d_queue_sched_init(v3d,
> > &v3d_csd_sched_ops, V3D_CSD,
> > + "v3d_csd");
> > if (ret)
> > goto fail;
> >
> > - ret = drm_sched_init(&v3d-
> > >queue[V3D_CACHE_CLEAN].sched,
> > - &v3d_cache_clean_sched_ops,
> > NULL,
> > - DRM_SCHED_PRIORITY_COUNT,
> > - hw_jobs_limit,
> > job_hang_limit,
> > -
> > msecs_to_jiffies(hang_limit_ms), NULL,
> > - NULL, "v3d_cache_clean", v3d-
> > >drm.dev);
> > + ret = v3d_queue_sched_init(v3d,
> > &v3d_cache_clean_sched_ops,
> > + V3D_CACHE_CLEAN,
> > "v3d_cache_clean");
> > if (ret)
> > goto fail;
> > }
> >
> > - ret = drm_sched_init(&v3d->queue[V3D_CPU].sched,
> > - &v3d_cpu_sched_ops, NULL,
> > - DRM_SCHED_PRIORITY_COUNT,
> > - 1, job_hang_limit,
> > - msecs_to_jiffies(hang_limit_ms),
> > NULL,
> > - NULL, "v3d_cpu", v3d->drm.dev);
> > + ret = v3d_queue_sched_init(v3d, &v3d_cpu_sched_ops,
> > V3D_CPU, "v3d_cpu");
> > if (ret)
> > goto fail;
> >
> > diff --git a/drivers/gpu/drm/xe/xe_execlist.c
> > b/drivers/gpu/drm/xe/xe_execlist.c
> > index a8c416a48812..db1c52dcf1a6 100644
> > --- a/drivers/gpu/drm/xe/xe_execlist.c
> > +++ b/drivers/gpu/drm/xe/xe_execlist.c
> > @@ -332,6 +332,15 @@ static const struct drm_sched_backend_ops
> > drm_sched_ops = {
> > static int execlist_exec_queue_init(struct xe_exec_queue *q)
> > {
> > struct drm_gpu_scheduler *sched;
> > + const struct drm_sched_init_args args = {
> > + .ops = &drm_sched_ops,
> > + .num_rqs = 1,
> > + .credit_limit = q->lrc[0]->ring.size /
> > MAX_JOB_SIZE_BYTES,
> > + .hang_limit = XE_SCHED_HANG_LIMIT,
> > + .timeout = XE_SCHED_JOB_TIMEOUT,
> > + .name = q->hwe->name,
> > + .dev = gt_to_xe(q->gt)->drm.dev
> > + };
> > struct xe_execlist_exec_queue *exl;
> > struct xe_device *xe = gt_to_xe(q->gt);
> > int err;
> > @@ -346,11 +355,8 @@ static int execlist_exec_queue_init(struct
> > xe_exec_queue *q)
> >
> > exl->q = q;
> >
> > - err = drm_sched_init(&exl->sched, &drm_sched_ops, NULL, 1,
> > - q->lrc[0]->ring.size /
> > MAX_JOB_SIZE_BYTES,
> > - XE_SCHED_HANG_LIMIT,
> > XE_SCHED_JOB_TIMEOUT,
> > - NULL, NULL, q->hwe->name,
> > - gt_to_xe(q->gt)->drm.dev);
> > +
>
> Please don't use multiple blank lines.
>
> > + err = drm_sched_init(&exl->sched, &args);
> > if (err)
> > goto err_free;
> >
>
> [...]
>
> > diff --git a/include/drm/gpu_scheduler.h
> > b/include/drm/gpu_scheduler.h
> > index a0ff08123f07..f0f5435598a8 100644
> > --- a/include/drm/gpu_scheduler.h
> > +++ b/include/drm/gpu_scheduler.h
> > @@ -540,12 +540,39 @@ struct drm_gpu_scheduler {
> > struct device *dev;
> > };
> >
> > +/**
> > + * struct drm_sched_init_args - parameters for initializing a DRM
> > GPU scheduler
> > + *
> > + * @ops: backend operations provided by the driver
> > + * @submit_wq: workqueue to use for submission. May be NULL.
> > + * If NULL, an ordered wq is allocated and used.
>
> Could you align this line to the first word from the previous line?
> You
> have examples of correct alignment in this file, such as `struct
> drm_gpu_scheduler`. Also, you can check examples in [1].
>
> [1] https://docs.kernel.org/doc-guide/kernel-doc.html
>
> > + * @num_rqs: Number of run-queues. This may be at most
> > DRM_SCHED_PRIORITY_COUNT,
> > + * as there's usually one run-queue per priority, but may be
> > less.
> > + * @credit_limit: the number of credits this scheduler can hold
> > from all jobs
> > + * @hang_limit: number of times to allow a job to hang before
> > dropping it.
> > + * This mechanism is DEPRECATED. Set it to 0.
> > + * @timeout: timeout value in jiffies for the scheduler
> > + * @timeout_wq: workqueue to use for timeout work. May be NULL.
> > + * If NULL, the system_wq is used.
> > + * @score: score atomic shared with other schedulers. May be NULL.
> > + * @name: name used for debugging
> > + * @dev: associated device. Used for debugging
>
> How do you feel about using the same description of `struct
> drm_gpu_scheduler` for @name and @dev?
>
> > + */
> > +struct drm_sched_init_args {
> > + const struct drm_sched_backend_ops *ops;
> > + struct workqueue_struct *submit_wq;
> > + struct workqueue_struct *timeout_wq;
> > + u32 num_rqs;
> > + u32 credit_limit;
> > + unsigned int hang_limit;
> > + long timeout;
> > + atomic_t *score;
> > + const char *name;
> > + struct device *dev;
> > +};
> > +
> > int drm_sched_init(struct drm_gpu_scheduler *sched,
> > - const struct drm_sched_backend_ops *ops,
> > - struct workqueue_struct *submit_wq,
> > - u32 num_rqs, u32 credit_limit, unsigned int
> > hang_limit,
> > - long timeout, struct workqueue_struct
> > *timeout_wq,
> > - atomic_t *score, const char *name, struct
> > device *dev);
> > + const struct drm_sched_init_args *args);
>
> Could you keep it aligned to the "("?
>
> Best Regards,
> - Maíra
>
> >
> > void drm_sched_fini(struct drm_gpu_scheduler *sched);
> > int drm_sched_job_init(struct drm_sched_job *job,
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2] drm/sched: Use struct for drm_sched_init() params
2025-01-29 12:39 ` Philipp Stanner
@ 2025-01-29 14:53 ` Maíra Canal
0 siblings, 0 replies; 23+ messages in thread
From: Maíra Canal @ 2025-01-29 14:53 UTC (permalink / raw)
To: phasta, Alex Deucher, Christian König, Xinhui Pan,
David Airlie, Simona Vetter, Lucas Stach, Russell King,
Christian Gmeiner, Frank Binns, Matt Coster, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, Qiang Yu, Rob Clark, Sean Paul,
Konrad Dybcio, Abhinav Kumar, Dmitry Baryshkov, Marijn Suijten,
Karol Herbst, Lyude Paul, Danilo Krummrich, Boris Brezillon,
Rob Herring, Steven Price, Liviu Dudau, Matthew Brost,
Melissa Wen, Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Sunil Khatri, Lijo Lazar, Hawking Zhang, Mario Limonciello,
Ma Jun, Yunxiang Li
Cc: amd-gfx, dri-devel, linux-kernel, etnaviv, lima, linux-arm-msm,
freedreno, nouveau, intel-xe
Hi Philipp,
On 29/01/25 09:39, Philipp Stanner wrote:
> On Wed, 2025-01-29 at 07:53 -0300, Maíra Canal wrote:
>> Hi Philipp,
>>
>> On 28/01/25 11:29, Philipp Stanner wrote:
>>> drm_sched_init() has a great many parameters and upcoming new
>>> functionality for the scheduler might add even more. Generally, the
>>> great number of parameters reduces readability and has already
>>> caused
>>> one missnaming in:
>>>
>>> commit 6f1cacf4eba7 ("drm/nouveau: Improve variable name in
>>> nouveau_sched_init()").
>>>
>>> Introduce a new struct for the scheduler init parameters and port
>>> all
>>> users.
>>>
>>> Signed-off-by: Philipp Stanner <phasta@kernel.org>
>>> ---
>>> Changes in v2:
>>> - Point out that the hang-limit is deprecated. (Christian)
>>> - Initialize the structs to 0 at declaration. (Planet Earth)
>>> - Don't set stuff explicitly to 0 / NULL. (Tvrtko)
>>> - Make the structs const where possible. (Boris)
>>> - v3d: Use just 1, universal, function for sched-init. (Maíra)
>>> ---
>>> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 18 ++++--
>>> drivers/gpu/drm/etnaviv/etnaviv_sched.c | 20 +++----
>>> drivers/gpu/drm/imagination/pvr_queue.c | 18 ++++--
>>> drivers/gpu/drm/lima/lima_sched.c | 16 +++--
>>> drivers/gpu/drm/msm/msm_ringbuffer.c | 17 +++---
>>> drivers/gpu/drm/nouveau/nouveau_sched.c | 15 +++--
>>> drivers/gpu/drm/panfrost/panfrost_job.c | 20 ++++---
>>> drivers/gpu/drm/panthor/panthor_mmu.c | 16 +++--
>>> drivers/gpu/drm/panthor/panthor_sched.c | 29 +++++----
>>> drivers/gpu/drm/scheduler/sched_main.c | 50 ++++++----------
>>> drivers/gpu/drm/v3d/v3d_sched.c | 68 +++++++++--------
>>> -----
>>> drivers/gpu/drm/xe/xe_execlist.c | 16 +++--
>>> drivers/gpu/drm/xe/xe_gpu_scheduler.c | 17 +++++-
>>> include/drm/gpu_scheduler.h | 37 ++++++++++--
>>> 14 files changed, 206 insertions(+), 151 deletions(-)
>>>
>>
>> [...]
>>
>>> diff --git a/drivers/gpu/drm/panthor/panthor_sched.c
>>> b/drivers/gpu/drm/panthor/panthor_sched.c
>>> index 5844a7f639e0..44713cfdcd74 100644
>>> --- a/drivers/gpu/drm/panthor/panthor_sched.c
>>> +++ b/drivers/gpu/drm/panthor/panthor_sched.c
>>> @@ -3284,6 +3284,22 @@ static struct panthor_queue *
>>> group_create_queue(struct panthor_group *group,
>>> const struct drm_panthor_queue_create *args)
>>> {
>>> + const struct drm_sched_init_args sched_args = {
>>> + .ops = &panthor_queue_sched_ops,
>>> + .submit_wq = group->ptdev->scheduler->wq,
>>> + .num_rqs = 1,
>>> + /*
>>> + * The credit limit argument tells us the total
>>> number of
>>> + * instructions across all CS slots in the
>>> ringbuffer, with
>>> + * some jobs requiring twice as many as others,
>>> depending on
>>> + * their profiling status.
>>> + */
>>> + .credit_limit = args->ringbuf_size / sizeof(u64),
>>> + .timeout = msecs_to_jiffies(JOB_TIMEOUT_MS),
>>> + .timeout_wq = group->ptdev->reset.wq,
>>> + .name = "panthor-queue",
>>> + .dev = group->ptdev->base.dev
>>> + };
>>> struct drm_gpu_scheduler *drm_sched;
>>> struct panthor_queue *queue;
>>> int ret;
>>> @@ -3354,17 +3370,8 @@ group_create_queue(struct panthor_group
>>> *group,
>>> if (ret)
>>> goto err_free_queue;
>>>
>>> - /*
>>> - * Credit limit argument tells us the total number of
>>> instructions
>>> - * across all CS slots in the ringbuffer, with some jobs
>>> requiring
>>> - * twice as many as others, depending on their profiling
>>> status.
>>> - */
>>> - ret = drm_sched_init(&queue->scheduler,
>>> &panthor_queue_sched_ops,
>>> - group->ptdev->scheduler->wq, 1,
>>> - args->ringbuf_size / sizeof(u64),
>>> - 0, msecs_to_jiffies(JOB_TIMEOUT_MS),
>>> - group->ptdev->reset.wq,
>>> - NULL, "panthor-queue", group->ptdev-
>>>> base.dev);
>>> +
>>
>> Please don't use multiple blank lines.
>>
>>> + ret = drm_sched_init(&queue->scheduler, &sched_args);
>>> if (ret)
>>> goto err_free_queue;
>>>
>>> diff --git a/drivers/gpu/drm/scheduler/sched_main.c
>>> b/drivers/gpu/drm/scheduler/sched_main.c
>>> index a48be16ab84f..6295b2654a7c 100644
>>> --- a/drivers/gpu/drm/scheduler/sched_main.c
>>> +++ b/drivers/gpu/drm/scheduler/sched_main.c
>>> @@ -1244,40 +1244,24 @@ static void drm_sched_run_job_work(struct
>>> work_struct *w)
>>> * drm_sched_init - Init a gpu scheduler instance
>>> *
>>> * @sched: scheduler instance
>>> - * @ops: backend operations for this scheduler
>>> - * @submit_wq: workqueue to use for submission. If NULL, an
>>> ordered wq is
>>> - * allocated and used
>>> - * @num_rqs: number of runqueues, one for each priority, up to
>>> DRM_SCHED_PRIORITY_COUNT
>>> - * @credit_limit: the number of credits this scheduler can hold
>>> from all jobs
>>> - * @hang_limit: number of times to allow a job to hang before
>>> dropping it
>>> - * @timeout: timeout value in jiffies for the scheduler
>>> - * @timeout_wq: workqueue to use for timeout work. If NULL, the
>>> system_wq is
>>> - * used
>>> - * @score: optional score atomic shared with other schedulers
>>> - * @name: name used for debugging
>>> - * @dev: target &struct device
>>> + * @args: scheduler initialization arguments
>>> *
>>> * Return 0 on success, otherwise error code.
>>> */
>>> -int drm_sched_init(struct drm_gpu_scheduler *sched,
>>> - const struct drm_sched_backend_ops *ops,
>>> - struct workqueue_struct *submit_wq,
>>> - u32 num_rqs, u32 credit_limit, unsigned int
>>> hang_limit,
>>> - long timeout, struct workqueue_struct
>>> *timeout_wq,
>>> - atomic_t *score, const char *name, struct
>>> device *dev)
>>> +int drm_sched_init(struct drm_gpu_scheduler *sched, const struct
>>> drm_sched_init_args *args)
>>> {
>>> int i;
>>>
>>> - sched->ops = ops;
>>> - sched->credit_limit = credit_limit;
>>> - sched->name = name;
>>> - sched->timeout = timeout;
>>> - sched->timeout_wq = timeout_wq ? : system_wq;
>>> - sched->hang_limit = hang_limit;
>>> - sched->score = score ? score : &sched->_score;
>>> - sched->dev = dev;
>>> + sched->ops = args->ops;
>>> + sched->credit_limit = args->credit_limit;
>>> + sched->name = args->name;
>>> + sched->timeout = args->timeout;
>>> + sched->timeout_wq = args->timeout_wq ? : system_wq;
>>> + sched->hang_limit = args->hang_limit;
>>> + sched->score = args->score ? args->score : &sched->_score;
>>
>> Could we keep it consistent and use the Elvis Operator here as well?
>> Just like `sched->timeout_wq`.
>
> This is literally just the old code.
>
> And if at all, this insanely stupid GCC extension should not be used.
> It's one of the typical compiler people rampages that make the C
> language so terrible.
Not a problem to me, we can remove the Elvis Operator from `sched-
>timeout_wq`. My idea is just to do things consistently in variable
assignment.
Best Regards,
- Maíra
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2] drm/sched: Use struct for drm_sched_init() params
2025-01-28 14:56 ` Danilo Krummrich
@ 2025-01-29 15:18 ` Philipp Stanner
2025-01-29 16:50 ` Danilo Krummrich
0 siblings, 1 reply; 23+ messages in thread
From: Philipp Stanner @ 2025-01-29 15:18 UTC (permalink / raw)
To: Danilo Krummrich, Philipp Stanner
Cc: Alex Deucher, Christian König, Xinhui Pan, David Airlie,
Simona Vetter, Lucas Stach, Russell King, Christian Gmeiner,
Frank Binns, Matt Coster, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Qiang Yu, Rob Clark, Sean Paul, Konrad Dybcio,
Abhinav Kumar, Dmitry Baryshkov, Marijn Suijten, Karol Herbst,
Lyude Paul, Boris Brezillon, Rob Herring, Steven Price,
Liviu Dudau, Matthew Brost, Melissa Wen, Maíra Canal,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Sunil Khatri, Lijo Lazar, Hawking Zhang, Mario Limonciello,
Ma Jun, Yunxiang Li, amd-gfx, dri-devel, linux-kernel, etnaviv,
lima, linux-arm-msm, freedreno, nouveau, intel-xe
On Tue, 2025-01-28 at 15:56 +0100, Danilo Krummrich wrote:
> On Tue, Jan 28, 2025 at 03:29:27PM +0100, Philipp Stanner wrote:
> > drm_sched_init() has a great many parameters and upcoming new
> > functionality for the scheduler might add even more. Generally, the
> > great number of parameters reduces readability and has already
> > caused
> > one missnaming in:
> >
> > commit 6f1cacf4eba7 ("drm/nouveau: Improve variable name in
> > nouveau_sched_init()").
> >
> > Introduce a new struct for the scheduler init parameters and port
> > all
> > users.
> >
> > Signed-off-by: Philipp Stanner <phasta@kernel.org>
> > ---
> > Changes in v2:
> > - Point out that the hang-limit is deprecated. (Christian)
> > - Initialize the structs to 0 at declaration. (Planet Earth)
> > - Don't set stuff explicitly to 0 / NULL. (Tvrtko)
> > - Make the structs const where possible. (Boris)
> > - v3d: Use just 1, universal, function for sched-init. (Maíra)
> > ---
> > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 18 ++++--
> > drivers/gpu/drm/etnaviv/etnaviv_sched.c | 20 +++----
> > drivers/gpu/drm/imagination/pvr_queue.c | 18 ++++--
> > drivers/gpu/drm/lima/lima_sched.c | 16 +++--
> > drivers/gpu/drm/msm/msm_ringbuffer.c | 17 +++---
> > drivers/gpu/drm/nouveau/nouveau_sched.c | 15 +++--
> > drivers/gpu/drm/panfrost/panfrost_job.c | 20 ++++---
> > drivers/gpu/drm/panthor/panthor_mmu.c | 16 +++--
> > drivers/gpu/drm/panthor/panthor_sched.c | 29 +++++----
> > drivers/gpu/drm/scheduler/sched_main.c | 50 ++++++----------
> > drivers/gpu/drm/v3d/v3d_sched.c | 68 +++++++++---------
> > ----
> > drivers/gpu/drm/xe/xe_execlist.c | 16 +++--
> > drivers/gpu/drm/xe/xe_gpu_scheduler.c | 17 +++++-
> > include/drm/gpu_scheduler.h | 37 ++++++++++--
> > 14 files changed, 206 insertions(+), 151 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/nouveau/nouveau_sched.c
> > b/drivers/gpu/drm/nouveau/nouveau_sched.c
> > index 4412f2711fb5..b5aac8eebfdd 100644
> > --- a/drivers/gpu/drm/nouveau/nouveau_sched.c
> > +++ b/drivers/gpu/drm/nouveau/nouveau_sched.c
> > @@ -404,7 +404,15 @@ nouveau_sched_init(struct nouveau_sched
> > *sched, struct nouveau_drm *drm,
> > {
> > struct drm_gpu_scheduler *drm_sched = &sched->base;
> > struct drm_sched_entity *entity = &sched->entity;
> > - const long timeout =
> > msecs_to_jiffies(NOUVEAU_SCHED_JOB_TIMEOUT_MS);
> > + const struct drm_sched_init_args args = {
> > + .ops = &nouveau_sched_ops,
> > + .submit_wq = wq,
> > + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> > + .credit_limit = credit_limit,
> > + .timeout =
> > msecs_to_jiffies(NOUVEAU_SCHED_JOB_TIMEOUT_MS),
> > + .name = "nouveau_sched",
> > + .dev = drm->dev->dev
> > + };
> > int ret;
> >
> > if (!wq) {
> > @@ -416,10 +424,7 @@ nouveau_sched_init(struct nouveau_sched
> > *sched, struct nouveau_drm *drm,
> > sched->wq = wq;
Do you want it set here
args.submit_wq = wq;
or below, outside the if-block? Should be the same AFAICS
>
> This change breaks Nouveau, you need to set args.submit_wq here as
> well.
I overlooked the allocation below.
P.
>
> > }
> >
> > - ret = drm_sched_init(drm_sched, &nouveau_sched_ops, wq,
> > - NOUVEAU_SCHED_PRIORITY_COUNT,
> > - credit_limit, 0, timeout,
> > - NULL, NULL, "nouveau_sched", drm-
> > >dev->dev);
> > + ret = drm_sched_init(drm_sched, &args);
> > if (ret)
> > goto fail_wq;
> >
> > diff --git a/drivers/gpu/drm/panthor/panthor_sched.c
> > b/drivers/gpu/drm/panthor/panthor_sched.c
> > index 5844a7f639e0..44713cfdcd74 100644
> > --- a/drivers/gpu/drm/panthor/panthor_sched.c
> > +++ b/drivers/gpu/drm/panthor/panthor_sched.c
> > @@ -3284,6 +3284,22 @@ static struct panthor_queue *
> > group_create_queue(struct panthor_group *group,
> > const struct drm_panthor_queue_create *args)
> > {
> > + const struct drm_sched_init_args sched_args = {
> > + .ops = &panthor_queue_sched_ops,
> > + .submit_wq = group->ptdev->scheduler->wq,
> > + .num_rqs = 1,
> > + /*
> > + * The credit limit argument tells us the total
> > number of
> > + * instructions across all CS slots in the
> > ringbuffer, with
> > + * some jobs requiring twice as many as others,
> > depending on
> > + * their profiling status.
> > + */
> > + .credit_limit = args->ringbuf_size / sizeof(u64),
> > + .timeout = msecs_to_jiffies(JOB_TIMEOUT_MS),
> > + .timeout_wq = group->ptdev->reset.wq,
> > + .name = "panthor-queue",
> > + .dev = group->ptdev->base.dev
> > + };
> > struct drm_gpu_scheduler *drm_sched;
> > struct panthor_queue *queue;
> > int ret;
> > @@ -3354,17 +3370,8 @@ group_create_queue(struct panthor_group
> > *group,
> > if (ret)
> > goto err_free_queue;
> >
> > - /*
> > - * Credit limit argument tells us the total number of
> > instructions
> > - * across all CS slots in the ringbuffer, with some jobs
> > requiring
> > - * twice as many as others, depending on their profiling
> > status.
> > - */
> > - ret = drm_sched_init(&queue->scheduler,
> > &panthor_queue_sched_ops,
> > - group->ptdev->scheduler->wq, 1,
> > - args->ringbuf_size / sizeof(u64),
> > - 0, msecs_to_jiffies(JOB_TIMEOUT_MS),
> > - group->ptdev->reset.wq,
> > - NULL, "panthor-queue", group->ptdev-
> > >base.dev);
> > +
>
> This creates two empty lines.
>
> > + ret = drm_sched_init(&queue->scheduler, &sched_args);
> > if (ret)
> > goto err_free_queue;
> >
> > diff --git a/drivers/gpu/drm/scheduler/sched_main.c
> > b/drivers/gpu/drm/scheduler/sched_main.c
> > index a48be16ab84f..6295b2654a7c 100644
> > --- a/drivers/gpu/drm/scheduler/sched_main.c
> > +++ b/drivers/gpu/drm/scheduler/sched_main.c
> > @@ -1244,40 +1244,24 @@ static void drm_sched_run_job_work(struct
> > work_struct *w)
> > * drm_sched_init - Init a gpu scheduler instance
> > *
> > * @sched: scheduler instance
> > - * @ops: backend operations for this scheduler
> > - * @submit_wq: workqueue to use for submission. If NULL, an
> > ordered wq is
> > - * allocated and used
> > - * @num_rqs: number of runqueues, one for each priority, up to
> > DRM_SCHED_PRIORITY_COUNT
> > - * @credit_limit: the number of credits this scheduler can hold
> > from all jobs
> > - * @hang_limit: number of times to allow a job to hang before
> > dropping it
> > - * @timeout: timeout value in jiffies for the scheduler
> > - * @timeout_wq: workqueue to use for timeout work. If NULL, the
> > system_wq is
> > - * used
> > - * @score: optional score atomic shared with other schedulers
> > - * @name: name used for debugging
> > - * @dev: target &struct device
> > + * @args: scheduler initialization arguments
> > *
> > * Return 0 on success, otherwise error code.
> > */
> > -int drm_sched_init(struct drm_gpu_scheduler *sched,
> > - const struct drm_sched_backend_ops *ops,
> > - struct workqueue_struct *submit_wq,
> > - u32 num_rqs, u32 credit_limit, unsigned int
> > hang_limit,
> > - long timeout, struct workqueue_struct
> > *timeout_wq,
> > - atomic_t *score, const char *name, struct
> > device *dev)
> > +int drm_sched_init(struct drm_gpu_scheduler *sched, const struct
> > drm_sched_init_args *args)
> > {
> > int i;
> >
> > - sched->ops = ops;
> > - sched->credit_limit = credit_limit;
> > - sched->name = name;
> > - sched->timeout = timeout;
> > - sched->timeout_wq = timeout_wq ? : system_wq;
> > - sched->hang_limit = hang_limit;
> > - sched->score = score ? score : &sched->_score;
> > - sched->dev = dev;
> > + sched->ops = args->ops;
> > + sched->credit_limit = args->credit_limit;
> > + sched->name = args->name;
> > + sched->timeout = args->timeout;
> > + sched->timeout_wq = args->timeout_wq ? : system_wq;
> > + sched->hang_limit = args->hang_limit;
> > + sched->score = args->score ? args->score : &sched->_score;
> > + sched->dev = args->dev;
> >
> > - if (num_rqs > DRM_SCHED_PRIORITY_COUNT) {
> > + if (args->num_rqs > DRM_SCHED_PRIORITY_COUNT) {
> > /* This is a gross violation--tell drivers what
> > the problem is.
> > */
> > drm_err(sched, "%s: num_rqs cannot be greater than
> > DRM_SCHED_PRIORITY_COUNT\n",
> > @@ -1292,16 +1276,16 @@ int drm_sched_init(struct drm_gpu_scheduler
> > *sched,
> > return 0;
> > }
> >
> > - if (submit_wq) {
> > - sched->submit_wq = submit_wq;
> > + if (args->submit_wq) {
> > + sched->submit_wq = args->submit_wq;
> > sched->own_submit_wq = false;
> > } else {
> > #ifdef CONFIG_LOCKDEP
> > - sched->submit_wq =
> > alloc_ordered_workqueue_lockdep_map(name,
> > + sched->submit_wq =
> > alloc_ordered_workqueue_lockdep_map(args->name,
> >
> > WQ_MEM_RECLAIM,
> >
> > &drm_sched_lockdep_map);
> > #else
> > - sched->submit_wq = alloc_ordered_workqueue(name,
> > WQ_MEM_RECLAIM);
> > + sched->submit_wq = alloc_ordered_workqueue(args-
> > >name, WQ_MEM_RECLAIM);
> > #endif
> > if (!sched->submit_wq)
> > return -ENOMEM;
> > @@ -1309,11 +1293,11 @@ int drm_sched_init(struct drm_gpu_scheduler
> > *sched,
> > sched->own_submit_wq = true;
> > }
> >
> > - sched->sched_rq = kmalloc_array(num_rqs, sizeof(*sched-
> > >sched_rq),
> > + sched->sched_rq = kmalloc_array(args->num_rqs,
> > sizeof(*sched->sched_rq),
> > GFP_KERNEL | __GFP_ZERO);
> > if (!sched->sched_rq)
> > goto Out_check_own;
> > - sched->num_rqs = num_rqs;
> > + sched->num_rqs = args->num_rqs;
> > for (i = DRM_SCHED_PRIORITY_KERNEL; i < sched->num_rqs;
> > i++) {
> > sched->sched_rq[i] = kzalloc(sizeof(*sched-
> > >sched_rq[i]), GFP_KERNEL);
> > if (!sched->sched_rq[i])
> > diff --git a/drivers/gpu/drm/xe/xe_execlist.c
> > b/drivers/gpu/drm/xe/xe_execlist.c
> > index a8c416a48812..db1c52dcf1a6 100644
> > --- a/drivers/gpu/drm/xe/xe_execlist.c
> > +++ b/drivers/gpu/drm/xe/xe_execlist.c
> > @@ -332,6 +332,15 @@ static const struct drm_sched_backend_ops
> > drm_sched_ops = {
> > static int execlist_exec_queue_init(struct xe_exec_queue *q)
> > {
> > struct drm_gpu_scheduler *sched;
> > + const struct drm_sched_init_args args = {
> > + .ops = &drm_sched_ops,
> > + .num_rqs = 1,
> > + .credit_limit = q->lrc[0]->ring.size /
> > MAX_JOB_SIZE_BYTES,
> > + .hang_limit = XE_SCHED_HANG_LIMIT,
> > + .timeout = XE_SCHED_JOB_TIMEOUT,
> > + .name = q->hwe->name,
> > + .dev = gt_to_xe(q->gt)->drm.dev
> > + };
> > struct xe_execlist_exec_queue *exl;
> > struct xe_device *xe = gt_to_xe(q->gt);
> > int err;
> > @@ -346,11 +355,8 @@ static int execlist_exec_queue_init(struct
> > xe_exec_queue *q)
> >
> > exl->q = q;
> >
> > - err = drm_sched_init(&exl->sched, &drm_sched_ops, NULL, 1,
> > - q->lrc[0]->ring.size /
> > MAX_JOB_SIZE_BYTES,
> > - XE_SCHED_HANG_LIMIT,
> > XE_SCHED_JOB_TIMEOUT,
> > - NULL, NULL, q->hwe->name,
> > - gt_to_xe(q->gt)->drm.dev);
> > +
>
> Two empty lines here as well.
>
> > + err = drm_sched_init(&exl->sched, &args);
> > if (err)
> > goto err_free;
> >
> > diff --git a/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> > b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> > index 50361b4638f9..be95f4cca007 100644
> > --- a/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> > +++ b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
> > @@ -63,13 +63,24 @@ int xe_sched_init(struct xe_gpu_scheduler
> > *sched,
> > atomic_t *score, const char *name,
> > struct device *dev)
> > {
> > + const struct drm_sched_init_args args = {
> > + .ops = ops,
> > + .submit_wq = submit_wq,
> > + .num_rqs = 1,
> > + .credit_limit = hw_submission,
> > + .hang_limit = hang_limit,
> > + .timeout = timeout,
> > + .timeout_wq = timeout_wq,
> > + .score = score,
> > + .name = name,
> > + .dev = dev
> > + };
> > +
> > sched->ops = xe_ops;
> > INIT_LIST_HEAD(&sched->msgs);
> > INIT_WORK(&sched->work_process_msg,
> > xe_sched_process_msg_work);
> >
> > - return drm_sched_init(&sched->base, ops, submit_wq, 1,
> > hw_submission,
> > - hang_limit, timeout, timeout_wq,
> > score, name,
> > - dev);
> > + return drm_sched_init(&sched->base, &args);
> > }
> >
> > void xe_sched_fini(struct xe_gpu_scheduler *sched)
> > diff --git a/include/drm/gpu_scheduler.h
> > b/include/drm/gpu_scheduler.h
> > index a0ff08123f07..f0f5435598a8 100644
> > --- a/include/drm/gpu_scheduler.h
> > +++ b/include/drm/gpu_scheduler.h
> > @@ -540,12 +540,39 @@ struct drm_gpu_scheduler {
> > struct device *dev;
> > };
> >
> > +/**
> > + * struct drm_sched_init_args - parameters for initializing a DRM
> > GPU scheduler
> > + *
> > + * @ops: backend operations provided by the driver
> > + * @submit_wq: workqueue to use for submission. May be NULL.
> > + * If NULL, an ordered wq is allocated and used.
> > + * @num_rqs: Number of run-queues. This may be at most
> > DRM_SCHED_PRIORITY_COUNT,
> > + * as there's usually one run-queue per priority, but may be
> > less.
> > + * @credit_limit: the number of credits this scheduler can hold
> > from all jobs
> > + * @hang_limit: number of times to allow a job to hang before
> > dropping it.
> > + * This mechanism is DEPRECATED. Set it to 0.
> > + * @timeout: timeout value in jiffies for the scheduler
> > + * @timeout_wq: workqueue to use for timeout work. May be NULL.
> > + * If NULL, the system_wq is used.
> > + * @score: score atomic shared with other schedulers. May be NULL.
> > + * @name: name used for debugging
> > + * @dev: associated device. Used for debugging
> > + */
>
> This is weirdly formatted. Please align line breaks with the
> corresponding
> number of spaces.
>
> > +struct drm_sched_init_args {
> > + const struct drm_sched_backend_ops *ops;
> > + struct workqueue_struct *submit_wq;
> > + struct workqueue_struct *timeout_wq;
> > + u32 num_rqs;
> > + u32 credit_limit;
> > + unsigned int hang_limit;
> > + long timeout;
> > + atomic_t *score;
> > + const char *name;
> > + struct device *dev;
> > +};
> > +
> > int drm_sched_init(struct drm_gpu_scheduler *sched,
> > - const struct drm_sched_backend_ops *ops,
> > - struct workqueue_struct *submit_wq,
> > - u32 num_rqs, u32 credit_limit, unsigned int
> > hang_limit,
> > - long timeout, struct workqueue_struct
> > *timeout_wq,
> > - atomic_t *score, const char *name, struct
> > device *dev);
> > + const struct drm_sched_init_args *args);
> >
> > void drm_sched_fini(struct drm_gpu_scheduler *sched);
> > int drm_sched_job_init(struct drm_sched_job *job,
> > --
> > 2.47.1
> >
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2] drm/sched: Use struct for drm_sched_init() params
2025-01-29 15:18 ` Philipp Stanner
@ 2025-01-29 16:50 ` Danilo Krummrich
0 siblings, 0 replies; 23+ messages in thread
From: Danilo Krummrich @ 2025-01-29 16:50 UTC (permalink / raw)
To: phasta
Cc: Alex Deucher, Christian König, Xinhui Pan, David Airlie,
Simona Vetter, Lucas Stach, Russell King, Christian Gmeiner,
Frank Binns, Matt Coster, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Qiang Yu, Rob Clark, Sean Paul, Konrad Dybcio,
Abhinav Kumar, Dmitry Baryshkov, Marijn Suijten, Karol Herbst,
Lyude Paul, Boris Brezillon, Rob Herring, Steven Price,
Liviu Dudau, Matthew Brost, Melissa Wen, Maíra Canal,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi,
Sunil Khatri, Lijo Lazar, Hawking Zhang, Mario Limonciello,
Ma Jun, Yunxiang Li, amd-gfx, dri-devel, linux-kernel, etnaviv,
lima, linux-arm-msm, freedreno, nouveau, intel-xe
On Wed, Jan 29, 2025 at 04:18:30PM +0100, Philipp Stanner wrote:
> On Tue, 2025-01-28 at 15:56 +0100, Danilo Krummrich wrote:
> > On Tue, Jan 28, 2025 at 03:29:27PM +0100, Philipp Stanner wrote:
> > > diff --git a/drivers/gpu/drm/nouveau/nouveau_sched.c
> > > b/drivers/gpu/drm/nouveau/nouveau_sched.c
> > > index 4412f2711fb5..b5aac8eebfdd 100644
> > > --- a/drivers/gpu/drm/nouveau/nouveau_sched.c
> > > +++ b/drivers/gpu/drm/nouveau/nouveau_sched.c
> > > @@ -404,7 +404,15 @@ nouveau_sched_init(struct nouveau_sched
> > > *sched, struct nouveau_drm *drm,
> > > {
> > > struct drm_gpu_scheduler *drm_sched = &sched->base;
> > > struct drm_sched_entity *entity = &sched->entity;
> > > - const long timeout =
> > > msecs_to_jiffies(NOUVEAU_SCHED_JOB_TIMEOUT_MS);
> > > + const struct drm_sched_init_args args = {
> > > + .ops = &nouveau_sched_ops,
> > > + .submit_wq = wq,
> > > + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> > > + .credit_limit = credit_limit,
> > > + .timeout =
> > > msecs_to_jiffies(NOUVEAU_SCHED_JOB_TIMEOUT_MS),
> > > + .name = "nouveau_sched",
> > > + .dev = drm->dev->dev
> > > + };
> > > int ret;
> > >
> > > if (!wq) {
> > > @@ -416,10 +424,7 @@ nouveau_sched_init(struct nouveau_sched
> > > *sched, struct nouveau_drm *drm,
> > > sched->wq = wq;
>
> Do you want it set here
>
> args.submit_wq = wq;
>
> or below, outside the if-block? Should be the same AFAICS
Yeah, shouldn't make a difference. Personally, I'd prefer to set it once after
the if-block.
>
>
> >
> > This change breaks Nouveau, you need to set args.submit_wq here as
> > well.
>
> I overlooked the allocation below.
>
>
> P.
>
> >
> > > }
> > >
> > > - ret = drm_sched_init(drm_sched, &nouveau_sched_ops, wq,
> > > - NOUVEAU_SCHED_PRIORITY_COUNT,
> > > - credit_limit, 0, timeout,
> > > - NULL, NULL, "nouveau_sched", drm-
> > > >dev->dev);
> > > + ret = drm_sched_init(drm_sched, &args);
> > > if (ret)
> > > goto fail_wq;
> > >
^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2025-02-02 22:56 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-28 14:29 [PATCH v2] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
2025-01-28 14:56 ` Danilo Krummrich
2025-01-29 15:18 ` Philipp Stanner
2025-01-29 16:50 ` Danilo Krummrich
2025-01-28 15:29 ` ✓ CI.Patch_applied: success for drm/sched: Use struct for drm_sched_init() params (rev2) Patchwork
2025-01-28 15:29 ` ✗ CI.checkpatch: warning " Patchwork
2025-01-28 15:31 ` ✓ CI.KUnit: success " Patchwork
2025-01-28 15:47 ` ✓ CI.Build: " Patchwork
2025-01-28 15:49 ` ✗ CI.Hooks: failure " Patchwork
2025-01-28 15:50 ` ✓ CI.checksparse: success " Patchwork
2025-01-28 16:12 ` ✓ Xe.CI.BAT: " Patchwork
2025-01-28 16:17 ` [PATCH v2] drm/sched: Use struct for drm_sched_init() params Liviu Dudau
2025-01-28 21:49 ` Christian Gmeiner
2025-01-29 7:56 ` Boris Brezillon
2025-01-29 7:58 ` Christian Gmeiner
2025-01-29 3:32 ` Matthew Brost
2025-01-29 3:47 ` ✗ Xe.CI.Full: failure for drm/sched: Use struct for drm_sched_init() params (rev2) Patchwork
2025-01-29 7:59 ` [PATCH v2] drm/sched: Use struct for drm_sched_init() params Boris Brezillon
2025-01-29 8:09 ` Christian Gmeiner
2025-01-29 8:54 ` Frank Binns
2025-01-29 10:53 ` Maíra Canal
2025-01-29 12:39 ` Philipp Stanner
2025-01-29 14:53 ` Maíra Canal
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox