From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0046.outbound.protection.outlook.com [104.47.32.46]) by dpdk.org (Postfix) with ESMTP id 903F59FE for ; Wed, 20 Sep 2017 13:24:55 +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=hEiUdFUMorgDeKWZv2+np9VuXFCZtXPniPg9Q1+QJqI=; b=hzLea6jNpg+7oWuL+8kihT/F/zOgcaMYbEdN1fItLxJoPtNYhgwpjLo9YoNrs+4BekGH1SJpTgCz8Mn0cZ5vy8mqQDMRR/oQYt9tUUy0qCey+54stlMwmsGak7dPwxVwA2jvFqRY5l47DlN785A/XzbdqwaTUa3UMchLW1SmkOE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Santosh.Shukla@cavium.com; Received: from localhost.localdomain (111.93.218.67) by DM5PR07MB3098.namprd07.prod.outlook.com (10.172.85.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Wed, 20 Sep 2017 11:24:49 +0000 From: Santosh Shukla To: dev@dpdk.org Cc: olivier.matz@6wind.com, thomas@monjalon.net, jerin.jacob@caviumnetworks.com, hemant.agrawal@nxp.com, aconole@redhat.com, stephen@networkplumber.org, anatoly.burakov@intel.com, gaetan.rivet@6wind.com, shreyansh.jain@nxp.com, bruce.richardson@intel.com, sergio.gonzalez.monroy@intel.com, maxime.coquelin@redhat.com, Santosh Shukla Date: Wed, 20 Sep 2017 16:53:49 +0530 Message-Id: <20170920112356.17629-3-santosh.shukla@caviumnetworks.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20170920112356.17629-1-santosh.shukla@caviumnetworks.com> References: <20170918104234.9149-1-santosh.shukla@caviumnetworks.com> <20170920112356.17629-1-santosh.shukla@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: BM1PR01CA0076.INDPRD01.PROD.OUTLOOK.COM (10.174.208.144) To DM5PR07MB3098.namprd07.prod.outlook.com (10.172.85.8) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c6e8584f-c10c-4d81-aea6-08d5001a375b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM5PR07MB3098; X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 3:SxK3ojPM5tdSgsRny4y7X+Jr/4+Cufyr4iWDpErj4zDp4TeemZ2V6SprLAtitUZWSnX422CNz3q9sbU9LTxuolJupGgWB2cF+ep0ow0DjyCyDmDYcqw1YON2YrZmmxxF8DMCs/2xkuIij5gwFl7qmKgOj4iHTGxbVFC51l2BfBPu69dUcR0FR8f5qrC36r1y0oiWGLh6e/zeuf6F7RUiS0G771sznTNHXiQzLIYBNh+wCCyJoatIoAA9AkusxIA2; 25:ihs9K/Y+HH4384j4Nv5VHdkrnq/Fi58/Q+4X+O1OIHeuIUhUkrO1nfs7JbWHaPE5qc2fzyZlcKeOOywwRCBtoleIiw+xLkXzIhBVG0gQcXR1TK7iVYTnsYlLF19k5DtcNt8EMj5bjMY8vZsU6pBlD0ogd+AwJ+e3Dzc9bVRDsov9bPtdTMRHEWgtPMK33DFz4CuDBha0FLHiEefRNsScljeQyKBT9274p8Y9P3ysQeXNaUN0tcb4k1BmXtMwGOUNL/5EiRRNO8GCWiOiKa/SSYiZxJgX28lQqOJrJaX/3nct7grE2Tc3c8vPdkEQ2/tfupbG9BzvLq4C7ilBsIgioA==; 31:S3ZSeAm8jMrUwpvZ9elQqogGc5M+7ZJe6QoCFztZLDkc+W+oSsR38gTRwmXS9Ovmxgf//Ihvb0qTpuXTkT5xYGvZ7lN1UmcoWw42rUMeXz6X899zrgKz8T4zYmKCz3BwrdcS4UOw+Re61bm0MEAVdGPfEU6EnosFYg0e4Mx4iX4MpaUE5sM3q3hj1zxroRI1pirUCHQ+PppH4phYZAD9Q1OCXR+L660exMuZ7u2KWCY= X-MS-TrafficTypeDiagnostic: DM5PR07MB3098: X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 20:O+8MCmpGNw1hMmLicpimEPgMuREizOOwM2A8lKxBVcN0Wnz84F5LlI6T0anT85jrrQ6zdouY3U8HzFW33F/vQsCxhV9/AI504aqBHld1JvgyVefeQbE/QDVYBo4YuhwY5kHpgkviRbXUK0tnnI2HfZbm4gCPOfk3LO4Hx7usPhsM0I2OjRqZ7Abi9dLnOjbeKA/LmMyNu2X92X/LGNuuf0ojlMaAdaupT6DFJhT6mnJwvg/iQFlTU+SWJJTC6xIu86hlPdgSvbB/Aygwxp2ibMy8Vd6DuDhObTXYS+rAPR5pF1Hte39o6vAd/7O6j3fkC8r5r2/0/bI5UmQIEL7P5ag7s5hqjRZrhs7inrprzxqc6WRr3m887zbl9XhiO4MG5uAKOuqlX14BgTlaoM0XmeNRI0gdtm9hgL2wjUpWh+Lu6PqrD/+dQ3oXq/OU1V4As+8cyF9/rMyfdtkTD6SWWIuzD4XvVtvhWAs1RSOvzcXKEy1hlmNR/mSWCU6P6Joa5DN4Ev7/ADH3iIdkPVAN5GNiakPyxg9AcvTe7JjMJhJ4H386A9C8JjRRmTch/Lcmcp+SjuxVpFkGZpF5tlTi3dasXhv5CArYBYanutZhAOU=; 4:+/JuNodTb07TBcuSKIF1eY2LD4Xwy3DyaHRxC/9BwvECO/YYvWfSOjY/07QTreacHmtkVxHvrZqPmyai3Fe13WUA9Ct+7lDSSmRh2q4qAgfVbC2b7VfNEx109Nm29RX/ieGWJApCwVRfxzZTtML8+ecCsWDaaTSnN+ztWDYjoysQNCg/i4OKdwNdOSXAv/Iz5gpYMmeBYnpocsyyjdO0j8lzTxokaexLmf2Vdt14xY1WsDyV0HD07bCnnxLYgsuwKoh0VAC0jkhsy3YiVj4TwiJm1zWzV94QHKEuQz7e4YY= X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(10201501046)(100000703101)(100105400095)(93006095)(3002001)(6041248)(20161123564025)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR07MB3098; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR07MB3098; X-Forefront-PRVS: 04362AC73B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6069001)(346002)(376002)(189002)(199003)(66066001)(3846002)(106356001)(8936002)(7736002)(2361001)(33646002)(6506006)(2351001)(47776003)(25786009)(105586002)(53936002)(6116002)(316002)(36756003)(6486002)(107886003)(68736007)(5009440100003)(101416001)(6512007)(81156014)(81166006)(97736004)(4326008)(50986999)(76176999)(16526017)(8676002)(2906002)(16586007)(5890100001)(189998001)(305945005)(478600001)(72206003)(2950100002)(5003940100001)(1076002)(48376002)(50226002)(6916009)(42882006)(50466002)(5660300001)(8656003)(7416002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR07MB3098; 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; DM5PR07MB3098; 23:pVqv5TKjHmD70v/x+EkRwdBLnFovfpeawjytG5NsT?= =?us-ascii?Q?ZqmjOcEPaBHSRGcnllumL7GYqamvkd2+6F8bJwfd4rq5ccA7hd8+Lh98jaSs?= =?us-ascii?Q?WkQ6fh0y4rwgfdCm4Y9PlxF0jMfCvqQu+tJ7JIDA2/iMF2UdYsB72NwWqnIY?= =?us-ascii?Q?HidvNYqzeVbNqa/fwy1rBTtHLUysx4/+QnDxcXNa/UPxo1qrZavQ8/bW9XAw?= =?us-ascii?Q?sge7up9DomKTjZAJOY/NWmlU8BLSI7u/l5JTJnHXHW895vJg44FgfoGvGP+t?= =?us-ascii?Q?NFS6rvBAeIiHtJeRBnCrQDlxHrb9oFGNgT5dVCP9r7p9fSjMuqTLbpUANrsq?= =?us-ascii?Q?qDun0YPwUwytFJUqqA3SVFAFsrtzbyVh3up6+qJ+VYVFmTrV0u960To1SNqG?= =?us-ascii?Q?jYBslFeGBO5Lp5WD2Zvx6vLPjkvT2OWSCA562b26meYir9pVw1YMOEidIzTa?= =?us-ascii?Q?4f19JNowU26DM1n/fVdZmGbkJbcfloidxGqplIx7fXZUyo7vgwYwTbWuLtIS?= =?us-ascii?Q?XOtTolPV9z8an07+/l7vQJrgQQkQDbZU/ifmnqlCwSqSWdOHOHg4f2rC5KON?= =?us-ascii?Q?Ue8l3K7aAeTCxY531fO7gfuKZ74BvSfyetcE/CuSRpuUmWPnmS+DatfDGt9k?= =?us-ascii?Q?c1CJgnq6xrz1htD3ktB99VXJI3CQ8+PkNF+eLsJZRS8Zp/9945i6hr11mfDw?= =?us-ascii?Q?lgYqFi5yLcqcORdjeUTazQZSOM0r46jkX+VQPp8TOMNUR41GVEcoVtNh8O5+?= =?us-ascii?Q?kmS1qXa20ji32y/bG08jzuPKsx+FbrRNIZ+I4Ux9g4zSYHqeiM54oHezmf3B?= =?us-ascii?Q?zQFlvIJeJcbNXvIBQmPZwsrAzPrxlFrn3UB7XHpOMm985gg2kFKDCx3uUXLF?= =?us-ascii?Q?h6LverQGdPbLSMYhtHOz8p5M+Jrhaov2pFH4sU3Lb/6E30sx+XtzFWnUDDYU?= =?us-ascii?Q?bZb/dwHMlsPFCclh3jNkXSiihDzqkpQOpkJuvarNdjyp7e+jmX1BFdwFjFY6?= =?us-ascii?Q?YqruDu0wGXoiZXMEKfzm9oxCeKCGVXjkNvzuWiJz+vNpqGT+obovaDZpcTz2?= =?us-ascii?Q?Pg9B9PB9rZ79iTy3YrLOv5CPg8Dn+rJQ2h3pEISDIgbfDaU16k5o0tAJ5idk?= =?us-ascii?Q?f2WgdohpH7sLpZ7PAAAV1L+Imp9QD2ZFtK32N4YwBc3HuY2CeyKtClNvKk3q?= =?us-ascii?Q?9nLSg+lHD9qDwTspYlMYYFq8aQzdJikLbQhS6PbDl52LuDKsjJ15rs/91/Ka?= =?us-ascii?Q?7ufOjV7+nxrjF8JmvU=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 6:qHIa5ThU9a1JxuqJxTOVaK+dhSjmyQtbSzM7UhcuMRdDNPTWvx55UKpOW43UxPXHQJwxI2asg7bttw8RtzbB16Ln0lNagrpVVbL3iwWTpwDs80uvvWj1U96tUIMQjTIpKrS4IrkoBumAvv/Jgcq12JA9LaV8tXj7hko+MgOR4HFuWStNXTQQI1Vq+RPSyY6DWjKnXMEerycr9vykPzA3CUyLyzsAEOjgHEc+aooyjHCtYNjrMBXPqhQ4PwPS+Yoj+ofbVO8jrmUf+7Rrl6rv3j6aRKfgHCFlY+22YL4OKvJ7K4QUUwp7vbBHTNdyh2EWCZjvG+gBU7M4LKQwx+AJWw==; 5:FGM6bk4KWCQdMvGPY9RREWXcYHT+JUgLZdJgZ0K2IM7DRc2ezmsddTGLLTImVhkOuuAX7/8+VBYm9jXoQLfUEztLzlTIngR5GoJpZFpZdvszG2SN+S1Tyd/DrY+8O6LnOwrWo73Fv9mE8A+MNIlVVA==; 24:LEXFQDTpmTfz9NuwT5+LwAQ0S7kDwVhwx2nJwB88XvZvsYjXJOr+0m/hxOUFIAlEZXw51iJuJVFB5LcbuxTOqIDoDPMI4Et8C6xqnPerwHM=; 7:4IS5OOzLd4oA67GN5as7VX3LiVe7UcPQvMTGacFiZRa7PSsuoLG5VF5SzeUL1pwzjOIDmJvDZeGzkzp9LnfuWNs9vPbGbAB51CMsmnOXNOHZcj7Rwsl1bT1ctijq+dIJ26NONOjXvZAA+jQenlzqrCwcgBuETeB+6yPujQH9FKhgJ1/p2aDjQu3YKQE/pN74GNUnURjm6DnzCD11pGVUjJOzU6ufF5e0eq9MQC1GvNM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Sep 2017 11:24:49.1479 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR07MB3098 Subject: [dpdk-dev] [PATCH v9 2/9] 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: , X-List-Received-Date: Wed, 20 Sep 2017 11:24:56 -0000 Introducing rte_pci_get_iommu_class API which helps to get iommu class of PCI device on the bus and returns preferred iova mapping mode for PCI bus. Patch also adds rte_pci_get_iommu_class definition for: - bsdapp: api returns default iova mode. - linuxapp: Has stub implementation, Followup patch has complete implementation. Signed-off-by: Santosh Shukla Signed-off-by: Jerin Jacob Reviewed-by: Maxime Coquelin Tested-by: Hemant Agrawal --- v8 --> v9: - Added linuxapp iova stub definition (Suugested by Anatoly) v6 --> v7: - squashed v6 series patch [02/12] & [03/12] (Aaron comment). lib/librte_eal/bsdapp/eal/eal_pci.c | 10 ++++++++++ lib/librte_eal/bsdapp/eal/rte_eal_version.map | 1 + lib/librte_eal/common/include/rte_bus.h | 10 ++++++++++ lib/librte_eal/common/include/rte_pci.h | 11 +++++++++++ lib/librte_eal/linuxapp/eal/eal_pci.c | 9 +++++++++ lib/librte_eal/linuxapp/eal/rte_eal_version.map | 1 + 6 files changed, 42 insertions(+) diff --git a/lib/librte_eal/bsdapp/eal/eal_pci.c b/lib/librte_eal/bsdapp/eal/eal_pci.c index 04eacdcc7..e2c252320 100644 --- a/lib/librte_eal/bsdapp/eal/eal_pci.c +++ b/lib/librte_eal/bsdapp/eal/eal_pci.c @@ -403,6 +403,16 @@ rte_pci_scan(void) return -1; } +/* + * Get iommu class of pci devices on the bus. + */ +enum rte_iova_mode +rte_pci_get_iommu_class(void) +{ + /* Supports only RTE_KDRV_NIC_UIO */ + return RTE_IOVA_PA; +} + int pci_update_device(const struct rte_pci_addr *addr) { diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map index cfbf8fbd0..c6ffd9399 100644 --- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map +++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map @@ -243,5 +243,6 @@ DPDK_17.11 { global: rte_pci_match; + rte_pci_get_iommu_class; } DPDK_17.08; diff --git a/lib/librte_eal/common/include/rte_bus.h b/lib/librte_eal/common/include/rte_bus.h index c79368d3c..9e40687e5 100644 --- a/lib/librte_eal/common/include/rte_bus.h +++ b/lib/librte_eal/common/include/rte_bus.h @@ -55,6 +55,16 @@ extern "C" { /** Double linked list of buses */ TAILQ_HEAD(rte_bus_list, rte_bus); + +/** + * IOVA mapping mode. + */ +enum rte_iova_mode { + RTE_IOVA_DC = 0, /* Don't care mode */ + RTE_IOVA_PA = (1 << 0), + RTE_IOVA_VA = (1 << 1) +}; + /** * Bus specific scan for devices attached on the bus. * For each bus object, the scan would be responsible for finding devices and diff --git a/lib/librte_eal/common/include/rte_pci.h b/lib/librte_eal/common/include/rte_pci.h index eab84c7a4..0e36de093 100644 --- a/lib/librte_eal/common/include/rte_pci.h +++ b/lib/librte_eal/common/include/rte_pci.h @@ -381,6 +381,17 @@ int rte_pci_match(const struct rte_pci_driver *pci_drv, const struct rte_pci_device *pci_dev); + +/** + * Get iommu class of PCI devices on the bus. + * And return their preferred iova mapping mode. + * + * @return + * - enum rte_iova_mode. + */ +enum rte_iova_mode +rte_pci_get_iommu_class(void); + /** * Map the PCI device resources in user space virtual memory address * diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c index 8951ce742..26f2be822 100644 --- a/lib/librte_eal/linuxapp/eal/eal_pci.c +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c @@ -487,6 +487,15 @@ rte_pci_scan(void) return -1; } +/* + * Get iommu class of pci devices on the bus. + */ +enum rte_iova_mode +rte_pci_get_iommu_class(void) +{ + 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/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map index 287cc75cd..a8c8ea4f4 100644 --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map @@ -248,5 +248,6 @@ DPDK_17.11 { global: rte_pci_match; + rte_pci_get_iommu_class; } DPDK_17.08; -- 2.14.1