History

Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi

Pull first round of SCSI updates from James Bottomley: "This includes one new driver: cxlflash plus the usual grab bag of updates for the major drivers: qla2xxx, ipr, storvsc, pm80xx, hptiop, plus a few assorted fixes. There's another tranch coming, but I want to incubate it another few days in the checkers, plus it includes a mpt2sas separated lifetime fix, which Avago won't get done testing until Friday" * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (85 commits) aic94xx: set an error code on failure storvsc: Set the error code correctly in failure conditions storvsc: Allow write_same when host is windows 10 storvsc: use storage protocol version to determine storage capabilities storvsc: use correct defaults for values determined by protocol negotiation storvsc: Untangle the storage protocol negotiation from the vmbus protocol negotiation. storvsc: Use a single value to track protocol versions storvsc: Rather than look for sets of specific protocol versions, make decisions based on ranges. cxlflash: Remove unused variable from queuecommand cxlflash: shift wrapping bug in afu_link_reset() cxlflash: off by one bug in cxlflash_show_port_status() cxlflash: Virtual LUN support cxlflash: Superpipe support cxlflash: Base error recovery support qla2xxx: Update driver version to 8.07.00.26-k qla2xxx: Add pci device id 0x2261. qla2xxx: Fix missing device login retries. qla2xxx: do not clear slot in outstanding cmd array qla2xxx: Remove decrement of sp reference count in abort handler. qla2xxx: Add support to show MPI and PEP FW version for ISP27xx. ...

Linus Torvalds committed 11 years ago

Commit df910392 parents 91a247d 9f55bca70 files · +9177 −1327Browse files

Showing the changes to include/uapi (2 of 70 files). Show all

Unified · Split

2 files
  1. include/uapi/scsi/Kbuild +1 −0
  2. include/uapi/scsi/cxlflash_ioctl.h +174 −0
include/uapi/scsi/Kbuild+1−0
@@ -3,3 +3,4 @@ header-y += fc/ · 2 unmodified lines
33 header-y += scsi_bsg_fc.h
44 header-y += scsi_netlink.h
55 header-y += scsi_netlink_fc.h
6+header-y += cxlflash_ioctl.h
include/uapi/scsi/cxlflash_ioctl.h+174−0
@@ -0,0 +1,174 @@
1+/*
2+ * CXL Flash Device Driver
3+ *
4+ * Written by: Manoj N. Kumar <manoj@linux.vnet.ibm.com>, IBM Corporation
5+ * Matthew R. Ochs <mrochs@linux.vnet.ibm.com>, IBM Corporation
6+ *
7+ * Copyright (C) 2015 IBM Corporation
8+ *
9+ * This program is free software; you can redistribute it and/or
10+ * modify it under the terms of the GNU General Public License
11+ * as published by the Free Software Foundation; either version
12+ * 2 of the License, or (at your option) any later version.
13+ */
14+
15+#ifndef _CXLFLASH_IOCTL_H
16+#define _CXLFLASH_IOCTL_H
17+
18+#include <linux/types.h>
19+
20+/*
21+ * Structure and flag definitions CXL Flash superpipe ioctls
22+ */
23+
24+#define DK_CXLFLASH_VERSION_0 0
25+
26+struct dk_cxlflash_hdr {
27+ __u16 version; /* Version data */
28+ __u16 rsvd[3]; /* Reserved for future use */
29+ __u64 flags; /* Input flags */
30+ __u64 return_flags; /* Returned flags */
31+};
32+
33+/*
34+ * Notes:
35+ * -----
36+ * The 'context_id' field of all ioctl structures contains the context
37+ * identifier for a context in the lower 32-bits (upper 32-bits are not
38+ * to be used when identifying a context to the AFU). That said, the value
39+ * in its entirety (all 64-bits) is to be treated as an opaque cookie and
40+ * should be presented as such when issuing ioctls.
41+ *
42+ * For DK_CXLFLASH_ATTACH ioctl, user specifies read/write access
43+ * permissions via the O_RDONLY, O_WRONLY, and O_RDWR flags defined in
44+ * the fcntl.h header file.
45+ */
46+#define DK_CXLFLASH_ATTACH_REUSE_CONTEXT 0x8000000000000000ULL
47+
48+struct dk_cxlflash_attach {
49+ struct dk_cxlflash_hdr hdr; /* Common fields */
50+ __u64 num_interrupts; /* Requested number of interrupts */
51+ __u64 context_id; /* Returned context */
52+ __u64 mmio_size; /* Returned size of MMIO area */
53+ __u64 block_size; /* Returned block size, in bytes */
54+ __u64 adap_fd; /* Returned adapter file descriptor */
55+ __u64 last_lba; /* Returned last LBA on the device */
56+ __u64 max_xfer; /* Returned max transfer size, blocks */
57+ __u64 reserved[8]; /* Reserved for future use */
58+};
59+
60+struct dk_cxlflash_detach {
61+ struct dk_cxlflash_hdr hdr; /* Common fields */
62+ __u64 context_id; /* Context to detach */
63+ __u64 reserved[8]; /* Reserved for future use */
64+};
65+
66+struct dk_cxlflash_udirect {
67+ struct dk_cxlflash_hdr hdr; /* Common fields */
68+ __u64 context_id; /* Context to own physical resources */
69+ __u64 rsrc_handle; /* Returned resource handle */
70+ __u64 last_lba; /* Returned last LBA on the device */
71+ __u64 reserved[8]; /* Reserved for future use */
72+};
73+
74+#define DK_CXLFLASH_UVIRTUAL_NEED_WRITE_SAME 0x8000000000000000ULL
75+
76+struct dk_cxlflash_uvirtual {
77+ struct dk_cxlflash_hdr hdr; /* Common fields */
78+ __u64 context_id; /* Context to own virtual resources */
79+ __u64 lun_size; /* Requested size, in 4K blocks */
80+ __u64 rsrc_handle; /* Returned resource handle */
81+ __u64 last_lba; /* Returned last LBA of LUN */
82+ __u64 reserved[8]; /* Reserved for future use */
83+};
84+
85+struct dk_cxlflash_release {
86+ struct dk_cxlflash_hdr hdr; /* Common fields */
87+ __u64 context_id; /* Context owning resources */
88+ __u64 rsrc_handle; /* Resource handle to release */
89+ __u64 reserved[8]; /* Reserved for future use */
90+};
91+
92+struct dk_cxlflash_resize {
93+ struct dk_cxlflash_hdr hdr; /* Common fields */
94+ __u64 context_id; /* Context owning resources */
95+ __u64 rsrc_handle; /* Resource handle of LUN to resize */
96+ __u64 req_size; /* New requested size, in 4K blocks */
97+ __u64 last_lba; /* Returned last LBA of LUN */
98+ __u64 reserved[8]; /* Reserved for future use */
99+};
100+
101+struct dk_cxlflash_clone {
102+ struct dk_cxlflash_hdr hdr; /* Common fields */
103+ __u64 context_id_src; /* Context to clone from */
104+ __u64 context_id_dst; /* Context to clone to */
105+ __u64 adap_fd_src; /* Source context adapter fd */
106+ __u64 reserved[8]; /* Reserved for future use */
107+};
108+
109+#define DK_CXLFLASH_VERIFY_SENSE_LEN 18
110+#define DK_CXLFLASH_VERIFY_HINT_SENSE 0x8000000000000000ULL
111+
112+struct dk_cxlflash_verify {
113+ struct dk_cxlflash_hdr hdr; /* Common fields */
114+ __u64 context_id; /* Context owning resources to verify */
115+ __u64 rsrc_handle; /* Resource handle of LUN */
116+ __u64 hint; /* Reasons for verify */
117+ __u64 last_lba; /* Returned last LBA of device */
118+ __u8 sense_data[DK_CXLFLASH_VERIFY_SENSE_LEN]; /* SCSI sense data */
119+ __u8 pad[6]; /* Pad to next 8-byte boundary */
120+ __u64 reserved[8]; /* Reserved for future use */
121+};
122+
123+#define DK_CXLFLASH_RECOVER_AFU_CONTEXT_RESET 0x8000000000000000ULL
124+
125+struct dk_cxlflash_recover_afu {
126+ struct dk_cxlflash_hdr hdr; /* Common fields */
127+ __u64 reason; /* Reason for recovery request */
128+ __u64 context_id; /* Context to recover / updated ID */
129+ __u64 mmio_size; /* Returned size of MMIO area */
130+ __u64 adap_fd; /* Returned adapter file descriptor */
131+ __u64 reserved[8]; /* Reserved for future use */
132+};
133+
134+#define DK_CXLFLASH_MANAGE_LUN_WWID_LEN 16
135+#define DK_CXLFLASH_MANAGE_LUN_ENABLE_SUPERPIPE 0x8000000000000000ULL
136+#define DK_CXLFLASH_MANAGE_LUN_DISABLE_SUPERPIPE 0x4000000000000000ULL
137+#define DK_CXLFLASH_MANAGE_LUN_ALL_PORTS_ACCESSIBLE 0x2000000000000000ULL
138+
139+struct dk_cxlflash_manage_lun {
140+ struct dk_cxlflash_hdr hdr; /* Common fields */
141+ __u8 wwid[DK_CXLFLASH_MANAGE_LUN_WWID_LEN]; /* Page83 WWID, NAA-6 */
142+ __u64 reserved[8]; /* Rsvd, future use */
143+};
144+
145+union cxlflash_ioctls {
146+ struct dk_cxlflash_attach attach;
147+ struct dk_cxlflash_detach detach;
148+ struct dk_cxlflash_udirect udirect;
149+ struct dk_cxlflash_uvirtual uvirtual;
150+ struct dk_cxlflash_release release;
151+ struct dk_cxlflash_resize resize;
152+ struct dk_cxlflash_clone clone;
153+ struct dk_cxlflash_verify verify;
154+ struct dk_cxlflash_recover_afu recover_afu;
155+ struct dk_cxlflash_manage_lun manage_lun;
156+};
157+
158+#define MAX_CXLFLASH_IOCTL_SZ (sizeof(union cxlflash_ioctls))
159+
160+#define CXL_MAGIC 0xCA
161+#define CXL_IOWR(_n, _s) _IOWR(CXL_MAGIC, _n, struct _s)
162+
163+#define DK_CXLFLASH_ATTACH CXL_IOWR(0x80, dk_cxlflash_attach)
164+#define DK_CXLFLASH_USER_DIRECT CXL_IOWR(0x81, dk_cxlflash_udirect)
165+#define DK_CXLFLASH_RELEASE CXL_IOWR(0x82, dk_cxlflash_release)
166+#define DK_CXLFLASH_DETACH CXL_IOWR(0x83, dk_cxlflash_detach)
167+#define DK_CXLFLASH_VERIFY CXL_IOWR(0x84, dk_cxlflash_verify)
168+#define DK_CXLFLASH_RECOVER_AFU CXL_IOWR(0x85, dk_cxlflash_recover_afu)
169+#define DK_CXLFLASH_MANAGE_LUN CXL_IOWR(0x86, dk_cxlflash_manage_lun)
170+#define DK_CXLFLASH_USER_VIRTUAL CXL_IOWR(0x87, dk_cxlflash_uvirtual)
171+#define DK_CXLFLASH_VLUN_RESIZE CXL_IOWR(0x88, dk_cxlflash_resize)
172+#define DK_CXLFLASH_VLUN_CLONE CXL_IOWR(0x89, dk_cxlflash_clone)
173+
174+#endif /* ifndef _CXLFLASH_IOCTL_H */