All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Ashley Smith <ashley.smith@collabora.com>,
	Boris Brezillon <bbrezillon@kernel.org>,
	Steven Price <steven.price@arm.com>,
	Liviu Dudau <liviu.dudau@arm.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
	Heiko Stuebner <heiko@sntech.de>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
	kernel@collabora.com, Ashley Smith <ashley.smith@collabora.com>,
	Daniel Stone <daniels@collabora.com>,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] drm/panthor: Make the timeout per-queue instead of per-job
Date: Sat, 8 Mar 2025 23:31:42 +0800	[thread overview]
Message-ID: <202503082339.3TzIrrex-lkp@intel.com> (raw)
In-Reply-To: <20250307155556.173494-1-ashley.smith@collabora.com>

Hi Ashley,

kernel test robot noticed the following build warnings:

[auto build test WARNING on b72f66f22c0e39ae6684c43fead774c13db24e73]

url:    https://github.com/intel-lab-lkp/linux/commits/Ashley-Smith/drm-panthor-Make-the-timeout-per-queue-instead-of-per-job/20250307-235830
base:   b72f66f22c0e39ae6684c43fead774c13db24e73
patch link:    https://lore.kernel.org/r/20250307155556.173494-1-ashley.smith%40collabora.com
patch subject: [PATCH] drm/panthor: Make the timeout per-queue instead of per-job
config: i386-buildonly-randconfig-004-20250308 (https://download.01.org/0day-ci/archive/20250308/202503082339.3TzIrrex-lkp@intel.com/config)
compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250308/202503082339.3TzIrrex-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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202503082339.3TzIrrex-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/gpu/drm/panthor/panthor_sched.c:318: warning: Excess struct member 'runnable' description in 'panthor_scheduler'
   drivers/gpu/drm/panthor/panthor_sched.c:318: warning: Excess struct member 'idle' description in 'panthor_scheduler'
   drivers/gpu/drm/panthor/panthor_sched.c:318: warning: Excess struct member 'waiting' description in 'panthor_scheduler'
   drivers/gpu/drm/panthor/panthor_sched.c:318: warning: Excess struct member 'has_ref' description in 'panthor_scheduler'
   drivers/gpu/drm/panthor/panthor_sched.c:318: warning: Excess struct member 'in_progress' description in 'panthor_scheduler'
   drivers/gpu/drm/panthor/panthor_sched.c:318: warning: Excess struct member 'stopped_groups' description in 'panthor_scheduler'
>> drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'remaining' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'mem' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'input' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'output' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'input_fw_va' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'output_fw_va' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'gpu_va' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'ref' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'gt' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'sync64' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'bo' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'offset' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'kmap' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'lock' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'id' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'seqno' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'last_fence' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'in_flight_jobs' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'slots' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'slot_count' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:493: warning: Excess struct member 'seqno' description in 'panthor_queue'
   drivers/gpu/drm/panthor/panthor_sched.c:702: warning: Excess struct member 'data' description in 'panthor_group'
   drivers/gpu/drm/panthor/panthor_sched.c:838: warning: Excess struct member 'start' description in 'panthor_job'
   drivers/gpu/drm/panthor/panthor_sched.c:838: warning: Excess struct member 'size' description in 'panthor_job'
   drivers/gpu/drm/panthor/panthor_sched.c:838: warning: Excess struct member 'latest_flush' description in 'panthor_job'
   drivers/gpu/drm/panthor/panthor_sched.c:838: warning: Excess struct member 'start' description in 'panthor_job'
   drivers/gpu/drm/panthor/panthor_sched.c:838: warning: Excess struct member 'end' description in 'panthor_job'
   drivers/gpu/drm/panthor/panthor_sched.c:838: warning: Excess struct member 'mask' description in 'panthor_job'
   drivers/gpu/drm/panthor/panthor_sched.c:838: warning: Excess struct member 'slot' description in 'panthor_job'
   drivers/gpu/drm/panthor/panthor_sched.c:1832: warning: Function parameter or struct member 'ptdev' not described in 'panthor_sched_report_fw_events'
   drivers/gpu/drm/panthor/panthor_sched.c:1832: warning: Function parameter or struct member 'events' not described in 'panthor_sched_report_fw_events'
   drivers/gpu/drm/panthor/panthor_sched.c:2712: warning: Function parameter or struct member 'ptdev' not described in 'panthor_sched_report_mmu_fault'


vim +493 drivers/gpu/drm/panthor/panthor_sched.c

de85488138247d0 Boris Brezillon 2024-02-29  147  
de85488138247d0 Boris Brezillon 2024-02-29  148  /**
de85488138247d0 Boris Brezillon 2024-02-29  149   * struct panthor_scheduler - Object used to manage the scheduler
de85488138247d0 Boris Brezillon 2024-02-29  150   */
de85488138247d0 Boris Brezillon 2024-02-29  151  struct panthor_scheduler {
de85488138247d0 Boris Brezillon 2024-02-29  152  	/** @ptdev: Device. */
de85488138247d0 Boris Brezillon 2024-02-29  153  	struct panthor_device *ptdev;
de85488138247d0 Boris Brezillon 2024-02-29  154  
de85488138247d0 Boris Brezillon 2024-02-29  155  	/**
de85488138247d0 Boris Brezillon 2024-02-29  156  	 * @wq: Workqueue used by our internal scheduler logic and
de85488138247d0 Boris Brezillon 2024-02-29  157  	 * drm_gpu_scheduler.
de85488138247d0 Boris Brezillon 2024-02-29  158  	 *
de85488138247d0 Boris Brezillon 2024-02-29  159  	 * Used for the scheduler tick, group update or other kind of FW
de85488138247d0 Boris Brezillon 2024-02-29  160  	 * event processing that can't be handled in the threaded interrupt
de85488138247d0 Boris Brezillon 2024-02-29  161  	 * path. Also passed to the drm_gpu_scheduler instances embedded
de85488138247d0 Boris Brezillon 2024-02-29  162  	 * in panthor_queue.
de85488138247d0 Boris Brezillon 2024-02-29  163  	 */
de85488138247d0 Boris Brezillon 2024-02-29  164  	struct workqueue_struct *wq;
de85488138247d0 Boris Brezillon 2024-02-29  165  
de85488138247d0 Boris Brezillon 2024-02-29  166  	/**
de85488138247d0 Boris Brezillon 2024-02-29  167  	 * @heap_alloc_wq: Workqueue used to schedule tiler_oom works.
de85488138247d0 Boris Brezillon 2024-02-29  168  	 *
de85488138247d0 Boris Brezillon 2024-02-29  169  	 * We have a queue dedicated to heap chunk allocation works to avoid
de85488138247d0 Boris Brezillon 2024-02-29  170  	 * blocking the rest of the scheduler if the allocation tries to
de85488138247d0 Boris Brezillon 2024-02-29  171  	 * reclaim memory.
de85488138247d0 Boris Brezillon 2024-02-29  172  	 */
de85488138247d0 Boris Brezillon 2024-02-29  173  	struct workqueue_struct *heap_alloc_wq;
de85488138247d0 Boris Brezillon 2024-02-29  174  
de85488138247d0 Boris Brezillon 2024-02-29  175  	/** @tick_work: Work executed on a scheduling tick. */
de85488138247d0 Boris Brezillon 2024-02-29  176  	struct delayed_work tick_work;
de85488138247d0 Boris Brezillon 2024-02-29  177  
de85488138247d0 Boris Brezillon 2024-02-29  178  	/**
de85488138247d0 Boris Brezillon 2024-02-29  179  	 * @sync_upd_work: Work used to process synchronization object updates.
de85488138247d0 Boris Brezillon 2024-02-29  180  	 *
de85488138247d0 Boris Brezillon 2024-02-29  181  	 * We use this work to unblock queues/groups that were waiting on a
de85488138247d0 Boris Brezillon 2024-02-29  182  	 * synchronization object.
de85488138247d0 Boris Brezillon 2024-02-29  183  	 */
de85488138247d0 Boris Brezillon 2024-02-29  184  	struct work_struct sync_upd_work;
de85488138247d0 Boris Brezillon 2024-02-29  185  
de85488138247d0 Boris Brezillon 2024-02-29  186  	/**
de85488138247d0 Boris Brezillon 2024-02-29  187  	 * @fw_events_work: Work used to process FW events outside the interrupt path.
de85488138247d0 Boris Brezillon 2024-02-29  188  	 *
de85488138247d0 Boris Brezillon 2024-02-29  189  	 * Even if the interrupt is threaded, we need any event processing
de85488138247d0 Boris Brezillon 2024-02-29  190  	 * that require taking the panthor_scheduler::lock to be processed
de85488138247d0 Boris Brezillon 2024-02-29  191  	 * outside the interrupt path so we don't block the tick logic when
de85488138247d0 Boris Brezillon 2024-02-29  192  	 * it calls panthor_fw_{csg,wait}_wait_acks(). Since most of the
de85488138247d0 Boris Brezillon 2024-02-29  193  	 * event processing requires taking this lock, we just delegate all
de85488138247d0 Boris Brezillon 2024-02-29  194  	 * FW event processing to the scheduler workqueue.
de85488138247d0 Boris Brezillon 2024-02-29  195  	 */
de85488138247d0 Boris Brezillon 2024-02-29  196  	struct work_struct fw_events_work;
de85488138247d0 Boris Brezillon 2024-02-29  197  
de85488138247d0 Boris Brezillon 2024-02-29  198  	/**
de85488138247d0 Boris Brezillon 2024-02-29  199  	 * @fw_events: Bitmask encoding pending FW events.
de85488138247d0 Boris Brezillon 2024-02-29  200  	 */
de85488138247d0 Boris Brezillon 2024-02-29  201  	atomic_t fw_events;
de85488138247d0 Boris Brezillon 2024-02-29  202  
de85488138247d0 Boris Brezillon 2024-02-29  203  	/**
de85488138247d0 Boris Brezillon 2024-02-29  204  	 * @resched_target: When the next tick should occur.
de85488138247d0 Boris Brezillon 2024-02-29  205  	 *
de85488138247d0 Boris Brezillon 2024-02-29  206  	 * Expressed in jiffies.
de85488138247d0 Boris Brezillon 2024-02-29  207  	 */
de85488138247d0 Boris Brezillon 2024-02-29  208  	u64 resched_target;
de85488138247d0 Boris Brezillon 2024-02-29  209  
de85488138247d0 Boris Brezillon 2024-02-29  210  	/**
de85488138247d0 Boris Brezillon 2024-02-29  211  	 * @last_tick: When the last tick occurred.
de85488138247d0 Boris Brezillon 2024-02-29  212  	 *
de85488138247d0 Boris Brezillon 2024-02-29  213  	 * Expressed in jiffies.
de85488138247d0 Boris Brezillon 2024-02-29  214  	 */
de85488138247d0 Boris Brezillon 2024-02-29  215  	u64 last_tick;
de85488138247d0 Boris Brezillon 2024-02-29  216  
de85488138247d0 Boris Brezillon 2024-02-29  217  	/** @tick_period: Tick period in jiffies. */
de85488138247d0 Boris Brezillon 2024-02-29  218  	u64 tick_period;
de85488138247d0 Boris Brezillon 2024-02-29  219  
de85488138247d0 Boris Brezillon 2024-02-29  220  	/**
de85488138247d0 Boris Brezillon 2024-02-29  221  	 * @lock: Lock protecting access to all the scheduler fields.
de85488138247d0 Boris Brezillon 2024-02-29  222  	 *
de85488138247d0 Boris Brezillon 2024-02-29  223  	 * Should be taken in the tick work, the irq handler, and anywhere the @groups
de85488138247d0 Boris Brezillon 2024-02-29  224  	 * fields are touched.
de85488138247d0 Boris Brezillon 2024-02-29  225  	 */
de85488138247d0 Boris Brezillon 2024-02-29  226  	struct mutex lock;
de85488138247d0 Boris Brezillon 2024-02-29  227  
de85488138247d0 Boris Brezillon 2024-02-29  228  	/** @groups: Various lists used to classify groups. */
de85488138247d0 Boris Brezillon 2024-02-29  229  	struct {
de85488138247d0 Boris Brezillon 2024-02-29  230  		/**
de85488138247d0 Boris Brezillon 2024-02-29  231  		 * @runnable: Runnable group lists.
de85488138247d0 Boris Brezillon 2024-02-29  232  		 *
de85488138247d0 Boris Brezillon 2024-02-29  233  		 * When a group has queues that want to execute something,
de85488138247d0 Boris Brezillon 2024-02-29  234  		 * its panthor_group::run_node should be inserted here.
de85488138247d0 Boris Brezillon 2024-02-29  235  		 *
de85488138247d0 Boris Brezillon 2024-02-29  236  		 * One list per-priority.
de85488138247d0 Boris Brezillon 2024-02-29  237  		 */
de85488138247d0 Boris Brezillon 2024-02-29  238  		struct list_head runnable[PANTHOR_CSG_PRIORITY_COUNT];
de85488138247d0 Boris Brezillon 2024-02-29  239  
de85488138247d0 Boris Brezillon 2024-02-29  240  		/**
de85488138247d0 Boris Brezillon 2024-02-29  241  		 * @idle: Idle group lists.
de85488138247d0 Boris Brezillon 2024-02-29  242  		 *
de85488138247d0 Boris Brezillon 2024-02-29  243  		 * When all queues of a group are idle (either because they
de85488138247d0 Boris Brezillon 2024-02-29  244  		 * have nothing to execute, or because they are blocked), the
de85488138247d0 Boris Brezillon 2024-02-29  245  		 * panthor_group::run_node field should be inserted here.
de85488138247d0 Boris Brezillon 2024-02-29  246  		 *
de85488138247d0 Boris Brezillon 2024-02-29  247  		 * One list per-priority.
de85488138247d0 Boris Brezillon 2024-02-29  248  		 */
de85488138247d0 Boris Brezillon 2024-02-29  249  		struct list_head idle[PANTHOR_CSG_PRIORITY_COUNT];
de85488138247d0 Boris Brezillon 2024-02-29  250  
de85488138247d0 Boris Brezillon 2024-02-29  251  		/**
de85488138247d0 Boris Brezillon 2024-02-29  252  		 * @waiting: List of groups whose queues are blocked on a
de85488138247d0 Boris Brezillon 2024-02-29  253  		 * synchronization object.
de85488138247d0 Boris Brezillon 2024-02-29  254  		 *
de85488138247d0 Boris Brezillon 2024-02-29  255  		 * Insert panthor_group::wait_node here when a group is waiting
de85488138247d0 Boris Brezillon 2024-02-29  256  		 * for synchronization objects to be signaled.
de85488138247d0 Boris Brezillon 2024-02-29  257  		 *
de85488138247d0 Boris Brezillon 2024-02-29  258  		 * This list is evaluated in the @sync_upd_work work.
de85488138247d0 Boris Brezillon 2024-02-29  259  		 */
de85488138247d0 Boris Brezillon 2024-02-29  260  		struct list_head waiting;
de85488138247d0 Boris Brezillon 2024-02-29  261  	} groups;
de85488138247d0 Boris Brezillon 2024-02-29  262  
de85488138247d0 Boris Brezillon 2024-02-29  263  	/**
de85488138247d0 Boris Brezillon 2024-02-29  264  	 * @csg_slots: FW command stream group slots.
de85488138247d0 Boris Brezillon 2024-02-29  265  	 */
de85488138247d0 Boris Brezillon 2024-02-29  266  	struct panthor_csg_slot csg_slots[MAX_CSGS];
de85488138247d0 Boris Brezillon 2024-02-29  267  
de85488138247d0 Boris Brezillon 2024-02-29  268  	/** @csg_slot_count: Number of command stream group slots exposed by the FW. */
de85488138247d0 Boris Brezillon 2024-02-29  269  	u32 csg_slot_count;
de85488138247d0 Boris Brezillon 2024-02-29  270  
de85488138247d0 Boris Brezillon 2024-02-29  271  	/** @cs_slot_count: Number of command stream slot per group slot exposed by the FW. */
de85488138247d0 Boris Brezillon 2024-02-29  272  	u32 cs_slot_count;
de85488138247d0 Boris Brezillon 2024-02-29  273  
de85488138247d0 Boris Brezillon 2024-02-29  274  	/** @as_slot_count: Number of address space slots supported by the MMU. */
de85488138247d0 Boris Brezillon 2024-02-29  275  	u32 as_slot_count;
de85488138247d0 Boris Brezillon 2024-02-29  276  
de85488138247d0 Boris Brezillon 2024-02-29  277  	/** @used_csg_slot_count: Number of command stream group slot currently used. */
de85488138247d0 Boris Brezillon 2024-02-29  278  	u32 used_csg_slot_count;
de85488138247d0 Boris Brezillon 2024-02-29  279  
de85488138247d0 Boris Brezillon 2024-02-29  280  	/** @sb_slot_count: Number of scoreboard slots. */
de85488138247d0 Boris Brezillon 2024-02-29  281  	u32 sb_slot_count;
de85488138247d0 Boris Brezillon 2024-02-29  282  
de85488138247d0 Boris Brezillon 2024-02-29  283  	/**
de85488138247d0 Boris Brezillon 2024-02-29  284  	 * @might_have_idle_groups: True if an active group might have become idle.
de85488138247d0 Boris Brezillon 2024-02-29  285  	 *
de85488138247d0 Boris Brezillon 2024-02-29  286  	 * This will force a tick, so other runnable groups can be scheduled if one
de85488138247d0 Boris Brezillon 2024-02-29  287  	 * or more active groups became idle.
de85488138247d0 Boris Brezillon 2024-02-29  288  	 */
de85488138247d0 Boris Brezillon 2024-02-29  289  	bool might_have_idle_groups;
de85488138247d0 Boris Brezillon 2024-02-29  290  
de85488138247d0 Boris Brezillon 2024-02-29  291  	/** @pm: Power management related fields. */
de85488138247d0 Boris Brezillon 2024-02-29  292  	struct {
de85488138247d0 Boris Brezillon 2024-02-29  293  		/** @has_ref: True if the scheduler owns a runtime PM reference. */
de85488138247d0 Boris Brezillon 2024-02-29  294  		bool has_ref;
de85488138247d0 Boris Brezillon 2024-02-29  295  	} pm;
de85488138247d0 Boris Brezillon 2024-02-29  296  
de85488138247d0 Boris Brezillon 2024-02-29  297  	/** @reset: Reset related fields. */
de85488138247d0 Boris Brezillon 2024-02-29  298  	struct {
de85488138247d0 Boris Brezillon 2024-02-29  299  		/** @lock: Lock protecting the other reset fields. */
de85488138247d0 Boris Brezillon 2024-02-29  300  		struct mutex lock;
de85488138247d0 Boris Brezillon 2024-02-29  301  
de85488138247d0 Boris Brezillon 2024-02-29  302  		/**
de85488138247d0 Boris Brezillon 2024-02-29  303  		 * @in_progress: True if a reset is in progress.
de85488138247d0 Boris Brezillon 2024-02-29  304  		 *
de85488138247d0 Boris Brezillon 2024-02-29  305  		 * Set to true in panthor_sched_pre_reset() and back to false in
de85488138247d0 Boris Brezillon 2024-02-29  306  		 * panthor_sched_post_reset().
de85488138247d0 Boris Brezillon 2024-02-29  307  		 */
de85488138247d0 Boris Brezillon 2024-02-29  308  		atomic_t in_progress;
de85488138247d0 Boris Brezillon 2024-02-29  309  
de85488138247d0 Boris Brezillon 2024-02-29  310  		/**
de85488138247d0 Boris Brezillon 2024-02-29  311  		 * @stopped_groups: List containing all groups that were stopped
de85488138247d0 Boris Brezillon 2024-02-29  312  		 * before a reset.
de85488138247d0 Boris Brezillon 2024-02-29  313  		 *
de85488138247d0 Boris Brezillon 2024-02-29  314  		 * Insert panthor_group::run_node in the pre_reset path.
de85488138247d0 Boris Brezillon 2024-02-29  315  		 */
de85488138247d0 Boris Brezillon 2024-02-29  316  		struct list_head stopped_groups;
de85488138247d0 Boris Brezillon 2024-02-29  317  	} reset;
de85488138247d0 Boris Brezillon 2024-02-29 @318  };
de85488138247d0 Boris Brezillon 2024-02-29  319  
de85488138247d0 Boris Brezillon 2024-02-29  320  /**
de85488138247d0 Boris Brezillon 2024-02-29  321   * struct panthor_syncobj_32b - 32-bit FW synchronization object
de85488138247d0 Boris Brezillon 2024-02-29  322   */
de85488138247d0 Boris Brezillon 2024-02-29  323  struct panthor_syncobj_32b {
de85488138247d0 Boris Brezillon 2024-02-29  324  	/** @seqno: Sequence number. */
de85488138247d0 Boris Brezillon 2024-02-29  325  	u32 seqno;
de85488138247d0 Boris Brezillon 2024-02-29  326  
de85488138247d0 Boris Brezillon 2024-02-29  327  	/**
de85488138247d0 Boris Brezillon 2024-02-29  328  	 * @status: Status.
de85488138247d0 Boris Brezillon 2024-02-29  329  	 *
de85488138247d0 Boris Brezillon 2024-02-29  330  	 * Not zero on failure.
de85488138247d0 Boris Brezillon 2024-02-29  331  	 */
de85488138247d0 Boris Brezillon 2024-02-29  332  	u32 status;
de85488138247d0 Boris Brezillon 2024-02-29  333  };
de85488138247d0 Boris Brezillon 2024-02-29  334  
de85488138247d0 Boris Brezillon 2024-02-29  335  /**
de85488138247d0 Boris Brezillon 2024-02-29  336   * struct panthor_syncobj_64b - 64-bit FW synchronization object
de85488138247d0 Boris Brezillon 2024-02-29  337   */
de85488138247d0 Boris Brezillon 2024-02-29  338  struct panthor_syncobj_64b {
de85488138247d0 Boris Brezillon 2024-02-29  339  	/** @seqno: Sequence number. */
de85488138247d0 Boris Brezillon 2024-02-29  340  	u64 seqno;
de85488138247d0 Boris Brezillon 2024-02-29  341  
de85488138247d0 Boris Brezillon 2024-02-29  342  	/**
de85488138247d0 Boris Brezillon 2024-02-29  343  	 * @status: Status.
de85488138247d0 Boris Brezillon 2024-02-29  344  	 *
de85488138247d0 Boris Brezillon 2024-02-29  345  	 * Not zero on failure.
de85488138247d0 Boris Brezillon 2024-02-29  346  	 */
de85488138247d0 Boris Brezillon 2024-02-29  347  	u32 status;
de85488138247d0 Boris Brezillon 2024-02-29  348  
de85488138247d0 Boris Brezillon 2024-02-29  349  	/** @pad: MBZ. */
de85488138247d0 Boris Brezillon 2024-02-29  350  	u32 pad;
de85488138247d0 Boris Brezillon 2024-02-29  351  };
de85488138247d0 Boris Brezillon 2024-02-29  352  
de85488138247d0 Boris Brezillon 2024-02-29  353  /**
de85488138247d0 Boris Brezillon 2024-02-29  354   * struct panthor_queue - Execution queue
de85488138247d0 Boris Brezillon 2024-02-29  355   */
de85488138247d0 Boris Brezillon 2024-02-29  356  struct panthor_queue {
de85488138247d0 Boris Brezillon 2024-02-29  357  	/** @scheduler: DRM scheduler used for this queue. */
de85488138247d0 Boris Brezillon 2024-02-29  358  	struct drm_gpu_scheduler scheduler;
de85488138247d0 Boris Brezillon 2024-02-29  359  
de85488138247d0 Boris Brezillon 2024-02-29  360  	/** @entity: DRM scheduling entity used for this queue. */
de85488138247d0 Boris Brezillon 2024-02-29  361  	struct drm_sched_entity entity;
de85488138247d0 Boris Brezillon 2024-02-29  362  
b571025809e4350 Ashley Smith    2025-03-07  363  	/** @timeout: Queue timeout related fields. */
b571025809e4350 Ashley Smith    2025-03-07  364  	struct {
b571025809e4350 Ashley Smith    2025-03-07  365  		/** @timeout.work: Work executed when a queue timeout occurs. */
b571025809e4350 Ashley Smith    2025-03-07  366  		struct delayed_work work;
b571025809e4350 Ashley Smith    2025-03-07  367  
de85488138247d0 Boris Brezillon 2024-02-29  368  		/**
b571025809e4350 Ashley Smith    2025-03-07  369  		 * @remaining: Time remaining before a queue timeout.
de85488138247d0 Boris Brezillon 2024-02-29  370  		 *
b571025809e4350 Ashley Smith    2025-03-07  371  		 * When the timer is running, this value is set to MAX_SCHEDULE_TIMEOUT.
b571025809e4350 Ashley Smith    2025-03-07  372  		 * When the timer is suspended, it's set to the time remaining when the
b571025809e4350 Ashley Smith    2025-03-07  373  		 * timer was suspended.
de85488138247d0 Boris Brezillon 2024-02-29  374  		 */
b571025809e4350 Ashley Smith    2025-03-07  375  		unsigned long remaining;
b571025809e4350 Ashley Smith    2025-03-07  376  	} timeout;
de85488138247d0 Boris Brezillon 2024-02-29  377  
de85488138247d0 Boris Brezillon 2024-02-29  378  	/**
de85488138247d0 Boris Brezillon 2024-02-29  379  	 * @doorbell_id: Doorbell assigned to this queue.
de85488138247d0 Boris Brezillon 2024-02-29  380  	 *
de85488138247d0 Boris Brezillon 2024-02-29  381  	 * Right now, all groups share the same doorbell, and the doorbell ID
de85488138247d0 Boris Brezillon 2024-02-29  382  	 * is assigned to group_slot + 1 when the group is assigned a slot. But
de85488138247d0 Boris Brezillon 2024-02-29  383  	 * we might decide to provide fine grained doorbell assignment at some
de85488138247d0 Boris Brezillon 2024-02-29  384  	 * point, so don't have to wake up all queues in a group every time one
de85488138247d0 Boris Brezillon 2024-02-29  385  	 * of them is updated.
de85488138247d0 Boris Brezillon 2024-02-29  386  	 */
de85488138247d0 Boris Brezillon 2024-02-29  387  	u8 doorbell_id;
de85488138247d0 Boris Brezillon 2024-02-29  388  
de85488138247d0 Boris Brezillon 2024-02-29  389  	/**
de85488138247d0 Boris Brezillon 2024-02-29  390  	 * @priority: Priority of the queue inside the group.
de85488138247d0 Boris Brezillon 2024-02-29  391  	 *
de85488138247d0 Boris Brezillon 2024-02-29  392  	 * Must be less than 16 (Only 4 bits available).
de85488138247d0 Boris Brezillon 2024-02-29  393  	 */
de85488138247d0 Boris Brezillon 2024-02-29  394  	u8 priority;
de85488138247d0 Boris Brezillon 2024-02-29  395  #define CSF_MAX_QUEUE_PRIO	GENMASK(3, 0)
de85488138247d0 Boris Brezillon 2024-02-29  396  
de85488138247d0 Boris Brezillon 2024-02-29  397  	/** @ringbuf: Command stream ring-buffer. */
de85488138247d0 Boris Brezillon 2024-02-29  398  	struct panthor_kernel_bo *ringbuf;
de85488138247d0 Boris Brezillon 2024-02-29  399  
de85488138247d0 Boris Brezillon 2024-02-29  400  	/** @iface: Firmware interface. */
de85488138247d0 Boris Brezillon 2024-02-29  401  	struct {
de85488138247d0 Boris Brezillon 2024-02-29  402  		/** @mem: FW memory allocated for this interface. */
de85488138247d0 Boris Brezillon 2024-02-29  403  		struct panthor_kernel_bo *mem;
de85488138247d0 Boris Brezillon 2024-02-29  404  
de85488138247d0 Boris Brezillon 2024-02-29  405  		/** @input: Input interface. */
de85488138247d0 Boris Brezillon 2024-02-29  406  		struct panthor_fw_ringbuf_input_iface *input;
de85488138247d0 Boris Brezillon 2024-02-29  407  
de85488138247d0 Boris Brezillon 2024-02-29  408  		/** @output: Output interface. */
de85488138247d0 Boris Brezillon 2024-02-29  409  		const struct panthor_fw_ringbuf_output_iface *output;
de85488138247d0 Boris Brezillon 2024-02-29  410  
de85488138247d0 Boris Brezillon 2024-02-29  411  		/** @input_fw_va: FW virtual address of the input interface buffer. */
de85488138247d0 Boris Brezillon 2024-02-29  412  		u32 input_fw_va;
de85488138247d0 Boris Brezillon 2024-02-29  413  
de85488138247d0 Boris Brezillon 2024-02-29  414  		/** @output_fw_va: FW virtual address of the output interface buffer. */
de85488138247d0 Boris Brezillon 2024-02-29  415  		u32 output_fw_va;
de85488138247d0 Boris Brezillon 2024-02-29  416  	} iface;
de85488138247d0 Boris Brezillon 2024-02-29  417  
de85488138247d0 Boris Brezillon 2024-02-29  418  	/**
de85488138247d0 Boris Brezillon 2024-02-29  419  	 * @syncwait: Stores information about the synchronization object this
de85488138247d0 Boris Brezillon 2024-02-29  420  	 * queue is waiting on.
de85488138247d0 Boris Brezillon 2024-02-29  421  	 */
de85488138247d0 Boris Brezillon 2024-02-29  422  	struct {
de85488138247d0 Boris Brezillon 2024-02-29  423  		/** @gpu_va: GPU address of the synchronization object. */
de85488138247d0 Boris Brezillon 2024-02-29  424  		u64 gpu_va;
de85488138247d0 Boris Brezillon 2024-02-29  425  
de85488138247d0 Boris Brezillon 2024-02-29  426  		/** @ref: Reference value to compare against. */
de85488138247d0 Boris Brezillon 2024-02-29  427  		u64 ref;
de85488138247d0 Boris Brezillon 2024-02-29  428  
de85488138247d0 Boris Brezillon 2024-02-29  429  		/** @gt: True if this is a greater-than test. */
de85488138247d0 Boris Brezillon 2024-02-29  430  		bool gt;
de85488138247d0 Boris Brezillon 2024-02-29  431  
de85488138247d0 Boris Brezillon 2024-02-29  432  		/** @sync64: True if this is a 64-bit sync object. */
de85488138247d0 Boris Brezillon 2024-02-29  433  		bool sync64;
de85488138247d0 Boris Brezillon 2024-02-29  434  
de85488138247d0 Boris Brezillon 2024-02-29  435  		/** @bo: Buffer object holding the synchronization object. */
de85488138247d0 Boris Brezillon 2024-02-29  436  		struct drm_gem_object *obj;
de85488138247d0 Boris Brezillon 2024-02-29  437  
de85488138247d0 Boris Brezillon 2024-02-29  438  		/** @offset: Offset of the synchronization object inside @bo. */
de85488138247d0 Boris Brezillon 2024-02-29  439  		u64 offset;
de85488138247d0 Boris Brezillon 2024-02-29  440  
de85488138247d0 Boris Brezillon 2024-02-29  441  		/**
de85488138247d0 Boris Brezillon 2024-02-29  442  		 * @kmap: Kernel mapping of the buffer object holding the
de85488138247d0 Boris Brezillon 2024-02-29  443  		 * synchronization object.
de85488138247d0 Boris Brezillon 2024-02-29  444  		 */
de85488138247d0 Boris Brezillon 2024-02-29  445  		void *kmap;
de85488138247d0 Boris Brezillon 2024-02-29  446  	} syncwait;
de85488138247d0 Boris Brezillon 2024-02-29  447  
de85488138247d0 Boris Brezillon 2024-02-29  448  	/** @fence_ctx: Fence context fields. */
de85488138247d0 Boris Brezillon 2024-02-29  449  	struct {
de85488138247d0 Boris Brezillon 2024-02-29  450  		/** @lock: Used to protect access to all fences allocated by this context. */
de85488138247d0 Boris Brezillon 2024-02-29  451  		spinlock_t lock;
de85488138247d0 Boris Brezillon 2024-02-29  452  
de85488138247d0 Boris Brezillon 2024-02-29  453  		/**
de85488138247d0 Boris Brezillon 2024-02-29  454  		 * @id: Fence context ID.
de85488138247d0 Boris Brezillon 2024-02-29  455  		 *
de85488138247d0 Boris Brezillon 2024-02-29  456  		 * Allocated with dma_fence_context_alloc().
de85488138247d0 Boris Brezillon 2024-02-29  457  		 */
de85488138247d0 Boris Brezillon 2024-02-29  458  		u64 id;
de85488138247d0 Boris Brezillon 2024-02-29  459  
de85488138247d0 Boris Brezillon 2024-02-29  460  		/** @seqno: Sequence number of the last initialized fence. */
de85488138247d0 Boris Brezillon 2024-02-29  461  		atomic64_t seqno;
de85488138247d0 Boris Brezillon 2024-02-29  462  
7b6f9ec6ad51125 Boris Brezillon 2024-07-03  463  		/**
7b6f9ec6ad51125 Boris Brezillon 2024-07-03  464  		 * @last_fence: Fence of the last submitted job.
7b6f9ec6ad51125 Boris Brezillon 2024-07-03  465  		 *
7b6f9ec6ad51125 Boris Brezillon 2024-07-03  466  		 * We return this fence when we get an empty command stream.
7b6f9ec6ad51125 Boris Brezillon 2024-07-03  467  		 * This way, we are guaranteed that all earlier jobs have completed
7b6f9ec6ad51125 Boris Brezillon 2024-07-03  468  		 * when drm_sched_job::s_fence::finished without having to feed
7b6f9ec6ad51125 Boris Brezillon 2024-07-03  469  		 * the CS ring buffer with a dummy job that only signals the fence.
7b6f9ec6ad51125 Boris Brezillon 2024-07-03  470  		 */
7b6f9ec6ad51125 Boris Brezillon 2024-07-03  471  		struct dma_fence *last_fence;
7b6f9ec6ad51125 Boris Brezillon 2024-07-03  472  
de85488138247d0 Boris Brezillon 2024-02-29  473  		/**
de85488138247d0 Boris Brezillon 2024-02-29  474  		 * @in_flight_jobs: List containing all in-flight jobs.
de85488138247d0 Boris Brezillon 2024-02-29  475  		 *
de85488138247d0 Boris Brezillon 2024-02-29  476  		 * Used to keep track and signal panthor_job::done_fence when the
de85488138247d0 Boris Brezillon 2024-02-29  477  		 * synchronization object attached to the queue is signaled.
de85488138247d0 Boris Brezillon 2024-02-29  478  		 */
de85488138247d0 Boris Brezillon 2024-02-29  479  		struct list_head in_flight_jobs;
de85488138247d0 Boris Brezillon 2024-02-29  480  	} fence_ctx;
f8ff51a47084517 Adrián Larumbe  2024-09-24  481  
f8ff51a47084517 Adrián Larumbe  2024-09-24  482  	/** @profiling: Job profiling data slots and access information. */
f8ff51a47084517 Adrián Larumbe  2024-09-24  483  	struct {
f8ff51a47084517 Adrián Larumbe  2024-09-24  484  		/** @slots: Kernel BO holding the slots. */
f8ff51a47084517 Adrián Larumbe  2024-09-24  485  		struct panthor_kernel_bo *slots;
f8ff51a47084517 Adrián Larumbe  2024-09-24  486  
f8ff51a47084517 Adrián Larumbe  2024-09-24  487  		/** @slot_count: Number of jobs ringbuffer can hold at once. */
f8ff51a47084517 Adrián Larumbe  2024-09-24  488  		u32 slot_count;
f8ff51a47084517 Adrián Larumbe  2024-09-24  489  
f8ff51a47084517 Adrián Larumbe  2024-09-24  490  		/** @seqno: Index of the next available profiling information slot. */
f8ff51a47084517 Adrián Larumbe  2024-09-24  491  		u32 seqno;
f8ff51a47084517 Adrián Larumbe  2024-09-24  492  	} profiling;
de85488138247d0 Boris Brezillon 2024-02-29 @493  };
de85488138247d0 Boris Brezillon 2024-02-29  494  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

  reply	other threads:[~2025-03-08 15:32 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-07 15:55 [PATCH] drm/panthor: Make the timeout per-queue instead of per-job Ashley Smith
2025-03-08 15:31 ` kernel test robot [this message]
2025-04-01 12:10 ` Boris Brezillon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202503082339.3TzIrrex-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=airlied@gmail.com \
    --cc=ashley.smith@collabora.com \
    --cc=bbrezillon@kernel.org \
    --cc=daniels@collabora.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=heiko@sntech.de \
    --cc=kernel@collabora.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=liviu.dudau@arm.com \
    --cc=llvm@lists.linux.dev \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=simona@ffwll.ch \
    --cc=steven.price@arm.com \
    --cc=tzimmermann@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.