From patchwork Mon Jul 24 08:39:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Santosh Shukla X-Patchwork-Id: 27123 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 37F0D7CBF; Mon, 24 Jul 2017 10:42:28 +0200 (CEST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0063.outbound.protection.outlook.com [104.47.36.63]) by dpdk.org (Postfix) with ESMTP id 46B417CBD for ; Mon, 24 Jul 2017 10:42:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=0mIwC0LQYmxKWU4r2K7f5vTw/Mmu8yyIc+OWuxRbU/g=; b=j7ckgTt1Oe0GFYLgVeEifkg5T/okGPAsxAnnz0laDtwnQPfSjXD6LgYxkVo1TLi+BFpqJfnFjCtuIxzXTwfRpRmXrtO2TMweOWfvf49R2qdm5lNz58Q0LUR1HftMYJ6l1mXuDUEKPM3nfcyQtLkXr38Jqp/ZunF/wNJQ55fV/iI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Santosh.Shukla@cavium.com; Received: from localhost.localdomain (223.180.24.9) by DM5PR07MB3097.namprd07.prod.outlook.com (10.172.85.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1282.10; Mon, 24 Jul 2017 08:42:21 +0000 From: Santosh Shukla To: thomas@monjalon.net, dev@dpdk.org Cc: hemant.agrawal@nxp.com, bruce.richardson@intel.com, jerin.jacob@caviumnetworks.com, shreyansh.jain@nxp.com, gaetan.rivet@6wind.com, sergio.gonzalez.monroy@intel.com, anatoly.burakov@intel.com, stephen@networkplumber.org, maxime.coquelin@redhat.com, olivier.matz@6wind.com, Santosh Shukla Date: Mon, 24 Jul 2017 14:09:57 +0530 Message-Id: <20170724084004.25542-6-santosh.shukla@caviumnetworks.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170724084004.25542-1-santosh.shukla@caviumnetworks.com> References: <20170718055950.10208-1-santosh.shukla@caviumnetworks.com> <20170724084004.25542-1-santosh.shukla@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [223.180.24.9] X-ClientProxiedBy: SG2PR06CA0085.apcprd06.prod.outlook.com (10.170.138.11) To DM5PR07MB3097.namprd07.prod.outlook.com (10.172.85.7) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0def7dd1-3edc-422f-cab8-08d4d26fe8fb X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM5PR07MB3097; X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3097; 3:qxZjhWqhG80J8gmQNta2Q5GizaY9u+6HxdOJxRfV2RnHGm0TIt9A+kAQTswsEEIBK29nQCBpOJV7lm0gfmHeolLUxr/lvF87at+FEQNkfZbJF08SrP3HYMPEsUKvrWZTlso/5NfMO54xE5mN9JGgqC5WJS5EYLiWti1SZKFQxS3oNVTymjXRSuM1hk8xsTtR3P+HM539nmMN2LcQdzK9VK+j2mzlHBpbvWVVwNvMkj1mK6ICKN3mW/VuCnaKWnp/AFJBn0JxNCFTenLk9EFt+rFR1NhSf6DRrnqZUL+Pqbm12jZhyCqDOQw5IhEoNj7esU2DUgxeN6xpiMtL0uYa+m7dC7Sbt0p/12FeXrN+Hlinzz3cOHwtf39Ejvars/atQyu+OUs5UGRRye0mZki9T7/nx2HDhBeIV7AgShp+tUlE0ZJ5q9/JJ1yhnNYG+GbYTTclVVjs0OTM7oEMWvRo2XVS4WLQ372bcrVCH5kJmcieUz/hKBXzkiFKCtq4jkcBusbYpLf44Yh6XMj8q9EM35BImaRHNLZK9zFhcWm3YoO7ig660/Nv3cKm6agL4dE8Lmcj92TlsaNBJ+L/f2/kUiF65M985r9bcWpoljHiGzrLi/DPTjS1lx20TBP+pOz+vPvVo4UQEizk84wVaBxVP3LpoOoqtB3wHJ4wFkbZb+EPzk2tuKNj3lK1GlrIZ7XjtuXT08219ZLhbDOOKm2X4Ii0XbdXKh11jw0TXkRkILs= X-MS-TrafficTypeDiagnostic: DM5PR07MB3097: X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3097; 25:owPMMIqWPnKGjQzmDbp5/7S7h+paLABfuGSzqQpO3y10AHFT+VGZSDIjgeMek5euRu1jZHxmnPimT5hDG3Dm1F2ApV6mNy5gPaiPy0l/26B7GUNm6DeJ387zpFBZgWjGax7SnTVXOaDGf+xxTNjpfeoDDcazw1lPypZFHnwYpQksQPYBuxWmjoTNZA+6QCHW2aQwPoi+pJ/ECd3xxQalj4x11KB8Dxq4SNwCEkrsY5RXzrcQPBH2Xuhd7iE2HnSO5YbOmH0MN3ZzQiKV837vlkVwn/fu9V1ifaHQbUOJZWa/TdqhNnpmPa0X78dFtVFMya6UrCDXoKBTerfMW88nD9PtKinjjIHMv3F7cmETFBoHAeIOQB/H3JehZlXqZJWdS8SL27NJdVn9O2MM2vy16/gv71bI3a3Zn6HIahEd3GSo/IYwfD3T/Vt53QkjolFclORUnWemffHP1na2qe9yrmElNsT6MuKVCQScyNeD23P/5E7q5N9SHGq1Eq73O2vdg/3F+nvP5hiZCZJcI3tm64P8IfcgA+q8S6cQRPH5CFMRM/fO2gQX2uJAmVCDOBZK5RXCl7b1ucWGVhsv99SDdq9AoLHCHs1L1HZ/6F53neorh+eWxji/Z6gCbDx7xg4iYX8YPg97nLstr2GiZyTwUWzriz7s9NsMC7d0t6TkmyHiO4ElnT9gPov6aq+ScNMYAZQ4YX+Mg1N2vKqRMp0l0mNpiRlBkYBdK8p6NWkubFbOKp8/HgSV4Alkdg9HA/YfjwGRKgMbKGIHWytoAUjSC9dXKMY1iOuTE+WrJtnNfbtEC8NvuVQd67yrOlxFFQ394uteAKLGBxxXRI/V4/3Hyltju+vSgNxkCqCYvCYoC4fG3rHzCj2bkIFy6vfHompT/Hj9chvB63CXEwkhq8ReopJTwp1HJfOujG+3WquCE+w= X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3097; 31:w459cZw3BvQpOSujxaLhs/PgCvVLVbGv/QLe+WM+iGqWE7sGHrVVWxWg3Nd1DW/W/JkA49JdH6l/eTFaHEeZtedzi3rZY/VXdfjd5qS/uwW8dZqitF9doy2XUsEUJazav4+C+xjom7jz3d4+enyHqqUa186fRdA8t7gcV+1t5y8ubQoHGdyYk7x5zzIrfRwggBLeoGpWnK8rqd9WPd91wO+E2Cgqx2g6EQirUfliHN7fuF3eRJoBYLnRc3RWJ5NQDN4Mgyv0I3Kb7yALGsXge3Wr7Byc70F+yLFc9VoKssVKGOEef956OoigRoDWAo6bKMtwL/qlE15TPe16sws+kORohZ6ZV7dhwQEARJCcLgOXWQtcwEOMFmuLz7yVgYdSfnCjyThL4mW3G0W56RDCb1G59lJR/H5fWtLDZHR3g904+4x53xomf5gWdiEjOuk77N+0bhDEajgC8zyr1NXDuCDjzpyFlJVM675rSBdGXmHOK1jKEEqZnRo5aEuwkRUve/53R7a+mByzUvct8uOidlk8MXTQ8vHy2R5nIhf7Q6RJLkGXhtOMdFsAURnJPLSrHixZP2OxlZmfFOfpTY6cDkQKzT3HvwmX9oRa1vDjGBJ13ESOiqpCjTs39m66CHsyxa4eK0FRmvIUYDiRCxB0HJICIO7DD6WP+D7T94AecF8= X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3097; 20:Clln/zuIGWeTrFPEThjoIfnNwHYtC7AWkzXrln2CGj7z04eXLh7/RL2JuwK0B8DzQxqZgF6RyLW2v+RwT2Jokp6IqekduFq1DZF3ExzNtQHA3FqKr59p+JSWNHSEXApcog+0RmX0QDxoqI4BRf9rpWyTeqqSbAQo/1ox9GV/P+m8ZV7kizX9EeGxFcrEqZr9iYY2chJzPJ+7/LG8PGy8oq/V9WyHDQ2jwSeXp3uTZp6pJUh4egAFfRWtULyIkkfiE2bbucc/T3ugcgLgnNIzeQELd2rrRZYnMkgcFRnEmmQb28nhqsNz+o8s7tSdmqo79fZjyYTlt/oK6rKo7P79e+hxzU5GgZ5x0+eFiVfnqEPrqxfInXhdOCWr6rINecqx66guLCOT4ovbc5UHnR6o0JjU7jMnFcmLAnKK3i5DGUgQnGWk2y7hCtnTBSXY/gBlDbfz27IJsSsnPByEaIqE2TqVb+f/hWnbzt28zU7GJ20pBIIJzk8aFaEwDBhPv2kj4pUQwrNx2rIQUIZ2Q0/PyscaEPm3GYrbAHdZC0UMcK+RhLNbfzY3PgFAv0csyMuaxAblkSfWQozdlJ32FPCxanUoJ6EG1FBvU5kE3jYu8iE= X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(278021516957215); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(10201501046)(100000703101)(100105400095)(3002001)(93006095)(6041248)(20161123564025)(20161123555025)(20161123560025)(20161123558100)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR07MB3097; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR07MB3097; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR07MB3097; 4:AaTlRvPE/8jOgHdCH/uJPIPQ0FL6HO5cGwCVk8fjNl?= scGhKXcImlu9RPUXzZtcWH4sPlDyZ4PQcFQQ1IPGsnL7RHWgCmdK7pZQNl7Z+3rEZAdH9NHQE4oFGbbyERInRT/kKcviDd/x/1IXMmlm7Kl3E/VAePLB4Irn3yDjHK9nlDzR2Czqy4EAnzxKq71vQTHdp7hdoCdP/Pyx4xRqwkcnCekuJY9pW6sIaOCvv1RSqg8v53Lvr+uqexZnGzHDT5N/ZjjvnViuOqQLYCVsL5uSFD9E6B2JrLQciN99RxDuhJEPiz76Juu8B3Vuj/pKEEukdbDpwGx8mVAVijoCLcQEUqC4MjMyGuQWLROlLGwuymvxPjwDfTF0DCMcPOV63FwT6eoaN1/cICa7Pr1i+MyTduYxH0lBdT09XhUqhuQszrZNdjlpSHwZv2TsIJfdLDAGDSSO7fU998mlrFEaF2zJ8nT0r07PvuzR8rN/Fuy4oyPUFtXXQoTPKbmWhFsZYvnvVXVAaH6uMHgySRnVeFXHOpZc232hgK5cx8jBtsBmBqIv8CUgre68BIpmc9XiMb1byPHc3VGu9IuKMzLUncjIVNy5LZzXGxFsisZ+7SFCQA5t9iLrb0WZhyeiEKfLEohjbrK5rG9FFCEUXF/+AFtALR0IKRGAsfKJz5dnfg1eX7RDcsJkqs7cBrksLsn2/LJLibG8AFmfxowmFdgXQl9B+BB9F1Xo2HcW1vYAUb96qGju6cywRqYCwx+chdDcIjdyyTZTX6ERGQ5xgPv4TUmKzg5SWHAqatxzSXt8Au1cQ8o4LDR/y7v0vfimdSf6hxAHR5qVWBE3GEP7uRMmZxltEyInjzGZYI93Wcgly1dZ6dUyTxBMQbgrYuElS+xGuYjddbTsPE6gBp48nD57Fy5N+Tzw8AU6tTl9PfA9IceioruwsJ73aGwfs4BvqaD5Sr1hDn4TZl9xo8jVegYTa4/iQA/F2AY6vGHd/YQW3xUadGs0QaTWp4QbXEb3cHHyigsZgeN0vNEi4910cDOcdSFKCkNATyTulJfgl/KwcPvb5s8YmTJAk7tXVKKN1BRJRRDG2WA/3RdZZcquqHzuWCIAQAdP9tslUe7NYKFghIpYV/sRZPqNcNONz0rWtdm7nTAYB5tRjq/9m5fb/9IJnEKbGoH+RpVxEaGq5rsehajdaH92z17IISnJv4smk+IW8N X-Forefront-PRVS: 0378F1E47A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(7370300001)(4630300001)(6009001)(6069001)(39850400002)(39400400002)(39410400002)(39840400002)(39450400003)(189002)(199003)(47776003)(6116002)(38730400002)(42186005)(2950100002)(72206003)(36756003)(42882006)(5660300001)(6666003)(3846002)(4326008)(68736007)(110136004)(107886003)(2906002)(966005)(478600001)(5003940100001)(6486002)(6306002)(33646002)(81156014)(8676002)(81166006)(97736004)(106356001)(1076002)(5890100001)(8656003)(53936002)(6506006)(66066001)(6512007)(7350300001)(189998001)(101416001)(7736002)(7416002)(50466002)(50986999)(50226002)(76176999)(105586002)(25786009)(305945005)(48376002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR07MB3097; H:localhost.localdomain; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR07MB3097; 23:8XkE9PLNhTwRppMwF84/IlGKAG6jRn8POgWCw+D0H?= TSDKnO+E4sTj3/pKNYXPTUH/0fvq2JbVckaSQaa8BGxmTqFQdO+mD2Fqg7hjP6ROiAA29PhnuCLDNR6KOY1TdAq0hdo27ImaX6dEheZvVBTYHdUxJ9JqFbq7imVx0vPgJa26GAHC7GPfHEBdjy/s5IN1Zjy3kNJDOP9QU4dmXI0tp0IteizmvSUh4gCl+AVW9M/LurkONOWuUKwXA7ep/KSoaaCbYs4B1vdtCF0kRuaFSTcJNsM6Tz1FvvapjaklR2zCWa3MYLnssRFdA31Rmr4J3tKcYuvKi24SWjnwQ1VY3t6jIf9d7SNx4iR+hZSVRZ6it7pkrZMjBxmNf5G4VEMOip5YtqBMIlvt3grDB4rr76w5Ap7TpYoPuQ5EpGYsbuENnT3Mq0E9BYVo5fqrSQwYIDmov9jdFj2cI/OhZbfXLTyORDWeb4+Cogcp/I5Ve6ZMrrUi7wr7Vs2Vyq6Nb9RhzYUJLc23ht9OolIk1y3qRDYIaVv2SVcaIopwzZFwZHaXDsMnm5GtwVgqA3i52IsLK1E2HuhED+vkGgirGSIpXOaY850X8d1UClKmc/e0mi4Q/Fpr1lCOdTYZ367sFfM4WMy/oZfjoPvnugGJpVLXqfF9qVEKs80In74ZnN271fTTnRwRBgnjM9IBXt2IG7viu46i8spG8q6nXm4bnOtNnR/zUO7uSZV7c8lYdN+4cUhAckln4IqeKozQKMXByG2tRaowlUf/lh2/eSsk1O6WCmDUVDMP9HoH8sS9Tr5sHMP9Gs3Sq6Z2urBZhVY/Ami5/LQpCu/DdVI6Z0r2I8uJoSViXgAh6zzrn553pbmVQn85kQ/BzA6l7uAL+wzz1Qfp6SzRIbILPiyqXu+6V6mJl8Dp2GPV7tHiLMW6ZDqkPaJvkNVcjHW04z4Vw6FX2dlaIgCimJqHLVsPPjiwBWmm2ouXerNREO4Ciy0nAH5jO5wIGMaRh3zmHCKLHl3VmRM+8ELIq+u+v3Qvbgsu817Zca+O+sGvIf91hECXyhB3lyuuZ+qfu0n5uzvvacC33LVDH/9ptK4aP8l8OiTdkT0mYlq/Irubq0PUBro+04HpaMBV1D7rWuIV01fsHTZiGb2QvF17KTMC4lmWpw4Mo83oabeH0Zoz78chPhoh0NQTzG7y9iS6IAg4Z3r75jJF56/zpcs0rXScVbwcFmcwrQ4JCj74U6IeTMmbsj7rUZOWW7eFAH07JZTTHQgd6ua03KMb/oesSMRXlox6yJs3N8K0rOAovKPCXGHSuzqb8JyzlS46oOhb3W4wgEwEMuoXvJUVFcE9RY+HW6basLcfnlKx5mMNwEG+jriPJzkQacHkHWMCZ3UoIf4xHSZIE3f5zcq X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR07MB3097; 6:UhnwNToaEyjgvfx5E6wpGUbMLYzcmcY3lABFTyVTsU?= IwdwUvKvHaqxcgIG6fr7U86m+Ke3SRyGwEXOxNbzXDDoqkOuSG/rvLdXrEmFk+VA21BmPMNmXgM/MfNtcKA3DdPcR2y3hTHdwbxU0OF5yvR5DdNqPEa9Vt5pLA33sym0PkWkJvzrO5h5ByM1VigA3sFx91yazYCGGk8Kk+bTMpfLVpXjEX5Lf8z5Rzg4OkorRHwHIcAIdVkHDJYFibuezDrO1AaXtfMQ8YskQG0sivRxmoTWZcxoWYxLrpOFgUsb25LqpP/XPw1FURg4ncdJ7dB4NAppelv9kmq3yomfuskkpicZ/lz/0F0Qku7B4JbkZ6e5lgFoJuiNLa0iGP65lH3GTdfYb/tDrvvJacIU/UXtX3Yi7EhKnUcgmC2M0/5B7Kz1l44Yf4NXyIJiYl7wiJJv4UfuQJTTKw9FCdiSd3Yj3WPhOxGm7QSpsys5iNa31s8WRA3l0pjsKjco76yyHu0VVIfI1WFyPISm7MbEsX3lI5BtSWZB0kaPD959238BSKksUqg+VMIj2cYU410pm4+Z4DUj4TC+bHWG0W4Rl93OPhT3z2sIYigIQLE2EQ6yxuWQmUPEYzZ0z19eVVuiCA2CZbWleChHMfKOddsDjimfaR9ESNdfhaK2IXk/aROzvDNB9KrzpfP6DobBf74+0bpRH88BoXhlAziknhTBc4LWfCBRRyrS3aq5JCpG9yFckXZMeud/E0C0T5LEzAh7NwMtX31IKkJiF/IdUFFXqxHSoL6L9PV3DBL7fACYZqAaE4IBT5aGrsCAJwWBCqmBSwvT+Htio/7WTgwGeB7VXD4SH+okmg7HANKfoyQTjpDmngbX/lP8jrqqF2HDQg/kaDqZWhtKoaFnsh5s2Lc7C1rlxue2Wr5RwvWSKhg8deRSn4z+foj5PyNqCjiyIN8dYa4DP1UbbeIR4aL/T7k9O+iUeskOJ0p7xqTXAQ+8hWWYY= X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3097; 5:4ryN6jNMQUk6BTOht0Kt0VDrp8yZiDO9JcYbM0IXzh9CCMCFZmp2SESdIOlWxM3YKmS+dAJtoyiUU+9bXalLaaBiLG94o/SnX6dbCBYrHwyEEgwoO7cIbOVEARWVleCmcomndgo02kkFapBXRdJbaZdMf16FuIfD+RGE/XB0Jrxmz+pGox1eVj82nYG5eGhSo7+e0JDFWmDFUu09WWEX3vxlRYcwUemOd1qrLCtSBo88hiWSpK6A2HpNSvHBrpFZAH4+5jmZVGn92cIDQ4sIOacXuU0ucQhNo0VIq9K9h+7lKVZ0WWsSME3zfAWJsAhrrBSOS8UxhboPgF7lVmcoQDZa9swJbKvm6IiQN2jaDiFq6lLYMB/WJkH6qA+JVM0S8dnoI9RJ9+1CtYZg/D4zovo7cU588lafR7Vi/z7WVtpVhQ+OLYcOn9KPks4mpTiFwbd5LnvC8AXLmRv4o5bUoreki2vWonpS2ufXgc2iwJa6htGa5Cj+MzP4e/TtdPBM; 24:dXx9MEI36Thn0K8C08JqcHvcoRgT596/1/Eaf/9BopmO4Ri6QilGJNZhvaIvh7UN5WUz8/+hYEFC8J1AgdIjfKQa0lf2d+0HacM8Ig6xmDk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3097; 7:uSe+wlgdeeqxIVaip3D/GUB+GHMNx/UfMEj5vFg1wAXe64H3G9lbQLvt+4EMsU+dQMCLHmEqtBrIZc8XDQwYKrMKHfi1xgRQXZA0qcBQWKvEomlpl2VbS1aCdQHUxoMOUq/nInqvCQ6zH2U+W+YAEi0/m80Hzk6GCui33eR55xsN9hSSJouHCcYJHJURrh0GK+sO4ZHPJyQHf5rIGZaOQeugStMtvUminYLjbz1CTJU1XXBivTdKy6QOLuemMwR7yj+ujaucMQISOR5vXVovomt8CXBcgJZpYUbsKhF1wXJLiU2as9jU5W4zdj0TvUbag2zrt11CTYjKA/rJO6ls3whFM8eA/4EQthPzvftIOeGOS8HpqTkX3zk5bEDkC6uYrHUUpVoysZPxApmm8iaUoR/RcoNufpRrvvTqfZqmXwgQ1V6jsvxz1BDHBYXAyPcC18CbFBFhM5gJcBmxZdxOUHK8ndqvzB9UtK89ACZwsyOJu2r2GcR5AMC7qdAJLRDXR/mqixBZBeHrQodZ6EbgGWvVmGzWw0DsdMzKYcxxtKHbO2Y5pd4Rj79Yur2Su2PTpGGxkhGxhuhWO2Cq5eKkyBp25oXIN3dKyL440Kbphe4YeJRNLDgTKMtU3nKJ/uM1y82xkrGLfo/kas8R6cb6/eIdhIrohRjfh5sq1enqJ8SnQl2K9PwigvTXL94xrBmnlMf32+G4WJkqWeu09LVJdvBHvEQ1ZUykUFbsgxDMFYzb7JGz5fKAdgMcf0FxqIC8HQvHBk/XixnLzauEaT4tHverKYEUMd8bA3LVtMarM3k= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2017 08:42:21.2281 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR07MB3097 Subject: [dpdk-dev] [PATCH v5 05/12] linuxapp/eal_pci: get iommu class 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Get iommu class of PCI device on the bus and returns preferred iova mapping mode for that bus. Algorithm for iova scheme selection for PCI bus: 0. If no device bound then return with RTE_IOVA_DC mapping mode, else goto 1). 1. Look for device attached to vfio kdrv and has .drv_flag set to RTE_PCI_DRV_IOVA_AS_VA. 2. Look for any device attached to UIO class of driver. 3. Check for vfio-noiommu mode enabled. If 2) & 3) is false and 1) is true then select mapping scheme as RTE_IOVA_VA. Otherwise use default mapping scheme (RTE_IOVA_PA). Signed-off-by: Santosh Shukla Signed-off-by: Jerin Jacob Reviewed-by: Maxime Coquelin Acked-by: Hemant Agrawal --- v3 --> v4 : - Reworded WARNING message (suggested by Maxime) - Added pci_device_is_bound func to check for no device case (suggested by Hemant). - Added ifdef vfio_present. v1 --> v2: - Removed Linux version check in vfio_noiommu func. Refer [1]. - Extending autodetction logic for _iommu_class. Refer [2]. [1] https://www.mail-archive.com/dev@dpdk.org/msg70108.html [2] https://www.mail-archive.com/dev@dpdk.org/msg70279.html lib/librte_eal/linuxapp/eal/eal_pci.c | 95 +++++++++++++++++++++++++ lib/librte_eal/linuxapp/eal/eal_vfio.c | 19 +++++ lib/librte_eal/linuxapp/eal/eal_vfio.h | 4 ++ lib/librte_eal/linuxapp/eal/rte_eal_version.map | 1 + 4 files changed, 119 insertions(+) diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c index 2041d5f34..81d980817 100644 --- a/lib/librte_eal/linuxapp/eal/eal_pci.c +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c @@ -45,6 +45,7 @@ #include "eal_filesystem.h" #include "eal_private.h" #include "eal_pci_init.h" +#include "eal_vfio.h" /** * @file @@ -483,6 +484,100 @@ rte_pci_scan(void) return -1; } +/* + * Is pci device bound to any kdrv + */ +static inline int +pci_device_is_bound(void) +{ + struct rte_pci_device *dev = NULL; + int ret = 0; + + FOREACH_DEVICE_ON_PCIBUS(dev) { + if (dev->kdrv == RTE_KDRV_UNKNOWN || + dev->kdrv == RTE_KDRV_NONE) { + continue; + } else { + ret = 1; + break; + } + } + return ret; +} + +/* + * Any one of the device bound to uio + */ +static inline int +pci_device_bound_uio(void) +{ + struct rte_pci_device *dev = NULL; + + FOREACH_DEVICE_ON_PCIBUS(dev) { + if (dev->kdrv == RTE_KDRV_IGB_UIO || + dev->kdrv == RTE_KDRV_UIO_GENERIC) { + return 1; + } + } + return 0; +} + +/* + * Any one of the device has iova as va + */ +static inline int +pci_device_has_iova_va(void) +{ + struct rte_pci_device *dev = NULL; + struct rte_pci_driver *drv = NULL; + + FOREACH_DRIVER_ON_PCIBUS(drv) { + if (drv && drv->drv_flags & RTE_PCI_DRV_IOVA_AS_VA) { + FOREACH_DEVICE_ON_PCIBUS(dev) { + if (dev->kdrv == RTE_KDRV_VFIO && + rte_pci_match(drv, dev)) + return 1; + } + } + } + return 0; +} + +/* + * Get iommu class of PCI devices on the bus. + */ +enum rte_iova_mode +rte_pci_get_iommu_class(void) +{ + bool is_bound; + bool is_vfio_noiommu_enabled = true; + bool has_iova_va; + bool is_bound_uio; + + is_bound = pci_device_is_bound(); + if (!is_bound) + return RTE_IOVA_DC; + + has_iova_va = pci_device_has_iova_va(); + is_bound_uio = pci_device_bound_uio(); +#ifdef VFIO_PRESENT + is_vfio_noiommu_enabled = vfio_noiommu_is_enabled() == 1 ? 1 : 0; +#endif + + if (has_iova_va && !is_bound_uio && !is_vfio_noiommu_enabled) + return RTE_IOVA_VA; + + if (has_iova_va) { + RTE_LOG(WARNING, EAL, "Some devices want iova as va but pa will be used because.. "); + if (is_vfio_noiommu_enabled) + RTE_LOG(WARNING, EAL, "vfio-noiommu mode configured\n"); + if (is_bound_uio) + RTE_LOG(WARNING, EAL, "few device bound to UIO\n"); + } + + return RTE_IOVA_PA; +} + /* Read PCI config space. */ int rte_pci_read_config(const struct rte_pci_device *device, void *buf, size_t len, off_t offset) diff --git a/lib/librte_eal/linuxapp/eal/eal_vfio.c b/lib/librte_eal/linuxapp/eal/eal_vfio.c index 946df7e31..c8a97b7e7 100644 --- a/lib/librte_eal/linuxapp/eal/eal_vfio.c +++ b/lib/librte_eal/linuxapp/eal/eal_vfio.c @@ -816,4 +816,23 @@ vfio_noiommu_dma_map(int __rte_unused vfio_container_fd) return 0; } +int +vfio_noiommu_is_enabled(void) +{ + int fd, ret, cnt __rte_unused; + char c; + + ret = -1; + fd = open(VFIO_NOIOMMU_MODE, O_RDONLY); + if (fd < 0) + return -1; + + cnt = read(fd, &c, 1); + if (c == 'Y') + ret = 1; + + close(fd); + return ret; +} + #endif diff --git a/lib/librte_eal/linuxapp/eal/eal_vfio.h b/lib/librte_eal/linuxapp/eal/eal_vfio.h index 5ff63e5d7..26ea8e119 100644 --- a/lib/librte_eal/linuxapp/eal/eal_vfio.h +++ b/lib/librte_eal/linuxapp/eal/eal_vfio.h @@ -150,6 +150,8 @@ struct vfio_config { #define VFIO_NOIOMMU_GROUP_FMT "/dev/vfio/noiommu-%u" #define VFIO_GET_REGION_ADDR(x) ((uint64_t) x << 40ULL) #define VFIO_GET_REGION_IDX(x) (x >> 40) +#define VFIO_NOIOMMU_MODE \ + "/sys/module/vfio/parameters/enable_unsafe_noiommu_mode" /* DMA mapping function prototype. * Takes VFIO container fd as a parameter. @@ -210,6 +212,8 @@ int pci_vfio_is_enabled(void); int vfio_mp_sync_setup(void); +int vfio_noiommu_is_enabled(void); + #define SOCKET_REQ_CONTAINER 0x100 #define SOCKET_REQ_GROUP 0x200 #define SOCKET_CLR_GROUP 0x300 diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map index 7d7fff496..bf68f02bc 100644 --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map @@ -246,5 +246,6 @@ DPDK_17.11 { global: rte_pci_match; + rte_pci_get_iommu_class; } DPDK_17.08;