~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/uapi/linux/sed-opal.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
  2 /*
  3  * Copyright © 2016 Intel Corporation
  4  *
  5  * Authors:
  6  *    Rafael Antognolli <rafael.antognolli@intel.com>
  7  *    Scott  Bauer      <scott.bauer@intel.com>
  8  */
  9 
 10 #ifndef _UAPI_SED_OPAL_H
 11 #define _UAPI_SED_OPAL_H
 12 
 13 #include <linux/types.h>
 14 
 15 #define OPAL_KEY_MAX 256
 16 #define OPAL_MAX_LRS 9
 17 
 18 enum opal_mbr {
 19         OPAL_MBR_ENABLE = 0x0,
 20         OPAL_MBR_DISABLE = 0x01,
 21 };
 22 
 23 enum opal_mbr_done_flag {
 24         OPAL_MBR_NOT_DONE = 0x0,
 25         OPAL_MBR_DONE = 0x01
 26 };
 27 
 28 enum opal_user {
 29         OPAL_ADMIN1 = 0x0,
 30         OPAL_USER1 = 0x01,
 31         OPAL_USER2 = 0x02,
 32         OPAL_USER3 = 0x03,
 33         OPAL_USER4 = 0x04,
 34         OPAL_USER5 = 0x05,
 35         OPAL_USER6 = 0x06,
 36         OPAL_USER7 = 0x07,
 37         OPAL_USER8 = 0x08,
 38         OPAL_USER9 = 0x09,
 39 };
 40 
 41 enum opal_lock_state {
 42         OPAL_RO = 0x01, /* 0001 */
 43         OPAL_RW = 0x02, /* 0010 */
 44         OPAL_LK = 0x04, /* 0100 */
 45 };
 46 
 47 enum opal_lock_flags {
 48         /* IOC_OPAL_SAVE will also store the provided key for locking */
 49         OPAL_SAVE_FOR_LOCK = 0x01,
 50 };
 51 
 52 enum opal_key_type {
 53         OPAL_INCLUDED = 0,      /* key[] is the key */
 54         OPAL_KEYRING,           /* key is in keyring */
 55 };
 56 
 57 struct opal_key {
 58         __u8 lr;
 59         __u8 key_len;
 60         __u8 key_type;
 61         __u8 __align[5];
 62         __u8 key[OPAL_KEY_MAX];
 63 };
 64 
 65 enum opal_revert_lsp_opts {
 66         OPAL_PRESERVE = 0x01,
 67 };
 68 
 69 struct opal_lr_act {
 70         struct opal_key key;
 71         __u32 sum;
 72         __u8 num_lrs;
 73         __u8 lr[OPAL_MAX_LRS];
 74         __u8 align[2]; /* Align to 8 byte boundary */
 75 };
 76 
 77 struct opal_session_info {
 78         __u32 sum;
 79         __u32 who;
 80         struct opal_key opal_key;
 81 };
 82 
 83 struct opal_user_lr_setup {
 84         __u64 range_start;
 85         __u64 range_length;
 86         __u32 RLE; /* Read Lock enabled */
 87         __u32 WLE; /* Write Lock Enabled */
 88         struct opal_session_info session;
 89 };
 90 
 91 struct opal_lr_status {
 92         struct opal_session_info session;
 93         __u64 range_start;
 94         __u64 range_length;
 95         __u32 RLE; /* Read Lock enabled */
 96         __u32 WLE; /* Write Lock Enabled */
 97         __u32 l_state;
 98         __u8  align[4];
 99 };
100 
101 struct opal_lock_unlock {
102         struct opal_session_info session;
103         __u32 l_state;
104         __u16 flags;
105         __u8 __align[2];
106 };
107 
108 struct opal_new_pw {
109         struct opal_session_info session;
110 
111         /* When we're not operating in sum, and we first set
112          * passwords we need to set them via ADMIN authority.
113          * After passwords are changed, we can set them via,
114          * User authorities.
115          * Because of this restriction we need to know about
116          * Two different users. One in 'session' which we will use
117          * to start the session and new_userr_pw as the user we're
118          * chaning the pw for.
119          */
120         struct opal_session_info new_user_pw;
121 };
122 
123 struct opal_mbr_data {
124         struct opal_key key;
125         __u8 enable_disable;
126         __u8 __align[7];
127 };
128 
129 struct opal_mbr_done {
130         struct opal_key key;
131         __u8 done_flag;
132         __u8 __align[7];
133 };
134 
135 struct opal_shadow_mbr {
136         struct opal_key key;
137         const __u64 data;
138         __u64 offset;
139         __u64 size;
140 };
141 
142 /* Opal table operations */
143 enum opal_table_ops {
144         OPAL_READ_TABLE,
145         OPAL_WRITE_TABLE,
146 };
147 
148 #define OPAL_UID_LENGTH 8
149 struct opal_read_write_table {
150         struct opal_key key;
151         const __u64 data;
152         const __u8 table_uid[OPAL_UID_LENGTH];
153         __u64 offset;
154         __u64 size;
155 #define OPAL_TABLE_READ (1 << OPAL_READ_TABLE)
156 #define OPAL_TABLE_WRITE (1 << OPAL_WRITE_TABLE)
157         __u64 flags;
158         __u64 priv;
159 };
160 
161 #define OPAL_FL_SUPPORTED               0x00000001
162 #define OPAL_FL_LOCKING_SUPPORTED       0x00000002
163 #define OPAL_FL_LOCKING_ENABLED         0x00000004
164 #define OPAL_FL_LOCKED                  0x00000008
165 #define OPAL_FL_MBR_ENABLED             0x00000010
166 #define OPAL_FL_MBR_DONE                0x00000020
167 #define OPAL_FL_SUM_SUPPORTED           0x00000040
168 
169 struct opal_status {
170         __u32 flags;
171         __u32 reserved;
172 };
173 
174 /*
175  * Geometry Reporting per TCG Storage OPAL SSC
176  * section 3.1.1.4
177  */
178 struct opal_geometry {
179         __u8 align;
180         __u32 logical_block_size;
181         __u64 alignment_granularity;
182         __u64 lowest_aligned_lba;
183         __u8  __align[3];
184 };
185 
186 struct opal_discovery {
187         __u64 data;
188         __u64 size;
189 };
190 
191 struct opal_revert_lsp {
192         struct opal_key key;
193         __u32 options;
194         __u32 __pad;
195 };
196 
197 #define IOC_OPAL_SAVE               _IOW('p', 220, struct opal_lock_unlock)
198 #define IOC_OPAL_LOCK_UNLOCK        _IOW('p', 221, struct opal_lock_unlock)
199 #define IOC_OPAL_TAKE_OWNERSHIP     _IOW('p', 222, struct opal_key)
200 #define IOC_OPAL_ACTIVATE_LSP       _IOW('p', 223, struct opal_lr_act)
201 #define IOC_OPAL_SET_PW             _IOW('p', 224, struct opal_new_pw)
202 #define IOC_OPAL_ACTIVATE_USR       _IOW('p', 225, struct opal_session_info)
203 #define IOC_OPAL_REVERT_TPR         _IOW('p', 226, struct opal_key)
204 #define IOC_OPAL_LR_SETUP           _IOW('p', 227, struct opal_user_lr_setup)
205 #define IOC_OPAL_ADD_USR_TO_LR      _IOW('p', 228, struct opal_lock_unlock)
206 #define IOC_OPAL_ENABLE_DISABLE_MBR _IOW('p', 229, struct opal_mbr_data)
207 #define IOC_OPAL_ERASE_LR           _IOW('p', 230, struct opal_session_info)
208 #define IOC_OPAL_SECURE_ERASE_LR    _IOW('p', 231, struct opal_session_info)
209 #define IOC_OPAL_PSID_REVERT_TPR    _IOW('p', 232, struct opal_key)
210 #define IOC_OPAL_MBR_DONE           _IOW('p', 233, struct opal_mbr_done)
211 #define IOC_OPAL_WRITE_SHADOW_MBR   _IOW('p', 234, struct opal_shadow_mbr)
212 #define IOC_OPAL_GENERIC_TABLE_RW   _IOW('p', 235, struct opal_read_write_table)
213 #define IOC_OPAL_GET_STATUS         _IOR('p', 236, struct opal_status)
214 #define IOC_OPAL_GET_LR_STATUS      _IOW('p', 237, struct opal_lr_status)
215 #define IOC_OPAL_GET_GEOMETRY       _IOR('p', 238, struct opal_geometry)
216 #define IOC_OPAL_DISCOVERY          _IOW('p', 239, struct opal_discovery)
217 #define IOC_OPAL_REVERT_LSP         _IOW('p', 240, struct opal_revert_lsp)
218 
219 #endif /* _UAPI_SED_OPAL_H */
220 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php