cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

nvme_ioctl.h (2505B)


      1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
      2/*
      3 * Definitions for the NVM Express ioctl interface
      4 * Copyright (c) 2011-2014, Intel Corporation.
      5 */
      6
      7#ifndef _UAPI_LINUX_NVME_IOCTL_H
      8#define _UAPI_LINUX_NVME_IOCTL_H
      9
     10#include <linux/types.h>
     11
     12struct nvme_user_io {
     13	__u8	opcode;
     14	__u8	flags;
     15	__u16	control;
     16	__u16	nblocks;
     17	__u16	rsvd;
     18	__u64	metadata;
     19	__u64	addr;
     20	__u64	slba;
     21	__u32	dsmgmt;
     22	__u32	reftag;
     23	__u16	apptag;
     24	__u16	appmask;
     25};
     26
     27struct nvme_passthru_cmd {
     28	__u8	opcode;
     29	__u8	flags;
     30	__u16	rsvd1;
     31	__u32	nsid;
     32	__u32	cdw2;
     33	__u32	cdw3;
     34	__u64	metadata;
     35	__u64	addr;
     36	__u32	metadata_len;
     37	__u32	data_len;
     38	__u32	cdw10;
     39	__u32	cdw11;
     40	__u32	cdw12;
     41	__u32	cdw13;
     42	__u32	cdw14;
     43	__u32	cdw15;
     44	__u32	timeout_ms;
     45	__u32	result;
     46};
     47
     48struct nvme_passthru_cmd64 {
     49	__u8	opcode;
     50	__u8	flags;
     51	__u16	rsvd1;
     52	__u32	nsid;
     53	__u32	cdw2;
     54	__u32	cdw3;
     55	__u64	metadata;
     56	__u64	addr;
     57	__u32	metadata_len;
     58	union {
     59		__u32	data_len; /* for non-vectored io */
     60		__u32	vec_cnt; /* for vectored io */
     61	};
     62	__u32	cdw10;
     63	__u32	cdw11;
     64	__u32	cdw12;
     65	__u32	cdw13;
     66	__u32	cdw14;
     67	__u32	cdw15;
     68	__u32	timeout_ms;
     69	__u32   rsvd2;
     70	__u64	result;
     71};
     72
     73/* same as struct nvme_passthru_cmd64, minus the 8b result field */
     74struct nvme_uring_cmd {
     75	__u8	opcode;
     76	__u8	flags;
     77	__u16	rsvd1;
     78	__u32	nsid;
     79	__u32	cdw2;
     80	__u32	cdw3;
     81	__u64	metadata;
     82	__u64	addr;
     83	__u32	metadata_len;
     84	__u32	data_len;
     85	__u32	cdw10;
     86	__u32	cdw11;
     87	__u32	cdw12;
     88	__u32	cdw13;
     89	__u32	cdw14;
     90	__u32	cdw15;
     91	__u32	timeout_ms;
     92	__u32   rsvd2;
     93};
     94
     95#define nvme_admin_cmd nvme_passthru_cmd
     96
     97#define NVME_IOCTL_ID		_IO('N', 0x40)
     98#define NVME_IOCTL_ADMIN_CMD	_IOWR('N', 0x41, struct nvme_admin_cmd)
     99#define NVME_IOCTL_SUBMIT_IO	_IOW('N', 0x42, struct nvme_user_io)
    100#define NVME_IOCTL_IO_CMD	_IOWR('N', 0x43, struct nvme_passthru_cmd)
    101#define NVME_IOCTL_RESET	_IO('N', 0x44)
    102#define NVME_IOCTL_SUBSYS_RESET	_IO('N', 0x45)
    103#define NVME_IOCTL_RESCAN	_IO('N', 0x46)
    104#define NVME_IOCTL_ADMIN64_CMD	_IOWR('N', 0x47, struct nvme_passthru_cmd64)
    105#define NVME_IOCTL_IO64_CMD	_IOWR('N', 0x48, struct nvme_passthru_cmd64)
    106#define NVME_IOCTL_IO64_CMD_VEC	_IOWR('N', 0x49, struct nvme_passthru_cmd64)
    107
    108/* io_uring async commands: */
    109#define NVME_URING_CMD_IO	_IOWR('N', 0x80, struct nvme_uring_cmd)
    110#define NVME_URING_CMD_IO_VEC	_IOWR('N', 0x81, struct nvme_uring_cmd)
    111#define NVME_URING_CMD_ADMIN	_IOWR('N', 0x82, struct nvme_uring_cmd)
    112#define NVME_URING_CMD_ADMIN_VEC _IOWR('N', 0x83, struct nvme_uring_cmd)
    113
    114#endif /* _UAPI_LINUX_NVME_IOCTL_H */