From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0079.outbound.protection.outlook.com [104.47.32.79]) by dpdk.org (Postfix) with ESMTP id AB98B374 for ; Thu, 29 Jun 2017 07:32:37 +0200 (CEST) Received: from BLUPR0301CA0020.namprd03.prod.outlook.com (10.162.113.158) by MWHPR03MB3280.namprd03.prod.outlook.com (10.174.249.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1199.15; Thu, 29 Jun 2017 05:32:33 +0000 Received: from BY2FFO11FD030.protection.gbl (2a01:111:f400:7c0c::162) by BLUPR0301CA0020.outlook.office365.com (2a01:111:e400:5259::30) 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 05:32:32 +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 BY2FFO11FD030.mail.protection.outlook.com (10.1.14.211) 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 05:32:32 +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 v5T5WNWi017061; Wed, 28 Jun 2017 22:32:27 -0700 To: Ilya Maximets , , David Marchand , Sergio Gonzalez Monroy , Thomas Monjalon References: <1498553186-24541-1-git-send-email-i.maximets@samsung.com> <1498559080-27331-1-git-send-email-i.maximets@samsung.com> <1498559080-27331-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: Date: Thu, 29 Jun 2017 11:02:22 +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: <1498559080-27331-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: 131431879527434696; (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)(39860400002)(39450400003)(39850400002)(39400400002)(39840400002)(39410400002)(39380400002)(2980300002)(1110001)(1109001)(339900001)(24454002)(199003)(377454003)(189002)(9170700003)(83506001)(189998001)(356003)(498600001)(33646002)(104016004)(2906002)(38730400002)(5660300001)(2950100002)(50986999)(76176999)(54356999)(305945005)(4001350100001)(120886001)(85426001)(23746002)(7416002)(54906002)(53546010)(31686004)(64126003)(105606002)(106466001)(86362001)(31696002)(229853002)(93886004)(36756003)(65806001)(65956001)(53936002)(50466002)(47776003)(6246003)(77096006)(6666003)(81166006)(8936002)(4326008)(65826007)(8676002)(7126002)(7246003)(230700001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR03MB3280; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD030; 1:s/4pi6hfMeeemb7d1xcSqt2uX/tmAU8+efxusvpL07ouIPauw1pwoh7cpeey2FNtdmnYyLgKbbaa0sI6J4Bo02EPbYrbWX4LhLmGmiWlRq8LNmCk3SuT1jRoHEt5ULxp7O5TRvbPSWqgktQRK03CInQd3EN4dNnnw5uCSWikERPXKK3JAsrS9Ke5pB8Ebsb/KHG4Xy8ynhtWtNE3XIZDWfseVkW9wE8wqGpnbpMagnWkBPkgaTU0FYM2xrz71BTZJMZEDgAE87ZAQ5bOQ27DKgUeTsj7BrwGETi4rar2+hi7RXHBh8kqPGWb/YaGPkcK7AXafF8kcc2URcLMVyOSlB7fKKsqtDewn+CZa0WI2ysTV3LQGVd1P4Le28jDfsVHRM6lEPzJ8GdtwbOjW9yGOefoarw6QXRru0101xWxY0cLzCYyDDem+w6CX4YtXafgyqGf9NSPVU4rwT6CtlMXSvQmiNBQZwx6UqbhVGLd5m6qE/JDfrAGKtkPSQzXq5GRMYxs3iSbeYAzpxp2lKdJlnBJyDlnt6wv5FF8itc5k5sNwwD1Aioj0zbH6ddl0G2zh2UaRXj0h+8PRgjk7j/YtBSpEvowigKS8il1EshtgyG7+EQKtNGoOCAZW3hket2DdKpomut0llZTt2eMvptVhA5mVdDLiSkNDnlDR47M9CKJ0bnklg37QkH3s1V/Al2m8tY42AMyYYAM0diJQ4GA+YMK3Y5sK3EUnkjf+jz6I3vKL/DQF7R0zES++OD+1p/nmmX957dsdkZgKoJeBL6C99ANbiG/h2s/3AUriu+YULzncMMLVcCId1CiuP5DGAY3C5cUwkCw1f68NnJ3KAVjxkiN+H6zszAsaoIPYH2SdEmdSiAjZdsf36RFhjdshp2/SQ8zdNyvZxr+81vy+0Fk4M1k1eB0uQ9WWCggY0xo+ipO6E+Q+R20+6bM0LuFa+hk X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 48750c5f-df82-495f-a867-08d4beb03dd9 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:MWHPR03MB3280; X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB3280; 3:Q/b9iC8G+RQnzAs6t/J2FGf8XZKHt/vWg6P1HqXQLx3JKvvylvHLdK1UEVZi7AUesP2/zBh2kQQeLu7Hp3ThLqnitLR/fBKuO1bIxnzcvxBpQn1QPi+arrtwKA89S58xHzfS0aD8iLYIrfm1zc5+Jg/mb/WUB/s5gwha7FDeZQgs7p4QkjONpsCMKcZJtNYiIz4A5fScLczD95ev+UuhZ4EbMHhDky6qRui/x0cFN35fuqCwGWWmpP2Ogij9XZHOq5iShe+ZTdrOqF4U5aPOB8L4wV4rhlbyOhltZ8Shvtwj4YaRJwhLCrwq8Vc1pUkPPLSRwf71paZcQsCEfc3f5ZiRIOruwQpn6B/LylTU1t6kcM+WPYhb4XY/4x5oVrgpG0fNsjytFHjYTgo0iEQLp7UIDB1ESojLASkrMC2AMwytBQ9u2NeEGJcboWQgAqVo00niP/K38ahRt373TBoaN2jdk2SkbHMbTpJ+tf84oQzL+bGc+oWvNiPEJ2JOc3srsDwRvMXVW16kSHMv7Vs3pdBY4xVvS3DgmT29b//x4qF/6uqUIiM/dLhZtbEvn47mFQHlIginS2txHmh6wXaFGdZwO5ux1Nq3dc7k13CI0G8y5t0HuLYTv3n7koLda3J3UMeu8suwAGd+04HHo/s1UkN2eMf4XvKq/iSUFFi5q9o4mEsZEwP064zfmHGv4hkwJlWljqa0XVneBmtHbpJ6uN3ZpxoUOz29DmDzb7cl/QAavqNUZ7OMz7XidRyQ/4DX14hPxQPP/S2gex6WZlkRRD8VqhXVwo89xS9LPom13kuBCvnnnw7IY7hFrB7u41F5IlhfYe/EAInAHD2fUZiLHw== X-MS-TrafficTypeDiagnostic: MWHPR03MB3280: X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB3280; 25:KiP1hhsABQdHcNtOikZGEiA4ecLZ/xCY/ekoHef4t6aTifsWuDmsY9bZ7kRwAqbcMRIC8G/KqDt4imKR/dJ1IlMH9yjR5moXprcTY5PDzsMWbY9t706GKZIKYIFzuzjDWKXaWGEJn4P7SsnTFtl5TROs9lTSKA+g5LyHuauPJCx/XPx9oLHi/ts7kak5eTE2Sa4ic9dAZqHrTHZXwT57gRdPfm4EzMOwfgmyb4nuQfC7+HJg0W5mGJxbgPpXJrcUHwtaPY6d/RzSL6CjSjAwjHWzWLEsPTLebfaCmBhUndwCzoP6UjyiDhFPRvyAf+EVstZZt59me3pq3eykbZZCCGRNqDOPw2bDOyoYPQ7nULQoZfQ47l9qiklg6/iceDaC68535+aEjnYgRr/DJWOWa9A5Fj+uvtCb3UI0ZZYYEU2pfRV76LxcaIdCC6OaL7f0OC49MCDvadinztYTADkksx/UIwJtCkM2wFGnHUaF/pnzstL0n59D4nEeq0R4anbf0nWb6J6ZpCmqjxRzV6OLYvKPJtw7nI8Piue5qNDHIo6mdlwJ5aqTaJXK9l1DpUoMfziXI3YYHuJyPzIzuQMhrOSwuGRcL4EE9+JmT3oCmgDzOul6Qy7fPcyb/XtIypKGKipe8CvHj7uZFcyHg6irTJy8OeXAi8LccMwwXILuTMdI/oYb3zePgbgR56ieYZHKtv2CT0VWFwbzt6cMRSRvDi9C9l5mMfpusvS0SeVLC0SbbZI/b5iBhjPiS9Tdgp2w9cXaEyJvJ/dtgchA9LE50RmmXn3VV2R1A7jvSzRTmNcxfDdAGtXDtCGIieo3qia4RywXRXbEzAdsdW3tTkCVcJsptg3I0jAMWfBDOWdLsOCXuk7xTYxJ3BWL66gUbYlERoHcmK8Xn4aK8iKrDePrs6IiC36Wtcfj4Lk725G5a48= X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB3280; 31:a3P3yNVx3DM2VvCvPhifwKMpRkRmD42yuXHKodiDqqlUqZ0xx5wH+diEeYiLPlKilScSiDC/6yNQYL0Dov4tpnUQ7fMK+SCw+eI1YGi2DUNf6YdGM1yp5qb0vFX+Jyy0LC8tEz+0nu1Z2mYHuru+uIybUFRMLTPuOdr2hYF4sxhKa8tiYGoerUOOoyOx1dJDG+VATfrb6hVtSQYd1I3scvjKxsS1jAyKnLuYrZUNwrr/sLt0jFFC5I1Ns4AJBqHgxrCgH5gTGPCOPR6okNGQHNkm5FleFvl7nVuFA4l1cbSXBWhkWO4b6Ur5ci603jRDS8uIy/ZqPD0wwf8XLV9ZIZGe9oFHu5R6q4/wATraZ62YkG83zSBFO40h42p4moQHDTb1Y3hNK8FIUtPI8U1wPAgiF73uSaDq3qbKJYZ3+upxNUKvK/3Xjl6CY9n4vncHLxLb27UGJQPR3agusfjJ8TsXuc2QVNzNs6OjG3JNC+N2N9+HXClXMpyRGjdmuCYVyr4i6QXBuFxKGskf015eqa3/0A6gr60mnH+rRjCy7aqO98/MC3JaLELGGqScsbuepB/t8ivoBJX/0nUWtMAS+awZsRFwSWANXIlc7g6DnFnqyhRIGqN7+oXabImtw/3VyCZApJxTCmCJprRYH5UdDi5mK3LEmOyndiGa2JOeJmD0XUv3jZTVTsVQoOaOJdjr1zCNGoOkXl1CJ7ia/buBHw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(133145235818549)(236129657087228)(148574349560750)(7411616537696)(247924648384137); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(13018025)(8121501046)(5005006)(13016025)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(3002001)(6055026)(6096035)(20161123556025)(20161123565025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123563025)(20161123561025)(20161123559100)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR03MB3280; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR03MB3280; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; MWHPR03MB3280; 4:iT2FRlPDxKI37NgdDh1nqiv3ZmzQzgwZCIOOOj?= =?Windows-1252?Q?eyXtf4GrQBMPrZ6jxzx+kGI813iXYVqkuuwbsGHwSPsIUt26ASPB218j?= =?Windows-1252?Q?EFmsXCZKy3trUsOUu6dAiAUGibCs0NabGYdEfewQfpkZ5aOUtPsaROsZ?= =?Windows-1252?Q?34hE8/r2iNCFkKPvfUHFyLDOAYZREqMbjA8BGdAqMmL93wDIfn16WFaG?= =?Windows-1252?Q?c2z0b8Uuav9pAPdmgtKhjte1HsHjYvtpoWp6v35vnXCtXGMiGlOhur3D?= =?Windows-1252?Q?aipteYslA+Fh1NVIBsodaN98qamCAIzTdyr/0pudZLg60XO6x2vfVMnq?= =?Windows-1252?Q?qNNWiQTd5bP/5xLMuVpzE53UXvOWyguwMvWOuHtQ4MSIzjBDSd0UhqM3?= =?Windows-1252?Q?pSjW2tP7iUJtozWC5I3DX1QB1KO/nXkZiXU+jZ368yWUwdX3Df8cxdGM?= =?Windows-1252?Q?lPmrkuOLSi3eEoCAoaKgxLFehV7Yi5eCecbCk3LJXfwEzJXxZt/BTiN2?= =?Windows-1252?Q?WhgyYcKGc0YJnW7Z5cplpgZMQeKsRZ4aHbG7WNUSWrYrfLsvu8ALEXTH?= =?Windows-1252?Q?cuBNCBXBoYDxhLrlB5gULNPDwQN+loRjpdyCQs/8GtiP5oSF/HKXP26a?= =?Windows-1252?Q?FEgtWzT4+GlNlI2fjpf1WyYXKAa1Ok1i71KLsEvPtnOpw4oyntvU7ila?= =?Windows-1252?Q?a3pujNeBxNybi1qBOZxfq/0behBbX3pD+zGWTRiRujALxYEz7a30CxLS?= =?Windows-1252?Q?3b/uhM67JVAxBRVyhhEpksYpB8EWlBjebPIIjIIqQsUjwfkV4JsFY6AT?= =?Windows-1252?Q?Gi1mzM+f4b6umit8J4C9zUFWPycDDAdIFaFgKTgU8rePhWujI/FCFCdT?= =?Windows-1252?Q?GBD1D7mNUNtcG08uAzLE5lGO2PdoJjVbYlUHauapdYqKlY4rWDp5ZSHy?= =?Windows-1252?Q?RlAOxG/TAzsWEP+2JhGCulKtOU1FUl4ITuKbAgcJEvHMeDXiuHmTg6EU?= =?Windows-1252?Q?EB0dE9w1v84ZE15cZWWoKJoaJCBeBG2YiQimvE/dLxKBSrQvBDkV90+8?= =?Windows-1252?Q?27TNPGHs+kiufXPkn9XWTVjEtSOwxJksYvYqQ29vFLfPQC8E5aib4s5t?= =?Windows-1252?Q?w9Chp4VT1Glb9nnq8eNV9DpTqsUbkF74unfZO+yKVoGWgZn4GBwTq5ju?= =?Windows-1252?Q?EPh6yGoTa9cEfMc3D5xUDbWfTK2FwahYdhpmYVeLl8QFQPxbZ5umC5dY?= =?Windows-1252?Q?skek78R818rj18u+Yi5RTrGemDwyvwgGyKfqwJUoYqJdeLWOwUtelG31?= =?Windows-1252?Q?KuKGT/5ZaYOxnYQmLSNJYltf+OLM+VZKxtoVvVdGa1bT9DH6KICsh69Y?= =?Windows-1252?Q?9kax4yld1JS1jPivdK8aHy2v7d3CLZaXbqTmfPcAFIfPL/7TOfYKZ4KE?= =?Windows-1252?Q?zkU1XX1eV15KjrUA27UJ+42cVgrhpRPE1BdX0ccfRpOmfHStRFMjLvkx?= =?Windows-1252?Q?w/OnOCSdEw7fJ/yKmLvwuFawp6?= X-Forefront-PRVS: 0353563E2B X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; MWHPR03MB3280; 23:+zAoJS9U3Gqzd9pm994cyEUh7RDOJImd/1F0U?= =?Windows-1252?Q?trkSf1RU9zus3vGjX9CzkEjmuOiuitW9VQd0BhUmpI4VX5obfOrLPaWU?= =?Windows-1252?Q?d/sVH255dpDFWyPFqNC2lrPopywqr0sT7/dU3dNzr0A+97FmTNbQFU2t?= =?Windows-1252?Q?DmP9usSL6p9X6hUS0Q1p55jqAr8eZh3rf8ojeLZ/cAI22/mpXuFvnYuG?= =?Windows-1252?Q?4K8bHCtjqTPkgXPY7G3IB9yWCi3DJfT1kWxxKIxfymwNpYdy7guiHdQm?= =?Windows-1252?Q?h9ZQjHBwijUxULcrmTjqEc1pP2894pnsB4UoUGDcXsf6uEBlLHdBN0WO?= =?Windows-1252?Q?DkzCTu5hDDa/GvHN8bj7dgF7mHHsvaUu6XbeLjnjo4P1+MtHh97R4FpW?= =?Windows-1252?Q?BUAb4iCGgCR3Zs9t0wbDr+cckI+aDanDs9glyvNcH1HuxKaTnfQX4Fce?= =?Windows-1252?Q?EJV45d2oQlHRWaYdkz+LbzMLdYQcvAHHqTYGwmU7gel4fHKmBESoeZoW?= =?Windows-1252?Q?/8apWQed0dzgMRDqbxIZhrTGuMePRJh8BvjCy+Qhzn+ErDc7mVIKseIJ?= =?Windows-1252?Q?vqABkbaFqV7uAa+kT3ErqRqdvFESzv/jo8HJYLFr9PjQ0XMS0oc1qXp/?= =?Windows-1252?Q?pvEdfBdcN6KDsrKss4RTruspSSJhZu4Lx6x6IEd8rurZbtZNSkrLIs9w?= =?Windows-1252?Q?keO2+Jc2QPX6ZwcaLh64lEyZiSzb28xXKnbtT7UcP4DHWkNz4d3PFAwb?= =?Windows-1252?Q?4cM5h2ZSi6vtKphy50qSq3zgqbHQW2YbOB+CE0qTXR9MZO2ZoI/kvKjr?= =?Windows-1252?Q?obNhuZEzYYG44eb8lB12ptlavIThKgGjvIB828ekvsnsMMWDpIzHBnvV?= =?Windows-1252?Q?CVow6xprK8cWKKyZwVfRtud/DgoIVCaZA57rmUvFDMog9+rQB56eVfoH?= =?Windows-1252?Q?VCR9MysFxT4icIV4sCnhQEdR0sfoSbvfGyk9NTFCVgawcAkXpvWErW3L?= =?Windows-1252?Q?SgjLk0IP2mVnPuYGH3Y6g1Kw+TfKtC3DOe7K3KkDozHgWsSAoMfi2JDV?= =?Windows-1252?Q?gBy9TcajXEDheXmnHdDyR0pAqO3e9edVX6wGOStpMFQ/22FIX36FM+Ub?= =?Windows-1252?Q?VvdQrMfE2UtFiZ92KingaNI3LJJ8FvghMo4mQNiB2cKvsZvL3at591Kl?= =?Windows-1252?Q?g65p0T/Ia8eMseD9los5ZydXD6W8x6Xiuf9v+Tk4l5My8PtXEuQPQeh/?= =?Windows-1252?Q?MfQT1s4eYRvkoZUW8Z928GhpG3dmUVyj+P4gprgTsDtmsxeSn4IJ+3Y5?= =?Windows-1252?Q?XEeFOffqJ1vwv5KFi0Kz5ahFE2ngjMjKvjfaoVQ17tdlZsjYpEPswkpC?= =?Windows-1252?Q?wVgz4zga7oQ6eMK+v0y5LSviwOypskEKH89E/cDjG9kQ0yAtK+7NTsG6?= =?Windows-1252?Q?Rx8HVQDaHBG+AG5CpRplFQQ0fyLeDwGZ71Jby9JEGgLlKaC3XEivHlBl?= =?Windows-1252?Q?/WxBSAyUN9NQpvB/ZC/ELAFePeP8ZSXOKiRreKU9XETnktwMR0y+3cfn?= =?Windows-1252?Q?t/I1/hRZFcbgqI058s4vYo6fJG00zxTd+MtYk2RiSfvJ6HYWssnT0rBd?= =?Windows-1252?Q?UETu/5eGm1vhDhMsJeoVci+TAqOrYu12RhPFf5otNTLAMptxdr9l7g/e?= =?Windows-1252?Q?JkfELzz8w=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; MWHPR03MB3280; 6:frNiX7bTtcrsZqQsDwTxqjzfY3jySvkuxRdgwd?= =?Windows-1252?Q?xekp2TDzTaP2vAACybmW58AirJCBnp9KI/IGlO2wOuLOoH28Z0POou6M?= =?Windows-1252?Q?S+52PdZ5rL4mNOWjo2o38pGyEC781BxW/4RWTxeIYzUi+SZHtb8I7E6V?= =?Windows-1252?Q?3XQD7dICSqywEJzrnvyDtKNxt5OOgZfoWYVOa5+Lakmq/ljZSzpwceLo?= =?Windows-1252?Q?1bb3oWmXgBSRuboTugpS52dqZfi03BS59xdJFZKB1EDyzy9Kadh+ATqC?= =?Windows-1252?Q?g4p6eGt4Ce3eHbnmuWaqfjbsoIPtXzwI+XWU1Vxs4NDa3zoEWNHkhNpi?= =?Windows-1252?Q?l0OsLSQKqrLQDUEBF6goScxbY++XDNBGylZ9St46p9qk5YXNaHWLiIXH?= =?Windows-1252?Q?0FtquzZXVlmubzBZ34IQrHlyEZDrYC4z4MYThfwXnGR1mZyuOysjTcsI?= =?Windows-1252?Q?PAHbRDDy3wwfXys4w78+V7V67hl9NgGVi2tvQs6B3hioUf2VHDxpBQ5l?= =?Windows-1252?Q?EpqB7IimmTVFzS+EwoXUl2yVFIURyf8Mfp4lfwIYZi6cwTIEaTDo0xV/?= =?Windows-1252?Q?x4YnzCDIYn0lPoA9DrTEtENUFDaQbCtCSSViQd2SXGMmNJH5LGkyQudL?= =?Windows-1252?Q?LD/nI6LgC8eXWF0+5zCYZ2ibWebMtuFhuGnzdGqpw9FytNJnlEMyaaya?= =?Windows-1252?Q?ObanfvGoSMuzyZAtE4SIJO1GlOB/q1uDW0c6sFDhYD0ozgXEvDggbO4E?= =?Windows-1252?Q?C36xlgw6+1ChwYRGjqEcq+SUWRnqfRruj/O8/Ynaloxl/XixZvSH4Csd?= =?Windows-1252?Q?GvbFWm3c9RiEOUPXuN7DuChbq7kPg5K/91+od2p20rlTXd6DOM6kNcPx?= =?Windows-1252?Q?UgeXjLNI2ch0VThp8bRJxtaFjk6T8K496zYnTwzDPdPiOKjHJ1c61sj5?= =?Windows-1252?Q?1PhWTYWCTVE6hn0qSM8siszTrJiy/gAHeTbX9hK/oTFdc4vMH7kvQOcA?= =?Windows-1252?Q?M5hdiV0G7laRPxjQweWyk56T2SHCpuIltBnEUx4JpKQhh+d57lnMD91F?= =?Windows-1252?Q?NiZfVUBozYGnQ=3D?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB3280; 5:rJpGqIdc91LPG2PDzQuDyYkkxo1gdINswBP9AVQG51RpmwsDuPQZGUH1+wg1IFUJcGUWruaaHngNUJZIbOZDJMvOaafszehEuFyrOCb2x0a2zw+uOuGYGYB2aplNSj+O+Yy+Ct/FSyLiLbEvAgRsZ7yTmHyzkQVe1fUs12aMmk8k/J9hji5D9NC0R2HuR6pfXPzA+IxbF60xXUbPRbzwHkMWGPYH4g/NNJsHPg/j7GoE22ryxvYODYOoVn+AWr5VCtn+gMVYT0Rgz8RzU07O8RZ3apcBuHcg8E7+WGZFyVhszzdy9ZF2sCKTr59kA7eQiQ/Y74RvmddmJpy9tTPWmo25BNei8C2PBXDWWyipRCJM5F0fW6ax7G+klK2+B1nUU2N98LUPtDCNPa+SGww+4ueAL38vbMuT0dxcZ5a7q1oUDTPy3S9/gsrO/san8uTkJisWs9u5Nt1rGQ4G/WFgYraYVJhSMPD3JOTIGDXWo+52bqzJSHlrGUApqZHF7RfLXmwF1aOjwMypHqVjo72RFw==; 24:vXx2Isavc/TyTbXkK+Ta1NBusm+SIylBNTeWfI9q4d4e249VMLPEpjJaXVN2Fj2r+wlmho4vCfMkBpIphRvCviT3LwX+Y9SKT0zgLUZRPik= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB3280; 7:LvDLzj3RVyV5Bf7b62py6sXkGPr17LgEBsVZtuULYfUPvdDa5gJo/KjzyI3RoN9Axfp09kcKcRC2xPlPeFjsizy1p6SV1Da2Nrs/KYe34+oIQPF3qXGAs4DW6DiEGM4o+djdcclwZohpIPDy8uV8U97Ae20Gi4FUWZTcxG5epSC6n/FVgtWPBba22vRgSDDhpfbydBRzJ3jXGozF8IVzJsbnHSu7TqBqRSNiD2bnGDS3UIfPilVu2kiQxlLOUpcHAIBtsQTD2TBsb/1R8+BGUI8ZS6tujaAy7cIYwTG/rO8GBQ5Mz+f16Lq9TXWL4V28Pw9vYs9BEbs8KV5KxJPmO7mTJ8QC9MtqOhz2HVqUwwnD07Lm+s59nIWfgp4UOY5HCAGRWtl64ewZGBCHFaE+65vs9n1ZRmWeBCy5aC5eMxIfK6SH9omU02rJkF/anEdlpMJ0Vh04XGVbTfAcTR6BN9E2aCfb2hQU63KLQa1Yf+ykp/cH3+wuy7vRP/GEu7Ka0NfJd/EwVL6kwbOI+2Zflqf6yVirBWXir6thjK2hPYRP0hxZ1+vyiXZl0smqPWiNieJx0GSgGRkLCSfng5N+azNWiwrpkXhae4jdiu/afxIPjTSKCUhVGD09FnuUwknGvwix+41fhggaN+rfO8zujdqh2SFLoTyzx+hgVDxjDn8hK3aEmUXTOCXQ/3dtFTvubTkrF/wXlqpJqK+8c0EmZyFTaPWYMsKNjSwJf0eS1NO9XQNxvFCy4OHUP859/mzjYZBJnikuAx4gqBUI++UNjcvIbcMOF7RIbRM3Bl66l1s= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2017 05:32:32.4002 (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: MWHPR03MB3280 Subject: Re: [dpdk-dev] [PATCH v9 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 05:32:38 -0000 On 6/27/2017 3:54 PM, 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 > --- > 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=y > + DPAA2 does not support NUMA so, 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 >