Commit 8b29e8bc authored by Wojciech Malikowski's avatar Wojciech Malikowski Committed by Darek Stojaczyk
Browse files

examples/nvme/identify: Optional VMD enumeration



New flag -V was added for VMD enabling.

Change-Id: I0a31994acd5fd677366e8d5e49ad9a3583670c2c
Signed-off-by: default avatarWojciech Malikowski <wojciech.malikowski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/456967


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarPaul Luse <paul.e.luse@intel.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent 9d92b9d4
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#include "spdk/endian.h"
#include "spdk/log.h"
#include "spdk/nvme.h"
#include "spdk/vmd.h"
#include "spdk/nvme_ocssd.h"
#include "spdk/env.h"
#include "spdk/nvme_intel.h"
@@ -94,6 +95,8 @@ static struct spdk_nvme_transport_id g_trid;

static int g_controllers_found = 0;

static bool g_vmd = false;

static void
hex_dump(const void *data, size_t size)
{
@@ -1661,6 +1664,7 @@ usage(const char *program_name)
	printf(" -d         DPDK huge memory size in MB\n");
	printf(" -x         print hex dump of raw data\n");
	printf(" -v         verbose (enable warnings)\n");
	printf(" -V         enumerate VMD\n");
	printf(" -H         show this usage\n");
}

@@ -1672,7 +1676,7 @@ parse_args(int argc, char **argv)
	g_trid.trtype = SPDK_NVME_TRANSPORT_PCIE;
	snprintf(g_trid.subnqn, sizeof(g_trid.subnqn), "%s", SPDK_NVMF_DISCOVERY_NQN);

	while ((op = getopt(argc, argv, "d:i:p:r:xHL:")) != -1) {
	while ((op = getopt(argc, argv, "d:i:p:r:xHL:V")) != -1) {
		switch (op) {
		case 'd':
			g_dpdk_mem = spdk_strtol(optarg, 10);
@@ -1720,8 +1724,12 @@ parse_args(int argc, char **argv)
			return 0;
#endif
			break;

		case 'H':
			usage(argv[0]);
			break;
		case 'V':
			g_vmd = true;
			break;
		default:
			usage(argv[0]);
			return 1;
@@ -1773,6 +1781,11 @@ int main(int argc, char **argv)
		return 1;
	}

	if (g_vmd && spdk_vmd_init()) {
		fprintf(stderr, "Failed to initialize VMD."
			" Some NVMe devices can be unavailable.\n");
	}

	/* A specific trid is required. */
	if (strlen(g_trid.traddr) != 0) {
		ctrlr = spdk_nvme_connect(&g_trid, NULL, 0);