mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 13:14:07 +08:00
cxl/mbox: Move command definitions to common location
In preparation for cxl_test to mock responses to mailbox command requests, move some definitions from core/mbox.c to cxlmem.h. No functional changes intended. Acked-by: Ben Widawsky <ben.widawsky@intel.com> Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Link: https://lore.kernel.org/r/163116439547.2460985.10457111177103589574.stgit@dwillia2-desk3.amr.corp.intel.com Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
a5c2580216
commit
49be6dd807
@ -485,11 +485,7 @@ static int cxl_xfer_log(struct cxl_mem *cxlm, uuid_t *uuid, u32 size, u8 *out)
|
||||
|
||||
while (remaining) {
|
||||
u32 xfer_size = min_t(u32, remaining, cxlm->payload_size);
|
||||
struct cxl_mbox_get_log {
|
||||
uuid_t uuid;
|
||||
__le32 offset;
|
||||
__le32 length;
|
||||
} __packed log = {
|
||||
struct cxl_mbox_get_log log = {
|
||||
.uuid = *uuid,
|
||||
.offset = cpu_to_le32(offset),
|
||||
.length = cpu_to_le32(xfer_size)
|
||||
@ -520,14 +516,11 @@ static int cxl_xfer_log(struct cxl_mem *cxlm, uuid_t *uuid, u32 size, u8 *out)
|
||||
*/
|
||||
static void cxl_walk_cel(struct cxl_mem *cxlm, size_t size, u8 *cel)
|
||||
{
|
||||
struct cel_entry {
|
||||
__le16 opcode;
|
||||
__le16 effect;
|
||||
} __packed * cel_entry;
|
||||
struct cxl_cel_entry *cel_entry;
|
||||
const int cel_entries = size / sizeof(*cel_entry);
|
||||
int i;
|
||||
|
||||
cel_entry = (struct cel_entry *)cel;
|
||||
cel_entry = (struct cxl_cel_entry *) cel;
|
||||
|
||||
for (i = 0; i < cel_entries; i++) {
|
||||
u16 opcode = le16_to_cpu(cel_entry[i].opcode);
|
||||
@ -543,15 +536,6 @@ static void cxl_walk_cel(struct cxl_mem *cxlm, size_t size, u8 *cel)
|
||||
}
|
||||
}
|
||||
|
||||
struct cxl_mbox_get_supported_logs {
|
||||
__le16 entries;
|
||||
u8 rsvd[6];
|
||||
struct gsl_entry {
|
||||
uuid_t uuid;
|
||||
__le32 size;
|
||||
} __packed entry[];
|
||||
} __packed;
|
||||
|
||||
static struct cxl_mbox_get_supported_logs *cxl_get_gsl(struct cxl_mem *cxlm)
|
||||
{
|
||||
struct cxl_mbox_get_supported_logs *ret;
|
||||
@ -578,10 +562,8 @@ enum {
|
||||
|
||||
/* See CXL 2.0 Table 170. Get Log Input Payload */
|
||||
static const uuid_t log_uuid[] = {
|
||||
[CEL_UUID] = UUID_INIT(0xda9c0b5, 0xbf41, 0x4b78, 0x8f, 0x79, 0x96,
|
||||
0xb1, 0x62, 0x3b, 0x3f, 0x17),
|
||||
[VENDOR_DEBUG_UUID] = UUID_INIT(0xe1819d9, 0x11a9, 0x400c, 0x81, 0x1f,
|
||||
0xd6, 0x07, 0x19, 0x40, 0x3d, 0x86),
|
||||
[CEL_UUID] = DEFINE_CXL_CEL_UUID,
|
||||
[VENDOR_DEBUG_UUID] = DEFINE_CXL_VENDOR_DEBUG_UUID,
|
||||
};
|
||||
|
||||
/**
|
||||
@ -698,22 +680,7 @@ static int cxl_mem_get_partition_info(struct cxl_mem *cxlm)
|
||||
int cxl_mem_identify(struct cxl_mem *cxlm)
|
||||
{
|
||||
/* See CXL 2.0 Table 175 Identify Memory Device Output Payload */
|
||||
struct cxl_mbox_identify {
|
||||
char fw_revision[0x10];
|
||||
__le64 total_capacity;
|
||||
__le64 volatile_capacity;
|
||||
__le64 persistent_capacity;
|
||||
__le64 partition_align;
|
||||
__le16 info_event_log_size;
|
||||
__le16 warning_event_log_size;
|
||||
__le16 failure_event_log_size;
|
||||
__le16 fatal_event_log_size;
|
||||
__le32 lsa_size;
|
||||
u8 poison_list_max_mer[3];
|
||||
__le16 inject_poison_limit;
|
||||
u8 poison_caps;
|
||||
u8 qos_telemetry_caps;
|
||||
} __packed id;
|
||||
struct cxl_mbox_identify id;
|
||||
int rc;
|
||||
|
||||
rc = cxl_mem_mbox_send_cmd(cxlm, CXL_MBOX_OP_IDENTIFY, NULL, 0, &id,
|
||||
|
@ -171,6 +171,63 @@ enum cxl_opcode {
|
||||
CXL_MBOX_OP_MAX = 0x10000
|
||||
};
|
||||
|
||||
#define DEFINE_CXL_CEL_UUID \
|
||||
UUID_INIT(0xda9c0b5, 0xbf41, 0x4b78, 0x8f, 0x79, 0x96, 0xb1, 0x62, \
|
||||
0x3b, 0x3f, 0x17)
|
||||
|
||||
#define DEFINE_CXL_VENDOR_DEBUG_UUID \
|
||||
UUID_INIT(0xe1819d9, 0x11a9, 0x400c, 0x81, 0x1f, 0xd6, 0x07, 0x19, \
|
||||
0x40, 0x3d, 0x86)
|
||||
|
||||
struct cxl_mbox_get_supported_logs {
|
||||
__le16 entries;
|
||||
u8 rsvd[6];
|
||||
struct cxl_gsl_entry {
|
||||
uuid_t uuid;
|
||||
__le32 size;
|
||||
} __packed entry[];
|
||||
} __packed;
|
||||
|
||||
struct cxl_cel_entry {
|
||||
__le16 opcode;
|
||||
__le16 effect;
|
||||
} __packed;
|
||||
|
||||
struct cxl_mbox_get_log {
|
||||
uuid_t uuid;
|
||||
__le32 offset;
|
||||
__le32 length;
|
||||
} __packed;
|
||||
|
||||
/* See CXL 2.0 Table 175 Identify Memory Device Output Payload */
|
||||
struct cxl_mbox_identify {
|
||||
char fw_revision[0x10];
|
||||
__le64 total_capacity;
|
||||
__le64 volatile_capacity;
|
||||
__le64 persistent_capacity;
|
||||
__le64 partition_align;
|
||||
__le16 info_event_log_size;
|
||||
__le16 warning_event_log_size;
|
||||
__le16 failure_event_log_size;
|
||||
__le16 fatal_event_log_size;
|
||||
__le32 lsa_size;
|
||||
u8 poison_list_max_mer[3];
|
||||
__le16 inject_poison_limit;
|
||||
u8 poison_caps;
|
||||
u8 qos_telemetry_caps;
|
||||
} __packed;
|
||||
|
||||
struct cxl_mbox_get_lsa {
|
||||
u32 offset;
|
||||
u32 length;
|
||||
} __packed;
|
||||
|
||||
struct cxl_mbox_set_lsa {
|
||||
u32 offset;
|
||||
u32 reserved;
|
||||
u8 data[];
|
||||
} __packed;
|
||||
|
||||
/**
|
||||
* struct cxl_mem_command - Driver representation of a memory device command
|
||||
* @info: Command information as it exists for the UAPI
|
||||
|
@ -99,10 +99,7 @@ static int cxl_pmem_get_config_data(struct cxl_mem *cxlm,
|
||||
struct nd_cmd_get_config_data_hdr *cmd,
|
||||
unsigned int buf_len)
|
||||
{
|
||||
struct cxl_mbox_get_lsa {
|
||||
u32 offset;
|
||||
u32 length;
|
||||
} get_lsa;
|
||||
struct cxl_mbox_get_lsa get_lsa;
|
||||
int rc;
|
||||
|
||||
if (sizeof(*cmd) > buf_len)
|
||||
@ -127,11 +124,7 @@ static int cxl_pmem_set_config_data(struct cxl_mem *cxlm,
|
||||
struct nd_cmd_set_config_hdr *cmd,
|
||||
unsigned int buf_len)
|
||||
{
|
||||
struct cxl_mbox_set_lsa {
|
||||
u32 offset;
|
||||
u32 reserved;
|
||||
u8 data[];
|
||||
} *set_lsa;
|
||||
struct cxl_mbox_set_lsa *set_lsa;
|
||||
int rc;
|
||||
|
||||
if (sizeof(*cmd) > buf_len)
|
||||
|
Loading…
Reference in New Issue
Block a user