summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys/nvme.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/sys/nvme.h')
-rw-r--r--usr/src/uts/common/sys/nvme.h34
1 files changed, 28 insertions, 6 deletions
diff --git a/usr/src/uts/common/sys/nvme.h b/usr/src/uts/common/sys/nvme.h
index 787d5d4016..529f24dee0 100644
--- a/usr/src/uts/common/sys/nvme.h
+++ b/usr/src/uts/common/sys/nvme.h
@@ -14,6 +14,7 @@
* Copyright 2020 Joyent, Inc.
* Copyright 2019 Western Digital Corporation
* Copyright 2021 Oxide Computer Company
+ * Copyright 2022 OmniOS Community Edition (OmniOSce) Association.
*/
#ifndef _SYS_NVME_H
@@ -557,6 +558,7 @@ typedef struct {
#define NVME_LOGPAGE_ERROR 0x1 /* Error Information */
#define NVME_LOGPAGE_HEALTH 0x2 /* SMART/Health Information */
#define NVME_LOGPAGE_FWSLOT 0x3 /* Firmware Slot Information */
+#define NVME_LOGPAGE_NSCHANGE 0x4 /* Changed namespace (1.2) */
typedef struct {
uint64_t el_count; /* Error Count */
@@ -634,6 +636,18 @@ typedef struct {
uint8_t fw_rsvd4[512 - 64];
} nvme_fwslot_log_t;
+/*
+ * The NVMe spec specifies that the changed namespace list contains up to
+ * 1024 entries.
+ */
+#define NVME_NSCHANGE_LIST_SIZE 1024
+
+typedef struct {
+ uint32_t nscl_ns[NVME_NSCHANGE_LIST_SIZE];
+} __packed nvme_nschange_list_t;
+
+/* CSTYLED */
+_Static_assert(sizeof (nvme_nschange_list_t) == 4096, "bad size for nvme_nschange_list_t");
/*
* NVMe Format NVM
@@ -798,13 +812,21 @@ typedef union {
/* Asynchronous Event Configuration Feature */
typedef union {
struct {
- uint8_t aec_avail:1; /* available space too low */
- uint8_t aec_temp:1; /* temperature too high */
- uint8_t aec_reliab:1; /* degraded reliability */
- uint8_t aec_readonly:1; /* media is read-only */
- uint8_t aec_volatile:1; /* volatile memory backup failed */
+ uint8_t aec_avail:1; /* Available space too low */
+ uint8_t aec_temp:1; /* Temperature too high */
+ uint8_t aec_reliab:1; /* Degraded reliability */
+ uint8_t aec_readonly:1; /* Media is read-only */
+ uint8_t aec_volatile:1; /* Volatile memory backup failed */
uint8_t aec_rsvd1:3;
- uint8_t aec_rsvd2[3];
+ uint8_t aec_nsan:1; /* Namespace attribute notices (1.2) */
+ uint8_t aec_fwact:1; /* Firmware activation notices (1.2) */
+ uint8_t aec_telln:1; /* Telemetry log notices (1.3) */
+ uint8_t aec_ansacn:1; /* Asymm. NS access change (1.4) */
+ uint8_t aec_plat:1; /* Predictable latency ev. agg. (1.4) */
+ uint8_t aec_lbasi:1; /* LBA status information (1.4) */
+ uint8_t aec_egeal:1; /* Endurance group ev. agg. (1.4) */
+ uint8_t aec_rsvd2:1;
+ uint8_t aec_rsvd3[2];
} b;
uint32_t r;
} nvme_async_event_conf_t;