From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0059.outbound.protection.outlook.com [104.47.36.59]) by dpdk.org (Postfix) with ESMTP id 1612B2904 for ; Thu, 29 Jun 2017 09:03:32 +0200 (CEST) Received: from BN6PR03CA0076.namprd03.prod.outlook.com (10.164.122.142) by DM5PR03MB3163.namprd03.prod.outlook.com (10.174.190.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Thu, 29 Jun 2017 07:03:31 +0000 Received: from BN1BFFO11OLC001.protection.gbl (2a01:111:f400:7c10::1:174) by BN6PR03CA0076.outlook.office365.com (2603:10b6:405:6f::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11 via Frontend Transport; Thu, 29 Jun 2017 07:03:31 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; samsung.com; dkim=none (message not signed) header.d=none;samsung.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1BFFO11OLC001.mail.protection.outlook.com (10.58.145.12) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1199.9 via Frontend Transport; Thu, 29 Jun 2017 07:03:30 +0000 Received: from [127.0.0.1] (B10814-12.ap.freescale.net [10.232.133.65]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v5T73JTD010470; Thu, 29 Jun 2017 00:03:26 -0700 To: Ilya Maximets , , David Marchand , Sergio Gonzalez Monroy , Thomas Monjalon References: <1498559080-27331-1-git-send-email-i.maximets@samsung.com> <1498715960-2668-1-git-send-email-i.maximets@samsung.com> <1498715960-2668-2-git-send-email-i.maximets@samsung.com> CC: Heetae Ahn , Yuanhan Liu , Jianfeng Tan , Neil Horman , Yulong Pei , Bruce Richardson , Jerin Jacob From: Hemant Agrawal Message-ID: <34f32a56-dc3c-a779-aa5c-5cf4fe4146ae@nxp.com> Date: Thu, 29 Jun 2017 12:33:18 +0530 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <1498715960-2668-2-git-send-email-i.maximets@samsung.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-EOPAttributedMessage: 0 X-Matching-Connectors: 131431934112945952; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39840400002)(39860400002)(39850400002)(39380400002)(39450400003)(39410400002)(39400400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(24454002)(377454003)(9170700003)(23746002)(498600001)(33646002)(120886001)(106466001)(77096006)(230700001)(76176999)(356003)(50986999)(54356999)(8676002)(81166006)(8936002)(64126003)(7416002)(53936002)(36756003)(50466002)(83506001)(86362001)(53546010)(38730400002)(6246003)(31686004)(5660300001)(105606002)(7246003)(7126002)(47776003)(65826007)(65956001)(229853002)(65806001)(2906002)(85426001)(4001350100001)(104016004)(189998001)(305945005)(4326008)(6666003)(54906002)(93886004)(31696002)(2950100002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR03MB3163; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11OLC001; 1:Wyl+FfTTw/CZS7AS6VrqLqw+UgycZiiurwFyC8QbwAk/UwHmN0n8AX4qlmsj6ov87ZXalbcsomW2mGsFTZj5JCDJPgeGUIw8NaSbZ/ENb4tylfKsLQTvexalxNS3x9+7FjvBBDueko7QKpaWAbVtoKenuXd+w1MLqC0UCZ3KP6SAWXBr4zXuPr2+bOI9CgkRny8pxm3SuIt3bzAsUgGmqK1a9xBl57DkZPQthv8UzHra53HOXvvgROf74LF9Xql6ITFrMyhYtM3ESiTJk5aKpAKMAgk3F54NruRbXs5Hoee6GIjj6riQ/FaqMRnqkbU5jZ5tZxL4E4NFeXhpTqlkp7zUPiTEy5o86Yau4nc74riNw5hQxwAu7MFsXTGUa0a6THuhzdBq77Dw1V6nmcRIxgB4FUfYG4PCvSdF4ijehF43ZiUgz/XBPTRFlbYx4rrmH12xffIbMYYAQbWZViISFFFJmEGimXYg8hlMF9dM4yd8kHYIm9VQU2Ssdsh7jXryamoi6YYxrOFfPeYdrsklz08vHblFRRQH8u7SnkxmUDLIjcDdTGm7NnZFV942sGLYVmXvfYbJpsiq/RubdcS+9v3gBp5Cp2VgopBDahvI2HJwDRmukN9iFZ0lTU1YWJC+tEenosgegL/3xeLyQIH2sJz5yQeF2JI8c2nZVTMEOcugSzZ2743rub7OfTI0HBsD+sgJ4q0r6FNogC9douTGRCHeOnvAFg3tzQm/WgllZA1q2OmNXNJ0Fcyb6OZ9PrKbXtGjj+YBDWxSMF2EDLXVW8kh9R0Mywlsy0YV+anzzZb/PbGolRF1i36DP1iFUzPr3pOTQXHOhAwThXLN3o4OaMIGYXAIcd9fBwNPVmVxkiuUI+OEeDVX3hh02w5hAxPqC4JOF5IMdo1j8D+7dbEf+CQFoM5OD5Z6d/nwAX1GtrFv7HIUJINJCkoPCk08fAvs X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 381095e7-ef98-425d-75c1-08d4bebcf366 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM5PR03MB3163; X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3163; 3:iI1PUGjjrDu54dzaJ1/RCWTFTACcOiis2BqZ+RqqgMheerJ6fMagPEdPlafr9WNtq35876vqB/5VXIviXUKarYLSLQevOq3/V3tVBkTlOZD1OrfEEFanm0Mac1v40NULAs2L59Z3YTLw8zFC1NJmObWXJBMUb82WNYF2h56k+2IrX36irdCLqdEqp4YPSCE+gXva0LZhwtVc9q8AO95skhHldAfWC22ODvovVAKxRbXlnaBRt7PdA7fc0ymvZEkcMAs0VeosIoIETZFPsx6C//pKlnlgpHpUTQGZ1059MRGWvVa0kpzDl5tHWjqYu6YFkWqUopn83vVscer4Oaqeg4Yjt9sfblm4ZEDn0SYyrWW9kcNUrAOL2lj+b+Sjq8Yf4IlqCOajZ8Cr/fwqwgzrzrLE8nbnLO264UQyAAa6WiUOwCvNsbTcPJeCGgbAK9IYMLRO2jjNq4QWZrt43nbJq5ZsnUQV8v2A8MdxjBgWjAUx8onqGHt9eNwJwZ7DFxJNVAXFCuHNDT2zCZTs0Hy57EpxpuSAz59GCHFkU360HWP7sfrbNWkkDXKFvrwQhc+k3Sn7vPBGVbPgyNe3H8qwOP2/NAtNh9D67bEslBnRJKeCdGI7ssPFRRWP0iDuk/FEFSpiLcAYH0zaz/gfELJuRvO/7Z1UTJW8zZqsQHAZieFUdoHZz0o9c0GP2Ei/Tv3vysqeqZL23fSNUDgEjZ5bcB4TMBJu73F/gwmmjVp2O7hZLptwMq3Q3CosQ4noL5BVnISZVgDUpwsp50a3zXgbePPOnRosQt2JgEYrOBUMPKjDeTiSWxs/5/lIwlFiXn5nRdoaEJseILJXH7FfMLLcQw== X-MS-TrafficTypeDiagnostic: DM5PR03MB3163: X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3163; 25:MVS8jC1t5h0Yo5xZhGpWoea44tN1w5bkQaPnJ/k3x3osOCgh+WEzDSBRGyZAkU9qy5wglWkjdbVAaUCAeBGIX295wIFxRtRUdIVV8lEAlTRNIKiE4u5Y/g8NMjIaVo3f9krdweXvTOMrnI0zY/Kzugeh/WbeUYoEZG2VMOnkLggGteRlz4N9m/l5mASYYpplX4iQxJYtD3v2TLI/6JerobERYVXpGyR/H6A1Ao1Xsltc7oWbjJd0SjrlzRpssq/lSoWdpie7kE+LGcDUgfoWAJM8hdHvzgDWm8cUbYVJzxmS+S0iE9CfA8yKPxFbn3CCmNWfv/Lt5uaFW95V/ZJ1WpHSqXkCj+/0eHRrnJnS213k5smxEgF7bxuf1gTODzQOJYOULS6PCBWPexYLA4V5djbG9CvsAsCzPp9l40ZFxrSg5wSE7ZhQeTRfRQD97ealKskxq4gFGXeq2MQA4LJ/oPI2yASncrHzSh9nDMUMBmjgvKRLlnpJzHxTowVKAPm6cx44ya0vGqNwaaUH6GhIpAZDK38LmzgG/+0Q7sqoVn7dt72RceiBJU3P9rkaHADuJ5OoWBaKmYj42gRdH/nBP0+/9eGDMT5cyp8zMGHwdLvU+yPJojPHlogCLkgExD8MLNbP3bX6Fj6rPBwbnKACPAqbserRgEwmvG9h/DQ/2Eno6ZvcVTbxxtlBXEFypse8O+uFv2RUCPiu5bvXzoX+MiPKb+pzq1LyF19GkqRPcVJEy4/ITWP0n0jx552zMKR2BCGuaIK1k2aj3jyoFfn7AhHP85WRE+z8ntpYss7he4iTOeVJesh7/K2iv0uG5jPP1EhOJqVjV6SEdQeoO/80E7UXpc/u4dHPCvzwLJpSaB7KNcwnQpUxv4ha53k75q7EiXwTp9sci/9gksgr1LM3JKymZcsqYqvQMNFeaQqnGCA= X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3163; 31:zWFjru5gO9RKsoLMfZ5p7V+gjlH4ftWa0XwCMUuQgvjybU31NDLPZJ2hRz0QST4yg9yurpHoz47A8049DpX8FWq3bQ5GjGNqYd4QrqWJFXiDHdCPjRy2ButYBNaKPoXqEJl7JmPPLutphpNtpNqlZDu61XmKWFol9XA1avPuVpwXZYIQ7b7v8fD6jnnzxpU2h/n5w+of5OB/ctBKSIEOYP3bjx7bsVIxUFt7d/WI0ecHil671aZcqJahvj6PnqVJnG+Awkladr49zubq1QWLjTXw+FQiXiFv2UuzY+n/SNEKwBDe0hWhgfRMzmgZw2NVyNErPwOseCoYUeZzqtHyN6JUgi9HkLjyIqYdiUcAi/R/4IEvG5b7I6IPWc0N24yWRKJEiTxmzK1/0va77YJoaphaTD1X60sH+Wp2/gIOXpqDqeCEgcyY00dm1/wngKNnRYN52nblMwBIhox+Y+igXNlplPSy/5qz/h91XhgxIaIaWsUVFp6wSKNviN3wktoNFy0B25U8/vftA8FzC9ZdT1S5JgDeg8Fg+rn/ND0ZjsiAzLNrhGfoIY4OlqiywizaaVkQ+19t3SSjrUHhXeKof3xKwKEkb788ab585WDvQ5bvdCj6tOEV2J48gh8TdXwvvkjU2UBm09yWK4Zhfuel+B7rzYG+E/xKPr1m7WNWiRoh/xgsEIw4wiExyWU2+0F//UIXvIlpOxz6f1c2cJDoUQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(133145235818549)(236129657087228)(185117386973197)(148574349560750)(7411616537696)(228905959029699)(247924648384137); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(5005006)(13016025)(13018025)(8121501046)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(6055026)(6096035)(20161123559100)(20161123565025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123561025)(20161123556025)(20161123563025)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR03MB3163; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR03MB3163; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; DM5PR03MB3163; 4:ImSNSJ6iJuqmW2szLpdLKK+yN5lA3TYKhbAxDk?= =?Windows-1252?Q?GtEVvuBGLqNRbx3b+pU5QrebgsFG8tBXZlvWTVuJXEP5ILD6ASvOaxBA?= =?Windows-1252?Q?9Oi5+22+OtIYUvfRSaRV9NcfN4rf66lHBcU6P/Ds1bT5ZbIkL9oJQRT+?= =?Windows-1252?Q?SpgonQIyMEoe6zX6NR1yxGtyV7rhOjO9+ejNuKcX5ip8wT+vYJcGP14M?= =?Windows-1252?Q?/8LfUbWjfVCvy4r32aoh/8vjFLjoYWjLfRDtVFJdPjYf+rleXmYIyC5j?= =?Windows-1252?Q?t9M2v707DVZs2zCGhCxSVwXHiDhdGRzKw8996T56bWwzB93mun56xJXm?= =?Windows-1252?Q?3UwxgLIBNg5kZjU3Xg40n1A7HuZ+B6a70ysPKAAAMfe7wLuL/UbZS8IA?= =?Windows-1252?Q?A4n8+IRjq3LWHSKYkAJvhC51gLMHcsIhOcWt5q2EaW/6um4kYXpSN3Ps?= =?Windows-1252?Q?jORGYq/161Ju1tNUXuMuRFPvx9kq54Q53pPCFldzL5IK9tB8kHVk83kc?= =?Windows-1252?Q?xesUsUvxXCjxK1A+wIKleeCF3zhXx7LKwID+enuDWq3uQ3IYy9t6cOvE?= =?Windows-1252?Q?njtKjo8Ru2X0ViM12nuEiaEaEcZbv7R9taY5hYw6+rrzJA6SDanv+j5O?= =?Windows-1252?Q?W0w+E2MWwjNibmeTQE38xC7csQIrN874TadxP2SDkPy3VSckc9WXl1gq?= =?Windows-1252?Q?KEdQbpdAs1rov1emLCWV2cTrTuuh0UaIg/uCmZ52mDEvkUcmTKwI2Slv?= =?Windows-1252?Q?1/4TV5aOGofPx+5iVv7XIo6sPDS2rHn7pD5rwwPJk8T/e9M+RB6QzVrJ?= =?Windows-1252?Q?HtTY0MUv3sT1YeXFoJXkl5dH0zmYsI86yxS1CTZf2Nwy7HGPtC0UC3x9?= =?Windows-1252?Q?a1VXSwwH4gY2H93ocrmFslmEN8n6WMhTMMdz7DvnTb/8Fg98eWv9C/zt?= =?Windows-1252?Q?NLkWBDeL9LK1sxYk8teKsLDCfwJVOawwOTcJ1/dQFiwCmXgDiM3iHVo8?= =?Windows-1252?Q?o0SMSTgUySq+anlro3w0vS/SHh60CzpTXTnPpO1oAreGCCaZJOtpVYzA?= =?Windows-1252?Q?Fq/3KgX+BfrB/TQ7zSm8L9Biyz0Fec1MbY70gD5Vr0N8C6IZDuqY4epn?= =?Windows-1252?Q?gtwiayJXv9UN8qmAPvddlvp3+hG4XauDlZwmu0Ua7nf5yi4N+qP63sdH?= =?Windows-1252?Q?qVGhZ0IjuwxxPdYSMVqTM4gge9/H690wU382eYzBCph7pAkBlsE49hx4?= =?Windows-1252?Q?uBYdqfpQBSbFPgDJSGFHEMmDQ4GMkrZSLklRXXOWePM7Tkl9KhRR3JoM?= =?Windows-1252?Q?f414u33KuVzajW0zabuQWyTgpqSqczcp4QDG4RzMMhtmsAtFOl4SnRjx?= =?Windows-1252?Q?UZLGIN8d3OPgJtlgGu1w0WyZIwnOCFQv8XAHJScVpek9RUAG8bfmRml9?= =?Windows-1252?Q?JiAVCbNAtfgHFAHUKhqRhnK5+tcyynBequbZ8dfsWXtImTS9bUwBI9v6?= =?Windows-1252?Q?2ULSW5/VV86w+5BAe5d0Dy78H2eiQpvbR36CPoUto1fqgi2+onTg21eU?= =?Windows-1252?Q?jO01K3vNiZHlQfqIkWrGK+j3ZtypFvVl+H?= X-Forefront-PRVS: 0353563E2B X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; DM5PR03MB3163; 23:CxnjoCp1BYrGcLNnMVzf2DT9KtmqJEP57Ml4R?= =?Windows-1252?Q?D9Kv645yQPmtYB+JmhBJN+2GQf2z0u2CqPSKayMbc9lGtqD3aJw622L4?= =?Windows-1252?Q?7XZ4qu3bJxU+/R5OUlVzIhBosXiWzILojNQFfU5N8kXQHwmh0sPJ3TW3?= =?Windows-1252?Q?/fGCvQQakKtyUvqkTn4/lX6WS5s8s/a2wB1ktK9n9yd42kGOn1gf0h4o?= =?Windows-1252?Q?DRObx9EMY/zldjWe1G9chwjVMNz2UZZ6CZgE5woSmzeNZGCg20nv97us?= =?Windows-1252?Q?OjjcjirPcYXbwBVtuLf/+n7cfz3sAaUP44kA/AUWWTC5VDSZ2YfmVaBr?= =?Windows-1252?Q?MpSu+D5KZCtNCKNdMCHQwDMRlc93Dsb35mqtwAQH6XNBOfVi0mZ+VVrJ?= =?Windows-1252?Q?Sj5eLK9fYk3FYPq5CjSKxsrhXNIG/D9+DzN7J2y9QCFWSoCgY+xhohcA?= =?Windows-1252?Q?yFkYUb1prkBpoFQc8HE0lNqHRTCk8zmhxj7I0xMVtS/7KxhYqxftNt+v?= =?Windows-1252?Q?ELjNfWX6okzUs5M2YyDbmk86IFKUxywyjt7aLNBELiGbuByvbT2NrDRW?= =?Windows-1252?Q?f/B2Ddm4S9mMG6DaxdwtmaaHdtC0wC34Lsd152GYjQnD6wAP21nR91Q2?= =?Windows-1252?Q?Mm10itKGZVk4W1PhQgie+CAdX8YDq3an9SOu3KHbKfNRWDo6r4zyBy1G?= =?Windows-1252?Q?dUtXMBoOAEysjwrWvp5cvXPDTLiLNIwnBjPZI2v+RT+k1iANS3cWc2j8?= =?Windows-1252?Q?xWlSKhnYdhxod47i2ojcH9yNm58NE18FnBbaKvaqEpUfydoIiywnurUr?= =?Windows-1252?Q?O7s/mebhy7XaUXNLFo1+q7FPfoe04yGgAZ7QDw8f4MCuAtadao6QRwKH?= =?Windows-1252?Q?57iZy5RXqmKdJQlSE+Lqzr1b6Mwym1YQXqgMMtKDDjUdA8r8On++9oAp?= =?Windows-1252?Q?vp3mU5WFOq3dW+aAYFRwbbHkaXR0A0ur1vZUVflypSMfX6pUbM0n3ZAs?= =?Windows-1252?Q?ZXShg/j3KxHaHYP8ffS/SLvQBX4PTTX/vYYXiKvS8nJk93UU5y3+Fnbc?= =?Windows-1252?Q?SoCyKf0zJGB0/YFxTdbUQ/E2aRIHNyYhZ2hNQ//Vx0q++hG8PzajkynG?= =?Windows-1252?Q?LBg+iVPoqsjVj/IrR9ad9cmUaaY2MYVD+kunE8I8fSsCFL6PxFUpbQXL?= =?Windows-1252?Q?PHAL9FrLkTxaTcALiv0M47G8Ec60FE6r7wjlw2emATYYmU4IALTyoaXw?= =?Windows-1252?Q?K1AG0qmiFlro5+ZA/hbwECeAEpnL3J93gu++o6yxK9dVt8pUpOPSiFmr?= =?Windows-1252?Q?/3FD3/nTksAiagtqEP0Rv8lcVnn+POtaYQ26w7kaNzmv8bbJRyzKgC07?= =?Windows-1252?Q?632XyvALcdQqUsTUqGstxM9QcJG2IdAHVS4jSu3np7w+asxFtkLhLOsF?= =?Windows-1252?Q?LN2B45qpULrx0lP16VO+AePlKuK46eh1kdnocPkXB8tpWJwnPLdk6wI4?= =?Windows-1252?Q?ZdfXsEAgEfzj55ap0F2YvY/XXCU2pz8CPvIWO4w7bSABkMOWwJN9LiBC?= =?Windows-1252?Q?vR57fZIhm3Z5fwoGcLR+aEryMDLgVcltvB6KKvSF6Iq6mxlq7vE0pf02?= =?Windows-1252?Q?dIMktW6LOXyWtqRgOPG9JXE3DT5XR6dE+LR7/Fflxgb6KmsPjBod9rWl?= =?Windows-1252?Q?1Wv+ha15g=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; DM5PR03MB3163; 6:y29WH/ePCWC4WEy7W8GWVH9Rlty2CXRsWS1Vd8?= =?Windows-1252?Q?FjnaGFjqGaIbE6n23a2/PVtDENWs+yaq9lwDmMfTdMK0k7H/auyl1JrS?= =?Windows-1252?Q?8SN7+HR5Vf8IOftMV13OkTeB4peXLX22Qrg4XbkW7ZrZS8jAF23yN7rp?= =?Windows-1252?Q?yWl8Rkr3CMkSb/07+bC7SXTWaudsHF0r5e/Mi5XBwbhW+SmMJrDso70b?= =?Windows-1252?Q?CKjT0j7WXQ7MGwCevwAu5t6i3L0iZfLy2VlrNX80z9q/WwDE7h9pQxzj?= =?Windows-1252?Q?Psef+gSWneDVc3396+Dzfg7QN5eNyNv03HEIdToAT0551FbGczSJO2V0?= =?Windows-1252?Q?t54D6I/sj1XN+83I9c3KzTl5LZpox7aZf6ZNjaXPTYd0wa4VP/EMciaO?= =?Windows-1252?Q?QD4BdZ2O05AS4Jlfp719My+lhmzt1CtLydD0ppoB8dHdcp8kjKcBqzTt?= =?Windows-1252?Q?k3+qFdYhpRY3CZ5YX01NLWVjMPG3lScfc7681fdUlRSSIgQAx3ddoktS?= =?Windows-1252?Q?ODEFglMWNw+7nqg/0x/WZC/Ysbon+VZniJggTPE88szn12BWi6utfVi4?= =?Windows-1252?Q?BeSe7zRNqP0hJGTDWCHoAt31g53/fr/1oOPwrQdpHQQGDYPI2Y9zfQMb?= =?Windows-1252?Q?r9Yl915osa61gzIhYnmCKINk5UROARqNMlpGkFEPThxsGxZ+hXTwym5F?= =?Windows-1252?Q?Enw1O4ehTGOmeTaQ/DeqG/PkFG/I6kSxr0jmD9GjEvsIIaahr0+ZSBHD?= =?Windows-1252?Q?yD2rxEW/BjNBXCf0JDvQktoJZ1PCzlUGAFh5wnc75XlaudnrbW98HJof?= =?Windows-1252?Q?+n2eiPXhxWDzR9nbdzts0qZypOnQ0su9PZjBNRQvAreFz35UwHLmEpda?= =?Windows-1252?Q?80WMj+T2u/NdgzRghxhXcKvtI/i3BXgsp6fM8sMkjqk5ufX9sn2RSmaO?= =?Windows-1252?Q?dLSv8zm0BfhrfBnk/pAe5rK/Qve1uGahf45ZYjoR7oA8k/b9MWgV4ogR?= =?Windows-1252?Q?5oOUtQq2ACD/nhj8XdUTUHkrj0YvlTs/CHYqtD6AoYqYh4uw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3163; 5:ynNq/YGFKOIpq4bts1FORrWABojEcc5qk/gl6nMO04+J378BkBZnZ+iuR+MsCrgbqmMwJDrdmeYpW47DNYWbWR4JvRNmIRBfcd2HnoJK5lsJTcrMMfZX6R+2lVtoEnkTCprCJ07b7UOO7fLDmCdTa6rgtXl2dp+J41hYHg+f0aawnFBW+PZIhXrtkf5iDV7md7IKC3qUUPQmmeVyLCBjPJTfb4hOgIWbFt0B0KdJ2gc8VT8ZjFuxS3kQ9+CWC0EQgSZmpa+W1ELHR9f4ebk2UG9XgmuwwyxO7WwYoy0dOOAt9/aj7UvLQ9Y6LRCy24myBit+EiVY0xKkBLgX1iFnfZkIqvy0dTL813m3dAr04Z/zjFkijfj7uGNxw7SdczeaENiceOcgJP21ZKPNASvfXm4tOXPJU2fSqv4RiEio3NWiBgndEdYPrnQA7V2mX7oJ8daPsX8xAHSTNR02jqQ1TWdRCgRiucwVfVboJnI01Dj2HmAOe1p+iDxCBdP3VO2LCAfY+zaDwj8F2aS5f6HlrQ==; 24:aoo8rnH4MVTyLz91wz2dxSuBbflGo03bqLUirqifPtpvGi5GmNp3gH5UsG8FRkxzrtyI7gdwZoYdxyBle8L0vgj3/oEqwxH7qoNhLsL4VBE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3163; 7:kyjZ9cOnO88ebrkkptxVCdrL7PSSTf6qgkiaiTf5UeQTX/Wu98Rh9ljIp3cGXL/9WHFIRgchENn1I3K8ZUOvqIvWQ3saokh24rjkdM7CsPF0d1EXKG/6Rw3rEG4MaU+rnBCdYQ3sTZJ/TfReA1c9CRMKdY1tQgzMcnRIG6B1X6sd+a8Lyxi/h09Ql9i9go6bezd1Wl2TeTIqZwmnOhLrQYFUisAyWlzY4yCdT7PKmwi3/J6Zaq+pnj275DJfjPLssg/NPmqS3H6GJ81Q78XiULioAqD7WOILxKD9nuUlvdzpqZVvtF2MMykLMS+CKGSZw362v77dIfnY6QDiBLZZlHS8W5D74QLamkfP7hU+aJa8p2yzQ6gvhM0PuQ8JEWFYlBQeqF3JkflA1LzzPU1kV+6G26hTpKE1yrDC4OAI20xK9SU8YkUYbFERO4qdDIJpADvqx1twQNSuVOsm2oNbI72FJZqy+EtEOzAAi2yZSEJJpfNroudTU65iimTNP9rQ2CxBW4AjnmaOGfYqdH6kuvJFztIV+o0W1a0pcM9hhuDGcriwJW2nQPL8JHVclMpvw1/bGqTme1VLL/EK0Pr/MKGaqwaAti1oBoo2JD8wABHTa3mChDsXCvKrULlz9f3sa3f0HnFovQVsSRI9tJLtW30e0PC7mJ14AtYeBsaf8ADb+QsUiw9Z3SA8c+ld01S3N2sFtkZsS+wv3MWHfVWBEDuYkFyU2LXhyh5FModU1r0kxfI77+9Y2PtF2U9i0/N0C0mMklNRqo5+6IztK7aQigroS8C3A0AhgIdnDP0E1/0= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2017 07:03:30.9513 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB3163 Subject: Re: [dpdk-dev] [PATCH v10 1/2] mem: balanced allocation of hugepages X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Jun 2017 07:03:33 -0000 On 6/29/2017 11:29 AM, Ilya Maximets wrote: > Currently EAL allocates hugepages one by one not paying attention > from which NUMA node allocation was done. > > Such behaviour leads to allocation failure if number of available > hugepages for application limited by cgroups or hugetlbfs and > memory requested not only from the first socket. > > Example: > # 90 x 1GB hugepages availavle in a system > > cgcreate -g hugetlb:/test > # Limit to 32GB of hugepages > cgset -r hugetlb.1GB.limit_in_bytes=34359738368 test > # Request 4GB from each of 2 sockets > cgexec -g hugetlb:test testpmd --socket-mem=4096,4096 ... > > EAL: SIGBUS: Cannot mmap more hugepages of size 1024 MB > EAL: 32 not 90 hugepages of size 1024 MB allocated > EAL: Not enough memory available on socket 1! > Requested: 4096MB, available: 0MB > PANIC in rte_eal_init(): > Cannot init memory > > This happens beacause all allocated pages are > on socket 0. > > Fix this issue by setting mempolicy MPOL_PREFERRED for each hugepage > to one of requested nodes using following schema: > > 1) Allocate essential hugepages: > 1.1) Allocate as many hugepages from numa N to > only fit requested memory for this numa. > 1.2) repeat 1.1 for all numa nodes. > 2) Try to map all remaining free hugepages in a round-robin > fashion. > 3) Sort pages and choose the most suitable. > > In this case all essential memory will be allocated and all remaining > pages will be fairly distributed between all requested nodes. > > New config option RTE_EAL_NUMA_AWARE_HUGEPAGES introduced and > enabled by default for linuxapp except armv7 and dpaa2. > Enabling of this option adds libnuma as a dependency for EAL. > > Fixes: 77988fc08dc5 ("mem: fix allocating all free hugepages") > > Signed-off-by: Ilya Maximets > Acked-by: Sergio Gonzalez Monroy > --- > config/common_base | 1 + > config/common_linuxapp | 1 + > config/defconfig_arm-armv7a-linuxapp-gcc | 3 + > config/defconfig_arm64-dpaa2-linuxapp-gcc | 3 + > lib/librte_eal/linuxapp/eal/Makefile | 3 + > lib/librte_eal/linuxapp/eal/eal_memory.c | 120 ++++++++++++++++++++++++++++-- > mk/rte.app.mk | 3 + > 7 files changed, 126 insertions(+), 8 deletions(-) > > diff --git a/config/common_base b/config/common_base > index f6aafd1..660588a 100644 > --- a/config/common_base > +++ b/config/common_base > @@ -103,6 +103,7 @@ CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n > CONFIG_RTE_EAL_IGB_UIO=n > CONFIG_RTE_EAL_VFIO=n > CONFIG_RTE_MALLOC_DEBUG=n > +CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=n > > # > # Recognize/ignore the AVX/AVX512 CPU flags for performance/power testing. > diff --git a/config/common_linuxapp b/config/common_linuxapp > index b3cf41b..64bef87 100644 > --- a/config/common_linuxapp > +++ b/config/common_linuxapp > @@ -35,6 +35,7 @@ > CONFIG_RTE_EXEC_ENV="linuxapp" > CONFIG_RTE_EXEC_ENV_LINUXAPP=y > > +CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y > CONFIG_RTE_EAL_IGB_UIO=y > CONFIG_RTE_EAL_VFIO=y > CONFIG_RTE_KNI_KMOD=y > diff --git a/config/defconfig_arm-armv7a-linuxapp-gcc b/config/defconfig_arm-armv7a-linuxapp-gcc > index 19607eb..e06b1d4 100644 > --- a/config/defconfig_arm-armv7a-linuxapp-gcc > +++ b/config/defconfig_arm-armv7a-linuxapp-gcc > @@ -47,6 +47,9 @@ CONFIG_RTE_ARCH_STRICT_ALIGN=y > CONFIG_RTE_TOOLCHAIN="gcc" > CONFIG_RTE_TOOLCHAIN_GCC=y > > +# NUMA is not supported on ARM > +CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=n > + > # ARM doesn't have support for vmware TSC map > CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=n > > diff --git a/config/defconfig_arm64-dpaa2-linuxapp-gcc b/config/defconfig_arm64-dpaa2-linuxapp-gcc > index 2304ab6..f78449d 100644 > --- a/config/defconfig_arm64-dpaa2-linuxapp-gcc > +++ b/config/defconfig_arm64-dpaa2-linuxapp-gcc > @@ -45,6 +45,9 @@ CONFIG_RTE_CACHE_LINE_SIZE=64 > > CONFIG_RTE_PKTMBUF_HEADROOM=256 > > +# Doesn't support NUMA > +CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=n > + > # > # Compile Support Libraries for DPAA2 > # > diff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile > index 640afd0..8651e27 100644 > --- a/lib/librte_eal/linuxapp/eal/Makefile > +++ b/lib/librte_eal/linuxapp/eal/Makefile > @@ -50,6 +50,9 @@ LDLIBS += -ldl > LDLIBS += -lpthread > LDLIBS += -lgcc_s > LDLIBS += -lrt > +ifeq ($(CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES),y) > +LDLIBS += -lnuma > +endif > > # specific to linuxapp exec-env > SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) := eal.c > diff --git a/lib/librte_eal/linuxapp/eal/eal_memory.c b/lib/librte_eal/linuxapp/eal/eal_memory.c > index e17c9cb..647d89c 100644 > --- a/lib/librte_eal/linuxapp/eal/eal_memory.c > +++ b/lib/librte_eal/linuxapp/eal/eal_memory.c > @@ -54,6 +54,10 @@ > #include > #include > #include > +#ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES > +#include > +#include > +#endif > > #include > #include > @@ -348,6 +352,14 @@ static int huge_wrap_sigsetjmp(void) > return sigsetjmp(huge_jmpenv, 1); > } > > +#ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES > +/* Callback for numa library. */ > +void numa_error(char *where) > +{ > + RTE_LOG(ERR, EAL, "%s failed: %s\n", where, strerror(errno)); > +} > +#endif > + > /* > * Mmap all hugepages of hugepage table: it first open a file in > * hugetlbfs, then mmap() hugepage_sz data in it. If orig is set, the > @@ -356,18 +368,78 @@ static int huge_wrap_sigsetjmp(void) > * map continguous physical blocks in contiguous virtual blocks. > */ > static unsigned > -map_all_hugepages(struct hugepage_file *hugepg_tbl, > - struct hugepage_info *hpi, int orig) > +map_all_hugepages(struct hugepage_file *hugepg_tbl, struct hugepage_info *hpi, > + uint64_t *essential_memory __rte_unused, int orig) > { > int fd; > unsigned i; > void *virtaddr; > void *vma_addr = NULL; > size_t vma_len = 0; > +#ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES > + int node_id = -1; > + int essential_prev = 0; > + int oldpolicy; > + struct bitmask *oldmask = numa_allocate_nodemask(); > + bool have_numa = true; > + unsigned long maxnode = 0; > + > + /* Check if kernel supports NUMA. */ > + if (numa_available() != 0) { > + RTE_LOG(DEBUG, EAL, "NUMA is not supported.\n"); > + have_numa = false; > + } > + > + if (orig && have_numa) { > + RTE_LOG(DEBUG, EAL, "Trying to obtain current memory policy.\n"); > + if (get_mempolicy(&oldpolicy, oldmask->maskp, > + oldmask->size + 1, 0, 0) < 0) { > + RTE_LOG(ERR, EAL, > + "Failed to get current mempolicy: %s. " > + "Assuming MPOL_DEFAULT.\n", strerror(errno)); > + oldpolicy = MPOL_DEFAULT; > + } > + for (i = 0; i < RTE_MAX_NUMA_NODES; i++) > + if (internal_config.socket_mem[i]) > + maxnode = i + 1; > + } > +#endif > > for (i = 0; i < hpi->num_pages[0]; i++) { > uint64_t hugepage_sz = hpi->hugepage_sz; > > +#ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES > + if (maxnode) { > + unsigned int j; > + > + for (j = 0; j < maxnode; j++) > + if (essential_memory[j]) > + break; > + > + if (j == maxnode) { > + node_id = (node_id + 1) % maxnode; > + while (!internal_config.socket_mem[node_id]) { > + node_id++; > + node_id %= maxnode; > + } > + essential_prev = 0; > + } else { > + node_id = j; > + essential_prev = essential_memory[j]; > + > + if (essential_memory[j] < hugepage_sz) > + essential_memory[j] = 0; > + else > + essential_memory[j] -= hugepage_sz; > + } > + > + RTE_LOG(DEBUG, EAL, > + "Setting policy MPOL_PREFERRED for socket %d\n", > + node_id); > + numa_set_preferred(node_id); > + } > +#endif > + > if (orig) { > hugepg_tbl[i].file_id = i; > hugepg_tbl[i].size = hugepage_sz; > @@ -422,7 +494,7 @@ map_all_hugepages(struct hugepage_file *hugepg_tbl, > if (fd < 0) { > RTE_LOG(DEBUG, EAL, "%s(): open failed: %s\n", __func__, > strerror(errno)); > - return i; > + goto out; > } > > /* map the segment, and populate page tables, > @@ -433,7 +505,7 @@ map_all_hugepages(struct hugepage_file *hugepg_tbl, > RTE_LOG(DEBUG, EAL, "%s(): mmap failed: %s\n", __func__, > strerror(errno)); > close(fd); > - return i; > + goto out; > } > > if (orig) { > @@ -458,7 +530,12 @@ map_all_hugepages(struct hugepage_file *hugepg_tbl, > munmap(virtaddr, hugepage_sz); > close(fd); > unlink(hugepg_tbl[i].filepath); > - return i; > +#ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES > + if (maxnode) > + essential_memory[node_id] = > + essential_prev; > +#endif > + goto out; > } > *(int *)virtaddr = 0; > } > @@ -469,7 +546,7 @@ map_all_hugepages(struct hugepage_file *hugepg_tbl, > RTE_LOG(DEBUG, EAL, "%s(): Locking file failed:%s \n", > __func__, strerror(errno)); > close(fd); > - return i; > + goto out; > } > > close(fd); > @@ -478,6 +555,22 @@ map_all_hugepages(struct hugepage_file *hugepg_tbl, > vma_len -= hugepage_sz; > } > > +out: > +#ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES > + if (maxnode) { > + RTE_LOG(DEBUG, EAL, > + "Restoring previous memory policy: %d\n", oldpolicy); > + if (oldpolicy == MPOL_DEFAULT) { > + numa_set_localalloc(); > + } else if (set_mempolicy(oldpolicy, oldmask->maskp, > + oldmask->size + 1) < 0) { > + RTE_LOG(ERR, EAL, "Failed to restore mempolicy: %s\n", > + strerror(errno)); > + numa_set_localalloc(); > + } > + } > + numa_free_cpumask(oldmask); > +#endif > return i; > } > > @@ -562,6 +655,11 @@ find_numasocket(struct hugepage_file *hugepg_tbl, struct hugepage_info *hpi) > if (hugepg_tbl[i].orig_va == va) { > hugepg_tbl[i].socket_id = socket_id; > hp_count++; > +#ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES > + RTE_LOG(DEBUG, EAL, > + "Hugepage %s is on socket %d\n", > + hugepg_tbl[i].filepath, socket_id); > +#endif > } > } > } > @@ -1000,6 +1098,11 @@ rte_eal_hugepage_init(void) > > huge_register_sigbus(); > > + /* make a copy of socket_mem, needed for balanced allocation. */ > + for (i = 0; i < RTE_MAX_NUMA_NODES; i++) > + memory[i] = internal_config.socket_mem[i]; > + > + > /* map all hugepages and sort them */ > for (i = 0; i < (int)internal_config.num_hugepage_sizes; i ++){ > unsigned pages_old, pages_new; > @@ -1017,7 +1120,8 @@ rte_eal_hugepage_init(void) > > /* map all hugepages available */ > pages_old = hpi->num_pages[0]; > - pages_new = map_all_hugepages(&tmp_hp[hp_offset], hpi, 1); > + pages_new = map_all_hugepages(&tmp_hp[hp_offset], hpi, > + memory, 1); > if (pages_new < pages_old) { > RTE_LOG(DEBUG, EAL, > "%d not %d hugepages of size %u MB allocated\n", > @@ -1060,7 +1164,7 @@ rte_eal_hugepage_init(void) > sizeof(struct hugepage_file), cmp_physaddr); > > /* remap all hugepages */ > - if (map_all_hugepages(&tmp_hp[hp_offset], hpi, 0) != > + if (map_all_hugepages(&tmp_hp[hp_offset], hpi, NULL, 0) != > hpi->num_pages[0]) { > RTE_LOG(ERR, EAL, "Failed to remap %u MB pages\n", > (unsigned)(hpi->hugepage_sz / 0x100000)); > diff --git a/mk/rte.app.mk b/mk/rte.app.mk > index bcaf1b3..4fe22d1 100644 > --- a/mk/rte.app.mk > +++ b/mk/rte.app.mk > @@ -186,6 +186,9 @@ ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),n) > # The static libraries do not know their dependencies. > # So linking with static library requires explicit dependencies. > _LDLIBS-$(CONFIG_RTE_LIBRTE_EAL) += -lrt > +ifeq ($(CONFIG_RTE_EXEC_ENV_LINUXAPP)$(CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES),yy) > +_LDLIBS-$(CONFIG_RTE_LIBRTE_EAL) += -lnuma > +endif > _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lm > _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrt > _LDLIBS-$(CONFIG_RTE_LIBRTE_METER) += -lm > Acked-by: Hemant Agrawal