Pick up some final miscellaneous updates for v6.3 including support for communicating 'exclusive' and 'enabled' state of commands.
Showing the changes to include/uapi (1 of 4 files). Show all
Unified · Split
| @@ -11,14 +11,19 @@ · 10 unmodified lines | |||
| 11 | /** | 11 | /** |
| 12 | * DOC: UAPI | 12 | * DOC: UAPI |
| 13 | * | 13 | * |
| 14 | * Not all of all commands that the driver supports are always available for use | 14 | * Not all of the commands that the driver supports are available for use by |
| 15 | * by userspace. Userspace must check the results from the QUERY command in | 15 | * userspace at all times. Userspace can check the result of the QUERY command |
| 16 | * order to determine the live set of commands. | 16 | * to determine the live set of commands. Alternatively, it can issue the |
| 17 | * command and check for failure. | ||
| 17 | */ | 18 | */ |
| 18 | 19 | ||
| 19 | #define CXL_MEM_QUERY_COMMANDS _IOR(0xCE, 1, struct cxl_mem_query_commands) | 20 | #define CXL_MEM_QUERY_COMMANDS _IOR(0xCE, 1, struct cxl_mem_query_commands) |
| 20 | #define CXL_MEM_SEND_COMMAND _IOWR(0xCE, 2, struct cxl_send_command) | 21 | #define CXL_MEM_SEND_COMMAND _IOWR(0xCE, 2, struct cxl_send_command) |
| 21 | 22 | ||
| 23 | /* | ||
| 24 | * NOTE: New defines must be added to the end of the list to preserve | ||
| 25 | * compatibility because this enum is exported to user space. | ||
| 26 | */ | ||
| 22 | #define CXL_CMDS \ | 27 | #define CXL_CMDS \ |
| 23 | ___C(INVALID, "Invalid Command"), \ | 28 | ___C(INVALID, "Invalid Command"), \ |
| 24 | ___C(IDENTIFY, "Identify Command"), \ | 29 | ___C(IDENTIFY, "Identify Command"), \ |
| @@ -68,6 +73,19 @@ static const struct { · 43 unmodified lines | |||
| 68 | * struct cxl_command_info - Command information returned from a query. | 73 | * struct cxl_command_info - Command information returned from a query. |
| 69 | * @id: ID number for the command. | 74 | * @id: ID number for the command. |
| 70 | * @flags: Flags that specify command behavior. | 75 | * @flags: Flags that specify command behavior. |
| 76 | * | ||
| 77 | * CXL_MEM_COMMAND_FLAG_USER_ENABLED | ||
| 78 | * | ||
| 79 | * The given command id is supported by the driver and is supported by | ||
| 80 | * a related opcode on the device. | ||
| 81 | * | ||
| 82 | * CXL_MEM_COMMAND_FLAG_EXCLUSIVE | ||
| 83 | * | ||
| 84 | * Requests with the given command id will terminate with EBUSY as the | ||
| 85 | * kernel actively owns management of the given resource. For example, | ||
| 86 | * the label-storage-area can not be written while the kernel is | ||
| 87 | * actively managing that space. | ||
| 88 | * | ||
| 71 | * @size_in: Expected input size, or ~0 if variable length. | 89 | * @size_in: Expected input size, or ~0 if variable length. |
| 72 | * @size_out: Expected output size, or ~0 if variable length. | 90 | * @size_out: Expected output size, or ~0 if variable length. |
| 73 | * | 91 | * |
| @@ -77,7 +95,7 @@ static const struct { · 3 unmodified lines | |||
| 77 | * bytes of output. | 95 | * bytes of output. |
| 78 | * | 96 | * |
| 79 | * - @id = 10 | 97 | * - @id = 10 |
| 80 | * - @flags = 0 | 98 | * - @flags = CXL_MEM_COMMAND_FLAG_ENABLED |
| 81 | * - @size_in = ~0 | 99 | * - @size_in = ~0 |
| 82 | * - @size_out = 0 | 100 | * - @size_out = 0 |
| 83 | * | 101 | * |
| @@ -87,7 +105,9 @@ struct cxl_command_info { · 3 unmodified lines | |||
| 87 | __u32 id; | 105 | __u32 id; |
| 88 | 106 | ||
| 89 | __u32 flags; | 107 | __u32 flags; |
| 90 | #define CXL_MEM_COMMAND_FLAG_MASK GENMASK(0, 0) | 108 | #define CXL_MEM_COMMAND_FLAG_MASK GENMASK(1, 0) |
| 109 | #define CXL_MEM_COMMAND_FLAG_ENABLED BIT(0) | ||
| 110 | #define CXL_MEM_COMMAND_FLAG_EXCLUSIVE BIT(1) | ||
| 91 | 111 | ||
| 92 | __u32 size_in; | 112 | __u32 size_in; |
| 93 | __u32 size_out; | 113 | __u32 size_out; |