]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
cxl: Move cxl feature command structs to user header
authorDave Jiang <dave.jiang@intel.com>
Fri, 7 Mar 2025 20:55:32 +0000 (13:55 -0700)
committerJason Gunthorpe <jgg@nvidia.com>
Mon, 17 Mar 2025 17:41:36 +0000 (14:41 -0300)
In preparation for cxl fwctl enabling, move data structures related to
cxl feature commands to a user header file.

Reviewed-by; Jonathan Cameron <Jonathan.Cameron@huawei.com>

Link: https://patch.msgid.link/r/20250307205648.1021626-3-dave.jiang@intel.com
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Li Ming <ming.li@zohomail.com>
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
include/cxl/features.h
include/uapi/cxl/features.h [new file with mode: 0644]

index 596c85ee269959eff4196f18bbb21d4779c4858d..fbfdc601bd8501433486bd94d1023a9715a95eef 100644 (file)
@@ -5,6 +5,7 @@
 
 #include <linux/uuid.h>
 #include <linux/fwctl.h>
+#include <uapi/cxl/features.h>
 
 /* Feature UUIDs used by the kernel */
 #define CXL_FEAT_PATROL_SCRUB_UUID                                             \
@@ -46,117 +47,6 @@ enum cxl_features_capability {
        CXL_FEATURES_RW,
 };
 
-/* Get Supported Features (0x500h) CXL r3.2 8.2.9.6.1 */
-struct cxl_mbox_get_sup_feats_in {
-       __le32 count;
-       __le16 start_idx;
-       u8 reserved[2];
-} __packed;
-
-/* CXL spec r3.2 Table 8-87 command effects */
-#define CXL_CMD_CONFIG_CHANGE_COLD_RESET       BIT(0)
-#define CXL_CMD_CONFIG_CHANGE_IMMEDIATE                BIT(1)
-#define CXL_CMD_DATA_CHANGE_IMMEDIATE          BIT(2)
-#define CXL_CMD_POLICY_CHANGE_IMMEDIATE                BIT(3)
-#define CXL_CMD_LOG_CHANGE_IMMEDIATE           BIT(4)
-#define CXL_CMD_SECURITY_STATE_CHANGE          BIT(5)
-#define CXL_CMD_BACKGROUND                     BIT(6)
-#define CXL_CMD_BGCMD_ABORT_SUPPORTED          BIT(7)
-#define CXL_CMD_EFFECTS_VALID                  BIT(9)
-#define CXL_CMD_CONFIG_CHANGE_CONV_RESET       BIT(10)
-#define CXL_CMD_CONFIG_CHANGE_CXL_RESET                BIT(11)
-
-/*
- * CXL spec r3.2 Table 8-109
- * Get Supported Features Supported Feature Entry
- */
-struct cxl_feat_entry {
-       uuid_t uuid;
-       __le16 id;
-       __le16 get_feat_size;
-       __le16 set_feat_size;
-       __le32 flags;
-       u8 get_feat_ver;
-       u8 set_feat_ver;
-       __le16 effects;
-       u8 reserved[18];
-} __packed;
-
-/* @flags field for 'struct cxl_feat_entry' */
-#define CXL_FEATURE_F_CHANGEABLE               BIT(0)
-#define CXL_FEATURE_F_PERSIST_FW_UPDATE                BIT(4)
-#define CXL_FEATURE_F_DEFAULT_SEL              BIT(5)
-#define CXL_FEATURE_F_SAVED_SEL                        BIT(6)
-
-/*
- * CXL spec r3.2 Table 8-108
- * Get supported Features Output Payload
- */
-struct cxl_mbox_get_sup_feats_out {
-       __struct_group(cxl_mbox_get_sup_feats_out_hdr, hdr, /* no attrs */,
-               __le16 num_entries;
-               __le16 supported_feats;
-               __u8 reserved[4];
-       );
-       struct cxl_feat_entry ents[] __counted_by_le(num_entries);
-} __packed;
-
-/*
- * Get Feature CXL spec r3.2 Spec 8.2.9.6.2
- */
-
-/*
- * Get Feature input payload
- * CXL spec r3.2 section 8.2.9.6.2 Table 8-99
- */
-struct cxl_mbox_get_feat_in {
-       uuid_t uuid;
-       __le16 offset;
-       __le16 count;
-       u8 selection;
-}  __packed;
-
-/* Selection field for 'struct cxl_mbox_get_feat_in' */
-enum cxl_get_feat_selection {
-       CXL_GET_FEAT_SEL_CURRENT_VALUE,
-       CXL_GET_FEAT_SEL_DEFAULT_VALUE,
-       CXL_GET_FEAT_SEL_SAVED_VALUE,
-       CXL_GET_FEAT_SEL_MAX
-};
-
-/*
- * Set Feature CXL spec r3.2  8.2.9.6.3
- */
-
-/*
- * Set Feature input payload
- * CXL spec r3.2 section 8.2.9.6.3 Table 8-101
- */
-struct cxl_mbox_set_feat_in {
-       __struct_group(cxl_mbox_set_feat_hdr, hdr, /* no attrs */,
-               uuid_t uuid;
-               __le32 flags;
-               __le16 offset;
-               u8 version;
-               u8 rsvd[9];
-       );
-       __u8 feat_data[];
-}  __packed;
-
-/* Set Feature flags field */
-enum cxl_set_feat_flag_data_transfer {
-       CXL_SET_FEAT_FLAG_FULL_DATA_TRANSFER = 0,
-       CXL_SET_FEAT_FLAG_INITIATE_DATA_TRANSFER,
-       CXL_SET_FEAT_FLAG_CONTINUE_DATA_TRANSFER,
-       CXL_SET_FEAT_FLAG_FINISH_DATA_TRANSFER,
-       CXL_SET_FEAT_FLAG_ABORT_DATA_TRANSFER,
-       CXL_SET_FEAT_FLAG_DATA_TRANSFER_MAX
-};
-
-#define CXL_SET_FEAT_FLAG_DATA_TRANSFER_MASK   GENMASK(2, 0)
-
-#define CXL_SET_FEAT_FLAG_DATA_SAVED_ACROSS_RESET      BIT(3)
-
 /**
  * struct cxl_features_state - The Features state for the device
  * @cxlds: Pointer to CXL device state
diff --git a/include/uapi/cxl/features.h b/include/uapi/cxl/features.h
new file mode 100644 (file)
index 0000000..7f7ab4a
--- /dev/null
@@ -0,0 +1,169 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+/*
+ * Copyright (c) 2024,2025, Intel Corporation
+ *
+ * These are definitions for the mailbox command interface of CXL subsystem.
+ */
+#ifndef _UAPI_CXL_FEATURES_H_
+#define _UAPI_CXL_FEATURES_H_
+
+#include <linux/types.h>
+#ifndef __KERNEL__
+#include <uuid/uuid.h>
+#else
+#include <linux/uuid.h>
+#endif
+
+/*
+ * struct cxl_mbox_get_sup_feats_in - Get Supported Features input
+ *
+ * @count: bytes of Feature data to return in output
+ * @start_idx: index of first requested Supported Feature Entry, 0 based.
+ * @reserved: reserved field, must be 0s.
+ *
+ * Get Supported Features (0x500h) CXL r3.2 8.2.9.6.1 command.
+ * Input block for Get support Feature
+ */
+struct cxl_mbox_get_sup_feats_in {
+       __le32 count;
+       __le16 start_idx;
+       __u8 reserved[2];
+} __attribute__ ((__packed__));
+
+/* CXL spec r3.2 Table 8-87 command effects */
+#define CXL_CMD_CONFIG_CHANGE_COLD_RESET       BIT(0)
+#define CXL_CMD_CONFIG_CHANGE_IMMEDIATE                BIT(1)
+#define CXL_CMD_DATA_CHANGE_IMMEDIATE          BIT(2)
+#define CXL_CMD_POLICY_CHANGE_IMMEDIATE                BIT(3)
+#define CXL_CMD_LOG_CHANGE_IMMEDIATE           BIT(4)
+#define CXL_CMD_SECURITY_STATE_CHANGE          BIT(5)
+#define CXL_CMD_BACKGROUND                     BIT(6)
+#define CXL_CMD_BGCMD_ABORT_SUPPORTED          BIT(7)
+#define CXL_CMD_EFFECTS_VALID                  BIT(9)
+#define CXL_CMD_CONFIG_CHANGE_CONV_RESET       BIT(10)
+#define CXL_CMD_CONFIG_CHANGE_CXL_RESET                BIT(11)
+
+/*
+ * struct cxl_feat_entry - Supported Feature Entry
+ * @uuid: UUID of the Feature
+ * @id: id to identify the feature. 0 based
+ * @get_feat_size: max bytes required for Get Feature command for this Feature
+ * @set_feat_size: max bytes required for Set Feature command for this Feature
+ * @flags: attribute flags
+ * @get_feat_ver: Get Feature version
+ * @set_feat_ver: Set Feature version
+ * @effects: Set Feature command effects
+ * @reserved: reserved, must be 0
+ *
+ * CXL spec r3.2 Table 8-109
+ * Get Supported Features Supported Feature Entry
+ */
+struct cxl_feat_entry {
+       uuid_t uuid;
+       __le16 id;
+       __le16 get_feat_size;
+       __le16 set_feat_size;
+       __le32 flags;
+       __u8 get_feat_ver;
+       __u8 set_feat_ver;
+       __le16 effects;
+       __u8 reserved[18];
+} __attribute__ ((__packed__));
+
+/* @flags field for 'struct cxl_feat_entry' */
+#define CXL_FEATURE_F_CHANGEABLE               BIT(0)
+#define CXL_FEATURE_F_PERSIST_FW_UPDATE                BIT(4)
+#define CXL_FEATURE_F_DEFAULT_SEL              BIT(5)
+#define CXL_FEATURE_F_SAVED_SEL                        BIT(6)
+
+/*
+ * struct cxl_mbox_get_sup_feats_out - Get Supported Features output
+ * @num_entries: number of Supported Feature Entries returned
+ * @supported_feats: number of supported Features
+ * @reserved: reserved, must be 0s.
+ * @ents: Supported Feature Entries array
+ *
+ * CXL spec r3.2 Table 8-108
+ * Get supported Features Output Payload
+ */
+struct cxl_mbox_get_sup_feats_out {
+       __struct_group(cxl_mbox_get_sup_feats_out_hdr, hdr, /* no attrs */,
+               __le16 num_entries;
+               __le16 supported_feats;
+               __u8 reserved[4];
+       );
+       struct cxl_feat_entry ents[] __counted_by_le(num_entries);
+} __attribute__ ((__packed__));
+
+/*
+ * Get Feature CXL spec r3.2 Spec 8.2.9.6.2
+ */
+
+/*
+ * struct cxl_mbox_get_feat_in - Get Feature input
+ * @uuid: UUID for Feature
+ * @offset: offset of the first byte in Feature data for output payload
+ * @count: count in bytes of Feature data returned
+ * @selection: 0 current value, 1 default value, 2 saved value
+ *
+ * CXL spec r3.2 section 8.2.9.6.2 Table 8-99
+ */
+struct cxl_mbox_get_feat_in {
+       uuid_t uuid;
+       __le16 offset;
+       __le16 count;
+       __u8 selection;
+} __attribute__ ((__packed__));
+
+/*
+ * enum cxl_get_feat_selection - selection field of Get Feature input
+ */
+enum cxl_get_feat_selection {
+       CXL_GET_FEAT_SEL_CURRENT_VALUE,
+       CXL_GET_FEAT_SEL_DEFAULT_VALUE,
+       CXL_GET_FEAT_SEL_SAVED_VALUE,
+       CXL_GET_FEAT_SEL_MAX
+};
+
+/*
+ * Set Feature CXL spec r3.2  8.2.9.6.3
+ */
+
+/*
+ * struct cxl_mbox_set_feat_in - Set Features input
+ * @uuid: UUID for Feature
+ * @flags: set feature flags
+ * @offset: byte offset of Feature data to update
+ * @version: Feature version of the data in Feature Data
+ * @rsvd: reserved, must be 0s.
+ * @feat_data: raw byte stream of Features data to update
+ *
+ * CXL spec r3.2 section 8.2.9.6.3 Table 8-101
+ */
+struct cxl_mbox_set_feat_in {
+       __struct_group(cxl_mbox_set_feat_hdr, hdr, /* no attrs */,
+               uuid_t uuid;
+               __le32 flags;
+               __le16 offset;
+               __u8 version;
+               __u8 rsvd[9];
+       );
+       __u8 feat_data[];
+}  __packed;
+
+/*
+ * enum cxl_set_feat_flag_data_transfer - Set Feature flags field
+ */
+enum cxl_set_feat_flag_data_transfer {
+       CXL_SET_FEAT_FLAG_FULL_DATA_TRANSFER = 0,
+       CXL_SET_FEAT_FLAG_INITIATE_DATA_TRANSFER,
+       CXL_SET_FEAT_FLAG_CONTINUE_DATA_TRANSFER,
+       CXL_SET_FEAT_FLAG_FINISH_DATA_TRANSFER,
+       CXL_SET_FEAT_FLAG_ABORT_DATA_TRANSFER,
+       CXL_SET_FEAT_FLAG_DATA_TRANSFER_MAX
+};
+
+#define CXL_SET_FEAT_FLAG_DATA_TRANSFER_MASK           GENMASK(2, 0)
+#define CXL_SET_FEAT_FLAG_DATA_SAVED_ACROSS_RESET      BIT(3)
+
+#endif