/* 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>
typedef unsigned char __uapi_uuid_t[16 ];
#ifdef __KERNEL__
#include <linux/uuid.h>
/*
* Note , _ _ uapi_uuid_t is 1 - byte aligned on modern compilers and 4 - byte
* aligned on others . Ensure that _ _ uapi_uuid_t in a struct is placed at
* a 4 - byte aligned offset , or the structure is packed , to ensure
* consistent padding .
*/
static_assert(sizeof (__uapi_uuid_t) == sizeof (uuid_t));
#define __uapi_uuid_t uuid_t
#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 0 s .
*
* Get Supported Features ( 0 x500h ) 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 )
#define CXL_CMD_EFFECTS_RESERVED GENMASK(15 , 12 )
/*
* 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 {
__uapi_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 0 s .
* @ 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 {
__uapi_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 0 s .
* @ 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 */,
__uapi_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
Messung V0.5 in Prozent C=94 H=98 G=95
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-09-27)
¤
*© Formatika GbR, Deutschland