From 05550749659b881643678a2c15c376996fe1b2d0 Mon Sep 17 00:00:00 2001 From: Jacek Kalwas Date: Thu, 4 Jun 2020 18:05:53 +0200 Subject: [PATCH] event: expose base virtaddr as an option Signed-off-by: Jacek Kalwas Change-Id: I062ac2b1de5a89d521bde926433139457f9168f7 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2777 Tested-by: SPDK CI Jenkins Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Reviewed-by: Jim Harris Reviewed-by: Shuhei Matsumoto --- include/spdk/event.h | 1 + lib/event/Makefile | 2 +- lib/event/app.c | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/include/spdk/event.h b/include/spdk/event.h index 98392cf7c..ea870fe9f 100644 --- a/include/spdk/event.h +++ b/include/spdk/event.h @@ -140,6 +140,7 @@ struct spdk_app_opts { */ logfunc *log; + uint64_t base_virtaddr; }; /** diff --git a/lib/event/Makefile b/lib/event/Makefile index d36cd2d55..87a6209c7 100644 --- a/lib/event/Makefile +++ b/lib/event/Makefile @@ -34,7 +34,7 @@ SPDK_ROOT_DIR := $(abspath $(CURDIR)/../..) include $(SPDK_ROOT_DIR)/mk/spdk.common.mk -SO_VER := 4 +SO_VER := 5 SO_MINOR := 0 LIBNAME = event diff --git a/lib/event/app.c b/lib/event/app.c index d0031c95b..9ec47d153 100644 --- a/lib/event/app.c +++ b/lib/event/app.c @@ -53,6 +53,7 @@ #define SPDK_APP_DPDK_DEFAULT_MASTER_CORE -1 #define SPDK_APP_DPDK_DEFAULT_MEM_CHANNEL -1 #define SPDK_APP_DPDK_DEFAULT_CORE_MASK "0x1" +#define SPDK_APP_DPDK_DEFAULT_BASE_VIRTADDR 0x200000000000 #define SPDK_APP_DEFAULT_CORE_LIMIT 0x140000000 /* 5 GiB */ struct spdk_app { @@ -132,6 +133,8 @@ static const struct option g_cmdline_options[] = { {"json-ignore-init-errors", no_argument, NULL, JSON_CONFIG_IGNORE_INIT_ERRORS_IDX}, #define IOVA_MODE_OPT_IDX 264 {"iova-mode", required_argument, NULL, IOVA_MODE_OPT_IDX}, +#define BASE_VIRTADDR_OPT_IDX 265 + {"base-virtaddr", required_argument, NULL, BASE_VIRTADDR_OPT_IDX}, }; /* Global section */ @@ -286,6 +289,7 @@ spdk_app_opts_init(struct spdk_app_opts *opts) opts->master_core = SPDK_APP_DPDK_DEFAULT_MASTER_CORE; opts->mem_channel = SPDK_APP_DPDK_DEFAULT_MEM_CHANNEL; opts->reactor_mask = NULL; + opts->base_virtaddr = SPDK_APP_DPDK_DEFAULT_BASE_VIRTADDR; opts->print_level = SPDK_APP_DEFAULT_LOG_PRINT_LEVEL; opts->rpc_addr = SPDK_DEFAULT_RPC_ADDR; opts->num_entries = SPDK_APP_DEFAULT_NUM_TRACE_ENTRIES; @@ -508,6 +512,7 @@ app_setup_env(struct spdk_app_opts *opts) env_opts.num_pci_addr = opts->num_pci_addr; env_opts.pci_blacklist = opts->pci_blacklist; env_opts.pci_whitelist = opts->pci_whitelist; + env_opts.base_virtaddr = opts->base_virtaddr; env_opts.env_context = opts->env_context; env_opts.iova_mode = opts->iova_mode; @@ -765,6 +770,7 @@ usage(void (*app_usage)(void)) printf(" pci addr to whitelist (-B and -W cannot be used at the same time)\n"); printf(" --huge-dir use a specific hugetlbfs mount to reserve memory from\n"); printf(" --iova-mode set IOVA mode ('pa' for IOVA_PA and 'va' for IOVA_VA)\n"); + printf(" --base-virtaddr the base virtual address for DPDK (default: 0x200000000000)\n"); printf(" --num-trace-entries number of trace entries for each core, must be power of 2. (default %d)\n", SPDK_APP_DEFAULT_NUM_TRACE_ENTRIES); spdk_log_usage(stdout, "-L"); @@ -975,6 +981,15 @@ spdk_app_parse_args(int argc, char **argv, struct spdk_app_opts *opts, goto out; } break; + case BASE_VIRTADDR_OPT_IDX: + tmp = spdk_strtoll(optarg, 0); + if (tmp <= 0) { + SPDK_ERRLOG("Invalid base-virtaddr %s\n", optarg); + usage(app_usage); + goto out; + } + opts->base_virtaddr = (uint64_t)tmp; + break; case HUGE_DIR_OPT_IDX: opts->hugedir = optarg; break;