From patchwork Fri Oct 6 11:03:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Santosh Shukla X-Patchwork-Id: 29798 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 223131B2AB; Fri, 6 Oct 2017 13:04:28 +0200 (CEST) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0045.outbound.protection.outlook.com [104.47.41.45]) by dpdk.org (Postfix) with ESMTP id 920C21B2A5 for ; Fri, 6 Oct 2017 13:04: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=4lblIKcJngudoRcNFzdMLjxMqlbEqo4M4NGnfqpRE7w=; b=R/N1Y70BC8YhEa/UzEKFiz6t5JLCVBtWSFxeVmr9eQPU2C7Fvu2BKZGhWf6Squ9ZwZ7LweSby9l5oTvko1/SMqRekGx7xGRV+3Hb7lmjy/3dZGJ/xS6prW7/mZZ3X6/NpSz6NAOdH0ULMRGPsSRYoVwX0c2qnLKLBfmAfkoSEPg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Santosh.Shukla@cavium.com; Received: from localhost.localdomain (111.93.218.67) by CY4PR07MB3094.namprd07.prod.outlook.com (10.172.115.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Fri, 6 Oct 2017 11:04:18 +0000 From: Santosh Shukla To: olivier.matz@6wind.com, dev@dpdk.org Cc: 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: Fri, 6 Oct 2017 16:33:39 +0530 Message-Id: <20171006110346.13247-3-santosh.shukla@caviumnetworks.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171006110346.13247-1-santosh.shukla@caviumnetworks.com> References: <20170920112356.17629-1-santosh.shukla@caviumnetworks.com> <20171006110346.13247-1-santosh.shukla@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: CY4PR1201CA0022.namprd12.prod.outlook.com (10.172.75.32) To CY4PR07MB3094.namprd07.prod.outlook.com (10.172.115.8) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0db72bb3-7ace-4818-d2ec-08d50caa00dd X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:CY4PR07MB3094; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3094; 3:sa11x+v4lTLK3VFs38JaegMFXoVXsEpHtg/LklIeEH0+hKKYI/08LMxgeWKJegv7seR6wVMjFz9qRiF8VnbVh+UCxHIth28Wmh1gqtRZ1G7Sp1/BC0nXnMvjashRNOmHjRjZq2H66Jp3KpUDAIR4mp7cKMbNHZdgAuadjjYI9z0JSHmCwkxT2pAxUZ32SyvmZGUL7UA6Iu4aBfWrZ47wWsSVy8QLvmhQqi29heBWLR+S50M1mIQEx7jDN86dM4wS; 25:blSKpFESiieeAEncxvgNzZbiJL2bq+ggzCulAqz7dSTuZRe2vG45UgG4MaVWUEOn3GavfO5jRTM2MTEXKcZoB+XVa98R96DywbxKMA+WxA4K61J7EocNaeIOctjqK1Ir2nJ5/c4Yyv53TiBlpRNTzroJRELkOfppIpVyS3EWujVY9E8qFe2mvBeBoLSE/8pLPvLdSc9UInwuP1F16jfM2Zwk5sTapoCO9g/81/vCEQqvXbHabvA9+LmliGAYuPobOPshITrHQu1rj9kMAhMc6+NhcvmwqKDKODp7wvop+E1g+lqa865hvWdeSRHLF3w/OS3nxf+Ds/0ot/1m+LyHXA==; 31:rB7XmbNhcLQBnUnFJfx7Iy2tUIskpo7/MxTRyqKmrvSu5yDHEKj/PeFBmXb1/nU/cPGDUeWYRJR3TRP1yRhRESCGJPKRxKIabeUV5HNfn1ipOwo6O3cCIGbdCDlDNfGedycWRVdDBVhqSuj1aI0v4MF19XWdkghCnHOy/CVTz1lDtdS/d7DQhkleeH5bMR0jEzcJQ0mYLA1LxItKcyYGgGDbBL+z+wvNndkgGvKFwIY= X-MS-TrafficTypeDiagnostic: CY4PR07MB3094: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3094; 20:WCCyxmvtYznr1kfq5mLHQK0WqE+MPyWVcMJWjTkshpZSzSOMUGqTvH97kNR8/WXQyDyH1WdJYqJHMEyUYU8L8MUql4m6sLImux8qNa0ddkrjz56WbID9U6dKPZhEuofMJGIjGAI7rn71zXb1vv9ncFipcyVfMsHzUjlljIDJnuLffp9ysVKMADuTnrWJ6kZJ9HbvsdHr2lfyi6ZmFBh/E22xxRNSWtieyPjJ3HCsAx7pCCy5aAKG+P4/MB1Qq+7uziXT+zExnNhNF1rFeeNZWSGpPgrQup2dEN3sSzdXsQF+M11LItgoY6o0dATzEHGGI9yj4rLikpx9Hw14SB66IXeb66UMaY1j6SnsLiNyUYJ7EEld429U9w/jViCgFcFBd/Q7S2c7lITe+enfBZ0aoTlKDKGWVftXOP3/IJdVwNnAQAsdA0PhI291pYVSI4X9IIQ0EklA2JpEq16t/OECvbZjPH3zud7GRljvx+zuuzD8XE/SqDbkcvNFFZMYaTooTL2KyLMTRRpZMxtwSO/tamyo30vz7bimo/jL8zJcyujyQqt4YHraMd7vQsFfHAdejaukoRWKR6GzzY8B35fC/KPiLGEbIB0Pq9ZJjlvTs3A= X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(228905959029699); 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)(3002001)(100000703101)(100105400095)(93006095)(6041248)(20161123555025)(20161123564025)(20161123560025)(20161123558100)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY4PR07MB3094; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY4PR07MB3094; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3094; 4:X5UgIL27aj5HA2dEkE7PBPuF+6rGs7of2KMAd9gJ719anj7bLnPcwSQ97m0PG/gLdROeJ8HmjJ2leZdpIDy0xjJHjoMnG+BCS1USkZeJMEF3Mi9l1mEcdesslVm8OAs+LoRLwoHTokmqO4yP4teqlTKCt2MBKW9xSMRZ2PrYvr0/cdUEASLPzfZlhuA1Mk9WF3GmFLUtySKdEY4tR9xhjNfP2+emsa19DwHL/SK/SPSF/BESyJR4GWEEEUsCLaPeCqBoG3+35z1/lR8msbLOJWuB2y56SZFuoExQKfkiICT9xjcy7dejhK+MJWHHF89bZXbIfVVU9zYfFUuP1+w+dQ== X-Forefront-PRVS: 0452022BE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6069001)(346002)(376002)(189002)(199003)(97736004)(2950100002)(5660300001)(7416002)(105586002)(6512007)(53936002)(106356001)(478600001)(6666003)(50226002)(189998001)(8936002)(25786009)(81166006)(81156014)(8676002)(107886003)(2906002)(5003940100001)(6486002)(76176999)(305945005)(8656003)(50466002)(36756003)(4326008)(1076002)(68736007)(48376002)(7736002)(72206003)(3846002)(6506006)(316002)(33646002)(16526018)(5009440100003)(101416001)(66066001)(6116002)(47776003)(5890100001)(16586007)(50986999)(42882006); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB3094; 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; CY4PR07MB3094; 23:ogdIuaZbanmpz5+609Mmofha15Jdkd3tqgtCKqh0J?= Kbc0dIaHjXg8pnEKGcZBWsxbIUXdUp44PVgNs8n0rh/p9zJB+vLY8rN8PPDr2hMiFcBk67oNmFOhGAI14ecwmlVtVVANlNp3D+9DZpbvZTAGfW3Xz3s8jjc+r58pUaXgt0XjJW3xUvxXb5iqPqOFA8VWXeUiPLclq2NmeZM6xcHzv9jb5Fl0qLlPdJpU7IAI4MucMjmjch/sVf2hTnuwg6a1KWHwidPuumyaUF8ADV4ncR8GKbojWZ9XMY/5ntP9HeMFTz5vNfElMyxCEFeUlUZMCy4hx+HLDKpPx3dZr4NDbmsk774vZXsAs0YUK6MChKaJFKIYsTAfZ+6EOjkr2OxCTIXddHJBebUnCnzwd2MzcstffhwM3IL65i4feRIkxbQJyQAzhaMniqQTeNr8OZVtR/Q0QFcAywZYW+UI7QVnUeCxyM5gPcaijKspuw4x/B+I4H5ygPgIhIW36758vZThvSQMweulbgoDLuyLlt59fkhHONf+xIzeB5Z1iJ8dLuSQ1UTlBL43bazh+1J/vIbIW0Ciyh4sG/9Sw276j1U3LxyrVDEDUZ4KpQcbugMB3D8xeJJ8Z83457YxhfD55bQ27UzDT4PpZ2FyMaL/Yd7xiwnEtFLFBFEvMwFaFsHbPoOGhotgr89Gzr0fJylblgDF9CwUPOY8aJfzqhXTisgaWS+YNNId8iQi+TZqVdmiI+b0Zpi8keWR3d6BBqWNLdOGZi9YeNteyf8m5Qk1GjK13aA64SrUocYxRgIjb+bIbl4kT5z/hlha8IMtzlnwoULLHUYed6I919W47KyC/47OYo6UytyZnoHm0NAUmxmp6IU8T1gC8D3mSN6GIaeUyp3h0GlPHMRowi4MblEyGRdcUfKqGkQlM/CEvLBxg1PJAsXD7zrTprchzu4YC7ctB2ZKToEvZ5n5zpNGj4JKGeqeFasBbhy2yZdNx0N8oPl+WuY1JlNamkgHk1ADNlQYTRhU6QDhKDqM4w+xZO3lxYihtlJ6sYZ8WKdTfJ10t3isipnmtxOk1YG2ig5pz6Vxr1uoNSKmgRQ5+QBOIJKXTDUe362kb9Nib0vtqqJsBLX743WXQxRhMKO9q1QeLnZQl4O9uPGnfYHRRcjEigukwL25cU1YrWJt9Z1hRO0sBltYiCqnzF2WVuvfCmeQZPziSzvlDiljBE8PhyLqY2hy17ZUg== X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3094; 6:h604ZHsN3NnthEmyyzwnGLhK8M0AkCUdmc3z+uhtJMHGn2FecC/Kg15ako8t0b5rqIx4TPxw9kprJOlpFaiZSdItwy/+dFfDy1CLtXAErty0cOIPOO5/efRArr0IC3xUiQ9aoxjWtgOeTbDMeo3VXszVyKNmenobnHpobTYRI6UCmEs4O1VqklXoKaZVf796paBpdB+nOMjgrS3hWoai8/313S4n+YVThiWozS36Aw9G+hK59J6GfgaqIVYAKbhAhgUv6PYkkqxhUT7vivc0vr7p9G7Daz3amxY1uMCOtoLh2EgMRTngtnjRHiZOg/PEMAUl7zzLW9wr9hx72qvcjg==; 5:lF5zMswQUrWv3XAJgyWAUO8vtuKBAnP7+NnZgWOdSxl/+dlAF1ejTtaHvMtG/nCDqhmbJCiA00U29al4DA3+jK78xCckEKiIlSIaCupXDpf+W6WDSTMy5muXo/1YmEdGmVhgvf0PA0EkSTmUbYDPZA==; 24:FaBTHFKRNJpLuAGXeO8Rux7hmep5HIcxhpNdTEAX4LdL5RxRVWc+fm+ABwDK9LWcyLO4WXpoHLJuBrd0II4i0FQFU9dmugUQMNrD5YgesEQ=; 7:LITK/WFanNVvP97TcMzU0WB+4YKNdVc/ff9VbZniTL0mdjBL2Yd+WpWTqvFx6KnYGY5Ak8q3JUS9a7qorC+szd+9W0yx1+IMRrGaHL45z10SPHjKoPjniLFYIQTeaOia6CPmBvDq0heo06C80DRF6DuG9hXxywgDQlQAl4Sq6bAialKxz9iouo7HL8ASdQkksDBW89kdkgTvUdvO5f4WDycvm3wtjk9rJ1KIkLo4kls= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2017 11:04:18.4116 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB3094 Subject: [dpdk-dev] [PATCH v10 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 Reviewed-by: Anatoly Burakov --- 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 | 15 +++++++++++++++ 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, 47 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 8f8b09954..e59c21659 100644 --- a/lib/librte_eal/common/include/rte_bus.h +++ b/lib/librte_eal/common/include/rte_bus.h @@ -55,6 +55,21 @@ extern "C" { /** Double linked list of buses */ TAILQ_HEAD(rte_bus_list, rte_bus); + +/** + * IOVA mapping mode. + * + * IOVA mapping mode is iommu programming mode of a device. + * That device(for example: iommu backed dma device) based + * on rte_iova_mode will generate physical or virtual address. + * + */ +enum rte_iova_mode { + RTE_IOVA_DC = 0, /* Don't care mode */ + RTE_IOVA_PA = (1 << 0), /* DMA using physical address */ + RTE_IOVA_VA = (1 << 1) /* DMA using virtual address */ +}; + /** * 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;