From patchwork Tue Sep 20 12:41:24 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shreyansh Jain X-Patchwork-Id: 15973 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 11DD78DA7; Tue, 20 Sep 2016 14:42:46 +0200 (CEST) Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0050.outbound.protection.outlook.com [104.47.34.50]) by dpdk.org (Postfix) with ESMTP id 1A0138D8F for ; Tue, 20 Sep 2016 14:42:42 +0200 (CEST) Received: from DM2PR03CA0049.namprd03.prod.outlook.com (10.141.96.48) by CY1PR0301MB2010.namprd03.prod.outlook.com (10.164.2.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.629.8; Tue, 20 Sep 2016 12:42:40 +0000 Received: from BN1BFFO11FD023.protection.gbl (2a01:111:f400:7c10::1:190) by DM2PR03CA0049.outlook.office365.com (2a01:111:e400:2428::48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.629.8 via Frontend Transport; Tue, 20 Sep 2016 12:42:40 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none; nxp.com; dmarc=fail action=none header.from=nxp.com; nxp.com; dkim=none (message not signed) header.d=none; 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 BN1BFFO11FD023.mail.protection.outlook.com (10.58.144.86) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.629.5 via Frontend Transport; Tue, 20 Sep 2016 12:42:40 +0000 Received: from Tophie.ap.freescale.net ([10.232.14.87]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id u8KCexse006559; Tue, 20 Sep 2016 05:42:37 -0700 From: Shreyansh Jain To: CC: , David Marchand , , Thomas Monjalon , Shreyansh Jain Date: Tue, 20 Sep 2016 18:11:24 +0530 Message-ID: <1474375296-26078-13-git-send-email-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1474375296-26078-1-git-send-email-shreyansh.jain@nxp.com> References: <1466510566-9240-1-git-send-email-shreyansh.jain@nxp.com> <1474375296-26078-1-git-send-email-shreyansh.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131188489606010662; (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)(7916002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(356003)(8666005)(50226002)(5660300001)(575784001)(229853001)(50466002)(50986999)(48376002)(2351001)(626004)(86362001)(97736004)(76176999)(7846002)(92566002)(189998001)(5003940100001)(110136003)(104016004)(5890100001)(305945005)(19580395003)(105606002)(85426001)(47776003)(586003)(19580405001)(36756003)(68736007)(2906002)(11100500001)(106466001)(81156014)(87936001)(8676002)(33646002)(2950100001)(77096005)(81166006)(4326007)(8936002)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB2010; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD023; 1:m1/J0Fb1PqOqNpYUPTeJthau0FfqYJei+yk3f9JmfSdMxRIf2xWdcdVpM30mqfvrZWb+IkfydEosFNmU3PduURiUhrPS8Z8SMM85pX5vSbxVo96Lhd+DpBESpyDWwijg80FlGt7+Nian1NAq2rxetqeIJVN8Jn8gmA4Ig9FoP+dA9A8/LTVoeYkpJa5YguXIHcPPOZrso2m5ljKAyT0IIyx6l0l1o6TTT4mInbE+F5TTjTpZd7KjJvZP6rtml6gZAuuHmXYV/zK1vfQRH/U9Ok1OkiYrkds/FyMj3iEk38i4krrjW+xqLID+rJG84CuCTmmWdAkpPfksL1xzKqbqwkN8PYTQ9q8hwroWihL9/QbBStfnsxJi5LWOS40Jmw7Q4P8nLtj+5PA5UWJjh785SUlPbqvT5afbeLOLbQfA7mgAwLwXkMKWv2AORDzk4I9J3Gw7TDJrTdbVqh7oXdGT5nFIhn1MbLkCsJyq1vycONOma48yMIDSb5IoFwu6hKtPdmw35ulv35TrjZQCHRlgyA5LAb9zreMZpC9fADSeDBhjUXhhiFAuWexs/yHLGnJojNvK1fRMP0mfla+BDiOGCldjO9So4HjTba1J0XOWF4a3Qkeif9fOHVS+FmNFfBileJv9IKo5LHXrz0CuGH0ladqOQDG5zXxYw9/RZ2oNiI3K3t0fPxLOa32HQGvr360dtprvnMo8/rOMXX1toUsvkCQKeYZdyqCmC4NuIxYc8iQ= MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: c8951e3e-b81d-4514-b5c5-08d3e1539c0a X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2010; 2:DB+iC2BnIhld2bos4pp0vtfP3SbDE/BN/dMTGz/RBPC6EBEFeMyTnXI4ODgqz7I35IwE/lqzAgsUZqK6Az4wPI+keyUIRNddLQvConuryUewXE+Zs9VpxPX7vgMcLnwaDelB9eg7PGqomCSp97MEcy+CEHn+E8Y6mW4ANXdDkY16wz4Wt1/G/R+WRBXYIVBV; 3:PUMUZ9OeBRb+E2abv0TXWer0a8DYssrXJesTUq1PDLQvdHg/D67eDtlTGQbOQ+i5s64qAqWZOErlUrT1hoSnFZGeiKm7+vZuuvKFzHkZ9v2KYcWfV/lX5VpcE+QKshezdBEcEI+eTmE/VmE/dG5D6Z5ri1jod2gVMk5MCn6lHBGhxn2ufCm/+rADyLK7cpw8oanTCppGxUdG9Tv2ItiFYnK8UP+lplACi9KVa5FgQ/w=; 25:Dr0FFHfrcE7dSpMfD/KbfdAm61i37L+GLe0hpCnFc7aAT6fR2GXw/SAUF0fB6gN+sIRLeIUY6uKCaXOfFTC6wY6ykrTKNCfWmGMGXuJieOJ7UsqJ4ZdKTkipoFw/mxWZ7kG90n2T2ZSetn4zGyP5wha8hc7inFuJmUQ/C05WJiVbzsLCyUEATC6sYrAPXCUzKo71vxJNISw9a9Gei0mrTDQ05UhEkGZM26NGZwpdCRROHf0aW+mcsJWLadAzL2KE2b7iV6fK4MlWxD/XYytxZG2HvOt+rMyILo+jAAOMVvy01jPSz/JPdmgdR7g5XL0eRS0ORs9rBApBPNg6d+QEKuOPJ/w5ycKOu6YslRd+ChX9NUydi5D9EfBN4cbrNmGhCvtwHRiYGmmOVmZk7xMGfwwgSql3tYs11Egmm6QLyrs= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0301MB2010; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2010; 31:uBWzqbf3nzVYUEZg9QkJ1LWAD6dQ/uzkUMwbVtPvruuLRjPSUfGG0KgTSPVI6nonLpncLpCh4C3Ck8MB3YM83LqaEJ2k+LocWLxtibZvQUPIRGki1FvfCdTzNbaBbHxAAf3H5Dnj5wX8XB1QkWZu/R3UDcLShNCg898PdiH9RaM70HFmg4QFeekPcoGbwkMLblzMjTcRdavT0c6v0GhbQkRtktly4x/9VC3/HGdHmhQ=; 4:Zho+Iy2rODJ/ET611FFxYhfiVC84zEae3QcJdoGkMQZeVxapiKlACXW64ft1Ld4CssvmB+lk6079Op15eARWklECUyuRHx6KMPOCdxvbBKVfqeMckdWQVIA08viKOWeRpuOJrZymW6bVcUDp2nsaV8vATinUkOWeXoyPBXeibxxdU68x9/5VX0D12MCacLqnNnFJWJFvkmbawl58gr5E4exWnjC+HcjKW0XCwwrJirFoQDTdAATqf6DV1A0luS7h02Iz33V6OCJJNJoZaW+nnMySW2mzV2ub6VyXNyZWpOZpA+7lNLp9WkeuPz4dGiNCx6G4gQclw//NWNaV62gY/TPlPmuvYmyDw1jNAN6JhM4/fgL4t42HNxXzl7h0yq52eqw/ZgDxg+OZcRli8Vv4mSVY+qki32ClX+QlGcchQK3d7rvPUBidGTUfX1c9jaD436lSMkqZWMcmGpKdFqmgK2Eysf/v2+Urlvlc2by7OOV7q6O73vHttNYLJJ67ruX8c/cKVUrT7O5ywL6F9IosZOVo/4/JWbBeh3RLe9VO1ig= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(13018025)(13017025)(13015025)(13023025)(13024025)(8121501046)(5005006)(3002001)(10201501046)(6055026); SRVR:CY1PR0301MB2010; BCL:0; PCL:0; RULEID:(400006); SRVR:CY1PR0301MB2010; X-Forefront-PRVS: 0071BFA85B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB2010; 23:Eg7ThjOPnWOtd2ADd4pAbb0dOuIdsHAfncgFv/l?= =?us-ascii?Q?Loa0gfmZT2z5bW8KPBdt+Tg0NbuMqTrOgvXZUgkSSa2LQWzmntuO7S8KuWPB?= =?us-ascii?Q?MpQKOSG4j+sZcSBO1A3hb30PLZ8cQTALhIr8DauY0pvG7+KGHK9LSxmByOri?= =?us-ascii?Q?E1RZWg/EJimg5MUyj60XxTQlJzPpfSFDLhl3ug7yLfeg9CrnEgd7WLw5rVQF?= =?us-ascii?Q?iCWrHSgTWxV1ExJn6QlmtP7OtjDBhxsGs1ni8/BYQrDJ6itinaNBUTFlUW0S?= =?us-ascii?Q?3wgHpts7mk5eoqvhkuulidYEyWkZeZtxu0RJ+MN7vV/gcCbTkJnClQoorNUH?= =?us-ascii?Q?eDwF29DdHPfbBsZ4AQciHCvwYDxXH212vpinmHLsxp/0KG6uTUBuR+R0lrXw?= =?us-ascii?Q?jYGt02ozh0I31SG+DQRZCsZmaPI2R4olMq7pmm8qRaQQv2lG1U600kFD3fgo?= =?us-ascii?Q?2FwVWhuiZBAMe+v5Tp6AkYlIZXuVrJgDxQ5BUCKxqeWJVMSMUWH284AY5lfZ?= =?us-ascii?Q?jTibGclijrmXu3jse7O3Pa5YKif+cDoDOWJ+go1T7jcctr0VEfnj37YGvHXR?= =?us-ascii?Q?68wXoB4JZPuMJd6KYFlMWc0Lm1Tx2bKDqJCgjFxYIhqO9xOqt1Dc9c6XxMo7?= =?us-ascii?Q?WcadpXVDFv27IXppLqsj4VvYBrwrQNI2CfLoVOUhVJSLs1H18QrXKgTdmalP?= =?us-ascii?Q?xVugEsn+H6YGprjEIAenn7fp4VZSqzNnOSC93NuZp2ISbmqd0iBicLS72Gyd?= =?us-ascii?Q?p4X4gN2og1wCtE6GBGIc0pzVXt3lkOQBjWVFMyPa3ej6cl9gtZpCVtbtYvJJ?= =?us-ascii?Q?cOPfqno0gvYRfUBE+/EbDnGWNqOye2U7zCxb0nUZTDg6+0ypnwB1Klcwc+HL?= =?us-ascii?Q?k/QbJydvOq2C/8wLo/HzdLRAQMYeYlgXMzveJfWkUXoiqdzqPhtEcKBIUCOP?= =?us-ascii?Q?g2tWIw/oFL/pHK62IBxnMvUELQIIKuopCB0RTnE2qZ2DaQbdPooz0RrLJ8MC?= =?us-ascii?Q?vgGv0N5a8dRN2QfOGCuWNiZtHwmCbbKuhrUhGfr3kL4Uo1c1BAd36muNVk5+?= =?us-ascii?Q?BhXon6jtseWMiM9Hfo0BpXoUQ2cN1cdUmSKWxN5YPkRFFRKeJ9uvtOSGxKD1?= =?us-ascii?Q?poauzQIjOzMyMXvcLjfNB6vnRjV3530NLHqCQngHA/FkjNOgVFCcPFOofUbs?= =?us-ascii?Q?9XD43SnsZGdseTPQI7QPukjK5QUcZo6uD20CGVUidNJKBQRYta+6eQ/QM0Q?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2010; 6:DbityQLm38jUXR3WBYux9IALeQVdC5o6/nVGlw9ZILXqA3Nj7fC5TpKi0E26kQ8l1mePmOqCHaOCrNAFUYY49GWpa8MeC5VzduqLlo4IuxOqXN/t9luFCv18/WO5t5PZEmAw7zyblf9ZTDhACm1JTugUmnTLxaPhZsNPL2Ukm369tACnVHfwad0FLZXSIduqqrPj8eBTzOr6/w0h+o/YRNGc9omSJ656NzHd1zwvzVBkmVXuAt3EE6xPfG7IQ5hFWeQ719ul9GC8fEf/WHWVweGgNZ06Fp5puCK89IPj4PE=; 5:LN6wzmGPJcBx9hSOF12bXYMwR7Dn1xA2vbZH5zJG15+fO2s+5e05CcaNm9wVHFbxLH1go9n4BHc9bQcnAsrj7I2UJ3Fz7sL0Dhs/i9W3+RSoESW0WDBj7xhpT0/b0/+3I48tqQxmFVNfZKCxierLsIp1d29RvFe/vJP1m2zff0E=; 24:ijX8N1R3LQLx/W8N6LJoMn25SjXIe7e0WSGdwWvnPMi44SDwq2FlcUWvjTqUV4MP+sqprPDfubVKdyfUWt6FZBM2vIOIOFt4Kz6oOSDfpec=; 7:1ClmRH09uVquZP2fLriBJiyIx5NNlXaqvUWSrcRzKr5OIlvcwic8xBq6+6wZljm9IfqolJ9taMpV+zAGc0eF3AO6HbvMloKztWT2WyyuXFQd0Zp1lgB3INzJbiOvtGCYb4LkyQP0LEtmJY3q0X/7YMNceyYWpmp23KkHYea0jyX8h6J35HZT3NeATBAjBO00YoTxtJCi3edA2/7zcYmi7n6vU4OLeRixKn6wwl2rZT5S1ylHUG6RdFp5jC27nnvzm7MsjL8VN8xPyB2T4oAca8EtN1GTHoSiJXAAPbhu9q6cR727Js4PpZtNpb8ATVKl SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Sep 2016 12:42:40.3982 (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: CY1PR0301MB2010 Subject: [dpdk-dev] [PATCH v11 12/24] eal: add hotplug operations for PCI and VDEV X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: David Marchand Hotplug invocations, which deals with devices, should come from the layer that already handles them, i.e. EAL. For both attach and detach operations, 'name' is used to select the bus that will handle the request. Signed-off-by: David Marchand Signed-off-by: Shreyansh Jain --- lib/librte_eal/bsdapp/eal/rte_eal_version.map | 7 ++++ lib/librte_eal/common/eal_common_dev.c | 48 +++++++++++++++++++++++++ lib/librte_eal/common/include/rte_dev.h | 26 ++++++++++++++ lib/librte_eal/linuxapp/eal/rte_eal_version.map | 7 ++++ 4 files changed, 88 insertions(+) diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map index a335e04..7b3d409 100644 --- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map +++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map @@ -162,3 +162,10 @@ DPDK_16.07 { rte_thread_setname; } DPDK_16.04; + +DPDK_16.11 { + global: + + rte_eal_dev_attach; + rte_eal_dev_detach; +} DPDK_16.07; diff --git a/lib/librte_eal/common/eal_common_dev.c b/lib/librte_eal/common/eal_common_dev.c index a8a4146..88f9d3f 100644 --- a/lib/librte_eal/common/eal_common_dev.c +++ b/lib/librte_eal/common/eal_common_dev.c @@ -150,3 +150,51 @@ rte_eal_vdev_uninit(const char *name) RTE_LOG(ERR, EAL, "no driver found for %s\n", name); return -EINVAL; } + +int rte_eal_dev_attach(const char *name, const char *devargs) +{ + struct rte_pci_addr addr; + + if (name == NULL || devargs == NULL) { + RTE_LOG(ERR, EAL, "Invalid device or arguments provided\n"); + return -EINVAL; + } + + if (eal_parse_pci_DomBDF(name, &addr) == 0) { + if (rte_eal_pci_probe_one(&addr) < 0) + goto err; + + } else { + if (rte_eal_vdev_init(name, devargs)) + goto err; + } + + return 0; + +err: + RTE_LOG(ERR, EAL, "Driver cannot attach the device (%s)\n", name); + return -EINVAL; +} + +int rte_eal_dev_detach(const char *name) +{ + struct rte_pci_addr addr; + + if (name == NULL) { + RTE_LOG(ERR, EAL, "Invalid device provided.\n"); + return -EINVAL; + } + + if (eal_parse_pci_DomBDF(name, &addr) == 0) { + if (rte_eal_pci_detach(&addr) < 0) + goto err; + } else { + if (rte_eal_vdev_uninit(name)) + goto err; + } + return 0; + +err: + RTE_LOG(ERR, EAL, "Driver cannot detach the device (%s)\n", name); + return -EINVAL; +} diff --git a/lib/librte_eal/common/include/rte_dev.h b/lib/librte_eal/common/include/rte_dev.h index 94ae14e..6cc9b01 100644 --- a/lib/librte_eal/common/include/rte_dev.h +++ b/lib/librte_eal/common/include/rte_dev.h @@ -178,6 +178,32 @@ int rte_eal_vdev_init(const char *name, const char *args); */ int rte_eal_vdev_uninit(const char *name); +/** + * Attach a device to a registered driver. + * + * @param name + * The device name, that refers to a pci device (or some private + * way of designating a vdev device). Based on this device name, eal + * will identify a driver capable of handling it and pass it to the + * driver probing function. + * @param devargs + * Device arguments to be passed to the driver. + * @return + * 0 on success, negative on error. + */ +int rte_eal_dev_attach(const char *name, const char *devargs); + +/** + * Detach a device from its driver. + * + * @param name + * Same description as for rte_eal_dev_attach(). + * Here, eal will call the driver detaching function. + * @return + * 0 on success, negative on error. + */ +int rte_eal_dev_detach(const char *name); + #define DRIVER_EXPORT_NAME_ARRAY(n, idx) n##idx[] #define DRIVER_EXPORT_NAME(name, idx) \ diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map index db8c984..c0bd391 100644 --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map @@ -166,3 +166,10 @@ DPDK_16.07 { rte_thread_setname; } DPDK_16.04; + +DPDK_16.11 { + global: + + rte_eal_dev_attach; + rte_eal_dev_detach; +} DPDK_16.07;