nfit, libnvdimm: clear poison command support
[cascardo/linux.git] / include / uapi / linux / ndctl.h
index 5b4a4be..7cc28ab 100644 (file)
@@ -66,14 +66,18 @@ struct nd_cmd_ars_cap {
        __u64 length;
        __u32 status;
        __u32 max_ars_out;
+       __u32 clear_err_unit;
+       __u32 reserved;
 } __packed;
 
 struct nd_cmd_ars_start {
        __u64 address;
        __u64 length;
        __u16 type;
-       __u8 reserved[6];
+       __u8 flags;
+       __u8 reserved[5];
        __u32 status;
+       __u32 scrub_time;
 } __packed;
 
 struct nd_cmd_ars_status {
@@ -81,16 +85,27 @@ struct nd_cmd_ars_status {
        __u32 out_length;
        __u64 address;
        __u64 length;
+       __u64 restart_address;
+       __u64 restart_length;
        __u16 type;
+       __u16 flags;
        __u32 num_records;
        struct nd_ars_record {
                __u32 handle;
-               __u32 flags;
+               __u32 reserved;
                __u64 err_address;
                __u64 length;
        } __packed records[0];
 } __packed;
 
+struct nd_cmd_clear_error {
+       __u64 address;
+       __u64 length;
+       __u32 status;
+       __u8 reserved[4];
+       __u64 cleared;
+} __packed;
+
 enum {
        ND_CMD_IMPLEMENTED = 0,
 
@@ -98,6 +113,7 @@ enum {
        ND_CMD_ARS_CAP = 1,
        ND_CMD_ARS_START = 2,
        ND_CMD_ARS_STATUS = 3,
+       ND_CMD_CLEAR_ERROR = 4,
 
        /* per-dimm commands */
        ND_CMD_SMART = 1,
@@ -122,6 +138,7 @@ static inline const char *nvdimm_bus_cmd_name(unsigned cmd)
                [ND_CMD_ARS_CAP] = "ars_cap",
                [ND_CMD_ARS_START] = "ars_start",
                [ND_CMD_ARS_STATUS] = "ars_status",
+               [ND_CMD_CLEAR_ERROR] = "clear_error",
        };
 
        if (cmd < ARRAY_SIZE(names) && names[cmd])
@@ -180,6 +197,9 @@ static inline const char *nvdimm_cmd_name(unsigned cmd)
 #define ND_IOCTL_ARS_STATUS            _IOWR(ND_IOCTL, ND_CMD_ARS_STATUS,\
                                        struct nd_cmd_ars_status)
 
+#define ND_IOCTL_CLEAR_ERROR           _IOWR(ND_IOCTL, ND_CMD_CLEAR_ERROR,\
+                                       struct nd_cmd_clear_error)
+
 #define ND_DEVICE_DIMM 1            /* nd_dimm: container for "config data" */
 #define ND_DEVICE_REGION_PMEM 2     /* nd_region: (parent of PMEM namespaces) */
 #define ND_DEVICE_REGION_BLK 3      /* nd_region: (parent of BLK namespaces) */