Commit 8a9ae523 authored by Scott Bauer's avatar Scott Bauer Committed by Jens Axboe
Browse files

nvme: Check for Security send/recv support before issuing commands.



We need to verify that the controller supports the security
commands before actually trying to issue them.

Signed-off-by: default avatarScott Bauer <scott.bauer@intel.com>
[hch: moved the check so that we don't call into the OPAL code if not
      supported]
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent 4f1244c8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1264,6 +1264,7 @@ int nvme_init_identify(struct nvme_ctrl *ctrl)
		return -EIO;
	}

	ctrl->oacs = le16_to_cpu(id->oacs);
	ctrl->vid = le16_to_cpu(id->vid);
	ctrl->oncs = le16_to_cpup(&id->oncs);
	atomic_set(&ctrl->abort_limit, id->acl + 1);
+1 −0
Original line number Diff line number Diff line
@@ -140,6 +140,7 @@ struct nvme_ctrl {
	u32 max_hw_sectors;
	u16 oncs;
	u16 vid;
	u16 oacs;
	atomic_t abort_limit;
	u8 event_limit;
	u8 vwc;
+1 −1
Original line number Diff line number Diff line
@@ -1792,7 +1792,7 @@ static void nvme_reset_work(struct work_struct *work)
	if (result)
		goto out;

	if (!dev->ctrl.opal_dev) {
	if ((dev->ctrl.oacs & NVME_CTRL_OACS_SEC_SUPP) && !dev->ctrl.opal_dev) {
		dev->ctrl.opal_dev =
			init_opal_dev(&dev->ctrl, &nvme_sec_submit);
	}
+1 −0
Original line number Diff line number Diff line
@@ -244,6 +244,7 @@ enum {
	NVME_CTRL_ONCS_DSM			= 1 << 2,
	NVME_CTRL_ONCS_WRITE_ZEROES		= 1 << 3,
	NVME_CTRL_VWC_PRESENT			= 1 << 0,
	NVME_CTRL_OACS_SEC_SUPP                 = 1 << 0,
};

struct nvme_lbaf {