blob: 84af23d6a822089f874b85151cf6d89b6c5321e8 [file]
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;
}