* [radeon-alex:amd-staging-drm-next-navi14 56/56] drivers/gpu/drm/panfrost/panfrost_job.c:390:31: sparse: error: not enough arguments for function drm_sched_stop
@ 2019-07-04 22:04 kbuild test robot
0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2019-07-04 22:04 UTC (permalink / raw)
To: Alex Deucher; +Cc: kbuild-all, dri-devel
[-- Attachment #1: Type: text/plain, Size: 14911 bytes --]
tree: git://people.freedesktop.org/~agd5f/linux.git amd-staging-drm-next-navi14
head: a40514b64b37d96b20c25841227302d4aab28afb
commit: a40514b64b37d96b20c25841227302d4aab28afb [56/56] drm/amdgpu: consolidate navi14 IP init
reproduce:
# apt-get install sparse
# sparse version:
git checkout a40514b64b37d96b20c25841227302d4aab28afb
make ARCH=x86_64 allmodconfig
make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/gpu/drm/panfrost/panfrost_job.c:390:31: sparse: error: not enough arguments for function drm_sched_stop
vim +390 drivers/gpu/drm/panfrost/panfrost_job.c
f3ba91228e8e91 Rob Herring 2018-09-10 365
f3ba91228e8e91 Rob Herring 2018-09-10 366 static void panfrost_job_timedout(struct drm_sched_job *sched_job)
f3ba91228e8e91 Rob Herring 2018-09-10 367 {
f3ba91228e8e91 Rob Herring 2018-09-10 368 struct panfrost_job *job = to_panfrost_job(sched_job);
f3ba91228e8e91 Rob Herring 2018-09-10 369 struct panfrost_device *pfdev = job->pfdev;
f3ba91228e8e91 Rob Herring 2018-09-10 370 int js = panfrost_job_get_slot(job);
f3ba91228e8e91 Rob Herring 2018-09-10 371 int i;
f3ba91228e8e91 Rob Herring 2018-09-10 372
f3ba91228e8e91 Rob Herring 2018-09-10 373 /*
f3ba91228e8e91 Rob Herring 2018-09-10 374 * If the GPU managed to complete this jobs fence, the timeout is
f3ba91228e8e91 Rob Herring 2018-09-10 375 * spurious. Bail out.
f3ba91228e8e91 Rob Herring 2018-09-10 376 */
f3ba91228e8e91 Rob Herring 2018-09-10 377 if (dma_fence_is_signaled(job->done_fence))
f3ba91228e8e91 Rob Herring 2018-09-10 378 return;
f3ba91228e8e91 Rob Herring 2018-09-10 379
f3ba91228e8e91 Rob Herring 2018-09-10 380 dev_err(pfdev->dev, "gpu sched timeout, js=%d, status=0x%x, head=0x%x, tail=0x%x, sched_job=%p",
f3ba91228e8e91 Rob Herring 2018-09-10 381 js,
f3ba91228e8e91 Rob Herring 2018-09-10 382 job_read(pfdev, JS_STATUS(js)),
f3ba91228e8e91 Rob Herring 2018-09-10 383 job_read(pfdev, JS_HEAD_LO(js)),
f3ba91228e8e91 Rob Herring 2018-09-10 384 job_read(pfdev, JS_TAIL_LO(js)),
f3ba91228e8e91 Rob Herring 2018-09-10 385 sched_job);
f3ba91228e8e91 Rob Herring 2018-09-10 386
aa20236784ab3d Tomeu Vizoso 2019-04-18 387 mutex_lock(&pfdev->reset_lock);
aa20236784ab3d Tomeu Vizoso 2019-04-18 388
f3ba91228e8e91 Rob Herring 2018-09-10 389 for (i = 0; i < NUM_JOB_SLOTS; i++)
f3ba91228e8e91 Rob Herring 2018-09-10 @390 drm_sched_stop(&pfdev->js->queue[i].sched);
f3ba91228e8e91 Rob Herring 2018-09-10 391
f3ba91228e8e91 Rob Herring 2018-09-10 392 if (sched_job)
f3ba91228e8e91 Rob Herring 2018-09-10 393 drm_sched_increase_karma(sched_job);
f3ba91228e8e91 Rob Herring 2018-09-10 394
f3ba91228e8e91 Rob Herring 2018-09-10 395 /* panfrost_core_dump(pfdev); */
f3ba91228e8e91 Rob Herring 2018-09-10 396
f3ba91228e8e91 Rob Herring 2018-09-10 397 panfrost_devfreq_record_transition(pfdev, js);
f3ba91228e8e91 Rob Herring 2018-09-10 398 panfrost_gpu_soft_reset(pfdev);
f3ba91228e8e91 Rob Herring 2018-09-10 399
f3ba91228e8e91 Rob Herring 2018-09-10 400 /* TODO: Re-enable all other address spaces */
f3ba91228e8e91 Rob Herring 2018-09-10 401 panfrost_mmu_enable(pfdev, 0);
f3ba91228e8e91 Rob Herring 2018-09-10 402 panfrost_gpu_power_on(pfdev);
f3ba91228e8e91 Rob Herring 2018-09-10 403 panfrost_job_enable_interrupts(pfdev);
f3ba91228e8e91 Rob Herring 2018-09-10 404
f3ba91228e8e91 Rob Herring 2018-09-10 405 for (i = 0; i < NUM_JOB_SLOTS; i++)
f3ba91228e8e91 Rob Herring 2018-09-10 406 drm_sched_resubmit_jobs(&pfdev->js->queue[i].sched);
f3ba91228e8e91 Rob Herring 2018-09-10 407
f3ba91228e8e91 Rob Herring 2018-09-10 408 /* restart scheduler after GPU is usable again */
f3ba91228e8e91 Rob Herring 2018-09-10 409 for (i = 0; i < NUM_JOB_SLOTS; i++)
f3ba91228e8e91 Rob Herring 2018-09-10 410 drm_sched_start(&pfdev->js->queue[i].sched, true);
aa20236784ab3d Tomeu Vizoso 2019-04-18 411
aa20236784ab3d Tomeu Vizoso 2019-04-18 412 mutex_unlock(&pfdev->reset_lock);
f3ba91228e8e91 Rob Herring 2018-09-10 413 }
f3ba91228e8e91 Rob Herring 2018-09-10 414
f3ba91228e8e91 Rob Herring 2018-09-10 415 static const struct drm_sched_backend_ops panfrost_sched_ops = {
f3ba91228e8e91 Rob Herring 2018-09-10 416 .dependency = panfrost_job_dependency,
f3ba91228e8e91 Rob Herring 2018-09-10 417 .run_job = panfrost_job_run,
f3ba91228e8e91 Rob Herring 2018-09-10 418 .timedout_job = panfrost_job_timedout,
f3ba91228e8e91 Rob Herring 2018-09-10 419 .free_job = panfrost_job_free
f3ba91228e8e91 Rob Herring 2018-09-10 420 };
f3ba91228e8e91 Rob Herring 2018-09-10 421
f3ba91228e8e91 Rob Herring 2018-09-10 422 static irqreturn_t panfrost_job_irq_handler(int irq, void *data)
f3ba91228e8e91 Rob Herring 2018-09-10 423 {
f3ba91228e8e91 Rob Herring 2018-09-10 424 struct panfrost_device *pfdev = data;
f3ba91228e8e91 Rob Herring 2018-09-10 425 u32 status = job_read(pfdev, JOB_INT_STAT);
f3ba91228e8e91 Rob Herring 2018-09-10 426 int j;
f3ba91228e8e91 Rob Herring 2018-09-10 427
f3ba91228e8e91 Rob Herring 2018-09-10 428 dev_dbg(pfdev->dev, "jobslot irq status=%x\n", status);
f3ba91228e8e91 Rob Herring 2018-09-10 429
f3ba91228e8e91 Rob Herring 2018-09-10 430 if (!status)
f3ba91228e8e91 Rob Herring 2018-09-10 431 return IRQ_NONE;
f3ba91228e8e91 Rob Herring 2018-09-10 432
f3ba91228e8e91 Rob Herring 2018-09-10 433 pm_runtime_mark_last_busy(pfdev->dev);
f3ba91228e8e91 Rob Herring 2018-09-10 434
f3ba91228e8e91 Rob Herring 2018-09-10 435 for (j = 0; status; j++) {
f3ba91228e8e91 Rob Herring 2018-09-10 436 u32 mask = MK_JS_MASK(j);
f3ba91228e8e91 Rob Herring 2018-09-10 437
f3ba91228e8e91 Rob Herring 2018-09-10 438 if (!(status & mask))
f3ba91228e8e91 Rob Herring 2018-09-10 439 continue;
f3ba91228e8e91 Rob Herring 2018-09-10 440
f3ba91228e8e91 Rob Herring 2018-09-10 441 job_write(pfdev, JOB_INT_CLEAR, mask);
f3ba91228e8e91 Rob Herring 2018-09-10 442
f3ba91228e8e91 Rob Herring 2018-09-10 443 if (status & JOB_INT_MASK_ERR(j)) {
f3ba91228e8e91 Rob Herring 2018-09-10 444 job_write(pfdev, JS_COMMAND_NEXT(j), JS_COMMAND_NOP);
f3ba91228e8e91 Rob Herring 2018-09-10 445
f3ba91228e8e91 Rob Herring 2018-09-10 446 dev_err(pfdev->dev, "js fault, js=%d, status=%s, head=0x%x, tail=0x%x",
f3ba91228e8e91 Rob Herring 2018-09-10 447 j,
f3ba91228e8e91 Rob Herring 2018-09-10 448 panfrost_exception_name(pfdev, job_read(pfdev, JS_STATUS(j))),
f3ba91228e8e91 Rob Herring 2018-09-10 449 job_read(pfdev, JS_HEAD_LO(j)),
f3ba91228e8e91 Rob Herring 2018-09-10 450 job_read(pfdev, JS_TAIL_LO(j)));
f3ba91228e8e91 Rob Herring 2018-09-10 451
f3ba91228e8e91 Rob Herring 2018-09-10 452 drm_sched_fault(&pfdev->js->queue[j].sched);
f3ba91228e8e91 Rob Herring 2018-09-10 453 }
f3ba91228e8e91 Rob Herring 2018-09-10 454
f3ba91228e8e91 Rob Herring 2018-09-10 455 if (status & JOB_INT_MASK_DONE(j)) {
f3ba91228e8e91 Rob Herring 2018-09-10 456 panfrost_devfreq_record_transition(pfdev, j);
f3ba91228e8e91 Rob Herring 2018-09-10 457 dma_fence_signal(pfdev->jobs[j]->done_fence);
f3ba91228e8e91 Rob Herring 2018-09-10 458 }
f3ba91228e8e91 Rob Herring 2018-09-10 459
f3ba91228e8e91 Rob Herring 2018-09-10 460 status &= ~mask;
f3ba91228e8e91 Rob Herring 2018-09-10 461 }
f3ba91228e8e91 Rob Herring 2018-09-10 462
f3ba91228e8e91 Rob Herring 2018-09-10 463 return IRQ_HANDLED;
f3ba91228e8e91 Rob Herring 2018-09-10 464 }
f3ba91228e8e91 Rob Herring 2018-09-10 465
f3ba91228e8e91 Rob Herring 2018-09-10 466 int panfrost_job_init(struct panfrost_device *pfdev)
f3ba91228e8e91 Rob Herring 2018-09-10 467 {
f3ba91228e8e91 Rob Herring 2018-09-10 468 struct panfrost_job_slot *js;
f3ba91228e8e91 Rob Herring 2018-09-10 469 int ret, j, irq;
f3ba91228e8e91 Rob Herring 2018-09-10 470
f3ba91228e8e91 Rob Herring 2018-09-10 471 pfdev->js = js = devm_kzalloc(pfdev->dev, sizeof(*js), GFP_KERNEL);
f3ba91228e8e91 Rob Herring 2018-09-10 472 if (!js)
f3ba91228e8e91 Rob Herring 2018-09-10 473 return -ENOMEM;
f3ba91228e8e91 Rob Herring 2018-09-10 474
f3ba91228e8e91 Rob Herring 2018-09-10 475 spin_lock_init(&js->job_lock);
f3ba91228e8e91 Rob Herring 2018-09-10 476
f3ba91228e8e91 Rob Herring 2018-09-10 477 irq = platform_get_irq_byname(to_platform_device(pfdev->dev), "job");
f3ba91228e8e91 Rob Herring 2018-09-10 478 if (irq <= 0)
f3ba91228e8e91 Rob Herring 2018-09-10 479 return -ENODEV;
f3ba91228e8e91 Rob Herring 2018-09-10 480
f3ba91228e8e91 Rob Herring 2018-09-10 481 ret = devm_request_irq(pfdev->dev, irq, panfrost_job_irq_handler,
f3ba91228e8e91 Rob Herring 2018-09-10 482 IRQF_SHARED, "job", pfdev);
f3ba91228e8e91 Rob Herring 2018-09-10 483 if (ret) {
f3ba91228e8e91 Rob Herring 2018-09-10 484 dev_err(pfdev->dev, "failed to request job irq");
f3ba91228e8e91 Rob Herring 2018-09-10 485 return ret;
f3ba91228e8e91 Rob Herring 2018-09-10 486 }
f3ba91228e8e91 Rob Herring 2018-09-10 487
f3ba91228e8e91 Rob Herring 2018-09-10 488 for (j = 0; j < NUM_JOB_SLOTS; j++) {
f3ba91228e8e91 Rob Herring 2018-09-10 489 js->queue[j].fence_context = dma_fence_context_alloc(1);
f3ba91228e8e91 Rob Herring 2018-09-10 490
f3ba91228e8e91 Rob Herring 2018-09-10 491 ret = drm_sched_init(&js->queue[j].sched,
f3ba91228e8e91 Rob Herring 2018-09-10 492 &panfrost_sched_ops,
f3ba91228e8e91 Rob Herring 2018-09-10 493 1, 0, msecs_to_jiffies(500),
f3ba91228e8e91 Rob Herring 2018-09-10 494 "pan_js");
f3ba91228e8e91 Rob Herring 2018-09-10 495 if (ret) {
f3ba91228e8e91 Rob Herring 2018-09-10 496 dev_err(pfdev->dev, "Failed to create scheduler: %d.", ret);
f3ba91228e8e91 Rob Herring 2018-09-10 497 goto err_sched;
f3ba91228e8e91 Rob Herring 2018-09-10 498 }
f3ba91228e8e91 Rob Herring 2018-09-10 499 }
f3ba91228e8e91 Rob Herring 2018-09-10 500
f3ba91228e8e91 Rob Herring 2018-09-10 501 panfrost_job_enable_interrupts(pfdev);
f3ba91228e8e91 Rob Herring 2018-09-10 502
f3ba91228e8e91 Rob Herring 2018-09-10 503 return 0;
f3ba91228e8e91 Rob Herring 2018-09-10 504
f3ba91228e8e91 Rob Herring 2018-09-10 505 err_sched:
f3ba91228e8e91 Rob Herring 2018-09-10 506 for (j--; j >= 0; j--)
f3ba91228e8e91 Rob Herring 2018-09-10 507 drm_sched_fini(&js->queue[j].sched);
f3ba91228e8e91 Rob Herring 2018-09-10 508
f3ba91228e8e91 Rob Herring 2018-09-10 509 return ret;
f3ba91228e8e91 Rob Herring 2018-09-10 510 }
f3ba91228e8e91 Rob Herring 2018-09-10 511
f3ba91228e8e91 Rob Herring 2018-09-10 512 void panfrost_job_fini(struct panfrost_device *pfdev)
f3ba91228e8e91 Rob Herring 2018-09-10 513 {
f3ba91228e8e91 Rob Herring 2018-09-10 514 struct panfrost_job_slot *js = pfdev->js;
f3ba91228e8e91 Rob Herring 2018-09-10 515 int j;
f3ba91228e8e91 Rob Herring 2018-09-10 516
f3ba91228e8e91 Rob Herring 2018-09-10 517 job_write(pfdev, JOB_INT_MASK, 0);
f3ba91228e8e91 Rob Herring 2018-09-10 518
f3ba91228e8e91 Rob Herring 2018-09-10 519 for (j = 0; j < NUM_JOB_SLOTS; j++)
f3ba91228e8e91 Rob Herring 2018-09-10 520 drm_sched_fini(&js->queue[j].sched);
f3ba91228e8e91 Rob Herring 2018-09-10 521
f3ba91228e8e91 Rob Herring 2018-09-10 522 }
f3ba91228e8e91 Rob Herring 2018-09-10 523
f3ba91228e8e91 Rob Herring 2018-09-10 524 int panfrost_job_open(struct panfrost_file_priv *panfrost_priv)
f3ba91228e8e91 Rob Herring 2018-09-10 525 {
f3ba91228e8e91 Rob Herring 2018-09-10 526 struct panfrost_device *pfdev = panfrost_priv->pfdev;
f3ba91228e8e91 Rob Herring 2018-09-10 527 struct panfrost_job_slot *js = pfdev->js;
f3ba91228e8e91 Rob Herring 2018-09-10 528 struct drm_sched_rq *rq;
f3ba91228e8e91 Rob Herring 2018-09-10 529 int ret, i;
f3ba91228e8e91 Rob Herring 2018-09-10 530
f3ba91228e8e91 Rob Herring 2018-09-10 531 for (i = 0; i < NUM_JOB_SLOTS; i++) {
f3ba91228e8e91 Rob Herring 2018-09-10 532 rq = &js->queue[i].sched.sched_rq[DRM_SCHED_PRIORITY_NORMAL];
f3ba91228e8e91 Rob Herring 2018-09-10 533 ret = drm_sched_entity_init(&panfrost_priv->sched_entity[i], &rq, 1, NULL);
f3ba91228e8e91 Rob Herring 2018-09-10 534 if (WARN_ON(ret))
f3ba91228e8e91 Rob Herring 2018-09-10 535 return ret;
f3ba91228e8e91 Rob Herring 2018-09-10 536 }
f3ba91228e8e91 Rob Herring 2018-09-10 537 return 0;
f3ba91228e8e91 Rob Herring 2018-09-10 538 }
f3ba91228e8e91 Rob Herring 2018-09-10 539
f3ba91228e8e91 Rob Herring 2018-09-10 540 void panfrost_job_close(struct panfrost_file_priv *panfrost_priv)
f3ba91228e8e91 Rob Herring 2018-09-10 541 {
f3ba91228e8e91 Rob Herring 2018-09-10 542 int i;
f3ba91228e8e91 Rob Herring 2018-09-10 543
f3ba91228e8e91 Rob Herring 2018-09-10 544 for (i = 0; i < NUM_JOB_SLOTS; i++)
f3ba91228e8e91 Rob Herring 2018-09-10 545 drm_sched_entity_destroy(&panfrost_priv->sched_entity[i]);
f3ba91228e8e91 Rob Herring 2018-09-10 546 }
f3ba91228e8e91 Rob Herring 2018-09-10 547
f3ba91228e8e91 Rob Herring 2018-09-10 548 int panfrost_job_is_idle(struct panfrost_device *pfdev)
f3ba91228e8e91 Rob Herring 2018-09-10 549 {
f3ba91228e8e91 Rob Herring 2018-09-10 550 struct panfrost_job_slot *js = pfdev->js;
f3ba91228e8e91 Rob Herring 2018-09-10 551 int i;
f3ba91228e8e91 Rob Herring 2018-09-10 552
f3ba91228e8e91 Rob Herring 2018-09-10 553 for (i = 0; i < NUM_JOB_SLOTS; i++) {
f3ba91228e8e91 Rob Herring 2018-09-10 554 /* If there are any jobs in the HW queue, we're not idle */
f3ba91228e8e91 Rob Herring 2018-09-10 555 if (atomic_read(&js->queue[i].sched.hw_rq_count))
f3ba91228e8e91 Rob Herring 2018-09-10 556 return false;
f3ba91228e8e91 Rob Herring 2018-09-10 557
f3ba91228e8e91 Rob Herring 2018-09-10 558 /* Check whether the hardware is idle */
f3ba91228e8e91 Rob Herring 2018-09-10 559 if (pfdev->devfreq.slot[i].busy)
f3ba91228e8e91 Rob Herring 2018-09-10 560 return false;
f3ba91228e8e91 Rob Herring 2018-09-10 561 }
f3ba91228e8e91 Rob Herring 2018-09-10 562
f3ba91228e8e91 Rob Herring 2018-09-10 563 return true;
f3ba91228e8e91 Rob Herring 2018-09-10 564 }
:::::: The code at line 390 was first introduced by commit
:::::: f3ba91228e8e917e5bd6c4b72bfe846933d17370 drm/panfrost: Add initial panfrost driver
:::::: TO: Rob Herring <robh@kernel.org>
:::::: CC: Rob Herring <robh@kernel.org>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 69488 bytes --]
[-- Attachment #3: Type: text/plain, Size: 159 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2019-07-04 22:04 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-04 22:04 [radeon-alex:amd-staging-drm-next-navi14 56/56] drivers/gpu/drm/panfrost/panfrost_job.c:390:31: sparse: error: not enough arguments for function drm_sched_stop kbuild test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.