From patchwork Thu Feb 1 16:00:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 126544 Delivered-To: patch@linaro.org Received: by 10.46.124.24 with SMTP id x24csp1837638ljc; Thu, 1 Feb 2018 08:01:13 -0800 (PST) X-Google-Smtp-Source: AH8x225g+fmwxS89snEaNx5VhtN24igkyBEDGoeviAbOBdjmbmWDVtrK0fM3dQtS5nfDnaF9bump X-Received: by 10.237.38.229 with SMTP id q92mr59794940qtd.160.1517500873505; Thu, 01 Feb 2018 08:01:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517500873; cv=none; d=google.com; s=arc-20160816; b=v8OeTEWEJ/KpDl/1TlXgaFW+ruWOW2jCNM59w+K7vMLp1HQ+7ptSAKNQZwAHIPd7Bo qBiQAWaxaQDaANhGBb0V5hDle+Baj/Cnb3ZoOcpgo2gZa+M6iuXq398wkMPuclYmbZUx bBrVMt3W+yQCYEfZRZwSLrVts00p9RmFEMji2ciN58frRYvPAgYcN0DjVL5uJwmjCqFt 45sxCaHetlKm6ea/05zTuFQy3/q1Yw5r8pNpuK3TQbhdT3GYp6CGUdwZsNgBAWIoVi5t sLtsmV5DhmCWBE8EmOaG5038LQp0SPKiFsGsiDwg0v/4j0mUBQtLa2gsKRLud681tOX/ bdwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:github-pr-num :references:in-reply-to:message-id:date:to:from:delivered-to :arc-authentication-results; bh=3mRQhSO9PuN1OL7eom4i+xK+Vb9GDwEZN16nvw5tnqM=; b=Ol5V0GTRDyiQ/A+cBr8a/pRoOxgFwGt79K93njUFGCmGqrNHDu8JTjBTqPOQJY+kDa 2jMF5DwTkL5rwU9z573SG2hdQiIyy5N/egu/Dtw4aqVmOBd35qumlMd84sMyCMKNfmGK 820+vep1S6AcFJkLilfgZ3Mqi/AtSTDWVr8vZeriozr1g4sCRzylraZQ/6t/cJgzJQTQ h25yD440GGv/WL41D5Chr7mGGtATzECPhWI2pcXRnfK8GwWs3z6Tnu00Yi+UJdgMTSbq /kSGV4zcfU5wSgJsV8QxPasXwiozhOkuQ5JtgtnCfw9DAH4BRE+No8NDi80EehYhTriH YLBg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Return-Path: Received: from lists.linaro.org (ec2-54-197-127-237.compute-1.amazonaws.com. [54.197.127.237]) by mx.google.com with ESMTP id 95si2228805qkr.17.2018.02.01.08.01.13; Thu, 01 Feb 2018 08:01:13 -0800 (PST) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) client-ip=54.197.127.237; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Received: by lists.linaro.org (Postfix, from userid 109) id 1888B61737; Thu, 1 Feb 2018 16:01:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2 autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id 3E0516176F; Thu, 1 Feb 2018 16:00:31 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 2A0E5617A2; Thu, 1 Feb 2018 16:00:18 +0000 (UTC) Received: from forward105p.mail.yandex.net (forward105p.mail.yandex.net [77.88.28.108]) by lists.linaro.org (Postfix) with ESMTPS id AFB3660813 for ; Thu, 1 Feb 2018 16:00:12 +0000 (UTC) Received: from mxback13j.mail.yandex.net (mxback13j.mail.yandex.net [IPv6:2a02:6b8:0:1619::88]) by forward105p.mail.yandex.net (Yandex) with ESMTP id 284F24082CA9 for ; Thu, 1 Feb 2018 19:00:11 +0300 (MSK) Received: from smtp3o.mail.yandex.net (smtp3o.mail.yandex.net [2a02:6b8:0:1a2d::27]) by mxback13j.mail.yandex.net (nwsmtp/Yandex) with ESMTP id DB7XBYl0ss-0B5qmdFd; Thu, 01 Feb 2018 19:00:11 +0300 Received: by smtp3o.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id IQBTIJTeEr-0Ad4tcR5; Thu, 01 Feb 2018 19:00:10 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (Client certificate not present) From: Github ODP bot To: lng-odp@lists.linaro.org Date: Thu, 1 Feb 2018 19:00:07 +0300 Message-Id: <1517500809-452-2-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1517500809-452-1-git-send-email-odpbot@yandex.ru> References: <1517500809-452-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 446 Subject: [lng-odp] [PATCH API-NEXT v1 1/3] validation: shm: test capa and maximum reservation X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" From: Petri Savolainen Added test which uses capability API, and tries to reserve and use maximum sized block. 100 MB shm memory is assumed to be available to ODP validation tests. Signed-off-by: Petri Savolainen --- /** Email created from pull request 446 (psavol:next-global-init-shm-size-2) ** https://github.com/Linaro/odp/pull/446 ** Patch: https://github.com/Linaro/odp/pull/446.patch ** Base sha: 5718327018debbb02aacb464493504c95fbe57a3 ** Merge commit sha: 5beffee2f03442764ec79a301dd6608c8e82c8b4 **/ test/validation/api/shmem/shmem.c | 52 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/test/validation/api/shmem/shmem.c b/test/validation/api/shmem/shmem.c index bda07011c..feef34c54 100644 --- a/test/validation/api/shmem/shmem.c +++ b/test/validation/api/shmem/shmem.c @@ -22,6 +22,8 @@ #define STRESS_SIZE 32 /* power of 2 and <=256 */ #define STRESS_RANDOM_SZ 5 #define STRESS_ITERATION 5000 +#define MEGA 1000000UL +#define MAX_MEMORY_USED (100 * MEGA) typedef enum { STRESS_FREE, /* entry is free and can be allocated */ @@ -212,6 +214,55 @@ void shmem_test_basic(void) CU_ASSERT(0 == odp_shm_free(shm)); } +/* + * maximum size reservation + */ +static void shmem_test_max_reserve(void) +{ + odp_shm_capability_t capa; + odp_shm_t shm; + uint64_t size, align; + uint8_t *data; + uint64_t i; + + memset(&capa, 0, sizeof(odp_shm_capability_t)); + CU_ASSERT_FATAL(odp_shm_capability(&capa) == 0); + + CU_ASSERT(capa.max_blocks > 0); + + size = capa.max_size; + align = capa.max_align; + + /* Assuming that system has at least MAX_MEMORY_USED bytes available */ + if (capa.max_size == 0 || capa.max_size > MAX_MEMORY_USED) + size = MAX_MEMORY_USED; + + if (capa.max_align == 0 || capa.max_align > MEGA) + align = MEGA; + + printf("\n size: %" PRIu64 "\n", size); + printf(" align: %" PRIu64 "\n", align); + + shm = odp_shm_reserve("test_max_reserve", size, align, 0); + CU_ASSERT(shm != ODP_SHM_INVALID); + + data = odp_shm_addr(shm); + CU_ASSERT(data != NULL); + + if (data) { + memset(data, 0xde, size); + for (i = 0; i < size; i++) { + if (data[i] != 0xde) { + CU_FAIL("Data error"); + break; + } + } + } + + if (shm != ODP_SHM_INVALID) + CU_ASSERT(odp_shm_free(shm) == 0); +} + /* * thread part for the shmem_test_reserve_after_fork */ @@ -769,6 +820,7 @@ void shmem_test_stress(void) odp_testinfo_t shmem_suite[] = { ODP_TEST_INFO(shmem_test_basic), + ODP_TEST_INFO(shmem_test_max_reserve), ODP_TEST_INFO(shmem_test_reserve_after_fork), ODP_TEST_INFO(shmem_test_singleva_after_fork), ODP_TEST_INFO(shmem_test_stress), From patchwork Thu Feb 1 16:00:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 126546 Delivered-To: patch@linaro.org Received: by 10.46.124.24 with SMTP id x24csp1840056ljc; Thu, 1 Feb 2018 08:03:24 -0800 (PST) X-Google-Smtp-Source: AH8x226AyIELvlyOu5vPbe6/e3a8ql5l9S2vebD1+Y/2v5tCFJl46KOEWpvAR+ykwqFnWiSpDAVg X-Received: by 10.200.58.97 with SMTP id w88mr41010194qte.236.1517501004260; Thu, 01 Feb 2018 08:03:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517501004; cv=none; d=google.com; s=arc-20160816; b=DaCi22BgeUKYcRcdV3Lb64khWDwiNmti+aLBeJ+NjuP5an6xqvQX/JcKOkOmjkdGJR F/6nZ5SGl3zic93becv/rz346HDr3QPPrCTUgcyDlnf0/wcAupvw00kkUEiRO3cU5rXK DmHTXpQeb5ySDq8IVMMsSaiM1iICWi3TnFkotKo/IwgEmWT5I6kDd51TcIBwGZyjnNdD 6U0gN4FdzLlrQrcfhaykNYsyXl8Wy55bumxtRX13deG2VgYR3n07GKLTUBCdPbbClLSZ 2sX9o8QPOg+hEsptFxu0HW0KhMUVpqp+nfftKd7Dij+gsYXTSYeN8VYux+zCyGmOCyKx +ZnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:github-pr-num :references:in-reply-to:message-id:date:to:from:delivered-to :arc-authentication-results; bh=pFYn4gHxJIELCTAC9TOFJMw4gNVFjnZY8heE7HXM/hE=; b=SYptNRwc3+mSSKBOFx3ZqYG1smPYYnO7AmwGQq1mA+kc0Pzu2hreuB7Rj9/zg4aXlO 3iXC15AWg928MfOBrYoQVMJDvIONgoU2QXWPgkRcng9IEsRgvJZhi6CmGjQ0iojywpiU 7NdSblwY6M3MxK6SOJUSRrBccaaJnpcCOIqHbQQq6Ax1lpDcFWXUF2YBtOBYOBo8YnJm U4WIGOscHKJi0eijTtkW7kvHzi4dCMx837/TRLlU+lyeTcA2oFnwuzK2kZvGb9IGNIro 2ZCunCIIEART0es66Henp4qWaWt8TJSKb8wKDS0tluD5ecjAzECCd9ZzmUK5ewiEy7t9 AhBQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Return-Path: Received: from lists.linaro.org (ec2-54-197-127-237.compute-1.amazonaws.com. [54.197.127.237]) by mx.google.com with ESMTP id s28si4499894qtg.322.2018.02.01.08.03.24; Thu, 01 Feb 2018 08:03:24 -0800 (PST) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) client-ip=54.197.127.237; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Received: by lists.linaro.org (Postfix, from userid 109) id E3553617B7; Thu, 1 Feb 2018 16:03:23 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id B1299617BE; Thu, 1 Feb 2018 16:00:35 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 8BD456176F; Thu, 1 Feb 2018 16:00:25 +0000 (UTC) Received: from forward106o.mail.yandex.net (forward106o.mail.yandex.net [37.140.190.187]) by lists.linaro.org (Postfix) with ESMTPS id CF20760B04 for ; Thu, 1 Feb 2018 16:00:14 +0000 (UTC) Received: from mxback18j.mail.yandex.net (mxback18j.mail.yandex.net [IPv6:2a02:6b8:0:1619::94]) by forward106o.mail.yandex.net (Yandex) with ESMTP id C0A37786545 for ; Thu, 1 Feb 2018 19:00:12 +0300 (MSK) Received: from smtp3o.mail.yandex.net (smtp3o.mail.yandex.net [2a02:6b8:0:1a2d::27]) by mxback18j.mail.yandex.net (nwsmtp/Yandex) with ESMTP id MgTg9embow-0BniXn4f; Thu, 01 Feb 2018 19:00:11 +0300 Received: by smtp3o.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id IQBTIJTeEr-0BdSNsS2; Thu, 01 Feb 2018 19:00:11 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (Client certificate not present) From: Github ODP bot To: lng-odp@lists.linaro.org Date: Thu, 1 Feb 2018 19:00:08 +0300 Message-Id: <1517500809-452-3-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1517500809-452-1-git-send-email-odpbot@yandex.ru> References: <1517500809-452-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 446 Subject: [lng-odp] [PATCH API-NEXT v1 2/3] api: init: add shm memory size parameter X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" From: Petri Savolainen Application memory usage may vary a lot. Implementation may need to pre-allocate memory or address space already at init time to be able to guarantee e.g. the same VA address space for all threads. Total SHM memory usage information is needed at global init time, as implementation likely uses the same shared memory for its own global memory allocations. Signed-off-by: Petri Savolainen --- /** Email created from pull request 446 (psavol:next-global-init-shm-size-2) ** https://github.com/Linaro/odp/pull/446 ** Patch: https://github.com/Linaro/odp/pull/446.patch ** Base sha: 5718327018debbb02aacb464493504c95fbe57a3 ** Merge commit sha: 5beffee2f03442764ec79a301dd6608c8e82c8b4 **/ include/odp/api/spec/init.h | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/include/odp/api/spec/init.h b/include/odp/api/spec/init.h index 21734db2a..7c18cf45a 100644 --- a/include/odp/api/spec/init.h +++ b/include/odp/api/spec/init.h @@ -107,23 +107,29 @@ typedef int (*odp_log_func_t)(odp_log_level_t level, const char *fmt, ...); typedef void (*odp_abort_func_t)(void) ODP_NORETURN; /** - * ODP initialization data + * Global initialization parameters * - * Data that is required to initialize the ODP API with the - * application specific data such as specifying a logging callback, the log - * level etc. + * These parameters may be used at global initialization time to configure and + * optimize ODP implementation to match the intended usage. Application + * specifies maximum resource usage. Implementation may round up resource + * reservations as needed. Initialization function returns a failure if resource + * requirements are too high. Init parameters may be used also to override + * logging and abort functions. * - * @note It is expected that all unassigned members are zero + * Use odp_init_param_init() to initialize the parameters into their default + * values. Unused parameters are left to default values. */ typedef struct odp_init_t { /** Maximum number of worker threads the user will run concurrently. Valid range is from 0 to platform specific maximum. Set both num_worker and num_control to zero for default number of threads. */ int num_worker; + /** Maximum number of control threads the user will run concurrently. Valid range is from 0 to platform specific maximum. Set both num_worker and num_control to zero for default number of threads. */ int num_control; + /** Pointer to bit mask mapping CPUs available to this ODP instance for running worker threads. Initialize to a NULL pointer to use default CPU mapping. @@ -139,6 +145,7 @@ typedef struct odp_init_t { worker masks */ const odp_cpumask_t *worker_cpus; + /** Pointer to bit mask mapping CPUs available to this ODP instance for running control threads. Initialize to a NULL pointer to use default CPU mapping. @@ -150,10 +157,13 @@ typedef struct odp_init_t { worker and control masks do not overlap. */ const odp_cpumask_t *control_cpus; + /** Replacement for the default log fn */ odp_log_func_t log_fn; + /** Replacement for the default abort fn */ odp_abort_func_t abort_fn; + /** Unused features. These are hints to the ODP implementation that * the application will not use any APIs associated with these * features. Implementations may use this information to provide @@ -161,6 +171,15 @@ typedef struct odp_init_t { * that a feature will not be used and it is used anyway. */ odp_feature_t not_used; + + /** Shared memory parameters */ + struct { + /** Maximum memory usage in bytes. This is the maximum + * amount of shared memory that application will reserve + * concurrently. */ + uint64_t max_memory; + } shm; + } odp_init_t; /** @@ -189,7 +208,8 @@ void odp_init_param_init(odp_init_t *param); * system and outputs a handle for it. The handle is used in other calls * (e.g. odp_init_local()) as a reference to the instance. When user provides * configuration parameters, the platform may configure and optimize the - * instance to match user requirements. + * instance to match user requirements. A failure is returned if requirements + * cannot be met. * * Configuration parameters are divided into standard and platform specific * parts. Standard parameters are supported by any ODP platform, where as From patchwork Thu Feb 1 16:00:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 126545 Delivered-To: patch@linaro.org Received: by 10.46.124.24 with SMTP id x24csp1838923ljc; Thu, 1 Feb 2018 08:02:18 -0800 (PST) X-Google-Smtp-Source: AH8x225JEombVWvrLUm6mIJEyNDWjO1d0XGiwhqMFkACrUYDrr0L+gh8TW+K9FsvCSBL/F8IRt4Y X-Received: by 10.55.170.150 with SMTP id t144mr19971730qke.339.1517500937979; Thu, 01 Feb 2018 08:02:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517500937; cv=none; d=google.com; s=arc-20160816; b=xs3i4oKLz71qTBJZeDrNBcaVNme12b0wp8IA7KLIMgX84fpm4Nf/1frG1joVqZZcKX whkzxvUwnxodlxogn3C00LYiReegPLT6lDILkURJm+VaZ+0u1Rd6JyMMccGXheaCT+3k WZwJ/DzF1eUNRvO6G3M+6qmmklU12J+i4q0n4dtoGE/LKgpVv58fxUzNxP2Yn01AlY6m 6cdmp9h9dMdamML3PhoiTd8C7DfDzuU20mQDKolmdSnxKwuRAnrhWKnn571q9SZFeZSf cnNrZd1Zw5nCHXpFdsK5fD5T+MHycRmahVH9N0MeXDj3bxhVSJbxP3Go+QU4gHwAgzOR Ec+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:github-pr-num :references:in-reply-to:message-id:date:to:from:delivered-to :arc-authentication-results; bh=ykhF7JW4UiEcXIJCD3hrNUUTdndf3BoPfzKbKhl4daI=; b=az/1P/6PcD1RIKYHtMybMP8C2l59R4FzwrOx9Gggj5y/QV6KiaCPDPnYmpBE2Ksw+P czP7pEepzH4pjs29i4arwpSXk/IvXw195U3T8oVV7yh8DNNMyuDbJEcXeRU+B615z1j4 gwNDOVAobtS6th2cN60KY4eCfYt9qT/APYURvhpD7yEPS6oPiAIcvccBerr5WjBCLuEX hcIs0+VJ4adriEMDEXblN9Lmj4SSomU9gkwSDmKhywtKQSS5bktdWeBcypkjDZkXjhtT n3FzxTodnfkbsPN4eUDIVA83mm+gDdzRIy4dESNAMvSM7R5bjPRYpErX+UqAFCnWfKLd qpEw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Return-Path: Received: from lists.linaro.org (ec2-54-197-127-237.compute-1.amazonaws.com. [54.197.127.237]) by mx.google.com with ESMTP id d6si1141086qkj.34.2018.02.01.08.02.17; Thu, 01 Feb 2018 08:02:17 -0800 (PST) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) client-ip=54.197.127.237; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Received: by lists.linaro.org (Postfix, from userid 109) id 91109617D0; Thu, 1 Feb 2018 16:02:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id 6B263617AF; Thu, 1 Feb 2018 16:00:33 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id EB156617A4; Thu, 1 Feb 2018 16:00:24 +0000 (UTC) Received: from forward106p.mail.yandex.net (forward106p.mail.yandex.net [77.88.28.109]) by lists.linaro.org (Postfix) with ESMTPS id EB3C261522 for ; Thu, 1 Feb 2018 16:00:14 +0000 (UTC) Received: from mxback5g.mail.yandex.net (mxback5g.mail.yandex.net [IPv6:2a02:6b8:0:1472:2741:0:8b7:166]) by forward106p.mail.yandex.net (Yandex) with ESMTP id 784C52D829DB for ; Thu, 1 Feb 2018 19:00:13 +0300 (MSK) Received: from smtp3o.mail.yandex.net (smtp3o.mail.yandex.net [2a02:6b8:0:1a2d::27]) by mxback5g.mail.yandex.net (nwsmtp/Yandex) with ESMTP id TrHdMJEbDA-0DoS6Kl2; Thu, 01 Feb 2018 19:00:13 +0300 Received: by smtp3o.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id IQBTIJTeEr-0Cd4jhZQ; Thu, 01 Feb 2018 19:00:12 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (Client certificate not present) From: Github ODP bot To: lng-odp@lists.linaro.org Date: Thu, 1 Feb 2018 19:00:09 +0300 Message-Id: <1517500809-452-4-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1517500809-452-1-git-send-email-odpbot@yandex.ru> References: <1517500809-452-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 446 Subject: [lng-odp] [PATCH API-NEXT v1 3/3] linux-gen: shm: use global init max memory X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" From: Petri Savolainen Use global init parameter to allow application to use more than 512 MB of shared memory. Signed-off-by: Petri Savolainen --- /** Email created from pull request 446 (psavol:next-global-init-shm-size-2) ** https://github.com/Linaro/odp/pull/446 ** Patch: https://github.com/Linaro/odp/pull/446.patch ** Base sha: 5718327018debbb02aacb464493504c95fbe57a3 ** Merge commit sha: 5beffee2f03442764ec79a301dd6608c8e82c8b4 **/ platform/linux-generic/_ishm.c | 16 ++++++++++++---- platform/linux-generic/include/odp_internal.h | 4 +++- platform/linux-generic/odp_init.c | 2 +- platform/linux-generic/odp_shared_memory.c | 3 ++- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/platform/linux-generic/_ishm.c b/platform/linux-generic/_ishm.c index 81d77edc0..ab112acea 100644 --- a/platform/linux-generic/_ishm.c +++ b/platform/linux-generic/_ishm.c @@ -258,7 +258,7 @@ static void *alloc_fragment(uintptr_t size, int block_index, intptr_t align, ishm_fragment_t *rem_fragmnt; uintptr_t border;/* possible start of new fragment (next alignement) */ intptr_t left; /* room remaining after, if the segment is allocated */ - uintptr_t remainder = ODP_CONFIG_ISHM_VA_PREALLOC_SZ; + uintptr_t remainder = odp_global_data.shm_max_memory; /* * search for the best bit, i.e. search for the unallocated fragment @@ -1436,7 +1436,7 @@ int _odp_ishm_cleanup_files(const char *dirpath) return 0; } -int _odp_ishm_init_global(void) +int _odp_ishm_init_global(const odp_init_t *init) { void *addr; void *spce_addr; @@ -1444,7 +1444,15 @@ int _odp_ishm_init_global(void) uid_t uid; char *hp_dir = odp_global_data.hugepage_info.default_huge_page_dir; uint64_t align; + uint64_t max_memory = ODP_CONFIG_ISHM_VA_PREALLOC_SZ; + uint64_t internal = ODP_CONFIG_ISHM_VA_PREALLOC_SZ / 8; + /* user requested memory size + some extra for internal use */ + if (init && init->shm.max_memory) + max_memory = init->shm.max_memory + internal; + + odp_global_data.shm_max_memory = max_memory; + odp_global_data.shm_max_size = max_memory - internal; odp_global_data.main_pid = getpid(); odp_global_data.shm_dir = getenv("ODP_SHM_DIR"); if (odp_global_data.shm_dir) { @@ -1507,7 +1515,7 @@ int _odp_ishm_init_global(void) *reserve the address space for _ODP_ISHM_SINGLE_VA reserved blocks, * only address space! */ - spce_addr = _odp_ishmphy_book_va(ODP_CONFIG_ISHM_VA_PREALLOC_SZ, align); + spce_addr = _odp_ishmphy_book_va(max_memory, align); if (!spce_addr) { ODP_ERR("unable to reserve virtual space\n."); goto init_glob_err3; @@ -1516,7 +1524,7 @@ int _odp_ishm_init_global(void) /* use the first fragment descriptor to describe to whole VA space: */ ishm_ftbl->fragment[0].block_index = -1; ishm_ftbl->fragment[0].start = spce_addr; - ishm_ftbl->fragment[0].len = ODP_CONFIG_ISHM_VA_PREALLOC_SZ; + ishm_ftbl->fragment[0].len = max_memory; ishm_ftbl->fragment[0].prev = NULL; ishm_ftbl->fragment[0].next = NULL; ishm_ftbl->used_fragmnts = &ishm_ftbl->fragment[0]; diff --git a/platform/linux-generic/include/odp_internal.h b/platform/linux-generic/include/odp_internal.h index a21e93c8b..444e1163b 100644 --- a/platform/linux-generic/include/odp_internal.h +++ b/platform/linux-generic/include/odp_internal.h @@ -44,6 +44,8 @@ typedef struct { struct odp_global_data_s { char *shm_dir; /*< directory for odp mmaped files */ int shm_dir_from_env; /*< overload default with env */ + uint64_t shm_max_memory; + uint64_t shm_max_size; pid_t main_pid; char uid[UID_MAXLEN]; odp_log_func_t log_fn; @@ -129,7 +131,7 @@ int _odp_int_name_tbl_term_global(void); int _odp_fdserver_init_global(void); int _odp_fdserver_term_global(void); -int _odp_ishm_init_global(void); +int _odp_ishm_init_global(const odp_init_t *init); int _odp_ishm_init_local(void); int _odp_ishm_term_global(void); int _odp_ishm_term_local(void); diff --git a/platform/linux-generic/odp_init.c b/platform/linux-generic/odp_init.c index be75a530b..a2d9d52ff 100644 --- a/platform/linux-generic/odp_init.c +++ b/platform/linux-generic/odp_init.c @@ -66,7 +66,7 @@ int odp_init_global(odp_instance_t *instance, } stage = SYSINFO_INIT; - if (_odp_ishm_init_global()) { + if (_odp_ishm_init_global(params)) { ODP_ERR("ODP ishm init failed.\n"); goto init_failed; } diff --git a/platform/linux-generic/odp_shared_memory.c b/platform/linux-generic/odp_shared_memory.c index c322c7eb0..c9b04dfdb 100644 --- a/platform/linux-generic/odp_shared_memory.c +++ b/platform/linux-generic/odp_shared_memory.c @@ -12,6 +12,7 @@ #include #include #include <_ishm_internal.h> +#include #include ODP_STATIC_ASSERT(ODP_CONFIG_SHM_BLOCKS >= ODP_CONFIG_POOLS, @@ -47,7 +48,7 @@ int odp_shm_capability(odp_shm_capability_t *capa) memset(capa, 0, sizeof(odp_shm_capability_t)); capa->max_blocks = ODP_CONFIG_SHM_BLOCKS; - capa->max_size = 0; + capa->max_size = odp_global_data.shm_max_size; capa->max_align = 0; return 0;