mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
Merge branch 'for-6.5/cxl-type-2' into for-6.5/cxl
Pick up the driver cleanups identified in preparation for CXL "type-2" (accelerator) device support. The major change here from a conflict generation perspective is the split of 'struct cxl_memdev_state' from the core 'struct cxl_dev_state'. Since an accelerator may not care about all the optional features that are standard on a CXL "type-3" (host-only memory expander) device. A silent conflict also occurs with the move of the endpoint port to be a formal property of a 'struct cxl_memdev' rather than drvdata.
This commit is contained in:
@@ -6,7 +6,6 @@ ldflags-y += --wrap=acpi_pci_find_root
|
||||
ldflags-y += --wrap=nvdimm_bus_register
|
||||
ldflags-y += --wrap=devm_cxl_port_enumerate_dports
|
||||
ldflags-y += --wrap=devm_cxl_setup_hdm
|
||||
ldflags-y += --wrap=devm_cxl_enable_hdm
|
||||
ldflags-y += --wrap=devm_cxl_add_passthrough_decoder
|
||||
ldflags-y += --wrap=devm_cxl_enumerate_decoders
|
||||
ldflags-y += --wrap=cxl_await_media_ready
|
||||
|
@@ -713,7 +713,7 @@ static void default_mock_decoder(struct cxl_decoder *cxld)
|
||||
|
||||
cxld->interleave_ways = 1;
|
||||
cxld->interleave_granularity = 256;
|
||||
cxld->target_type = CXL_DECODER_EXPANDER;
|
||||
cxld->target_type = CXL_DECODER_HOSTONLYMEM;
|
||||
cxld->commit = mock_decoder_commit;
|
||||
cxld->reset = mock_decoder_reset;
|
||||
}
|
||||
@@ -787,7 +787,7 @@ static void mock_init_hdm_decoder(struct cxl_decoder *cxld)
|
||||
|
||||
cxld->interleave_ways = 2;
|
||||
eig_to_granularity(window->granularity, &cxld->interleave_granularity);
|
||||
cxld->target_type = CXL_DECODER_EXPANDER;
|
||||
cxld->target_type = CXL_DECODER_HOSTONLYMEM;
|
||||
cxld->flags = CXL_DECODER_F_ENABLE;
|
||||
cxled->state = CXL_DECODER_STATE_AUTO;
|
||||
port->commit_end = cxld->id;
|
||||
@@ -820,7 +820,7 @@ static void mock_init_hdm_decoder(struct cxl_decoder *cxld)
|
||||
} else
|
||||
cxlsd->target[0] = dport;
|
||||
cxld = &cxlsd->cxld;
|
||||
cxld->target_type = CXL_DECODER_EXPANDER;
|
||||
cxld->target_type = CXL_DECODER_HOSTONLYMEM;
|
||||
cxld->flags = CXL_DECODER_F_ENABLE;
|
||||
iter->commit_end = 0;
|
||||
/*
|
||||
|
@@ -133,7 +133,7 @@ struct mock_event_log {
|
||||
};
|
||||
|
||||
struct mock_event_store {
|
||||
struct cxl_dev_state *cxlds;
|
||||
struct cxl_memdev_state *mds;
|
||||
struct mock_event_log mock_logs[CXL_EVENT_TYPE_MAX];
|
||||
u32 ev_status;
|
||||
};
|
||||
@@ -215,8 +215,7 @@ static void mes_add_event(struct mock_event_store *mes,
|
||||
log->nr_events++;
|
||||
}
|
||||
|
||||
static int mock_get_event(struct cxl_dev_state *cxlds,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
static int mock_get_event(struct device *dev, struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_get_event_payload *pl;
|
||||
struct mock_event_log *log;
|
||||
@@ -236,7 +235,7 @@ static int mock_get_event(struct cxl_dev_state *cxlds,
|
||||
|
||||
memset(cmd->payload_out, 0, cmd->size_out);
|
||||
|
||||
log = event_find_log(cxlds->dev, log_type);
|
||||
log = event_find_log(dev, log_type);
|
||||
if (!log || event_log_empty(log))
|
||||
return 0;
|
||||
|
||||
@@ -269,8 +268,7 @@ static int mock_get_event(struct cxl_dev_state *cxlds,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mock_clear_event(struct cxl_dev_state *cxlds,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
static int mock_clear_event(struct device *dev, struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mbox_clear_event_payload *pl = cmd->payload_in;
|
||||
struct mock_event_log *log;
|
||||
@@ -281,7 +279,7 @@ static int mock_clear_event(struct cxl_dev_state *cxlds,
|
||||
if (log_type >= CXL_EVENT_TYPE_MAX)
|
||||
return -EINVAL;
|
||||
|
||||
log = event_find_log(cxlds->dev, log_type);
|
||||
log = event_find_log(dev, log_type);
|
||||
if (!log)
|
||||
return 0; /* No mock data in this log */
|
||||
|
||||
@@ -291,7 +289,7 @@ static int mock_clear_event(struct cxl_dev_state *cxlds,
|
||||
* However, this is not good behavior for the host so test it.
|
||||
*/
|
||||
if (log->clear_idx + pl->nr_recs > log->cur_idx) {
|
||||
dev_err(cxlds->dev,
|
||||
dev_err(dev,
|
||||
"Attempting to clear more events than returned!\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -301,7 +299,7 @@ static int mock_clear_event(struct cxl_dev_state *cxlds,
|
||||
nr < pl->nr_recs;
|
||||
nr++, handle++) {
|
||||
if (handle != le16_to_cpu(pl->handles[nr])) {
|
||||
dev_err(cxlds->dev, "Clearing events out of order\n");
|
||||
dev_err(dev, "Clearing events out of order\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
@@ -328,7 +326,7 @@ static void cxl_mock_event_trigger(struct device *dev)
|
||||
event_reset_log(log);
|
||||
}
|
||||
|
||||
cxl_mem_get_event_records(mes->cxlds, mes->ev_status);
|
||||
cxl_mem_get_event_records(mes->mds, mes->ev_status);
|
||||
}
|
||||
|
||||
struct cxl_event_record_raw maint_needed = {
|
||||
@@ -488,7 +486,7 @@ static int mock_gsl(struct cxl_mbox_cmd *cmd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mock_get_log(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
static int mock_get_log(struct cxl_memdev_state *mds, struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mbox_get_log *gl = cmd->payload_in;
|
||||
u32 offset = le32_to_cpu(gl->offset);
|
||||
@@ -498,7 +496,7 @@ static int mock_get_log(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
|
||||
if (cmd->size_in < sizeof(*gl))
|
||||
return -EINVAL;
|
||||
if (length > cxlds->payload_size)
|
||||
if (length > mds->payload_size)
|
||||
return -EINVAL;
|
||||
if (offset + length > sizeof(mock_cel))
|
||||
return -EINVAL;
|
||||
@@ -512,7 +510,7 @@ static int mock_get_log(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mock_rcd_id(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
static int mock_rcd_id(struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mbox_identify id = {
|
||||
.fw_revision = { "mock fw v1 " },
|
||||
@@ -530,7 +528,7 @@ static int mock_rcd_id(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mock_id(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
static int mock_id(struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mbox_identify id = {
|
||||
.fw_revision = { "mock fw v1 " },
|
||||
@@ -552,8 +550,7 @@ static int mock_id(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mock_partition_info(struct cxl_dev_state *cxlds,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
static int mock_partition_info(struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mbox_get_partition_info pi = {
|
||||
.active_volatile_cap =
|
||||
@@ -570,10 +567,9 @@ static int mock_partition_info(struct cxl_dev_state *cxlds,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mock_sanitize(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
static int mock_sanitize(struct cxl_mockmem_data *mdata,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mockmem_data *mdata = dev_get_drvdata(cxlds->dev);
|
||||
|
||||
if (cmd->size_in != 0)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -592,11 +588,9 @@ static int mock_sanitize(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
return 0; /* assume less than 2 secs, no bg */
|
||||
}
|
||||
|
||||
static int mock_secure_erase(struct cxl_dev_state *cxlds,
|
||||
static int mock_secure_erase(struct cxl_mockmem_data *mdata,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mockmem_data *mdata = dev_get_drvdata(cxlds->dev);
|
||||
|
||||
if (cmd->size_in != 0)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -616,11 +610,9 @@ static int mock_secure_erase(struct cxl_dev_state *cxlds,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mock_get_security_state(struct cxl_dev_state *cxlds,
|
||||
static int mock_get_security_state(struct cxl_mockmem_data *mdata,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mockmem_data *mdata = dev_get_drvdata(cxlds->dev);
|
||||
|
||||
if (cmd->size_in)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -650,9 +642,9 @@ static void user_plimit_check(struct cxl_mockmem_data *mdata)
|
||||
mdata->security_state |= CXL_PMEM_SEC_STATE_USER_PLIMIT;
|
||||
}
|
||||
|
||||
static int mock_set_passphrase(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
static int mock_set_passphrase(struct cxl_mockmem_data *mdata,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mockmem_data *mdata = dev_get_drvdata(cxlds->dev);
|
||||
struct cxl_set_pass *set_pass;
|
||||
|
||||
if (cmd->size_in != sizeof(*set_pass))
|
||||
@@ -710,9 +702,9 @@ static int mock_set_passphrase(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int mock_disable_passphrase(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
static int mock_disable_passphrase(struct cxl_mockmem_data *mdata,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mockmem_data *mdata = dev_get_drvdata(cxlds->dev);
|
||||
struct cxl_disable_pass *dis_pass;
|
||||
|
||||
if (cmd->size_in != sizeof(*dis_pass))
|
||||
@@ -781,10 +773,9 @@ static int mock_disable_passphrase(struct cxl_dev_state *cxlds, struct cxl_mbox_
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mock_freeze_security(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
static int mock_freeze_security(struct cxl_mockmem_data *mdata,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mockmem_data *mdata = dev_get_drvdata(cxlds->dev);
|
||||
|
||||
if (cmd->size_in != 0)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -798,10 +789,9 @@ static int mock_freeze_security(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mock_unlock_security(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
static int mock_unlock_security(struct cxl_mockmem_data *mdata,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mockmem_data *mdata = dev_get_drvdata(cxlds->dev);
|
||||
|
||||
if (cmd->size_in != NVDIMM_PASSPHRASE_LEN)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -840,10 +830,9 @@ static int mock_unlock_security(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mock_passphrase_secure_erase(struct cxl_dev_state *cxlds,
|
||||
static int mock_passphrase_secure_erase(struct cxl_mockmem_data *mdata,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mockmem_data *mdata = dev_get_drvdata(cxlds->dev);
|
||||
struct cxl_pass_erase *erase;
|
||||
|
||||
if (cmd->size_in != sizeof(*erase))
|
||||
@@ -939,10 +928,10 @@ static int mock_passphrase_secure_erase(struct cxl_dev_state *cxlds,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mock_get_lsa(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
static int mock_get_lsa(struct cxl_mockmem_data *mdata,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mbox_get_lsa *get_lsa = cmd->payload_in;
|
||||
struct cxl_mockmem_data *mdata = dev_get_drvdata(cxlds->dev);
|
||||
void *lsa = mdata->lsa;
|
||||
u32 offset, length;
|
||||
|
||||
@@ -959,10 +948,10 @@ static int mock_get_lsa(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mock_set_lsa(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
static int mock_set_lsa(struct cxl_mockmem_data *mdata,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mbox_set_lsa *set_lsa = cmd->payload_in;
|
||||
struct cxl_mockmem_data *mdata = dev_get_drvdata(cxlds->dev);
|
||||
void *lsa = mdata->lsa;
|
||||
u32 offset, length;
|
||||
|
||||
@@ -977,8 +966,7 @@ static int mock_set_lsa(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mock_health_info(struct cxl_dev_state *cxlds,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
static int mock_health_info(struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mbox_health_info health_info = {
|
||||
/* set flags for maint needed, perf degraded, hw replacement */
|
||||
@@ -1195,10 +1183,9 @@ static struct attribute *cxl_mock_mem_core_attrs[] = {
|
||||
};
|
||||
ATTRIBUTE_GROUPS(cxl_mock_mem_core);
|
||||
|
||||
static int mock_fw_info(struct cxl_dev_state *cxlds,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
static int mock_fw_info(struct cxl_mockmem_data *mdata,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mockmem_data *mdata = dev_get_drvdata(cxlds->dev);
|
||||
struct cxl_mbox_get_fw_info fw_info = {
|
||||
.num_slots = FW_SLOTS,
|
||||
.slot_info = (mdata->fw_slot & 0x7) |
|
||||
@@ -1218,11 +1205,10 @@ static int mock_fw_info(struct cxl_dev_state *cxlds,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mock_transfer_fw(struct cxl_dev_state *cxlds,
|
||||
static int mock_transfer_fw(struct cxl_mockmem_data *mdata,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mbox_transfer_fw *transfer = cmd->payload_in;
|
||||
struct cxl_mockmem_data *mdata = dev_get_drvdata(cxlds->dev);
|
||||
void *fw = mdata->fw;
|
||||
size_t offset, length;
|
||||
|
||||
@@ -1254,11 +1240,10 @@ static int mock_transfer_fw(struct cxl_dev_state *cxlds,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mock_activate_fw(struct cxl_dev_state *cxlds,
|
||||
static int mock_activate_fw(struct cxl_mockmem_data *mdata,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_mbox_activate_fw *activate = cmd->payload_in;
|
||||
struct cxl_mockmem_data *mdata = dev_get_drvdata(cxlds->dev);
|
||||
|
||||
if (activate->slot == 0 || activate->slot > FW_SLOTS)
|
||||
return -EINVAL;
|
||||
@@ -1276,9 +1261,12 @@ static int mock_activate_fw(struct cxl_dev_state *cxlds,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int cxl_mock_mbox_send(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *cmd)
|
||||
static int cxl_mock_mbox_send(struct cxl_memdev_state *mds,
|
||||
struct cxl_mbox_cmd *cmd)
|
||||
{
|
||||
struct cxl_dev_state *cxlds = &mds->cxlds;
|
||||
struct device *dev = cxlds->dev;
|
||||
struct cxl_mockmem_data *mdata = dev_get_drvdata(dev);
|
||||
int rc = -EIO;
|
||||
|
||||
switch (cmd->opcode) {
|
||||
@@ -1289,55 +1277,55 @@ static int cxl_mock_mbox_send(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *
|
||||
rc = mock_gsl(cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_GET_LOG:
|
||||
rc = mock_get_log(cxlds, cmd);
|
||||
rc = mock_get_log(mds, cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_IDENTIFY:
|
||||
if (cxlds->rcd)
|
||||
rc = mock_rcd_id(cxlds, cmd);
|
||||
rc = mock_rcd_id(cmd);
|
||||
else
|
||||
rc = mock_id(cxlds, cmd);
|
||||
rc = mock_id(cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_GET_LSA:
|
||||
rc = mock_get_lsa(cxlds, cmd);
|
||||
rc = mock_get_lsa(mdata, cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_GET_PARTITION_INFO:
|
||||
rc = mock_partition_info(cxlds, cmd);
|
||||
rc = mock_partition_info(cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_GET_EVENT_RECORD:
|
||||
rc = mock_get_event(cxlds, cmd);
|
||||
rc = mock_get_event(dev, cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_CLEAR_EVENT_RECORD:
|
||||
rc = mock_clear_event(cxlds, cmd);
|
||||
rc = mock_clear_event(dev, cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_SET_LSA:
|
||||
rc = mock_set_lsa(cxlds, cmd);
|
||||
rc = mock_set_lsa(mdata, cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_GET_HEALTH_INFO:
|
||||
rc = mock_health_info(cxlds, cmd);
|
||||
rc = mock_health_info(cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_SANITIZE:
|
||||
rc = mock_sanitize(cxlds, cmd);
|
||||
rc = mock_sanitize(mdata, cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_SECURE_ERASE:
|
||||
rc = mock_secure_erase(cxlds, cmd);
|
||||
rc = mock_secure_erase(mdata, cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_GET_SECURITY_STATE:
|
||||
rc = mock_get_security_state(cxlds, cmd);
|
||||
rc = mock_get_security_state(mdata, cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_SET_PASSPHRASE:
|
||||
rc = mock_set_passphrase(cxlds, cmd);
|
||||
rc = mock_set_passphrase(mdata, cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_DISABLE_PASSPHRASE:
|
||||
rc = mock_disable_passphrase(cxlds, cmd);
|
||||
rc = mock_disable_passphrase(mdata, cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_FREEZE_SECURITY:
|
||||
rc = mock_freeze_security(cxlds, cmd);
|
||||
rc = mock_freeze_security(mdata, cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_UNLOCK:
|
||||
rc = mock_unlock_security(cxlds, cmd);
|
||||
rc = mock_unlock_security(mdata, cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_PASSPHRASE_SECURE_ERASE:
|
||||
rc = mock_passphrase_secure_erase(cxlds, cmd);
|
||||
rc = mock_passphrase_secure_erase(mdata, cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_GET_POISON:
|
||||
rc = mock_get_poison(cxlds, cmd);
|
||||
@@ -1349,13 +1337,13 @@ static int cxl_mock_mbox_send(struct cxl_dev_state *cxlds, struct cxl_mbox_cmd *
|
||||
rc = mock_clear_poison(cxlds, cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_GET_FW_INFO:
|
||||
rc = mock_fw_info(cxlds, cmd);
|
||||
rc = mock_fw_info(mdata, cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_TRANSFER_FW:
|
||||
rc = mock_transfer_fw(cxlds, cmd);
|
||||
rc = mock_transfer_fw(mdata, cmd);
|
||||
break;
|
||||
case CXL_MBOX_OP_ACTIVATE_FW:
|
||||
rc = mock_activate_fw(cxlds, cmd);
|
||||
rc = mock_activate_fw(mdata, cmd);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -1397,6 +1385,7 @@ static int cxl_mock_mem_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
struct cxl_memdev *cxlmd;
|
||||
struct cxl_memdev_state *mds;
|
||||
struct cxl_dev_state *cxlds;
|
||||
struct cxl_mockmem_data *mdata;
|
||||
int rc;
|
||||
@@ -1422,52 +1411,54 @@ static int cxl_mock_mem_probe(struct platform_device *pdev)
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
cxlds = cxl_dev_state_create(dev);
|
||||
if (IS_ERR(cxlds))
|
||||
return PTR_ERR(cxlds);
|
||||
mds = cxl_memdev_state_create(dev);
|
||||
if (IS_ERR(mds))
|
||||
return PTR_ERR(mds);
|
||||
|
||||
mds->mbox_send = cxl_mock_mbox_send;
|
||||
mds->payload_size = SZ_4K;
|
||||
mds->event.buf = (struct cxl_get_event_payload *) mdata->event_buf;
|
||||
|
||||
cxlds = &mds->cxlds;
|
||||
cxlds->serial = pdev->id;
|
||||
cxlds->mbox_send = cxl_mock_mbox_send;
|
||||
cxlds->payload_size = SZ_4K;
|
||||
cxlds->event.buf = (struct cxl_get_event_payload *) mdata->event_buf;
|
||||
if (is_rcd(pdev)) {
|
||||
cxlds->rcd = true;
|
||||
cxlds->component_reg_phys = CXL_RESOURCE_NONE;
|
||||
}
|
||||
|
||||
rc = cxl_enumerate_cmds(cxlds);
|
||||
rc = cxl_enumerate_cmds(mds);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
rc = cxl_poison_state_init(cxlds);
|
||||
rc = cxl_poison_state_init(mds);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
rc = cxl_set_timestamp(cxlds);
|
||||
rc = cxl_set_timestamp(mds);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
cxlds->media_ready = true;
|
||||
rc = cxl_dev_state_identify(cxlds);
|
||||
rc = cxl_dev_state_identify(mds);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
rc = cxl_mem_create_range_info(cxlds);
|
||||
rc = cxl_mem_create_range_info(mds);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
mdata->mes.cxlds = cxlds;
|
||||
mdata->mes.mds = mds;
|
||||
cxl_mock_add_event_logs(&mdata->mes);
|
||||
|
||||
cxlmd = devm_cxl_add_memdev(cxlds);
|
||||
if (IS_ERR(cxlmd))
|
||||
return PTR_ERR(cxlmd);
|
||||
|
||||
rc = cxl_memdev_setup_fw_upload(cxlds);
|
||||
rc = cxl_memdev_setup_fw_upload(mds);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
cxl_mem_get_event_records(cxlds, CXLDEV_EVENT_STATUS_ALL);
|
||||
cxl_mem_get_event_records(mds, CXLDEV_EVENT_STATUS_ALL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -149,21 +149,6 @@ struct cxl_hdm *__wrap_devm_cxl_setup_hdm(struct cxl_port *port,
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(__wrap_devm_cxl_setup_hdm, CXL);
|
||||
|
||||
int __wrap_devm_cxl_enable_hdm(struct cxl_port *port, struct cxl_hdm *cxlhdm)
|
||||
{
|
||||
int index, rc;
|
||||
struct cxl_mock_ops *ops = get_cxl_mock_ops(&index);
|
||||
|
||||
if (ops && ops->is_mock_port(port->uport))
|
||||
rc = 0;
|
||||
else
|
||||
rc = devm_cxl_enable_hdm(port, cxlhdm);
|
||||
put_cxl_mock_ops(index);
|
||||
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(__wrap_devm_cxl_enable_hdm, CXL);
|
||||
|
||||
int __wrap_devm_cxl_add_passthrough_decoder(struct cxl_port *port)
|
||||
{
|
||||
int rc, index;
|
||||
|
Reference in New Issue
Block a user