[PATCH 1/2] drm/panthor: Enable fdinfo for cycle and time measurements
kernel test robot
lkp at intel.com
Fri Mar 8 08:47:28 UTC 2024
Hi Adrián,
kernel test robot noticed the following build warnings:
[auto build test WARNING on e635b7eb7062b464bbd9795308b1a80eac0b01f5]
url: https://github.com/intel-lab-lkp/linux/commits/Adri-n-Larumbe/drm-panthor-Enable-fdinfo-for-cycle-and-time-measurements/20240306-051418
base: e635b7eb7062b464bbd9795308b1a80eac0b01f5
patch link: https://lore.kernel.org/r/20240305211000.659103-2-adrian.larumbe%40collabora.com
patch subject: [PATCH 1/2] drm/panthor: Enable fdinfo for cycle and time measurements
config: loongarch-allmodconfig (https://download.01.org/0day-ci/archive/20240308/202403081627.Y50ZoOIS-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240308/202403081627.Y50ZoOIS-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202403081627.Y50ZoOIS-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/gpu/drm/panthor/panthor_sched.c:321: warning: Excess struct member 'runnable' description in 'panthor_scheduler'
drivers/gpu/drm/panthor/panthor_sched.c:321: warning: Excess struct member 'idle' description in 'panthor_scheduler'
drivers/gpu/drm/panthor/panthor_sched.c:321: warning: Excess struct member 'waiting' description in 'panthor_scheduler'
drivers/gpu/drm/panthor/panthor_sched.c:321: warning: Excess struct member 'has_ref' description in 'panthor_scheduler'
drivers/gpu/drm/panthor/panthor_sched.c:321: warning: Excess struct member 'in_progress' description in 'panthor_scheduler'
drivers/gpu/drm/panthor/panthor_sched.c:321: warning: Excess struct member 'stopped_groups' description in 'panthor_scheduler'
>> drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'nelem' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'mem' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'input' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'output' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'input_fw_va' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'output_fw_va' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'gpu_va' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'ref' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'gt' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'sync64' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'bo' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'offset' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'kmap' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'lock' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'id' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'seqno' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:480: warning: Excess struct member 'in_flight_jobs' description in 'panthor_queue'
drivers/gpu/drm/panthor/panthor_sched.c:670: warning: Function parameter or struct member 'max_fragment_cores' not described in 'panthor_group'
>> drivers/gpu/drm/panthor/panthor_sched.c:670: warning: Excess struct member 'bo' description in 'panthor_group'
>> drivers/gpu/drm/panthor/panthor_sched.c:670: warning: Excess struct member 'times_offset' description in 'panthor_group'
>> drivers/gpu/drm/panthor/panthor_sched.c:670: warning: Excess struct member 'data' description in 'panthor_group'
>> drivers/gpu/drm/panthor/panthor_sched.c:670: warning: Excess struct member 'lock' description in 'panthor_group'
drivers/gpu/drm/panthor/panthor_sched.c:800: warning: Excess struct member 'start' description in 'panthor_job'
drivers/gpu/drm/panthor/panthor_sched.c:800: warning: Excess struct member 'size' description in 'panthor_job'
drivers/gpu/drm/panthor/panthor_sched.c:800: warning: Excess struct member 'latest_flush' description in 'panthor_job'
drivers/gpu/drm/panthor/panthor_sched.c:800: warning: Excess struct member 'start' description in 'panthor_job'
drivers/gpu/drm/panthor/panthor_sched.c:800: warning: Excess struct member 'end' description in 'panthor_job'
drivers/gpu/drm/panthor/panthor_sched.c:1043: warning: Cannot understand * @cs_slot_reset_locked() - Reset a queue slot
on line 1043 - I thought it was a doc line
drivers/gpu/drm/panthor/panthor_sched.c:1645: warning: expecting prototype for panthor_sched_process_global_irq(). Prototype was for sched_process_global_irq_locked() instead
drivers/gpu/drm/panthor/panthor_sched.c:1687: warning: Function parameter or struct member 'ptdev' not described in 'panthor_sched_report_fw_events'
drivers/gpu/drm/panthor/panthor_sched.c:1687: warning: Function parameter or struct member 'events' not described in 'panthor_sched_report_fw_events'
drivers/gpu/drm/panthor/panthor_sched.c:1711: warning: Cannot understand */
on line 1711 - I thought it was a doc line
drivers/gpu/drm/panthor/panthor_sched.c:2583: warning: Function parameter or struct member 'ptdev' not described in 'panthor_sched_report_mmu_fault'
vim +480 drivers/gpu/drm/panthor/panthor_sched.c
de85488138247d Boris Brezillon 2024-02-29 396
de85488138247d Boris Brezillon 2024-02-29 397 /** @ringbuf: Command stream ring-buffer. */
93e3ba65963905 Adrián Larumbe 2024-03-05 398 struct {
93e3ba65963905 Adrián Larumbe 2024-03-05 399 /** @ringbuf: Kernel BO that holds ring buffer. */
93e3ba65963905 Adrián Larumbe 2024-03-05 400 struct panthor_kernel_bo *bo;
93e3ba65963905 Adrián Larumbe 2024-03-05 401
93e3ba65963905 Adrián Larumbe 2024-03-05 402 /** @nelem: Number of slots in the ring buffer. */
93e3ba65963905 Adrián Larumbe 2024-03-05 403 unsigned int nelem;
93e3ba65963905 Adrián Larumbe 2024-03-05 404 } ringbuf;
de85488138247d Boris Brezillon 2024-02-29 405
de85488138247d Boris Brezillon 2024-02-29 406 /** @iface: Firmware interface. */
de85488138247d Boris Brezillon 2024-02-29 407 struct {
de85488138247d Boris Brezillon 2024-02-29 408 /** @mem: FW memory allocated for this interface. */
de85488138247d Boris Brezillon 2024-02-29 409 struct panthor_kernel_bo *mem;
de85488138247d Boris Brezillon 2024-02-29 410
de85488138247d Boris Brezillon 2024-02-29 411 /** @input: Input interface. */
de85488138247d Boris Brezillon 2024-02-29 412 struct panthor_fw_ringbuf_input_iface *input;
de85488138247d Boris Brezillon 2024-02-29 413
de85488138247d Boris Brezillon 2024-02-29 414 /** @output: Output interface. */
de85488138247d Boris Brezillon 2024-02-29 415 const struct panthor_fw_ringbuf_output_iface *output;
de85488138247d Boris Brezillon 2024-02-29 416
de85488138247d Boris Brezillon 2024-02-29 417 /** @input_fw_va: FW virtual address of the input interface buffer. */
de85488138247d Boris Brezillon 2024-02-29 418 u32 input_fw_va;
de85488138247d Boris Brezillon 2024-02-29 419
de85488138247d Boris Brezillon 2024-02-29 420 /** @output_fw_va: FW virtual address of the output interface buffer. */
de85488138247d Boris Brezillon 2024-02-29 421 u32 output_fw_va;
de85488138247d Boris Brezillon 2024-02-29 422 } iface;
de85488138247d Boris Brezillon 2024-02-29 423
de85488138247d Boris Brezillon 2024-02-29 424 /**
de85488138247d Boris Brezillon 2024-02-29 425 * @syncwait: Stores information about the synchronization object this
de85488138247d Boris Brezillon 2024-02-29 426 * queue is waiting on.
de85488138247d Boris Brezillon 2024-02-29 427 */
de85488138247d Boris Brezillon 2024-02-29 428 struct {
de85488138247d Boris Brezillon 2024-02-29 429 /** @gpu_va: GPU address of the synchronization object. */
de85488138247d Boris Brezillon 2024-02-29 430 u64 gpu_va;
de85488138247d Boris Brezillon 2024-02-29 431
de85488138247d Boris Brezillon 2024-02-29 432 /** @ref: Reference value to compare against. */
de85488138247d Boris Brezillon 2024-02-29 433 u64 ref;
de85488138247d Boris Brezillon 2024-02-29 434
de85488138247d Boris Brezillon 2024-02-29 435 /** @gt: True if this is a greater-than test. */
de85488138247d Boris Brezillon 2024-02-29 436 bool gt;
de85488138247d Boris Brezillon 2024-02-29 437
de85488138247d Boris Brezillon 2024-02-29 438 /** @sync64: True if this is a 64-bit sync object. */
de85488138247d Boris Brezillon 2024-02-29 439 bool sync64;
de85488138247d Boris Brezillon 2024-02-29 440
de85488138247d Boris Brezillon 2024-02-29 441 /** @bo: Buffer object holding the synchronization object. */
de85488138247d Boris Brezillon 2024-02-29 442 struct drm_gem_object *obj;
de85488138247d Boris Brezillon 2024-02-29 443
de85488138247d Boris Brezillon 2024-02-29 444 /** @offset: Offset of the synchronization object inside @bo. */
de85488138247d Boris Brezillon 2024-02-29 445 u64 offset;
de85488138247d Boris Brezillon 2024-02-29 446
de85488138247d Boris Brezillon 2024-02-29 447 /**
de85488138247d Boris Brezillon 2024-02-29 448 * @kmap: Kernel mapping of the buffer object holding the
de85488138247d Boris Brezillon 2024-02-29 449 * synchronization object.
de85488138247d Boris Brezillon 2024-02-29 450 */
de85488138247d Boris Brezillon 2024-02-29 451 void *kmap;
de85488138247d Boris Brezillon 2024-02-29 452 } syncwait;
de85488138247d Boris Brezillon 2024-02-29 453
de85488138247d Boris Brezillon 2024-02-29 454 /** @fence_ctx: Fence context fields. */
de85488138247d Boris Brezillon 2024-02-29 455 struct {
de85488138247d Boris Brezillon 2024-02-29 456 /** @lock: Used to protect access to all fences allocated by this context. */
de85488138247d Boris Brezillon 2024-02-29 457 spinlock_t lock;
de85488138247d Boris Brezillon 2024-02-29 458
de85488138247d Boris Brezillon 2024-02-29 459 /**
de85488138247d Boris Brezillon 2024-02-29 460 * @id: Fence context ID.
de85488138247d Boris Brezillon 2024-02-29 461 *
de85488138247d Boris Brezillon 2024-02-29 462 * Allocated with dma_fence_context_alloc().
de85488138247d Boris Brezillon 2024-02-29 463 */
de85488138247d Boris Brezillon 2024-02-29 464 u64 id;
de85488138247d Boris Brezillon 2024-02-29 465
de85488138247d Boris Brezillon 2024-02-29 466 /** @seqno: Sequence number of the last initialized fence. */
de85488138247d Boris Brezillon 2024-02-29 467 atomic64_t seqno;
de85488138247d Boris Brezillon 2024-02-29 468
de85488138247d Boris Brezillon 2024-02-29 469 /**
de85488138247d Boris Brezillon 2024-02-29 470 * @in_flight_jobs: List containing all in-flight jobs.
de85488138247d Boris Brezillon 2024-02-29 471 *
de85488138247d Boris Brezillon 2024-02-29 472 * Used to keep track and signal panthor_job::done_fence when the
de85488138247d Boris Brezillon 2024-02-29 473 * synchronization object attached to the queue is signaled.
de85488138247d Boris Brezillon 2024-02-29 474 */
de85488138247d Boris Brezillon 2024-02-29 475 struct list_head in_flight_jobs;
de85488138247d Boris Brezillon 2024-02-29 476 } fence_ctx;
93e3ba65963905 Adrián Larumbe 2024-03-05 477
93e3ba65963905 Adrián Larumbe 2024-03-05 478 /** @time_offset: Offset of fdinfo stats structs in queue's syncobj. */
93e3ba65963905 Adrián Larumbe 2024-03-05 479 unsigned long time_offset;
de85488138247d Boris Brezillon 2024-02-29 @480 };
de85488138247d Boris Brezillon 2024-02-29 481
de85488138247d Boris Brezillon 2024-02-29 482 /**
de85488138247d Boris Brezillon 2024-02-29 483 * enum panthor_group_state - Scheduling group state.
de85488138247d Boris Brezillon 2024-02-29 484 */
de85488138247d Boris Brezillon 2024-02-29 485 enum panthor_group_state {
de85488138247d Boris Brezillon 2024-02-29 486 /** @PANTHOR_CS_GROUP_CREATED: Group was created, but not scheduled yet. */
de85488138247d Boris Brezillon 2024-02-29 487 PANTHOR_CS_GROUP_CREATED,
de85488138247d Boris Brezillon 2024-02-29 488
de85488138247d Boris Brezillon 2024-02-29 489 /** @PANTHOR_CS_GROUP_ACTIVE: Group is currently scheduled. */
de85488138247d Boris Brezillon 2024-02-29 490 PANTHOR_CS_GROUP_ACTIVE,
de85488138247d Boris Brezillon 2024-02-29 491
de85488138247d Boris Brezillon 2024-02-29 492 /**
de85488138247d Boris Brezillon 2024-02-29 493 * @PANTHOR_CS_GROUP_SUSPENDED: Group was scheduled at least once, but is
de85488138247d Boris Brezillon 2024-02-29 494 * inactive/suspended right now.
de85488138247d Boris Brezillon 2024-02-29 495 */
de85488138247d Boris Brezillon 2024-02-29 496 PANTHOR_CS_GROUP_SUSPENDED,
de85488138247d Boris Brezillon 2024-02-29 497
de85488138247d Boris Brezillon 2024-02-29 498 /**
de85488138247d Boris Brezillon 2024-02-29 499 * @PANTHOR_CS_GROUP_TERMINATED: Group was terminated.
de85488138247d Boris Brezillon 2024-02-29 500 *
de85488138247d Boris Brezillon 2024-02-29 501 * Can no longer be scheduled. The only allowed action is a destruction.
de85488138247d Boris Brezillon 2024-02-29 502 */
de85488138247d Boris Brezillon 2024-02-29 503 PANTHOR_CS_GROUP_TERMINATED,
de85488138247d Boris Brezillon 2024-02-29 504 };
de85488138247d Boris Brezillon 2024-02-29 505
de85488138247d Boris Brezillon 2024-02-29 506 /**
de85488138247d Boris Brezillon 2024-02-29 507 * struct panthor_group - Scheduling group object
de85488138247d Boris Brezillon 2024-02-29 508 */
de85488138247d Boris Brezillon 2024-02-29 509 struct panthor_group {
de85488138247d Boris Brezillon 2024-02-29 510 /** @refcount: Reference count */
de85488138247d Boris Brezillon 2024-02-29 511 struct kref refcount;
de85488138247d Boris Brezillon 2024-02-29 512
de85488138247d Boris Brezillon 2024-02-29 513 /** @ptdev: Device. */
de85488138247d Boris Brezillon 2024-02-29 514 struct panthor_device *ptdev;
de85488138247d Boris Brezillon 2024-02-29 515
de85488138247d Boris Brezillon 2024-02-29 516 /** @vm: VM bound to the group. */
de85488138247d Boris Brezillon 2024-02-29 517 struct panthor_vm *vm;
de85488138247d Boris Brezillon 2024-02-29 518
de85488138247d Boris Brezillon 2024-02-29 519 /** @compute_core_mask: Mask of shader cores that can be used for compute jobs. */
de85488138247d Boris Brezillon 2024-02-29 520 u64 compute_core_mask;
de85488138247d Boris Brezillon 2024-02-29 521
de85488138247d Boris Brezillon 2024-02-29 522 /** @fragment_core_mask: Mask of shader cores that can be used for fragment jobs. */
de85488138247d Boris Brezillon 2024-02-29 523 u64 fragment_core_mask;
de85488138247d Boris Brezillon 2024-02-29 524
de85488138247d Boris Brezillon 2024-02-29 525 /** @tiler_core_mask: Mask of tiler cores that can be used for tiler jobs. */
de85488138247d Boris Brezillon 2024-02-29 526 u64 tiler_core_mask;
de85488138247d Boris Brezillon 2024-02-29 527
de85488138247d Boris Brezillon 2024-02-29 528 /** @max_compute_cores: Maximum number of shader cores used for compute jobs. */
de85488138247d Boris Brezillon 2024-02-29 529 u8 max_compute_cores;
de85488138247d Boris Brezillon 2024-02-29 530
de85488138247d Boris Brezillon 2024-02-29 531 /** @max_compute_cores: Maximum number of shader cores used for fragment jobs. */
de85488138247d Boris Brezillon 2024-02-29 532 u8 max_fragment_cores;
de85488138247d Boris Brezillon 2024-02-29 533
de85488138247d Boris Brezillon 2024-02-29 534 /** @max_tiler_cores: Maximum number of tiler cores used for tiler jobs. */
de85488138247d Boris Brezillon 2024-02-29 535 u8 max_tiler_cores;
de85488138247d Boris Brezillon 2024-02-29 536
de85488138247d Boris Brezillon 2024-02-29 537 /** @priority: Group priority (check panthor_csg_priority). */
de85488138247d Boris Brezillon 2024-02-29 538 u8 priority;
de85488138247d Boris Brezillon 2024-02-29 539
de85488138247d Boris Brezillon 2024-02-29 540 /** @blocked_queues: Bitmask reflecting the blocked queues. */
de85488138247d Boris Brezillon 2024-02-29 541 u32 blocked_queues;
de85488138247d Boris Brezillon 2024-02-29 542
de85488138247d Boris Brezillon 2024-02-29 543 /** @idle_queues: Bitmask reflecting the idle queues. */
de85488138247d Boris Brezillon 2024-02-29 544 u32 idle_queues;
de85488138247d Boris Brezillon 2024-02-29 545
de85488138247d Boris Brezillon 2024-02-29 546 /** @fatal_lock: Lock used to protect access to fatal fields. */
de85488138247d Boris Brezillon 2024-02-29 547 spinlock_t fatal_lock;
de85488138247d Boris Brezillon 2024-02-29 548
de85488138247d Boris Brezillon 2024-02-29 549 /** @fatal_queues: Bitmask reflecting the queues that hit a fatal exception. */
de85488138247d Boris Brezillon 2024-02-29 550 u32 fatal_queues;
de85488138247d Boris Brezillon 2024-02-29 551
de85488138247d Boris Brezillon 2024-02-29 552 /** @tiler_oom: Mask of queues that have a tiler OOM event to process. */
de85488138247d Boris Brezillon 2024-02-29 553 atomic_t tiler_oom;
de85488138247d Boris Brezillon 2024-02-29 554
de85488138247d Boris Brezillon 2024-02-29 555 /** @queue_count: Number of queues in this group. */
de85488138247d Boris Brezillon 2024-02-29 556 u32 queue_count;
de85488138247d Boris Brezillon 2024-02-29 557
de85488138247d Boris Brezillon 2024-02-29 558 /** @queues: Queues owned by this group. */
de85488138247d Boris Brezillon 2024-02-29 559 struct panthor_queue *queues[MAX_CS_PER_CSG];
de85488138247d Boris Brezillon 2024-02-29 560
de85488138247d Boris Brezillon 2024-02-29 561 /**
de85488138247d Boris Brezillon 2024-02-29 562 * @csg_id: ID of the FW group slot.
de85488138247d Boris Brezillon 2024-02-29 563 *
de85488138247d Boris Brezillon 2024-02-29 564 * -1 when the group is not scheduled/active.
de85488138247d Boris Brezillon 2024-02-29 565 */
de85488138247d Boris Brezillon 2024-02-29 566 int csg_id;
de85488138247d Boris Brezillon 2024-02-29 567
de85488138247d Boris Brezillon 2024-02-29 568 /**
de85488138247d Boris Brezillon 2024-02-29 569 * @destroyed: True when the group has been destroyed.
de85488138247d Boris Brezillon 2024-02-29 570 *
de85488138247d Boris Brezillon 2024-02-29 571 * If a group is destroyed it becomes useless: no further jobs can be submitted
de85488138247d Boris Brezillon 2024-02-29 572 * to its queues. We simply wait for all references to be dropped so we can
de85488138247d Boris Brezillon 2024-02-29 573 * release the group object.
de85488138247d Boris Brezillon 2024-02-29 574 */
de85488138247d Boris Brezillon 2024-02-29 575 bool destroyed;
de85488138247d Boris Brezillon 2024-02-29 576
de85488138247d Boris Brezillon 2024-02-29 577 /**
de85488138247d Boris Brezillon 2024-02-29 578 * @timedout: True when a timeout occurred on any of the queues owned by
de85488138247d Boris Brezillon 2024-02-29 579 * this group.
de85488138247d Boris Brezillon 2024-02-29 580 *
de85488138247d Boris Brezillon 2024-02-29 581 * Timeouts can be reported by drm_sched or by the FW. In any case, any
de85488138247d Boris Brezillon 2024-02-29 582 * timeout situation is unrecoverable, and the group becomes useless.
de85488138247d Boris Brezillon 2024-02-29 583 * We simply wait for all references to be dropped so we can release the
de85488138247d Boris Brezillon 2024-02-29 584 * group object.
de85488138247d Boris Brezillon 2024-02-29 585 */
de85488138247d Boris Brezillon 2024-02-29 586 bool timedout;
de85488138247d Boris Brezillon 2024-02-29 587
de85488138247d Boris Brezillon 2024-02-29 588 /**
de85488138247d Boris Brezillon 2024-02-29 589 * @syncobjs: Pool of per-queue synchronization objects.
de85488138247d Boris Brezillon 2024-02-29 590 *
de85488138247d Boris Brezillon 2024-02-29 591 * One sync object per queue. The position of the sync object is
de85488138247d Boris Brezillon 2024-02-29 592 * determined by the queue index.
de85488138247d Boris Brezillon 2024-02-29 593 */
93e3ba65963905 Adrián Larumbe 2024-03-05 594
93e3ba65963905 Adrián Larumbe 2024-03-05 595 struct {
93e3ba65963905 Adrián Larumbe 2024-03-05 596 /** @bo: Kernel BO holding the sync objects. */
93e3ba65963905 Adrián Larumbe 2024-03-05 597 struct panthor_kernel_bo *bo;
93e3ba65963905 Adrián Larumbe 2024-03-05 598
93e3ba65963905 Adrián Larumbe 2024-03-05 599 /** @times_offset: Beginning of time stats after objects of sync pool. */
93e3ba65963905 Adrián Larumbe 2024-03-05 600 size_t times_offset;
93e3ba65963905 Adrián Larumbe 2024-03-05 601 } syncobjs;
93e3ba65963905 Adrián Larumbe 2024-03-05 602
93e3ba65963905 Adrián Larumbe 2024-03-05 603 /** @fdinfo: Per-file total cycle and timestamp values reference. */
93e3ba65963905 Adrián Larumbe 2024-03-05 604 struct {
93e3ba65963905 Adrián Larumbe 2024-03-05 605 /** @data: Pointer to actual per-file sample data. */
93e3ba65963905 Adrián Larumbe 2024-03-05 606 struct panthor_gpu_usage *data;
93e3ba65963905 Adrián Larumbe 2024-03-05 607
93e3ba65963905 Adrián Larumbe 2024-03-05 608 /**
93e3ba65963905 Adrián Larumbe 2024-03-05 609 * @lock: Mutex to govern concurrent access from drm file's fdinfo callback
93e3ba65963905 Adrián Larumbe 2024-03-05 610 * and job post-completion processing function
93e3ba65963905 Adrián Larumbe 2024-03-05 611 */
93e3ba65963905 Adrián Larumbe 2024-03-05 612 struct mutex lock;
93e3ba65963905 Adrián Larumbe 2024-03-05 613 } fdinfo;
de85488138247d Boris Brezillon 2024-02-29 614
de85488138247d Boris Brezillon 2024-02-29 615 /** @state: Group state. */
de85488138247d Boris Brezillon 2024-02-29 616 enum panthor_group_state state;
de85488138247d Boris Brezillon 2024-02-29 617
de85488138247d Boris Brezillon 2024-02-29 618 /**
de85488138247d Boris Brezillon 2024-02-29 619 * @suspend_buf: Suspend buffer.
de85488138247d Boris Brezillon 2024-02-29 620 *
de85488138247d Boris Brezillon 2024-02-29 621 * Stores the state of the group and its queues when a group is suspended.
de85488138247d Boris Brezillon 2024-02-29 622 * Used at resume time to restore the group in its previous state.
de85488138247d Boris Brezillon 2024-02-29 623 *
de85488138247d Boris Brezillon 2024-02-29 624 * The size of the suspend buffer is exposed through the FW interface.
de85488138247d Boris Brezillon 2024-02-29 625 */
de85488138247d Boris Brezillon 2024-02-29 626 struct panthor_kernel_bo *suspend_buf;
de85488138247d Boris Brezillon 2024-02-29 627
de85488138247d Boris Brezillon 2024-02-29 628 /**
de85488138247d Boris Brezillon 2024-02-29 629 * @protm_suspend_buf: Protection mode suspend buffer.
de85488138247d Boris Brezillon 2024-02-29 630 *
de85488138247d Boris Brezillon 2024-02-29 631 * Stores the state of the group and its queues when a group that's in
de85488138247d Boris Brezillon 2024-02-29 632 * protection mode is suspended.
de85488138247d Boris Brezillon 2024-02-29 633 *
de85488138247d Boris Brezillon 2024-02-29 634 * Used at resume time to restore the group in its previous state.
de85488138247d Boris Brezillon 2024-02-29 635 *
de85488138247d Boris Brezillon 2024-02-29 636 * The size of the protection mode suspend buffer is exposed through the
de85488138247d Boris Brezillon 2024-02-29 637 * FW interface.
de85488138247d Boris Brezillon 2024-02-29 638 */
de85488138247d Boris Brezillon 2024-02-29 639 struct panthor_kernel_bo *protm_suspend_buf;
de85488138247d Boris Brezillon 2024-02-29 640
de85488138247d Boris Brezillon 2024-02-29 641 /** @sync_upd_work: Work used to check/signal job fences. */
de85488138247d Boris Brezillon 2024-02-29 642 struct work_struct sync_upd_work;
de85488138247d Boris Brezillon 2024-02-29 643
de85488138247d Boris Brezillon 2024-02-29 644 /** @tiler_oom_work: Work used to process tiler OOM events happening on this group. */
de85488138247d Boris Brezillon 2024-02-29 645 struct work_struct tiler_oom_work;
de85488138247d Boris Brezillon 2024-02-29 646
de85488138247d Boris Brezillon 2024-02-29 647 /** @term_work: Work used to finish the group termination procedure. */
de85488138247d Boris Brezillon 2024-02-29 648 struct work_struct term_work;
de85488138247d Boris Brezillon 2024-02-29 649
de85488138247d Boris Brezillon 2024-02-29 650 /**
de85488138247d Boris Brezillon 2024-02-29 651 * @release_work: Work used to release group resources.
de85488138247d Boris Brezillon 2024-02-29 652 *
de85488138247d Boris Brezillon 2024-02-29 653 * We need to postpone the group release to avoid a deadlock when
de85488138247d Boris Brezillon 2024-02-29 654 * the last ref is released in the tick work.
de85488138247d Boris Brezillon 2024-02-29 655 */
de85488138247d Boris Brezillon 2024-02-29 656 struct work_struct release_work;
de85488138247d Boris Brezillon 2024-02-29 657
de85488138247d Boris Brezillon 2024-02-29 658 /**
de85488138247d Boris Brezillon 2024-02-29 659 * @run_node: Node used to insert the group in the
de85488138247d Boris Brezillon 2024-02-29 660 * panthor_group::groups::{runnable,idle} and
de85488138247d Boris Brezillon 2024-02-29 661 * panthor_group::reset.stopped_groups lists.
de85488138247d Boris Brezillon 2024-02-29 662 */
de85488138247d Boris Brezillon 2024-02-29 663 struct list_head run_node;
de85488138247d Boris Brezillon 2024-02-29 664
de85488138247d Boris Brezillon 2024-02-29 665 /**
de85488138247d Boris Brezillon 2024-02-29 666 * @wait_node: Node used to insert the group in the
de85488138247d Boris Brezillon 2024-02-29 667 * panthor_group::groups::waiting list.
de85488138247d Boris Brezillon 2024-02-29 668 */
de85488138247d Boris Brezillon 2024-02-29 669 struct list_head wait_node;
de85488138247d Boris Brezillon 2024-02-29 @670 };
de85488138247d Boris Brezillon 2024-02-29 671
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
More information about the dri-devel
mailing list