Commit 9ad05b31 authored by Changpeng Liu's avatar Changpeng Liu
Browse files

nvme: return errno for nvme_ctrlr_set_supported_log_pages()



Change-Id: I2fda87d6176e18f2face59c9d916db2b4631c05b
Signed-off-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.gerrithub.io/424774


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent cab35b6b
Loading
Loading
Loading
Loading
+21 −7
Original line number Diff line number Diff line
@@ -368,6 +368,7 @@ nvme_ctrlr_construct_intel_support_log_page_list(struct spdk_nvme_ctrlr *ctrlr,

static int nvme_ctrlr_set_intel_support_log_pages(struct spdk_nvme_ctrlr *ctrlr)
{
	int rc = 0;
	uint64_t phys_addr = 0;
	struct nvme_completion_poll_status	status;
	struct spdk_nvme_intel_log_page_directory *log_page_directory;
@@ -379,10 +380,15 @@ static int nvme_ctrlr_set_intel_support_log_pages(struct spdk_nvme_ctrlr *ctrlr)
		return -ENXIO;
	}

	spdk_nvme_ctrlr_cmd_get_log_page(ctrlr, SPDK_NVME_INTEL_LOG_PAGE_DIRECTORY, SPDK_NVME_GLOBAL_NS_TAG,
					 log_page_directory, sizeof(struct spdk_nvme_intel_log_page_directory), 0,
					 nvme_completion_poll_cb,
					 &status);
	rc = spdk_nvme_ctrlr_cmd_get_log_page(ctrlr, SPDK_NVME_INTEL_LOG_PAGE_DIRECTORY,
					      SPDK_NVME_GLOBAL_NS_TAG, log_page_directory,
					      sizeof(struct spdk_nvme_intel_log_page_directory),
					      0, nvme_completion_poll_cb, &status);
	if (rc != 0) {
		spdk_free(log_page_directory);
		return rc;
	}

	if (spdk_nvme_wait_for_completion(ctrlr->adminq, &status)) {
		spdk_free(log_page_directory);
		SPDK_ERRLOG("nvme_ctrlr_cmd_get_log_page failed!\n");
@@ -394,9 +400,11 @@ static int nvme_ctrlr_set_intel_support_log_pages(struct spdk_nvme_ctrlr *ctrlr)
	return 0;
}

static void
static int
nvme_ctrlr_set_supported_log_pages(struct spdk_nvme_ctrlr *ctrlr)
{
	int	rc = 0;

	memset(ctrlr->log_page_supported, 0, sizeof(ctrlr->log_page_supported));
	/* Mandatory pages */
	ctrlr->log_page_supported[SPDK_NVME_LOG_ERROR] = true;
@@ -406,8 +414,10 @@ nvme_ctrlr_set_supported_log_pages(struct spdk_nvme_ctrlr *ctrlr)
		ctrlr->log_page_supported[SPDK_NVME_LOG_COMMAND_EFFECTS_LOG] = true;
	}
	if (ctrlr->cdata.vid == SPDK_PCI_VID_INTEL && !(ctrlr->quirks & NVME_INTEL_QUIRK_NO_LOG_PAGES)) {
		nvme_ctrlr_set_intel_support_log_pages(ctrlr);
		rc = nvme_ctrlr_set_intel_support_log_pages(ctrlr);
	}

	return rc;
}

static void
@@ -1726,7 +1736,11 @@ nvme_ctrlr_start(struct spdk_nvme_ctrlr *ctrlr)
		return rc;
	}

	nvme_ctrlr_set_supported_log_pages(ctrlr);
	rc = nvme_ctrlr_set_supported_log_pages(ctrlr);
	if (rc) {
		return rc;
	}

	nvme_ctrlr_set_supported_features(ctrlr);

	rc = nvme_ctrlr_set_doorbell_buffer_config(ctrlr);