nvme: use AER configuation structure when starting controller

Change-Id: I79dad84d1dc58e61eb36b461b41fbd7ee73631fc
Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.gerrithub.io/406899
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Changpeng Liu 2018-04-08 08:57:57 -04:00 committed by Daniel Verkamp
parent 7bdd103b3d
commit 2d192cf8fb
4 changed files with 15 additions and 8 deletions

View File

@ -1197,7 +1197,7 @@ nvme_ctrlr_construct_and_submit_aer(struct spdk_nvme_ctrlr *ctrlr,
static int
nvme_ctrlr_configure_aer(struct spdk_nvme_ctrlr *ctrlr)
{
union spdk_nvme_critical_warning_state state;
union spdk_nvme_feat_async_event_configuration config;
struct nvme_async_event_request *aer;
uint32_t i;
struct nvme_completion_poll_status status;
@ -1205,9 +1205,16 @@ nvme_ctrlr_configure_aer(struct spdk_nvme_ctrlr *ctrlr)
status.done = false;
state.raw = 0xFF;
state.bits.reserved = 0;
rc = nvme_ctrlr_cmd_set_async_event_config(ctrlr, state, nvme_completion_poll_cb, &status);
config.raw = 0;
config.bits.crit_warn.bits.available_spare = 1;
config.bits.crit_warn.bits.temperature = 1;
config.bits.crit_warn.bits.device_reliability = 1;
config.bits.crit_warn.bits.read_only = 1;
config.bits.crit_warn.bits.volatile_memory_backup = 1;
config.bits.ns_attr_notice = 1;
config.bits.fw_activation_notice = 1;
config.bits.telemetry_log_notice = 1;
rc = nvme_ctrlr_cmd_set_async_event_config(ctrlr, config, nvme_completion_poll_cb, &status);
if (rc != 0) {
return rc;
}

View File

@ -363,12 +363,12 @@ nvme_ctrlr_cmd_get_num_queues(struct spdk_nvme_ctrlr *ctrlr,
int
nvme_ctrlr_cmd_set_async_event_config(struct spdk_nvme_ctrlr *ctrlr,
union spdk_nvme_critical_warning_state state, spdk_nvme_cmd_cb cb_fn,
union spdk_nvme_feat_async_event_configuration config, spdk_nvme_cmd_cb cb_fn,
void *cb_arg)
{
uint32_t cdw11;
cdw11 = state.raw;
cdw11 = config.raw;
return spdk_nvme_ctrlr_cmd_set_feature(ctrlr, SPDK_NVME_FEAT_ASYNC_EVENT_CONFIGURATION, cdw11, 0,
NULL, 0,
cb_fn, cb_arg);

View File

@ -542,7 +542,7 @@ int nvme_ctrlr_cmd_set_num_queues(struct spdk_nvme_ctrlr *ctrlr,
int nvme_ctrlr_cmd_get_num_queues(struct spdk_nvme_ctrlr *ctrlr,
spdk_nvme_cmd_cb cb_fn, void *cb_arg);
int nvme_ctrlr_cmd_set_async_event_config(struct spdk_nvme_ctrlr *ctrlr,
union spdk_nvme_critical_warning_state state,
union spdk_nvme_feat_async_event_configuration config,
spdk_nvme_cmd_cb cb_fn, void *cb_arg);
int nvme_ctrlr_cmd_set_host_id(struct spdk_nvme_ctrlr *ctrlr, void *host_id, uint32_t host_id_size,
spdk_nvme_cmd_cb cb_fn, void *cb_arg);

View File

@ -266,7 +266,7 @@ nvme_completion_poll_cb(void *arg, const struct spdk_nvme_cpl *cpl)
int
nvme_ctrlr_cmd_set_async_event_config(struct spdk_nvme_ctrlr *ctrlr,
union spdk_nvme_critical_warning_state state, spdk_nvme_cmd_cb cb_fn,
union spdk_nvme_feat_async_event_configuration config, spdk_nvme_cmd_cb cb_fn,
void *cb_arg)
{
fake_cpl_success(cb_fn, cb_arg);