]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - include/uapi/linux/lightnvm.h
Merge branches 'for-4.11/upstream-fixes', 'for-4.12/accutouch', 'for-4.12/cp2112...
[mirror_ubuntu-artful-kernel.git] / include / uapi / linux / lightnvm.h
index 774a43128a7aa4c039576513e1e3ff7355d0fc0d..fd19f36b3129278343f37ee5e59dfa280713eb9c 100644 (file)
@@ -122,6 +122,44 @@ struct nvm_ioctl_dev_factory {
        __u32 flags;
 };
 
+struct nvm_user_vio {
+       __u8 opcode;
+       __u8 flags;
+       __u16 control;
+       __u16 nppas;
+       __u16 rsvd;
+       __u64 metadata;
+       __u64 addr;
+       __u64 ppa_list;
+       __u32 metadata_len;
+       __u32 data_len;
+       __u64 status;
+       __u32 result;
+       __u32 rsvd3[3];
+};
+
+struct nvm_passthru_vio {
+       __u8 opcode;
+       __u8 flags;
+       __u8 rsvd[2];
+       __u32 nsid;
+       __u32 cdw2;
+       __u32 cdw3;
+       __u64 metadata;
+       __u64 addr;
+       __u32 metadata_len;
+       __u32 data_len;
+       __u64 ppa_list;
+       __u16 nppas;
+       __u16 control;
+       __u32 cdw13;
+       __u32 cdw14;
+       __u32 cdw15;
+       __u64 status;
+       __u32 result;
+       __u32 timeout_ms;
+};
+
 /* The ioctl type, 'L', 0x20 - 0x2F documented in ioctl-number.txt */
 enum {
        /* top level cmds */
@@ -137,6 +175,11 @@ enum {
 
        /* Factory reset device */
        NVM_DEV_FACTORY_CMD,
+
+       /* Vector user I/O */
+       NVM_DEV_VIO_ADMIN_CMD = 0x41,
+       NVM_DEV_VIO_CMD = 0x42,
+       NVM_DEV_VIO_USER_CMD = 0x43,
 };
 
 #define NVM_IOCTL 'L' /* 0x4c */
@@ -154,6 +197,13 @@ enum {
 #define NVM_DEV_FACTORY                _IOW(NVM_IOCTL, NVM_DEV_FACTORY_CMD, \
                                                struct nvm_ioctl_dev_factory)
 
+#define NVME_NVM_IOCTL_IO_VIO          _IOWR(NVM_IOCTL, NVM_DEV_VIO_USER_CMD, \
+                                               struct nvm_passthru_vio)
+#define NVME_NVM_IOCTL_ADMIN_VIO       _IOWR(NVM_IOCTL, NVM_DEV_VIO_ADMIN_CMD,\
+                                               struct nvm_passthru_vio)
+#define NVME_NVM_IOCTL_SUBMIT_VIO      _IOWR(NVM_IOCTL, NVM_DEV_VIO_CMD,\
+                                               struct nvm_user_vio)
+
 #define NVM_VERSION_MAJOR      1
 #define NVM_VERSION_MINOR      0
 #define NVM_VERSION_PATCHLEVEL 0