From patchwork Mon Jul 6 08:51:33 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhigang Lu X-Patchwork-Id: 6111 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id BBEB32E7B; Mon, 6 Jul 2015 10:53:21 +0200 (CEST) Received: from emea01-am1-obe.outbound.protection.outlook.com (mail-am1on0064.outbound.protection.outlook.com [157.56.112.64]) by dpdk.org (Postfix) with ESMTP id 796222A58 for ; Mon, 6 Jul 2015 10:53:20 +0200 (CEST) Received: from HE1PR02CA0046.eurprd02.prod.outlook.com (10.163.170.14) by DB5PR02MB0806.eurprd02.prod.outlook.com (10.161.243.152) with Microsoft SMTP Server (TLS) id 15.1.207.19; Mon, 6 Jul 2015 08:53:20 +0000 Received: from DB3FFO11FD020.protection.gbl (2a01:111:f400:7e04::103) by HE1PR02CA0046.outlook.office365.com (2a01:111:e400:5350::14) with Microsoft SMTP Server (TLS) id 15.1.207.19 via Frontend Transport; Mon, 6 Jul 2015 08:53:19 +0000 Authentication-Results: spf=fail (sender IP is 124.207.145.166) smtp.mailfrom=ezchip.com; ezchip.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of ezchip.com does not designate 124.207.145.166 as permitted sender) receiver=protection.outlook.com; client-ip=124.207.145.166; helo=bjgfarm-1.internal.tilera.com; Received: from bjgfarm-1.internal.tilera.com (124.207.145.166) by DB3FFO11FD020.mail.protection.outlook.com (10.47.217.51) with Microsoft SMTP Server (TLS) id 15.1.201.10 via Frontend Transport; Mon, 6 Jul 2015 08:53:17 +0000 Received: (from zlu@localhost) by bjgfarm-1.internal.tilera.com (8.14.4/8.14.4/Submit) id t668rEPM024555; Mon, 6 Jul 2015 16:53:14 +0800 From: Zhigang Lu To: Date: Mon, 6 Jul 2015 16:51:33 +0800 Message-ID: <1436172698-21749-9-git-send-email-zlu@ezchip.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: <1436172698-21749-1-git-send-email-zlu@ezchip.com> References: <1436172698-21749-1-git-send-email-zlu@ezchip.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; DB3FFO11FD020; 1:qA4wa9FJIN9/0W+CxkZbsOd1S1ILB4LymqU23EAGjw6CQlfJhBHj/xlZq+osV2tP8VUDmJneyrwrybvHkAfAnn6CN9SzkuZhCv3McOrKWLgscHso5Hutla9udZqvBkHp2V03ljRiuO+q6ByMRAffANc5/bgA1SFgshayP03EuZFiT6dH5PEsYvcJZ1Z2ufkU5KTN4MvlN9ZH4t+FY5qgW2a+aEixaKG7GPbI27TZ189efooI02gvd2St1Oof5A/9IPhL0diRxwjPqvsFWr3lK/aUpXr8JMPP1c5//R3VH7vr8IZvVpB8M9e/iBWoefTlDHj1gLStCer2DKiARWYJ1Q== X-Forefront-Antispam-Report: CIP:124.207.145.166; CTRY:CN; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(2980300002)(339900001)(189002)(199003)(50226001)(229853001)(77156002)(46102003)(47776003)(105606002)(50466002)(62966003)(5001960100002)(85426001)(104016003)(110136002)(76176999)(33646002)(19580395003)(19580405001)(92566002)(107886002)(106466001)(36756003)(87936001)(2950100001)(50986999)(2351001)(86362001)(450100001)(42186005)(48376002)(189998001)(575784001)(6806004)(4001430100001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB5PR02MB0806; H:bjgfarm-1.internal.tilera.com; FPR:; SPF:Fail; MLV:sfv; MX:1; A:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; DB5PR02MB0806; 2:LqLX6jNMxXv42CyOZdzNGEX/qrQ5cBE4g4UhBnWIljUa47FHkJO5ymjGwfLI/R3E; 3:Ot6qFbmq/uv/l8yFFq339DQoCMF1NUIe2RNfElfP9WC7ciBztDfKbD/bB+6J0M9lN6pvezQfmYCQwFXO6PsrFF7pbt0dnov3Vw/3qmBNUeu2Q4XEyahaenF8/vI25zoNGqqZfl2/wRwvtXmbPLMC5M4l/jyYl6Cipm3+y2k+Zf/u+p5ZRb/Yo21EO998O89gK01+kiZ+8VXeBv+csKHTiq4xvo1jDW9lIosVgijCgxF9GukcjD/Ffavk4I1lX+El; 25:zzSeBiq8ZSSDkiVnoC/0t9Pd89F+hZzNNDI89bUwpmvPutr6UPXOqN7gt4tb05goZs4k4HleQFbig2gpxeR0+BhPsH7d+FflPpTy62Unm7l2N+I2HK2czfEZ6MWhEjPkbCa1cIO3+LhUkwTxfl3KDNCKEwOCH6jxCCy8iPE7zvI50ttxU0OyhJN/iJP8cppr47ZeRi1FqGINsYEvFWDS1sQXLvtlxSNrZb4IHWRETv2otfrfr5EGg2SvEG7z/8SSbUnAyGgxYKJXqnmrnLiTkw==; 20:lo0rjLz1NZVU6PyFm2DZl0kYqpGYU57K/eOVisIL6GeMnACjdYVrbVgndGP7WxycVpr8edGeTGyD+uqHOCkrMVn1pAL8A7J9MY3qnt3SUKBsjvYcgU/1ygtcQflLwnnLAx4qOsleq51U1riu3cbBbuNNFABJUxg15S3nmSdQ6/g= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB5PR02MB0806; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:DB5PR02MB0806; BCL:0; PCL:0; RULEID:; SRVR:DB5PR02MB0806; X-Microsoft-Exchange-Diagnostics: 1; DB5PR02MB0806; 4:GXoWj/7x9xeMytndCVN2fj7IoLfCA8Eyo2/bSxIZtNUdiOwKiCImiCCLN0nA+NXzSSC07EeCLTbESDbBU1V5bLLww45BNwWxIfpAR8nlKb3TU1YvJQUDi/zOUNXS+NHvMNWwBXbqopcRvAxgERwkGaM/7xCPLso2UDbo0tGtzUp+5EJyn6cPkm72C7glZsduUzJQWz1M0keWJ350LTpeg5fF8cf/OrqDwFY32ekP2d58YofTjT8ITOsoKdtE39oxKImoTV8l94AxkLZGr0X0NM7pQgmXW7TVfQfMdo7RlrQ= X-Forefront-PRVS: 06290ECA9D X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB5PR02MB0806; 23:cjoLeZFOicacELgwIgBrCxGQ9dB7RNFkBolrAZkBA?= =?us-ascii?Q?0RoJAClHMPi/qb+oSk/XQsNEZ8jU5DM6Mz5S2NUR1caI9UTbS18SSc5073B1?= =?us-ascii?Q?fm4iX2r860geJ9ohqdU51Srclut3ll60AKig+HzV3ssqmZ3XuHiIJxt4/B+b?= =?us-ascii?Q?fRTqRFjMkcP+y86GJ7G+FH89iGcWIoKshq38hMPgEDR+FBUD1ewdjSq1R6hj?= =?us-ascii?Q?STVp5KgF09DZo9kvFIwDpwzPOFjqdvIsJvZn3EkursjFesesr1mz5o67kGeH?= =?us-ascii?Q?EFq6Qf5idKFW0g+c7Oux6AqwZk/auqiRqAcyg1Tn399tXJ1k9VmBd7bZ8Mfb?= =?us-ascii?Q?/tvA8XRTF7irLUcSa5eKh0Yipwmdk/7GEeJa5C2YIh4rngDqJuwhnZeNG7Z+?= =?us-ascii?Q?GltpH1kJjNQ61SGbQBmK/uOik8D02og/w6thIQVt7Qw1qYoejCq+Wt8+Uc8h?= =?us-ascii?Q?JtQsoJYZbMKYYVaU6oTSLvFGrH4HBDv8lw/o4CVgLUj59bVjMBc6ZuQrcZ1V?= =?us-ascii?Q?x4fsbmEn0ojqAYrO92klXM51x3WsHhJ8ySdZAGi4EzRYWnXEkCI6eWF9CwQ9?= =?us-ascii?Q?O60EQFLV5czAzYUEKvhxRiw5NAulOsWpbdoGOddrEe2dKvh2QRG/fhWUdOTL?= =?us-ascii?Q?zY+yiRuDTMO/pl6BslYbgti5ZEwSz0jlx+EG+R/jo/Xk0w5Hdp02kjLbReRa?= =?us-ascii?Q?MhBBw9SGXOg+x0W1PM0xDjxLHW655xgCHf0UKmXlUj1ZcPjX9F/B4O39SlDs?= =?us-ascii?Q?AhcIOwhqP38Z0djznEJ2ey597p4yIAv35scM2uS2lkGpHOT6pUE4EFhAkLUl?= =?us-ascii?Q?HMvkrzeK1292DCSIk7plDyePie0zRamlpLAA4NX92k9oPsO+56nHB0yqagMC?= =?us-ascii?Q?q4BE2osYK0b3jPK4FTCij++rbfIGkM6iLsp5p9C94PKoAf1JlkpkCDxEYe4Z?= =?us-ascii?Q?6JO44Gaxg/m7ZIBFVSkDZRVdFxnKKRECCj6oEA5vQ5d8xGDliUdsr7TJfsWT?= =?us-ascii?Q?jU=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB5PR02MB0806; 5:fzMFt4m588bCPDMWRFbRJDQ+fnGek2S/goB+sn73v3ogmcv7dQuFW7TIvOcjaltUsP8L75V0gtNfs8LOOK5fgSrwvnZTP63MwB1TW+jilwQqi2i/G2oiWLnP16jxHVGuIviow4F2mi8Kow8tbtHAzw==; 24:6TEpewsJtKQfY8Ga6M48yx9tpkOgAqbT1I67arLCW363WDFz/JOtCfzxNqxSm/Ymngu0av5ww+xZsdrRr7n4I6IOoe5WfIgpM7eXVun/Xgw=; 20:Q7Rq5yD+4CVCt8BMBO6whqODS+WYo6oXUidwZAgVb152usskJqrmJcql9oZfVv9W8jSymZYW9PtM5BTh6FzFsg== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jul 2015 08:53:17.6930 (UTC) X-MS-Exchange-CrossTenant-Id: 0fc16e0a-3cd3-4092-8b2f-0a42cff122c3 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=0fc16e0a-3cd3-4092-8b2f-0a42cff122c3; Ip=[124.207.145.166]; Helo=[bjgfarm-1.internal.tilera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR02MB0806 Subject: [dpdk-dev] [PATCH v3 08/12] mempool: allow config override on element alignment 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On TILE-Gx and TILE-Mx platforms, the buffers fed into the hardware buffer manager require a 128-byte alignment. With this change, we allow configuration based override of the element alignment, and default to RTE_CACHE_LINE_SIZE if left unspecified. Change-Id: I9cd789d92b0bc9c8f44a633de59bb04d45d927a7 Signed-off-by: Zhigang Lu --- lib/librte_mempool/rte_mempool.c | 16 +++++++++------- lib/librte_mempool/rte_mempool.h | 6 ++++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c index 02699a1..8e185c5 100644 --- a/lib/librte_mempool/rte_mempool.c +++ b/lib/librte_mempool/rte_mempool.c @@ -120,10 +120,10 @@ static unsigned optimize_object_size(unsigned obj_size) nrank = 1; /* process new object size */ - new_obj_size = (obj_size + RTE_CACHE_LINE_MASK) / RTE_CACHE_LINE_SIZE; + new_obj_size = (obj_size + RTE_MEMPOOL_ALIGN_MASK) / RTE_MEMPOOL_ALIGN; while (get_gcd(new_obj_size, nrank * nchan) != 1) new_obj_size++; - return new_obj_size * RTE_CACHE_LINE_SIZE; + return new_obj_size * RTE_MEMPOOL_ALIGN; } static void @@ -267,7 +267,7 @@ rte_mempool_calc_obj_size(uint32_t elt_size, uint32_t flags, #endif if ((flags & MEMPOOL_F_NO_CACHE_ALIGN) == 0) sz->header_size = RTE_ALIGN_CEIL(sz->header_size, - RTE_CACHE_LINE_SIZE); + RTE_MEMPOOL_ALIGN); /* trailer contains the cookie in debug mode */ sz->trailer_size = 0; @@ -281,9 +281,9 @@ rte_mempool_calc_obj_size(uint32_t elt_size, uint32_t flags, if ((flags & MEMPOOL_F_NO_CACHE_ALIGN) == 0) { sz->total_size = sz->header_size + sz->elt_size + sz->trailer_size; - sz->trailer_size += ((RTE_CACHE_LINE_SIZE - - (sz->total_size & RTE_CACHE_LINE_MASK)) & - RTE_CACHE_LINE_MASK); + sz->trailer_size += ((RTE_MEMPOOL_ALIGN - + (sz->total_size & RTE_MEMPOOL_ALIGN_MASK)) & + RTE_MEMPOOL_ALIGN_MASK); } /* @@ -498,7 +498,7 @@ rte_mempool_xmem_create(const char *name, unsigned n, unsigned elt_size, * cache-aligned */ private_data_size = (private_data_size + - RTE_CACHE_LINE_MASK) & (~RTE_CACHE_LINE_MASK); + RTE_MEMPOOL_ALIGN_MASK) & (~RTE_MEMPOOL_ALIGN_MASK); if (! rte_eal_has_hugepages()) { /* @@ -525,6 +525,7 @@ rte_mempool_xmem_create(const char *name, unsigned n, unsigned elt_size, * enough to hold mempool header and metadata plus mempool objects. */ mempool_size = MEMPOOL_HEADER_SIZE(mp, pg_num) + private_data_size; + mempool_size = RTE_ALIGN_CEIL(mempool_size, RTE_MEMPOOL_ALIGN); if (vaddr == NULL) mempool_size += (size_t)objsz.total_size * n; @@ -580,6 +581,7 @@ rte_mempool_xmem_create(const char *name, unsigned n, unsigned elt_size, /* calculate address of the first element for continuous mempool. */ obj = (char *)mp + MEMPOOL_HEADER_SIZE(mp, pg_num) + private_data_size; + obj = RTE_PTR_ALIGN_CEIL(obj, RTE_MEMPOOL_ALIGN); /* populate address translation fields. */ mp->pg_num = pg_num; diff --git a/lib/librte_mempool/rte_mempool.h b/lib/librte_mempool/rte_mempool.h index 6d4ce9a..ee67ce7 100644 --- a/lib/librte_mempool/rte_mempool.h +++ b/lib/librte_mempool/rte_mempool.h @@ -142,6 +142,12 @@ struct rte_mempool_objsz { /** Mempool over one chunk of physically continuous memory */ #define MEMPOOL_PG_NUM_DEFAULT 1 +#ifndef RTE_MEMPOOL_ALIGN +#define RTE_MEMPOOL_ALIGN RTE_CACHE_LINE_SIZE +#endif + +#define RTE_MEMPOOL_ALIGN_MASK (RTE_MEMPOOL_ALIGN - 1) + /** * Mempool object header structure *