ivpu_accel.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564
  1. /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
  2. /*
  3. * Copyright (C) 2020-2025 Intel Corporation
  4. */
  5. #ifndef __UAPI_IVPU_DRM_H__
  6. #define __UAPI_IVPU_DRM_H__
  7. #include "drm.h"
  8. #if defined(__cplusplus)
  9. extern "C" {
  10. #endif
  11. #define DRM_IVPU_GET_PARAM 0x00
  12. #define DRM_IVPU_SET_PARAM 0x01
  13. #define DRM_IVPU_BO_CREATE 0x02
  14. #define DRM_IVPU_BO_INFO 0x03
  15. #define DRM_IVPU_SUBMIT 0x05
  16. #define DRM_IVPU_BO_WAIT 0x06
  17. #define DRM_IVPU_METRIC_STREAMER_START 0x07
  18. #define DRM_IVPU_METRIC_STREAMER_STOP 0x08
  19. #define DRM_IVPU_METRIC_STREAMER_GET_DATA 0x09
  20. #define DRM_IVPU_METRIC_STREAMER_GET_INFO 0x0a
  21. #define DRM_IVPU_CMDQ_CREATE 0x0b
  22. #define DRM_IVPU_CMDQ_DESTROY 0x0c
  23. #define DRM_IVPU_CMDQ_SUBMIT 0x0d
  24. #define DRM_IVPU_BO_CREATE_FROM_USERPTR 0x0e
  25. #define DRM_IOCTL_IVPU_GET_PARAM \
  26. DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_GET_PARAM, struct drm_ivpu_param)
  27. #define DRM_IOCTL_IVPU_SET_PARAM \
  28. DRM_IOW(DRM_COMMAND_BASE + DRM_IVPU_SET_PARAM, struct drm_ivpu_param)
  29. #define DRM_IOCTL_IVPU_BO_CREATE \
  30. DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_BO_CREATE, struct drm_ivpu_bo_create)
  31. #define DRM_IOCTL_IVPU_BO_INFO \
  32. DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_BO_INFO, struct drm_ivpu_bo_info)
  33. #define DRM_IOCTL_IVPU_SUBMIT \
  34. DRM_IOW(DRM_COMMAND_BASE + DRM_IVPU_SUBMIT, struct drm_ivpu_submit)
  35. #define DRM_IOCTL_IVPU_BO_WAIT \
  36. DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_BO_WAIT, struct drm_ivpu_bo_wait)
  37. #define DRM_IOCTL_IVPU_METRIC_STREAMER_START \
  38. DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_METRIC_STREAMER_START, \
  39. struct drm_ivpu_metric_streamer_start)
  40. #define DRM_IOCTL_IVPU_METRIC_STREAMER_STOP \
  41. DRM_IOW(DRM_COMMAND_BASE + DRM_IVPU_METRIC_STREAMER_STOP, \
  42. struct drm_ivpu_metric_streamer_stop)
  43. #define DRM_IOCTL_IVPU_METRIC_STREAMER_GET_DATA \
  44. DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_METRIC_STREAMER_GET_DATA, \
  45. struct drm_ivpu_metric_streamer_get_data)
  46. #define DRM_IOCTL_IVPU_METRIC_STREAMER_GET_INFO \
  47. DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_METRIC_STREAMER_GET_INFO, \
  48. struct drm_ivpu_metric_streamer_get_data)
  49. #define DRM_IOCTL_IVPU_CMDQ_CREATE \
  50. DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_CMDQ_CREATE, struct drm_ivpu_cmdq_create)
  51. #define DRM_IOCTL_IVPU_CMDQ_DESTROY \
  52. DRM_IOW(DRM_COMMAND_BASE + DRM_IVPU_CMDQ_DESTROY, struct drm_ivpu_cmdq_destroy)
  53. #define DRM_IOCTL_IVPU_CMDQ_SUBMIT \
  54. DRM_IOW(DRM_COMMAND_BASE + DRM_IVPU_CMDQ_SUBMIT, struct drm_ivpu_cmdq_submit)
  55. #define DRM_IOCTL_IVPU_BO_CREATE_FROM_USERPTR \
  56. DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_BO_CREATE_FROM_USERPTR, \
  57. struct drm_ivpu_bo_create_from_userptr)
  58. /**
  59. * DOC: contexts
  60. *
  61. * VPU contexts have private virtual address space, job queues and priority.
  62. * Each context is identified by an unique ID. Context is created on open().
  63. */
  64. #define DRM_IVPU_PARAM_DEVICE_ID 0
  65. #define DRM_IVPU_PARAM_DEVICE_REVISION 1
  66. #define DRM_IVPU_PARAM_PLATFORM_TYPE 2
  67. #define DRM_IVPU_PARAM_CORE_CLOCK_RATE 3
  68. #define DRM_IVPU_PARAM_NUM_CONTEXTS 4
  69. #define DRM_IVPU_PARAM_CONTEXT_BASE_ADDRESS 5
  70. #define DRM_IVPU_PARAM_CONTEXT_PRIORITY 6 /* Deprecated */
  71. #define DRM_IVPU_PARAM_CONTEXT_ID 7
  72. #define DRM_IVPU_PARAM_FW_API_VERSION 8
  73. #define DRM_IVPU_PARAM_ENGINE_HEARTBEAT 9
  74. #define DRM_IVPU_PARAM_UNIQUE_INFERENCE_ID 10
  75. #define DRM_IVPU_PARAM_TILE_CONFIG 11
  76. #define DRM_IVPU_PARAM_SKU 12
  77. #define DRM_IVPU_PARAM_CAPABILITIES 13
  78. #define DRM_IVPU_PARAM_PREEMPT_BUFFER_SIZE 14
  79. #define DRM_IVPU_PLATFORM_TYPE_SILICON 0
  80. /* Deprecated, use DRM_IVPU_JOB_PRIORITY */
  81. #define DRM_IVPU_CONTEXT_PRIORITY_IDLE 0
  82. #define DRM_IVPU_CONTEXT_PRIORITY_NORMAL 1
  83. #define DRM_IVPU_CONTEXT_PRIORITY_FOCUS 2
  84. #define DRM_IVPU_CONTEXT_PRIORITY_REALTIME 3
  85. #define DRM_IVPU_JOB_PRIORITY_DEFAULT 0
  86. #define DRM_IVPU_JOB_PRIORITY_IDLE 1
  87. #define DRM_IVPU_JOB_PRIORITY_NORMAL 2
  88. #define DRM_IVPU_JOB_PRIORITY_FOCUS 3
  89. #define DRM_IVPU_JOB_PRIORITY_REALTIME 4
  90. /**
  91. * DRM_IVPU_CAP_METRIC_STREAMER
  92. *
  93. * Metric streamer support. Provides sampling of various hardware performance
  94. * metrics like DMA bandwidth and cache miss/hits. Can be used for profiling.
  95. */
  96. #define DRM_IVPU_CAP_METRIC_STREAMER 1
  97. /**
  98. * DRM_IVPU_CAP_DMA_MEMORY_RANGE
  99. *
  100. * Driver has capability to allocate separate memory range
  101. * accessible by hardware DMA.
  102. */
  103. #define DRM_IVPU_CAP_DMA_MEMORY_RANGE 2
  104. /**
  105. * DRM_IVPU_CAP_MANAGE_CMDQ
  106. *
  107. * Driver supports explicit command queue operations like command queue create,
  108. * command queue destroy and submit job on specific command queue.
  109. */
  110. #define DRM_IVPU_CAP_MANAGE_CMDQ 3
  111. /**
  112. * DRM_IVPU_CAP_BO_CREATE_FROM_USERPTR
  113. *
  114. * Driver supports creating buffer objects from user space memory pointers.
  115. * This allows creating GEM buffers from existing user memory regions.
  116. */
  117. #define DRM_IVPU_CAP_BO_CREATE_FROM_USERPTR 4
  118. /**
  119. * struct drm_ivpu_param - Get/Set VPU parameters
  120. */
  121. struct drm_ivpu_param {
  122. /**
  123. * @param:
  124. *
  125. * Supported params:
  126. *
  127. * %DRM_IVPU_PARAM_DEVICE_ID:
  128. * PCI Device ID of the VPU device (read-only)
  129. *
  130. * %DRM_IVPU_PARAM_DEVICE_REVISION:
  131. * VPU device revision (read-only)
  132. *
  133. * %DRM_IVPU_PARAM_PLATFORM_TYPE:
  134. * Returns %DRM_IVPU_PLATFORM_TYPE_SILICON on real hardware or device specific
  135. * platform type when executing on a simulator or emulator (read-only)
  136. *
  137. * %DRM_IVPU_PARAM_CORE_CLOCK_RATE:
  138. * Maximum frequency of the NPU data processing unit clock (read-only)
  139. *
  140. * %DRM_IVPU_PARAM_NUM_CONTEXTS:
  141. * Maximum number of simultaneously existing contexts (read-only)
  142. *
  143. * %DRM_IVPU_PARAM_CONTEXT_BASE_ADDRESS:
  144. * Lowest VPU virtual address available in the current context (read-only)
  145. *
  146. * %DRM_IVPU_PARAM_CONTEXT_ID:
  147. * Current context ID, always greater than 0 (read-only)
  148. *
  149. * %DRM_IVPU_PARAM_FW_API_VERSION:
  150. * Firmware API version array (read-only)
  151. *
  152. * %DRM_IVPU_PARAM_ENGINE_HEARTBEAT:
  153. * Heartbeat value from an engine (read-only).
  154. * Engine ID (i.e. DRM_IVPU_ENGINE_COMPUTE) is given via index.
  155. *
  156. * %DRM_IVPU_PARAM_UNIQUE_INFERENCE_ID:
  157. * Device-unique inference ID (read-only)
  158. *
  159. * %DRM_IVPU_PARAM_TILE_CONFIG:
  160. * VPU tile configuration (read-only)
  161. *
  162. * %DRM_IVPU_PARAM_SKU:
  163. * VPU SKU ID (read-only)
  164. *
  165. * %DRM_IVPU_PARAM_CAPABILITIES:
  166. * Supported capabilities (read-only)
  167. *
  168. * %DRM_IVPU_PARAM_PREEMPT_BUFFER_SIZE:
  169. * Size of the preemption buffer (read-only)
  170. */
  171. __u32 param;
  172. /** @index: Index for params that have multiple instances */
  173. __u32 index;
  174. /** @value: Param value */
  175. __u64 value;
  176. };
  177. #define DRM_IVPU_BO_SHAVE_MEM 0x00000001
  178. #define DRM_IVPU_BO_HIGH_MEM DRM_IVPU_BO_SHAVE_MEM
  179. #define DRM_IVPU_BO_MAPPABLE 0x00000002
  180. #define DRM_IVPU_BO_DMA_MEM 0x00000004
  181. #define DRM_IVPU_BO_READ_ONLY 0x00000008
  182. #define DRM_IVPU_BO_CACHED 0x00000000
  183. #define DRM_IVPU_BO_UNCACHED 0x00010000
  184. #define DRM_IVPU_BO_WC 0x00020000
  185. #define DRM_IVPU_BO_CACHE_MASK 0x00030000
  186. #define DRM_IVPU_BO_FLAGS \
  187. (DRM_IVPU_BO_HIGH_MEM | \
  188. DRM_IVPU_BO_MAPPABLE | \
  189. DRM_IVPU_BO_DMA_MEM | \
  190. DRM_IVPU_BO_READ_ONLY | \
  191. DRM_IVPU_BO_CACHE_MASK)
  192. /**
  193. * struct drm_ivpu_bo_create - Create BO backed by SHMEM
  194. *
  195. * Create GEM buffer object allocated in SHMEM memory.
  196. */
  197. struct drm_ivpu_bo_create {
  198. /** @size: The size in bytes of the allocated memory */
  199. __u64 size;
  200. /**
  201. * @flags:
  202. *
  203. * Supported flags:
  204. *
  205. * %DRM_IVPU_BO_HIGH_MEM:
  206. *
  207. * Allocate VPU address from >4GB range.
  208. * Buffer object with vpu address >4GB can be always accessed by the
  209. * VPU DMA engine, but some HW generation may not be able to access
  210. * this memory from then firmware running on the VPU management processor.
  211. * Suitable for input, output and some scratch buffers.
  212. *
  213. * %DRM_IVPU_BO_MAPPABLE:
  214. *
  215. * Buffer object can be mapped using mmap().
  216. *
  217. * %DRM_IVPU_BO_CACHED:
  218. *
  219. * Allocated BO will be cached on host side (WB) and snooped on the VPU side.
  220. * This is the default caching mode.
  221. *
  222. * %DRM_IVPU_BO_UNCACHED:
  223. *
  224. * Not supported. Use DRM_IVPU_BO_WC instead.
  225. *
  226. * %DRM_IVPU_BO_WC:
  227. *
  228. * Allocated BO will use write combining buffer for writes but reads will be
  229. * uncached.
  230. */
  231. __u32 flags;
  232. /** @handle: Returned GEM object handle */
  233. __u32 handle;
  234. /** @vpu_addr: Returned VPU virtual address */
  235. __u64 vpu_addr;
  236. };
  237. /**
  238. * struct drm_ivpu_bo_create_from_userptr - Create dma-buf from user pointer
  239. *
  240. * Create a GEM buffer object from a user pointer to a memory region.
  241. */
  242. struct drm_ivpu_bo_create_from_userptr {
  243. /** @user_ptr: User pointer to memory region (must be page aligned) */
  244. __u64 user_ptr;
  245. /** @size: Size of the memory region in bytes (must be page aligned) */
  246. __u64 size;
  247. /**
  248. * @flags:
  249. *
  250. * Supported flags:
  251. *
  252. * %DRM_IVPU_BO_HIGH_MEM:
  253. *
  254. * Allocate VPU address from >4GB range.
  255. *
  256. * %DRM_IVPU_BO_DMA_MEM:
  257. *
  258. * Allocate from DMA memory range accessible by hardware DMA.
  259. *
  260. * %DRM_IVPU_BO_READ_ONLY:
  261. *
  262. * Allocate as a read-only buffer object.
  263. */
  264. __u32 flags;
  265. /** @handle: Returned GEM object handle */
  266. __u32 handle;
  267. /** @vpu_addr: Returned VPU virtual address */
  268. __u64 vpu_addr;
  269. };
  270. /**
  271. * struct drm_ivpu_bo_info - Query buffer object info
  272. */
  273. struct drm_ivpu_bo_info {
  274. /** @handle: Handle of the queried BO */
  275. __u32 handle;
  276. /** @flags: Returned flags used to create the BO */
  277. __u32 flags;
  278. /** @vpu_addr: Returned VPU virtual address */
  279. __u64 vpu_addr;
  280. /**
  281. * @mmap_offset:
  282. *
  283. * Returned offset to be used in mmap(). 0 in case the BO is not mappable.
  284. */
  285. __u64 mmap_offset;
  286. /** @size: Returned GEM object size, aligned to PAGE_SIZE */
  287. __u64 size;
  288. };
  289. /* drm_ivpu_submit engines */
  290. #define DRM_IVPU_ENGINE_COMPUTE 0
  291. #define DRM_IVPU_ENGINE_COPY 1 /* Deprecated */
  292. /**
  293. * struct drm_ivpu_submit - Submit commands to the VPU
  294. *
  295. * Execute a single command buffer on a given VPU engine.
  296. * Handles to all referenced buffer objects have to be provided in @buffers_ptr.
  297. *
  298. * User space may wait on job completion using %DRM_IVPU_BO_WAIT ioctl.
  299. */
  300. struct drm_ivpu_submit {
  301. /**
  302. * @buffers_ptr:
  303. *
  304. * A pointer to an u32 array of GEM handles of the BOs required for this job.
  305. * The number of elements in the array must be equal to the value given by @buffer_count.
  306. *
  307. * The first BO is the command buffer. The rest of array has to contain all
  308. * BOs referenced from the command buffer.
  309. */
  310. __u64 buffers_ptr;
  311. /** @buffer_count: Number of elements in the @buffers_ptr */
  312. __u32 buffer_count;
  313. /**
  314. * @engine: Select the engine this job should be executed on
  315. *
  316. * %DRM_IVPU_ENGINE_COMPUTE:
  317. *
  318. * Performs Deep Learning Neural Compute Inference Operations
  319. */
  320. __u32 engine;
  321. /** @flags: Reserved for future use - must be zero */
  322. __u32 flags;
  323. /**
  324. * @commands_offset:
  325. *
  326. * Offset inside the first buffer in @buffers_ptr containing commands
  327. * to be executed. The offset has to be 8-byte aligned.
  328. */
  329. __u32 commands_offset;
  330. /**
  331. * @priority:
  332. *
  333. * Priority to be set for related job command queue, can be one of the following:
  334. * %DRM_IVPU_JOB_PRIORITY_DEFAULT
  335. * %DRM_IVPU_JOB_PRIORITY_IDLE
  336. * %DRM_IVPU_JOB_PRIORITY_NORMAL
  337. * %DRM_IVPU_JOB_PRIORITY_FOCUS
  338. * %DRM_IVPU_JOB_PRIORITY_REALTIME
  339. */
  340. __u32 priority;
  341. };
  342. /**
  343. * struct drm_ivpu_cmdq_submit - Submit commands to the VPU using explicit command queue
  344. *
  345. * Execute a single command buffer on a given command queue.
  346. * Handles to all referenced buffer objects have to be provided in @buffers_ptr.
  347. *
  348. * User space may wait on job completion using %DRM_IVPU_BO_WAIT ioctl.
  349. */
  350. struct drm_ivpu_cmdq_submit {
  351. /**
  352. * @buffers_ptr:
  353. *
  354. * A pointer to an u32 array of GEM handles of the BOs required for this job.
  355. * The number of elements in the array must be equal to the value given by @buffer_count.
  356. *
  357. * The first BO is the command buffer. The rest of array has to contain all
  358. * BOs referenced from the command buffer.
  359. */
  360. __u64 buffers_ptr;
  361. /** @buffer_count: Number of elements in the @buffers_ptr */
  362. __u32 buffer_count;
  363. /** @cmdq_id: ID for the command queue where job will be submitted */
  364. __u32 cmdq_id;
  365. /** @flags: Reserved for future use - must be zero */
  366. __u32 flags;
  367. /**
  368. * @commands_offset:
  369. *
  370. * Offset inside the first buffer in @buffers_ptr containing commands
  371. * to be executed. The offset has to be 8-byte aligned.
  372. */
  373. __u32 commands_offset;
  374. /**
  375. * @preempt_buffer_index:
  376. *
  377. * Index of the preemption buffer in the buffers_ptr array.
  378. */
  379. __u32 preempt_buffer_index;
  380. __u32 reserved;
  381. };
  382. /* drm_ivpu_bo_wait job status codes */
  383. #define DRM_IVPU_JOB_STATUS_SUCCESS 0
  384. #define DRM_IVPU_JOB_STATUS_ABORTED 256
  385. /**
  386. * struct drm_ivpu_bo_wait - Wait for BO to become inactive
  387. *
  388. * Blocks until a given buffer object becomes inactive.
  389. * With @timeout_ms set to 0 returns immediately.
  390. */
  391. struct drm_ivpu_bo_wait {
  392. /** @handle: Handle to the buffer object to be waited on */
  393. __u32 handle;
  394. /** @flags: Reserved for future use - must be zero */
  395. __u32 flags;
  396. /** @timeout_ns: Absolute timeout in nanoseconds (may be zero) */
  397. __s64 timeout_ns;
  398. /**
  399. * @job_status:
  400. *
  401. * Job status code which is updated after the job is completed.
  402. * &DRM_IVPU_JOB_STATUS_SUCCESS or device specific error otherwise.
  403. * Valid only if @handle points to a command buffer.
  404. */
  405. __u32 job_status;
  406. /** @pad: Padding - must be zero */
  407. __u32 pad;
  408. };
  409. /**
  410. * struct drm_ivpu_metric_streamer_start - Start collecting metric data
  411. */
  412. struct drm_ivpu_metric_streamer_start {
  413. /** @metric_group_mask: Indicates metric streamer instance */
  414. __u64 metric_group_mask;
  415. /** @sampling_period_ns: Sampling period in nanoseconds */
  416. __u64 sampling_period_ns;
  417. /**
  418. * @read_period_samples:
  419. *
  420. * Number of samples after which user space will try to read the data.
  421. * Reading the data after significantly longer period may cause data loss.
  422. */
  423. __u32 read_period_samples;
  424. /** @sample_size: Returned size of a single sample in bytes */
  425. __u32 sample_size;
  426. /** @max_data_size: Returned max @data_size from %DRM_IOCTL_IVPU_METRIC_STREAMER_GET_DATA */
  427. __u32 max_data_size;
  428. };
  429. /**
  430. * struct drm_ivpu_metric_streamer_get_data - Copy collected metric data
  431. */
  432. struct drm_ivpu_metric_streamer_get_data {
  433. /** @metric_group_mask: Indicates metric streamer instance */
  434. __u64 metric_group_mask;
  435. /** @buffer_ptr: A pointer to a destination for the copied data */
  436. __u64 buffer_ptr;
  437. /** @buffer_size: Size of the destination buffer */
  438. __u64 buffer_size;
  439. /**
  440. * @data_size: Returned size of copied metric data
  441. *
  442. * If the @buffer_size is zero, returns the amount of data ready to be copied.
  443. */
  444. __u64 data_size;
  445. };
  446. /* Command queue flags */
  447. #define DRM_IVPU_CMDQ_FLAG_TURBO 0x00000001
  448. /**
  449. * struct drm_ivpu_cmdq_create - Create command queue for job submission
  450. */
  451. struct drm_ivpu_cmdq_create {
  452. /** @cmdq_id: Returned ID of created command queue */
  453. __u32 cmdq_id;
  454. /**
  455. * @priority:
  456. *
  457. * Priority to be set for related job command queue, can be one of the following:
  458. * %DRM_IVPU_JOB_PRIORITY_DEFAULT
  459. * %DRM_IVPU_JOB_PRIORITY_IDLE
  460. * %DRM_IVPU_JOB_PRIORITY_NORMAL
  461. * %DRM_IVPU_JOB_PRIORITY_FOCUS
  462. * %DRM_IVPU_JOB_PRIORITY_REALTIME
  463. */
  464. __u32 priority;
  465. /**
  466. * @flags:
  467. *
  468. * Supported flags:
  469. *
  470. * %DRM_IVPU_CMDQ_FLAG_TURBO
  471. *
  472. * Enable low-latency mode for the command queue. The NPU will maximize performance
  473. * when executing jobs from such queue at the cost of increased power usage.
  474. */
  475. __u32 flags;
  476. };
  477. /**
  478. * struct drm_ivpu_cmdq_destroy - Destroy a command queue
  479. */
  480. struct drm_ivpu_cmdq_destroy {
  481. /** @cmdq_id: ID of command queue to destroy */
  482. __u32 cmdq_id;
  483. };
  484. /**
  485. * struct drm_ivpu_metric_streamer_stop - Stop collecting metric data
  486. */
  487. struct drm_ivpu_metric_streamer_stop {
  488. /** @metric_group_mask: Indicates metric streamer instance */
  489. __u64 metric_group_mask;
  490. };
  491. #if defined(__cplusplus)
  492. }
  493. #endif
  494. #endif /* __UAPI_IVPU_DRM_H__ */