From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id C8806B0AF for ; Fri, 20 Jun 2014 17:42:38 +0200 (CEST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga103.fm.intel.com with ESMTP; 20 Jun 2014 08:37:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.01,514,1400050800"; d="scan'208";a="550954893" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by fmsmga001.fm.intel.com with ESMTP; 20 Jun 2014 08:42:27 -0700 Received: from sivswdev01.ir.intel.com (sivswdev01.ir.intel.com [10.237.217.45]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id s5KFgQDT024698; Fri, 20 Jun 2014 16:42:26 +0100 Received: from sivswdev01.ir.intel.com (localhost [127.0.0.1]) by sivswdev01.ir.intel.com with ESMTP id s5KFgQS8003201; Fri, 20 Jun 2014 16:42:26 +0100 Received: (from aburakov@localhost) by sivswdev01.ir.intel.com with id s5KFgQ2D003197; Fri, 20 Jun 2014 16:42:26 +0100 From: Anatoly Burakov To: dev@dpdk.org Date: Fri, 20 Jun 2014 16:42:17 +0100 Message-Id: <2a0e90b8dc52faa3403e6e91e098237428221f4e.1403277437.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 1.7.0.7 In-Reply-To: References: In-Reply-To: References: Subject: [dpdk-dev] [PATCH 02/10] eal: use --base-virtaddr for mapping rte_config as well X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jun 2014 15:42:39 -0000 Use --base-virtaddr to set the address of rte_config file along with start address of the hugepages. Since the user would likely expect the hugepages to be starting at the specified address, the specified address will likely be rounded to either 2M or 1G. So, in order to not waste space, we subtract the length of the config (and align it on page boundary) from the base virtual address and map the config just before the hugepages. Signed-off-by: Anatoly Burakov --- lib/librte_eal/linuxapp/eal/eal.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c index ecb7664..32cec25 100644 --- a/lib/librte_eal/linuxapp/eal/eal.c +++ b/lib/librte_eal/linuxapp/eal/eal.c @@ -212,6 +212,14 @@ rte_eal_config_create(void) if (internal_config.no_shconf) return; + /* map the config before hugepage address so that we don't waste a page */ + if (internal_config.base_virtaddr != 0) + rte_mem_cfg_addr = (void *) + RTE_ALIGN_FLOOR(internal_config.base_virtaddr - + sizeof(struct rte_mem_config), sysconf (_SC_PAGE_SIZE)); + else + rte_mem_cfg_addr = NULL; + if (mem_cfg_fd < 0){ mem_cfg_fd = open(pathname, O_RDWR | O_CREAT, 0660); if (mem_cfg_fd < 0) @@ -231,7 +239,7 @@ rte_eal_config_create(void) "process running?\n", pathname); } - rte_mem_cfg_addr = mmap(NULL, sizeof(*rte_config.mem_config), + rte_mem_cfg_addr = mmap(rte_mem_cfg_addr, sizeof(*rte_config.mem_config), PROT_READ | PROT_WRITE, MAP_SHARED, mem_cfg_fd, 0); if (rte_mem_cfg_addr == MAP_FAILED){ -- 1.8.1.4