1717/*
1818 * Major version changes that break backward compatibility
1919 */
20- #define VPU_JSM_API_VER_MAJOR 2
20+ #define VPU_JSM_API_VER_MAJOR 3
2121
2222/*
2323 * Minor version changes when API backward compatibility is preserved.
2424 */
25- #define VPU_JSM_API_VER_MINOR 10
25+ #define VPU_JSM_API_VER_MINOR 0
2626
2727/*
2828 * API header changed (field names, documentation, formatting) but API itself has not been changed
103103/*
104104 * Max length (including trailing NULL char) of a dyndbg command.
105105 *
106- * NOTE: 112 is used so that the size of 'struct vpu_ipc_msg' in the JSM API is
106+ * NOTE: 96 is used so that the size of 'struct vpu_ipc_msg' in the JSM API is
107107 * 128 bytes (multiple of 64 bytes, the cache line size).
108108 */
109- #define VPU_DYNDBG_CMD_MAX_LEN 112
109+ #define VPU_DYNDBG_CMD_MAX_LEN 96
110110
111111/*
112112 * Job format.
@@ -119,7 +119,7 @@ struct vpu_job_queue_entry {
119119 u64 root_page_table_update_counter ; /**< Page tables update events counter */
120120 u64 preemption_buffer_address ; /**< Address of the preemption buffer to use for this job */
121121 u64 preemption_buffer_size ; /**< Size of the preemption buffer to use for this job */
122- u8 reserved [VPU_JOB_RESERVED_BYTES ];
122+ u8 reserved_0 [VPU_JOB_RESERVED_BYTES ];
123123};
124124
125125/*
@@ -129,7 +129,7 @@ struct vpu_job_queue_header {
129129 u32 engine_idx ;
130130 u32 head ;
131131 u32 tail ;
132- u8 reserved [VPU_JOB_QUEUE_RESERVED_BYTES ];
132+ u8 reserved_0 [VPU_JOB_QUEUE_RESERVED_BYTES ];
133133};
134134
135135/*
@@ -319,6 +319,8 @@ enum vpu_ipc_msg_status { VPU_JSM_MSG_FREE, VPU_JSM_MSG_ALLOCATED };
319319struct vpu_ipc_msg_payload_engine_reset {
320320 /* Engine to be reset. */
321321 u32 engine_idx ;
322+ /* Reserved */
323+ u32 reserved_0 ;
322324};
323325
324326struct vpu_ipc_msg_payload_engine_preempt {
@@ -336,6 +338,8 @@ struct vpu_ipc_msg_payload_engine_preempt {
336338struct vpu_ipc_msg_payload_register_db {
337339 /* Index of the doorbell to register. */
338340 u32 db_idx ;
341+ /* Reserved */
342+ u32 reserved_0 ;
339343 /* Virtual address in Global GTT pointing to the start of job queue. */
340344 u64 jobq_base ;
341345 /* Size of the job queue in bytes. */
@@ -352,11 +356,15 @@ struct vpu_ipc_msg_payload_register_db {
352356struct vpu_ipc_msg_payload_unregister_db {
353357 /* Index of the doorbell to unregister. */
354358 u32 db_idx ;
359+ /* Reserved */
360+ u32 reserved_0 ;
355361};
356362
357363struct vpu_ipc_msg_payload_query_engine_hb {
358364 /* Engine to return heartbeat value. */
359365 u32 engine_idx ;
366+ /* Reserved */
367+ u32 reserved_0 ;
360368};
361369
362370struct vpu_ipc_msg_payload_power_level {
@@ -371,11 +379,15 @@ struct vpu_ipc_msg_payload_power_level {
371379 * considered to be valid.
372380 */
373381 u32 power_level ;
382+ /* Reserved */
383+ u32 reserved_0 ;
374384};
375385
376386struct vpu_ipc_msg_payload_ssid_release {
377387 /* Host sub-stream ID for the context to be released. */
378388 u32 host_ssid ;
389+ /* Reserved */
390+ u32 reserved_0 ;
379391};
380392
381393/**
@@ -425,9 +437,6 @@ struct vpu_jsm_metric_streamer_start {
425437 u64 next_buffer_size ;
426438};
427439
428- static_assert (sizeof (struct vpu_jsm_metric_streamer_start ) % 8 == 0 ,
429- "vpu_jsm_metric_streamer_start is misaligned" );
430-
431440/**
432441 * @brief Metric streamer stop command structure.
433442 * @see VPU_JSM_MSG_METRIC_STREAMER_STOP
@@ -437,9 +446,6 @@ struct vpu_jsm_metric_streamer_stop {
437446 u64 metric_group_mask ;
438447};
439448
440- static_assert (sizeof (struct vpu_jsm_metric_streamer_stop ) % 8 == 0 ,
441- "vpu_jsm_metric_streamer_stop is misaligned" );
442-
443449/**
444450 * Provide VPU FW with buffers to write metric data.
445451 * @see VPU_JSM_MSG_METRIC_STREAMER_UPDATE
@@ -471,9 +477,6 @@ struct vpu_jsm_metric_streamer_update {
471477 u64 next_buffer_size ;
472478};
473479
474- static_assert (sizeof (struct vpu_jsm_metric_streamer_update ) % 8 == 0 ,
475- "vpu_jsm_metric_streamer_update is misaligned" );
476-
477480struct vpu_ipc_msg_payload_blob_deinit {
478481 /* 64-bit unique ID for the blob to be de-initialized. */
479482 u64 blob_id ;
@@ -491,7 +494,7 @@ struct vpu_ipc_msg_payload_job_done {
491494 /* Host SSID */
492495 u32 host_ssid ;
493496 /* Zero Padding */
494- u32 reserved ;
497+ u32 reserved_0 ;
495498 /* Command queue id */
496499 u64 cmdq_id ;
497500};
@@ -500,7 +503,7 @@ struct vpu_jsm_engine_reset_context {
500503 /* Host SSID */
501504 u32 host_ssid ;
502505 /* Zero Padding */
503- u32 reserved ;
506+ u32 reserved_0 ;
504507 /* Command queue id */
505508 u64 cmdq_id ;
506509 /* Flags: 0: cause of hang; 1: collateral damage of reset */
@@ -533,6 +536,8 @@ struct vpu_ipc_msg_payload_engine_preempt_done {
533536struct vpu_ipc_msg_payload_register_db_done {
534537 /* Index of the registered doorbell. */
535538 u32 db_idx ;
539+ /* Reserved */
540+ u32 reserved_0 ;
536541};
537542
538543/**
@@ -543,11 +548,15 @@ struct vpu_ipc_msg_payload_register_db_done {
543548struct vpu_ipc_msg_payload_unregister_db_done {
544549 /* Index of the unregistered doorbell. */
545550 u32 db_idx ;
551+ /* Reserved */
552+ u32 reserved_0 ;
546553};
547554
548555struct vpu_ipc_msg_payload_query_engine_hb_done {
549556 /* Engine returning heartbeat value. */
550557 u32 engine_idx ;
558+ /* Reserved */
559+ u32 reserved_0 ;
551560 /* Heartbeat value. */
552561 u64 heartbeat ;
553562};
@@ -559,6 +568,8 @@ struct vpu_ipc_msg_payload_get_power_level_count_done {
559568 * implementations.
560569 */
561570 u32 power_level_count ;
571+ /* Reserved */
572+ u32 reserved_0 ;
562573 /**
563574 * Power consumption limit for each supported power level in
564575 * [0-100%] range relative to power level 0.
@@ -577,7 +588,7 @@ struct vpu_ipc_msg_payload_hws_priority_band_setup {
577588 * Grace period in 100ns units when preempting another priority band for
578589 * this priority band
579590 */
580- u64 grace_period [VPU_HWS_NUM_PRIORITY_BANDS ];
591+ u32 grace_period [VPU_HWS_NUM_PRIORITY_BANDS ];
581592 /*
582593 * Default quantum in 100ns units for scheduling across processes
583594 * within a priority band
@@ -593,6 +604,8 @@ struct vpu_ipc_msg_payload_hws_priority_band_setup {
593604 * in situations when it's starved by the focus band.
594605 */
595606 u32 normal_band_percentage ;
607+ /* Reserved */
608+ u32 reserved_0 ;
596609};
597610
598611/* HWS create command queue request */
@@ -609,6 +622,8 @@ struct vpu_ipc_msg_payload_hws_create_cmdq {
609622 u64 cmdq_base ;
610623 /* Command queue size */
611624 u32 cmdq_size ;
625+ /* Reserved */
626+ u32 reserved_0 ;
612627};
613628
614629/* HWS create command queue response */
@@ -806,9 +821,6 @@ struct vpu_jsm_metric_streamer_done {
806821 u64 bytes_written ;
807822};
808823
809- static_assert (sizeof (struct vpu_jsm_metric_streamer_done ) % 8 == 0 ,
810- "vpu_jsm_metric_streamer_done is misaligned" );
811-
812824/**
813825 * Metric group description placed in the metric buffer after successful completion
814826 * of the VPU_JSM_MSG_METRIC_STREAMER_INFO command. This is followed by one or more
@@ -848,16 +860,13 @@ struct vpu_jsm_metric_group_descriptor {
848860 u32 name_string_size ;
849861 /** Counter description string size, @see name_string_size */
850862 u32 description_string_size ;
851- u32 reserved_0 [ 2 ] ;
863+ u64 reserved_0 ;
852864 /**
853865 * Right after this structure, the VPU writes name and description of
854866 * the metric group.
855867 */
856868};
857869
858- static_assert (sizeof (struct vpu_jsm_metric_group_descriptor ) % 8 == 0 ,
859- "vpu_jsm_metric_group_descriptor is misaligned" );
860-
861870/**
862871 * Metric counter description, placed in the buffer after vpu_jsm_metric_group_descriptor.
863872 * @see VPU_JSM_MSG_METRIC_STREAMER_INFO
@@ -894,16 +903,13 @@ struct vpu_jsm_metric_counter_descriptor {
894903 u32 component_string_size ;
895904 /** Counter string size, @see name_string_size */
896905 u32 units_string_size ;
897- u32 reserved_0 [ 2 ] ;
906+ u64 reserved_0 ;
898907 /**
899908 * Right after this structure, the VPU writes name, description
900909 * component and unit strings.
901910 */
902911};
903912
904- static_assert (sizeof (struct vpu_jsm_metric_counter_descriptor ) % 8 == 0 ,
905- "vpu_jsm_metric_counter_descriptor is misaligned" );
906-
907913/**
908914 * Payload for VPU_JSM_MSG_DYNDBG_CONTROL requests.
909915 *
@@ -977,6 +983,8 @@ union vpu_ipc_msg_payload {
977983 * to allow proper handling of VPU cache operations.
978984 */
979985struct vpu_jsm_msg {
986+ /* Reserved */
987+ u64 reserved_0 ;
980988 /* Message type, see vpu_ipc_msg_type enum. */
981989 u32 type ;
982990 /* Buffer status, see vpu_ipc_msg_status enum. */
@@ -988,6 +996,7 @@ struct vpu_jsm_msg {
988996 u32 request_id ;
989997 /* Request return code set by the VPU, see VPU_JSM_STATUS_* defines. */
990998 u32 result ;
999+ u64 reserved_1 ;
9911000 /* Message payload depending on message type, see vpu_ipc_msg_payload union. */
9921001 union vpu_ipc_msg_payload payload ;
9931002};
0 commit comments