diff options
author | Weiping Zhang <zhangweiping@didichuxing.com> | 2018-07-03 00:34:38 +0800 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2018-07-17 07:30:27 -0700 |
commit | fa441b71aa27d06fa79d5e7f7c329981dccd94d1 (patch) | |
tree | 3ca9e9a28eae6944ce9fc21977e115aff98d669e | |
parent | cf39a6bc342b980f10f344d88035829638a89a48 (diff) | |
download | linux-stable-fa441b71aa27d06fa79d5e7f7c329981dccd94d1.tar.gz linux-stable-fa441b71aa27d06fa79d5e7f7c329981dccd94d1.tar.bz2 linux-stable-fa441b71aa27d06fa79d5e7f7c329981dccd94d1.zip |
nvme: don't enable AEN if not supported
Avoid excuting set_feature command if there is no supported bit in
Optional Asynchronous Events Supported (OAES).
Fixes: c0561f82 ("nvme: submit AEN event configuration on startup")
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Weiping Zhang <zhangweiping@didichuxing.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
-rw-r--r-- | drivers/nvme/host/core.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index e7668c4bb4dd..57f33733237f 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -1060,14 +1060,17 @@ EXPORT_SYMBOL_GPL(nvme_set_queue_count); static void nvme_enable_aen(struct nvme_ctrl *ctrl) { - u32 result; + u32 result, supported_aens = ctrl->oaes & NVME_AEN_SUPPORTED; int status; - status = nvme_set_features(ctrl, NVME_FEAT_ASYNC_EVENT, - ctrl->oaes & NVME_AEN_SUPPORTED, NULL, 0, &result); + if (!supported_aens) + return; + + status = nvme_set_features(ctrl, NVME_FEAT_ASYNC_EVENT, supported_aens, + NULL, 0, &result); if (status) dev_warn(ctrl->device, "Failed to configure AEN (cfg %x)\n", - ctrl->oaes & NVME_AEN_SUPPORTED); + supported_aens); } static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio) |