From patchwork Thu Jun 8 11:05:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Santosh Shukla X-Patchwork-Id: 25191 X-Patchwork-Delegate: thomas@monjalon.net 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 26AF4397D; Thu, 8 Jun 2017 13:06:31 +0200 (CEST) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0067.outbound.protection.outlook.com [104.47.38.67]) by dpdk.org (Postfix) with ESMTP id AC9E02BBD for ; Thu, 8 Jun 2017 13:06:21 +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=yUZWcJuAKI5wKuDqlhcmVvdvaBIp9Zw66OJls23qZH0=; b=dnHviR66kQoLK6iHfE0lPhosodhbS5PKc0u5FGE/d4sBz0lc9Ws3y+piLwMrE2uBnVVj25UWnI4+wdDG8lVNfU9vlEDMfaeerBGhOvLFY9xPqrZDqiHsTJP9JwF6syVvnqviJma5dHjCsJT7UNbO8goZbs3GF9MLO8I3iZFDpCI= Authentication-Results: monjalon.net; dkim=none (message not signed) header.d=none;monjalon.net; dmarc=none action=none header.from=caviumnetworks.com; Received: from localhost.localdomain (14.140.2.178) by DM5PR07MB3099.namprd07.prod.outlook.com (10.172.85.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1143.10; Thu, 8 Jun 2017 11:06:10 +0000 From: Santosh Shukla To: thomas@monjalon.net, bruce.richardson@intel.com, dev@dpdk.org Cc: jerin.jacob@caviumnetworks.com, hemant.agrawal@nxp.com, shreyansh.jain@nxp.com, gaetan.rivet@6wind.com, Santosh Shukla Date: Thu, 8 Jun 2017 16:35:06 +0530 Message-Id: <20170608110513.22548-4-santosh.shukla@caviumnetworks.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170608110513.22548-1-santosh.shukla@caviumnetworks.com> References: <20170608110513.22548-1-santosh.shukla@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [14.140.2.178] X-ClientProxiedBy: BMXPR01CA0025.INDPRD01.PROD.OUTLOOK.COM (10.174.214.11) To DM5PR07MB3099.namprd07.prod.outlook.com (10.172.85.9) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM5PR07MB3099: X-MS-Office365-Filtering-Correlation-Id: 302740da-692e-4e27-fa59-08d4ae5e6085 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:DM5PR07MB3099; X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3099; 3:nD5xfDN3ArYUXTEB9hyqOkI+nH69ftAtUH57Vzd+vBMSHISVQkiYBM1maaybjbq4Ex33rT8JkM/BCTfxmDmaEKmPG3vSrptZIVQ/9gFnDi3JJXJfCqZCPn7XSlSfYgpjCVovF7B8WrKJjnePzXXwZuQpbXuAd3+D8KOEeDYYqlJv6YRY8BYUJaTLCC1zsif8VSVdx4WaVoooe52MWXa0Gc1DqRRB6NPg16F/DwLi3uUHeFMznNeuuW2dL6jzb17RQGNmvswnwBGdUv5jO36jD5CJvHbFumidHUgSSQrfGNw6zQpp9AZJMtHwjPCVXWnXY63w/WxKb0vhw0ndLSHKMA==; 25:o2+RD9x9ksO4cWgoR6krGjFZ2rOFEkGNQ+SwPjRgpW6cHPQZS/Q4RTVoNL62aFyj6yRULXJSZKcFyAVAOoQWp42W/VuqkSEjVghrmOBOQd+HArD0n2n9PcvJjV81dJyebxzBdA+fxF28fUdWB4MLI+vWQusFfTC8rqXlJGZL3k5C0mGMtL8b7FC4+86GCMjNCKjp1wtqKsQv2/Zu+e7v9/ovxe6aUZn7y22vN3qaFafbvk9wRSDNvfVpUrjpcySwhtdVJEqjQuvTOmzLuRNNkyRzFLCH964tEErqXrhEx7yijEymoIYIWgAP8T747Fbbh7VmmBvC/mSriG2Rpt4V0n0GDQFoEqCerjGphpunayUylERTwF555hdiYauYHoaD1mNrQE9zekQF7Lbqek1Hcx9cC2ncAJs8hA93psQoo718M+o52BpjUusb0XSIQqMKmYI6OjzQC/ZrChr4DiqJuViB9tz/UI8ihuBFlUNToGo= X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3099; 31:JUvzuOEoIy8MwjvKBf63t2LvvPaR02D5iEXHunt5Y6gvYdUFoYKGquRM8ykM1E7jl4M3dm0/HCI8vIoNSTGJNsOw6prno1wtPpYmNf7LnVB6lZAKSHcsbFdvqcCQ/mMZdte7Zas/Tm4Fbyl72llIj+S+sQIjzapmG2AcYrC/rT+dKGZbYj7XpHOmVWBjx/wV7ppsQClpLsjgHhXiTrvNuaeKLUTqAJcumquMzvymsKU=; 20:MP2rufcME1jBUf/dkZiHdsyQi1XPg5gCM4PvTbZsQ6CAg0QylAoZmxvfqgB70OpSw3o+PpAaQnApJ2/p+8rtzXX2U+DJGLIlUuzXlILn4bXeaMp4tCeq07cW65KM/k9umbDoqxF50nxaJXFryCFPYZsgcjcHM2tQI8cDRQkmuoQPU5m9mk6uoS8vqmuP/SaTICZkbbpLWKte97LgXZRDKDH+Mj1k4tJ8hzDoYAiLka3kOW9g08oGhXVzXjx27qv9B2Hr5sMHoLJ6YnG+U32llG3oL1VdZ/6IbLARLILYdQX2XFyWZcBnx8iwqW0UE81YdNyCW9HOSV2MVph4eLcN/mjLfdePcBOSlEDrcaV5GCCM8pXeV2fLNG0XEL5U1Cfb+8bbaFlcZV9LkSHMYsmVBZzwMNeYKqr8d4Sh0U5Gd1U8/GVJx0JV6D2ESG1h02CtreO8R3wifzHb8DXN8xxzvrHduOHI0AbCmL+XCJRU5VCN50uQHSVhVk0RVO0BCLg9Uu9uqLagLc96jna5bvPWC6tB31iSh+8t9m0YBoXmuZfN1JxOQFgPC+esIl1u/SK5P/AOSgA1hobFXq5Mqx8bKcVt7nryOv9gkrMYVZIUKIs= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(3002001)(100000703101)(100105400095)(10201501046)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123555025)(20161123558100)(20161123564025)(20161123560025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR07MB3099; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR07MB3099; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR07MB3099; 4:E/64SfNG1BiXcPrqSbh3oMzdxrtGlzFMZFzx+laNYx?= yDxKNksHpj11F2E1KH262TMTkncstcqpIaDQ+Sglu5UzLU6ReQcvCKN8nr0ouatekc6K016k+5jlzldCjJQ2qn40Suc/NZfx/xukOGBKKbxPL0u2zLxg5O436sgzgtqmLHWG4Isd9oIhgBgo7DYkuaRoXeUofoDFr5zF71zKWR0wZhnE9job9j0aisqpo7fMlkNcE9dUk1H4r2301DhhnzKVCJPcEbi/f3dRFtQ5ItErmMM0RSqEnin77noVru5bQur5Mdu2jfTvn/nlpNKaoQVvZnEBVI9LI2/CZzw1BvNWkoghc1o2i87pajsyY7a0L+I1sRiaPpsIQfQuGe8HAFCxf3JkGrOUbtdPc6K5T2jMRlD5yUwiOXwxxnfbTofNEt/ezLTL3TmSOeHQ4lKZY2myLDmwMmV15u1tH8UlmrRNQwkIC1h30dcZR4R9JOnXQVQ5NtOtQKFfK+lKq5v76vtfUhJSV3y0O788oaUeOyARTSZ5BAyvc5vMjdnct0grYlolxLgoVbx/czo79I5jH8wpsZEULVQqlCM432LF8CRz36YXrAQ48FPiq2nwc6C5zX1g6GC36ZidjGpwzkUh7dxT7OHFnqufl5xh8CZ25SzhJFwn/sSMa2+0BV4dRT+t2+Trp8lPZcBS+zoM3zh5dlDpjRqjyZVFVJgJdGRJo8EE7gWjkoJfba8itPFA0pkFY7v3t4l0AZnOJyRu7+YSR5ZmC3NLpCEgk8Euc5BBRFupPzKpxF417H86EJbUsonQmQzPpl5DEvehch64l1VzJYW+XAYRSKtn2P8MQVrOaMCXXW4E43ifO/VZDqQEMpqlB4fk6uHiBOMPE4sUpPrwy6OTQUj2cFK8Dxb0GI9mXVLHREhS4p2hGpvGqWFmOz6fX1736q8rs6tOjjJHfj7OXc+4h70Lvm3COc0p9aWXveaqQQZG5XbZ2zYHsi6gVUnhVQGB52QIgQyo5UzQYd1kszMUMxxkmuy0GK3sWA40PND7IFin9OVv03mt2+VUscxYfXYaibK+p+1eygiC671nTRIWGels7DNzT+Ml0otnaAbAQN81PvAwdvCW/uPgxGcAs= X-Forefront-PRVS: 0332AACBC3 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(39450400003)(39850400002)(39410400002)(39400400002)(39840400002)(81166006)(8676002)(2950100002)(72206003)(6512007)(6666003)(42882006)(8656002)(5660300001)(110136004)(1076002)(575784001)(38730400002)(53936002)(3846002)(7736002)(5009440100003)(25786009)(5003940100001)(305945005)(48376002)(50226002)(6506006)(478600001)(42186005)(36756003)(5890100001)(50986999)(6486002)(66066001)(76176999)(189998001)(33646002)(107886003)(47776003)(4326008)(2906002)(110426004); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR07MB3099; H:localhost.localdomain; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR07MB3099; 23:c3s3wklK6PAtyMoMjuxVRw4NebzxH581s7QxxmNEZ?= JCoR3bP5AIRbN7TjhqhhWdgClUYUXUdoDolDyqCWBApBsZBf7QsqILxSQWydkylfvnhaJmb12Vjty23jY3Vse+HCmLhfEfZ80OtiKi/er0SZvSC08cXPocBne9G8+FnlqNZTvzmOgTbvh3Ysse+e8EnZnxIcIGHbSG5cZGnagBsO/OJJTOSKxaliRL1/qWkIolZCrPUdS00iWQjIz71goG3e+f1+5J2IOVW3uJvA01PvZoMkiyIkNQkPXZWLQXaZgesrbKqUvE7+eigLO+971wW8KBLz/5YrT9+pCLZFAmrJRbZs593ZU+sp7XXQt8bZPmzzFoYG715BzBI7jo3vyn6e4Fai1Y5Kps990dTEZweDSXaRljz1iLRhgfPj0k9Ci4kpUUCo8+tSmJEnwYVlAWtZDjzW3Lhe99rzfwtLaF7qkGEyri7X/IDRm0mWGknBIwL6e7M5N7aq+3YXd98WwDtO4SaTGY8X+ump4Vg3yXL+z/GCOsTVeZhJdvij83S6uSbh3Dzdn2u9vA/oSHSkBMXND8W+n5BdnchrTfiic18MuXbfADdeOS2GsagoXGVL1FmC6vSBEugYuz23TG4F1D7Hds2/zpEy+7B3jKmZ26xOmHg/PgOa3eDeWZeJd+iKZbsWScRY/1EhpzqorrN0D/api3j7j0eK5uT3o4/gnj0U6pqMqQTg9elE8xVUBnUZXeO1fD4uDxSLGDNSl2CKg/zMX2Gdorj28OpzYX6ffcreckRNGFIFeul/M+007rkLx1MKPL1gdoO6tDIAdfhL1XizO/kl+4/SnD7gjZGqSQ6FD42V2Rtwzg4DRaqZifVhG+5zVsPeyCUf1towi/vVbEkN1E55ou2tgov1yFTF9vYfJ266TbDnLmc82Sz+ZmWTUt1mW+GcNc6UMhVq+pm0Vq5XZ7mjjxndJvLtgcVw/T11JH2geVj23xQtHldTyXXANJ2rZE9XaMr2pM6EL/17I4fjvxs+SHJ8YPatiOuCIP5Vc8Lelf4jsk6G64sqP0KTBMcxsXfrM83qw0YCnE0NCOsYt7TihmO0Pg/kBAQwVNLQmsB1Gb15vqtJ1C8YKGXQ46URf7HRYUBk8ussvgC/Iq2pC1OT+5dWxii3j61Jg/6yQ== X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3099; 6:rOGEs0rWkTA+VdzUBvR5HqJ/EAyVy6SVHPjLf3UOtomf2vwo3RE/+DQMPlu/o48zBcTtSBYMe8wIH4dYigdl1z2kt5OBXIehOlgx4WijOZy/qLc5ztUZauUCS/ofGHydsny7jbZxciwBEPfOAP/aPdiL8Kgz2+cH4yLUp510QU8+VpbF/bEgrcmkXO4G6Ob1DwykqCY334r5mmATFnUVVcvVdDZC4bCXLU5c6wRmheUH5Fj5MdNYLNp9tc4yPuUYZpeXuXBATRFt1GXZ6i9HTa93IFCNo23CsnY4n7jLA77doRvBSGdz+7aNVGUKZ+SGR6LaqrhEHAekHHMH1tpsp5W82n7P8PszahnSis797JvAFvMqAzMQMS7WilFD2bB1WtIHJ9VG3DJ6tPjpbqx16mW+EX1XY70UBiUSSkgF9muMA54dwA8OGPf28vQbYjCpsf+C4BZDsn6kVjGJpL4kP5iHq8OvRmTiDreYSOwWkCQrkh2mxYejqT0QegGUwVBTaWHf7pRHXwzv4ocnSUNnOg== X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3099; 5:yHdD/YvyXh0eGzRwXmV898MtdfioyKykLvqd7Unua6piwUed/SELndHYkfTyo57vVeQV15ZAKM2JvTzIF2Ict7q5ekIlGirKbtFjwdTLSEz9bcvv9SzBMFq4NW4KpmLrCr0IHkbcphTLax6dctkOiYH2kAiJYkFfOXfON5Pdb9PKlOliDQjABhArelwGFrdqi8AJTeArz0UNjOfBQ3idw6OUKFbkTogeVKJvgPyuPSPxZhoeIKTozjfYJvPjZ64ipkYbNzYeyXSh6MFYzkieQ2asH22DiDJTMMmpXE4v54D8/jLd9FB0tyP4djqUqdZtj4WI8BwP3wI0HZHGRftzEwJGwxJPpJioFV9odEEMgd5E8LwAAwp6HUrYRou2h3BsoeeqUcKTHxEYY8S0njLnHehgCkZ3C2Yarhhi1TwnEiTyP1OXQwAVW3V3CY5wN64rplW67tJucb4AncI7k2fu6LY0OhZl/wwc9K2fGT9vvBln7ml1kMK1Hq3v6nHguZk9; 24:GYbPGtWhy/ejswkRIb1aipQx9w7hq9RBVYXDosfw5nWwI6am8E3iyCnneLzXWJe9abgN9J4Iv/eJihOc23WuqmDxQHy1Djnm5CsFO5vbC6o= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3099; 7:2hCIT6ZYJKZc3nqSaNK2DeQFk4GaLaSwguPC+BnGrS1N6Txk61ubhkiugy4FnveI+RR0+4QDoof94nOZFr1v/dsQD/0OQ7Sxnoxn3Snp5KptqSYkchTQvXt0DdyR/kQszHhsu2euiYURo7+ZhowedgMHctnfjNky3nMQLVrWPS9slWxL53EBEu7iO+Xm1ft4bvnfLVS+lL+C4Otz3ZCDm37YqWRqSQI9/V88MBuWSSeUVEmpNptVNDBDnTo5/vG4wr6tpw69JxloUZ/Ro179ATO3Sl5TXYL81pl57RMCg7hDsZm4IUNyQf0Wh1icU6omTy4m3T55y+7/AqlSbaEYrw== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jun 2017 11:06:10.8603 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR07MB3099 Subject: [dpdk-dev] [PATCH 03/10] bus: 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" Currently there is noway to detect iova address mapping scheme for a device on the bus. API(rte_bus_get_iommu_class) helps to automatically detect and select appropriate iova mapping scheme for iommu capable device on that bus. Signed-off-by: Santosh Shukla Signed-off-by: Jerin Jacob --- lib/librte_eal/bsdapp/eal/rte_eal_version.map | 1 + lib/librte_eal/common/eal_common_bus.c | 23 +++++++++++++++++++++++ lib/librte_eal/common/eal_common_pci.c | 1 + lib/librte_eal/common/include/rte_bus.h | 21 +++++++++++++++++++++ lib/librte_eal/linuxapp/eal/rte_eal_version.map | 1 + 5 files changed, 47 insertions(+) diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map index a9cc3a67e..0beadacfb 100644 --- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map +++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map @@ -198,5 +198,6 @@ DPDK_17.08 { global: rte_pci_get_iommu_class; + rte_bus_get_iommu_class; } DPDK_17.05; diff --git a/lib/librte_eal/common/eal_common_bus.c b/lib/librte_eal/common/eal_common_bus.c index 8f9baf8b8..04398275d 100644 --- a/lib/librte_eal/common/eal_common_bus.c +++ b/lib/librte_eal/common/eal_common_bus.c @@ -145,3 +145,26 @@ rte_bus_dump(FILE *f) } } } + +/* + * Get iommu class of devices on the bus. + */ +enum rte_iova_mode +rte_bus_get_iommu_class(void) +{ + int mode = RTE_IOVA_DC; + struct rte_bus *bus; + + TAILQ_FOREACH(bus, &rte_bus_list, next) { + + if (bus->get_iommu_class) { + mode |= bus->get_iommu_class(); + } + } + + if (mode != RTE_IOVA_VA) { + /* Mapping could be _DC or _PA. Use default IOVA mode */ + mode = RTE_IOVA_PA; + } + return mode; +} diff --git a/lib/librte_eal/common/eal_common_pci.c b/lib/librte_eal/common/eal_common_pci.c index 5ae520186..9d4ed7927 100644 --- a/lib/librte_eal/common/eal_common_pci.c +++ b/lib/librte_eal/common/eal_common_pci.c @@ -487,6 +487,7 @@ struct rte_pci_bus rte_pci_bus = { .bus = { .scan = rte_pci_scan, .probe = rte_pci_probe, + .get_iommu_class = rte_pci_get_iommu_class, }, .device_list = TAILQ_HEAD_INITIALIZER(rte_pci_bus.device_list), .driver_list = TAILQ_HEAD_INITIALIZER(rte_pci_bus.driver_list), diff --git a/lib/librte_eal/common/include/rte_bus.h b/lib/librte_eal/common/include/rte_bus.h index 56eacd0c9..734f6f051 100644 --- a/lib/librte_eal/common/include/rte_bus.h +++ b/lib/librte_eal/common/include/rte_bus.h @@ -91,6 +91,16 @@ typedef int (*rte_bus_scan_t)(void); */ typedef int (*rte_bus_probe_t)(void); + +/** + * Get iommu class of devices on the bus. + * Check that those devices are attached to iommu driver. + * + * @return + * enum rte_iova_mode value. + */ +typedef enum rte_iova_mode (*rte_bus_get_iommu_class_t)(void); + /** * A structure describing a generic bus. */ @@ -99,6 +109,7 @@ struct rte_bus { const char *name; /**< Name of the bus */ rte_bus_scan_t scan; /**< Scan for devices attached to bus */ rte_bus_probe_t probe; /**< Probe devices on bus */ + rte_bus_get_iommu_class_t get_iommu_class; /**< Get iommu class */ }; /** @@ -150,6 +161,16 @@ int rte_bus_probe(void); */ void rte_bus_dump(FILE *f); + +/** + * Get iommu class of devices on the bus. + * Check that those devices are attached to iommu driver. + * + * @return + * enum rte_iova_mode value. + */ +enum rte_iova_mode rte_bus_get_iommu_class(void); + /** * Helper for Bus registration. * The constructor has higher priority than PMD constructors. diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map index 2cea7c272..6c016c82e 100644 --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map @@ -203,5 +203,6 @@ DPDK_17.08 { global: rte_pci_get_iommu_class; + rte_bus_get_iommu_class; } DPDK_17.05;