examples/nvme/identify: Optional VMD enumeration

New flag -V was added for VMD enabling.

Change-Id: I0a31994acd5fd677366e8d5e49ad9a3583670c2c
Signed-off-by: Wojciech Malikowski <wojciech.malikowski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/456967
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Wojciech Malikowski 2019-06-05 06:50:49 -04:00 committed by Darek Stojaczyk
parent 9d92b9d420
commit 8b29e8bc7f

View File

@ -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);