| syntax = "proto3"; |
| |
| package google.gbmc.nvme.base; |
| |
| // 01h - Arbitration |
| // This feature controls the arbitration of commands among different submission queues. |
| message Arbitration { |
| // Bit 7:0 - Arbitration Burst (AB) |
| // Specifies the maximum number of commands that the controller may launch at one time from a particular submission queue. |
| uint32 arbitration_burst = 1; |
| // Bit 15:8 - Low Priority Weight (LPW) |
| // Specifies the number of commands that may be executed from the low priority service class in each round. |
| uint32 low_priority_weight = 2; |
| // Bit 23:16 - Medium Priority Weight (MPW) |
| // Specifies the number of commands that may be executed from the medium priority service class in each round. |
| uint32 medium_priority_weight = 3; |
| // Bit 31:24 - High Priority Weight (HPW) |
| // Specifies the number of commands that may be executed from the high priority service class in each round. |
| uint32 high_priority_weight = 4; |
| } |
| |
| // 02h - Power Management |
| // This feature allows the host to configure the power state of the controller. |
| message PowerManagement { |
| // Bit 4:0 - Power State (PS) |
| // Specifies the power state that the controller should transition to. |
| uint32 power_state = 1; |
| // Bit 8 - Workload Hint (WH) |
| // Indicates the type of workload that the controller should optimize for. |
| uint32 workload_hint = 2; |
| } |
| |
| // 04h - Temperature Threshold |
| // This feature allows the host to set temperature thresholds for the controller or a specific namespace. |
| message TemperatureThreshold { |
| enum ThresholdType { |
| OVER_TEMPERATURE = 0; |
| UNDER_TEMPERATURE = 1; |
| } |
| // Bit 15:00 - Temperature Threshold (TMPTH) |
| // Specifies the threshold value in Kelvins. |
| uint32 temperature_threshold = 1; |
| // Bit 19:16 - Threshold Temperature Select (TMPSEL) |
| // Selects the temperature sensor. |
| uint32 threshold_temperature_select = 2; |
| // Bit 21:20 - Threshold Type Select (THSEL) |
| // Selects the type of temperature threshold (Over, Under). |
| ThresholdType threshold_type_select = 3; |
| } |
| |
| // 05h - Error Recovery |
| // This feature controls the error recovery settings for the NVM command set. |
| message ErrorRecovery { |
| enum State { |
| DISABLED = 0; |
| ENABLED = 1; |
| } |
| // Bit 15:00 - Time Limited Error Recovery (TLER) |
| // Indicates a limited retry timeout value in 100 millisecond units. |
| uint32 tler = 1; |
| // Bit 16 - Deallocated or Unwritten Logical Block Error Enable (DULBE) |
| // If set to ENABLED, then the Deallocated or Unwritten Logical Block error is enabled. |
| State dulbe_enable = 2; |
| } |
| |
| // 06h - Volatile Write Cache |
| // This feature controls the operation of the volatile write cache, if present. |
| message VolatileWriteCache { |
| enum State { |
| DISABLED = 0; |
| ENABLED = 1; |
| } |
| // Bit 0 - Volatile Write Cache Enable (WCE) |
| // If set to ENABLED, the volatile write cache is enabled. |
| State write_cache_enable = 1; |
| } |
| |
| // 07h - Number of Queues |
| // This feature configures the number of submission and completion queues. |
| message NumberOfQueues { |
| // Bit 15:00 - Number of Submission Queues (NSQR) |
| // Specifies the number of I/O submission queues requested by the host. |
| uint32 number_of_submission_queues = 1; |
| // Bit 31:16 - Number of Completion Queues (NCQR) |
| // Specifies the number of I/O completion queues requested by the host. |
| uint32 number_of_completion_queues = 2; |
| } |
| |
| // 08h - Interrupt Coalescing |
| // This feature controls the interrupt coalescing settings. |
| message InterruptCoalescing { |
| // Bit 7:0 - Aggregation Threshold (THR) |
| // Specifies the minimum number of completion queue entries to aggregate before signaling an interrupt. |
| uint32 aggregation_threshold = 1; |
| // Bit 15:8 - Aggregation Time (TIME) |
| // Specifies the maximum time to aggregate interrupts in units of 100 microseconds. |
| uint32 aggregation_time = 2; |
| } |
| |
| // 09h - Interrupt Vector Configuration |
| // This feature configures a specific interrupt vector. |
| message InterruptVectorConfiguration { |
| enum CoalescingState { |
| COALESCING_ENABLED = 0; |
| COALESCING_DISABLED = 1; |
| } |
| // Bit 15:00 - Interrupt Vector (IV) |
| // Specifies the interrupt vector to be configured. |
| uint32 interrupt_vector = 1; |
| // Bit 16 - Coalescing Disable (CD) |
| // If set to COALESCING_DISABLED, interrupt coalescing is disabled for this vector. |
| CoalescingState coalescing_disable = 2; |
| } |
| |
| // 0Ah - Write Atomicity Normal |
| // This feature controls the write atomicity settings for normal write operations. |
| message WriteAtomicityNormal { |
| enum NormalWriteAtomicityState { |
| NORMAL_WRITE_ATOMICITY_ENABLED = 0; |
| NORMAL_WRITE_ATOMICITY_DISABLED = 1; |
| } |
| // Bit 0 - Disable Normal (DN) |
| // If set to NORMAL_WRITE_ATOMICITY_DISABLED, the controller shall disable normal write atomicity. |
| NormalWriteAtomicityState disable_normal = 1; |
| } |
| |
| // 0Bh - Asynchronous Event Configuration |
| // This feature controls the configuration of asynchronous events. |
| message AsynchronousEventConfiguration { |
| enum EventState { |
| EVENT_DISABLED = 0; |
| EVENT_ENABLED = 1; |
| } |
| // Bit 7:0 - SMART / Health Critical Warnings |
| // Specifies which SMART/Health critical warnings should trigger an asynchronous event notification. |
| uint32 smart_critical_warning_config = 1; |
| // Bit 8 - Namespace Attribute Notices |
| EventState namespace_attribute_notice_config = 2; |
| // Bit 9 - Firmware Activation Notices |
| EventState fw_activation_notice_config = 3; |
| // Bit 10 - Telemetry Log Notices |
| EventState telemetry_log_notice_config = 4; |
| // Bit 11 - Asymmetric Namespace Access Change Notices |
| EventState asymmetric_namespace_access_change_config = 5; |
| // Bit 12 - Predictable Latency Event Aggregate Log Change Notices |
| EventState predictable_latency_event_aggregate_log_change_config = 6; |
| // Bit 13 - LBA Status Information Alert Notices |
| EventState lba_status_information_alert_config = 7; |
| // Bit 14 - Endurance Group Event Aggregate Log Change Notices |
| EventState endurance_group_event_aggregate_log_change_config = 8; |
| // Bit 15 - Normal NVM Subsystem Shutdown |
| EventState normal_nvm_subsystem_shutdown_config = 9; |
| // Bit 27 - Zone Descriptor Changed Notices |
| EventState zone_descriptor_changed_config = 10; |
| // Bit 31 - Discovery Log Page Change Notification |
| EventState discovery_log_page_change_config = 11; |
| } |