From patchwork Wed Jun 22 09:06:34 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shreyansh Jain X-Patchwork-Id: 14222 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 84433C58E; Wed, 22 Jun 2016 11:08:07 +0200 (CEST) Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0082.outbound.protection.outlook.com [207.46.100.82]) by dpdk.org (Postfix) with ESMTP id 2A30EC404 for ; Wed, 22 Jun 2016 11:06:54 +0200 (CEST) Received: from BN3PR0301CA0027.namprd03.prod.outlook.com (10.160.180.165) by CY1PR03MB2378.namprd03.prod.outlook.com (10.166.207.153) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.523.12; Wed, 22 Jun 2016 09:06:52 +0000 Received: from BY2FFO11FD051.protection.gbl (2a01:111:f400:7c0c::153) by BN3PR0301CA0027.outlook.office365.com (2a01:111:e400:4000::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.523.12 via Frontend Transport; Wed, 22 Jun 2016 09:06:52 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; 6wind.com; dkim=none (message not signed) header.d=none; 6wind.com; dmarc=none action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BY2FFO11FD051.mail.protection.outlook.com (10.1.15.188) with Microsoft SMTP Server (TLS) id 15.1.517.7 via Frontend Transport; Wed, 22 Jun 2016 09:06:50 +0000 Received: from Tophie.ap.freescale.net (Tophie.ap.freescale.net [10.232.14.199]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id u5M9663o022009; Wed, 22 Jun 2016 02:06:48 -0700 From: Shreyansh Jain To: CC: , Date: Wed, 22 Jun 2016 14:36:34 +0530 Message-ID: <1466586396-22618-16-git-send-email-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1466586396-22618-1-git-send-email-shreyansh.jain@nxp.com> References: <1466510566-9240-1-git-send-email-shreyansh.jain@nxp.com> <1466586396-22618-1-git-send-email-shreyansh.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131110600116855870; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(5890100001)(76176999)(50986999)(2950100001)(92566002)(81156014)(356003)(87936001)(8676002)(189998001)(81166006)(586003)(48376002)(229853001)(105606002)(2351001)(77096005)(86362001)(106466001)(50466002)(68736007)(33646002)(110136002)(7846002)(36756003)(5003940100001)(2906002)(6806005)(47776003)(104016004)(4326007)(8936002)(85426001)(19580395003)(97736004)(19580405001)(50226002)(11100500001)(69596002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR03MB2378; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD051; 1:Tosc1Cmc7uSF5umgP78qJTUN/6Mcdwu4evylvKwNX6fr7VFJiVYV1u5f0y3Y9/3xiZqT1Ur4uEQgIy5maOaXPtIfRjxScBzL+vZlOzGa8k7V8bHP0CTu4FUmC0SkwjzOwgfiGHC4XICceUYuZ0vy401mdYFMSBK3oZFqHNlYqd0RtVOnUjWbw5jNZeiyOv6C36cZaVdK+aShSwBZmwqpOs0L5OP2ieXGTdVtSqN4bgVKqCotj3o19G4+PGaVEu8sX+hJB2bTT09KbtUFQGBuGVfwtZ+TChvcJTkZToDR+ASt3RTxKCO0ugte5tsCVLeeRuQNbgpUIATg9XPJ8D6mM9vXa+MCkqtaMHUBK7+yJ6lLdWVJho0yLtfeZ5Gz+pR5YcdWtXHTmf/9ZRihEFLKSul2wQ+WuUShisGdFaX+EvtcuPAU0IibaYfR9yUatJ+7CC1TZ0xr+mRvqKJ983ceMX4y9jfCPgtxXGm+G6YKXV1JjH2PnB9cEnLXXwmVeacaeWDKSP5wN3vHTAPt4qsDwTPGOoDEohwex8dyoht2cKx8BaIPapoXttxdpqkxLz6YqwPowwvXGaW4h8SGk2JNHw== MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 53630211-5f0f-48dc-e43e-08d39a7c8cb7 X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2378; 2:8kLCLGn+XX3f4LvYWTw1q5unp1AilpTN+rH3bqDXPa40Tsyd9h37EWtClPyXteVVQEmR6/2FJKirp8oaiNx0k+dLriNjJSTuNpdsBUyyFALpnWXrofkASzB3y78R/+GmGfQ0OWlWXa8fNt0wcrf5BRTYHq9WVplH3qaQzxHVb2b3rgPQI+i0nWG27fIQa+G6; 3:F3VFP8Fg5Pjw/giRhX7cRIliGmqdDlgEkPB6D32zuT6ewl8at1kAoLm6lmkIm2mZ00ZDmtjhStPgfia36b7A+0ILrDiaY4Q6EPoUdz7jtWD+RmXDc/w6Chh1zGBj2ouIxFr4JskwsOmafapjraXbin5IvyON0994HAq0C21Pf7bKXIJsJ+hby6V+1N8ljvGhMWTbJVusdx4glOd1l42KDnFNj7p677jQ5uZCDrmxsu0= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB2378; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2378; 25:rzgiOw4Imvys1fQhAXXGMDdxPTKs9iUeLc/RONIV8Qop6QrT5jHbKYXI6ngC7QuL+8PD8B6+rYKs9VGbQ6MRSbEG+dOF6xwYJBRQ8Q/zmRVTNFdcLAaAcb28NP56rvM2mKtqaOc3U7httyk0o9EAD1CWuOouCW9nOJeMa0dCcTxY0U6iKvrvBYmbF+T0tSGatpNPndyuuIjrQwBnQt/wHrNqQbQiBdO5Z6niLsvDfVUnXYOuIDWHzUAfQFWcZji/dVVhnZF6XbihnnaDo9WqEMNoptS6lY1nLWva2RNMBvpbg9V8xtTWkvyLm4G4pKexxP/Ma2JboGht979NFMrObqHYhpZbDwv9ZnfBRW+OUBaEh0h8+Bly+kVPPVDqHi8pY5hCdEScIyEl5P7i41BYzrQl96Q3g/9/+rjEEIaxrpKka5GQ6OXXUd9X86VPTikLXHv5z7RAtPXbgKufwEyj5IVnz2AFRXhoeGy40BC7mjUDlleUbc5dTKb9lNDgawXvgPdBbZoZGi1p50CpU+e8bUvIQ0zlAwYALRGexPGtwbuOiuOEnnhIS8WTiT1Wibe6Lb4PZGDg7j2JJ+89O5FMsyS3dlEDakXUxQbX1N9LJypZXnrdYDrq1RiOnXBxs04eBXfO8Zm5bq+ATnQKGVRHaNiGjLdQxF1yAdjfQLaNsxREGqNaVhhyzEXwkko/0F5j5W6cAjYzWXWRvx/L3G8THVCBKWHirHTIaoR7QObGHmERZgSvaINcMAZ7TTeUljL4PyK+ADj6Pnyh0CWxNQkeBg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(13017025)(13024025)(13018025)(13015025)(13023025)(8121501046)(5005006)(10201501046)(3002001)(6055026); SRVR:CY1PR03MB2378; BCL:0; PCL:0; RULEID:(400006); SRVR:CY1PR03MB2378; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2378; 4:F0pwKnjUmf5NYFciW6PMan+7ThVeZk74GAn0xoIelhPApmZreZPLBWRD89kcG5RMRkEMNTLRrg7dVgVxF091r+sHCnDelKTdUxTSwVCbrtWqlWZ3fSBHeWfYEDV3Id16xjcKek7wQPOkvHonLywVFXbyXBNrMI5bipF0L8Pj3vFTksYXIwse+6a+xnUkFWtTjLgm+oaACi6y5rvNtZFeCYaEYSn4ONWNVzU7Gj5EPW0bGXwIXjtCH48QhhVo07fcBE6KO8Df1K5efIQ/UjcddFVAAKSJ6NdOw0rqShDD/L/tdlkZrsPM+ZFTqXlLPIglcghK+fQIcrL6h5WiK4cBofFsj419Hb8CP+QmHSZK2L8UKvVmnl1B0gYhQaTw9K6FHGA3IHTZ3XMDWD7Ya+g1PjfVRIY+377ok5Y5FsAtD1SxMCM/tDl1FrgJ8WzcxA/VgPXLPVZi75cG+YB6R8b45+mwQwzMAQdtNmJjdGPYXhovMxvSXoFPQcXpft0pHjMCNdIVhYSx3H1u2xAwotGlvA== X-Forefront-PRVS: 0981815F2F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR03MB2378; 23:NPnrNph3cHCRAvnAm8H7/Ty1GSQ/TwIDQXV/8RIQZ?= =?us-ascii?Q?1KW/3n4Asb+53yUZ8uYSXkDu+xPTjPbCbdZJZCf0WU9k3Q7OeG4BlqHpndQH?= =?us-ascii?Q?9UQNACKZHKxtk5LrPSDl4dMDPf1bqBfd5F7EpE2/rlJrK466iFJVHVPT0mqQ?= =?us-ascii?Q?HgTONoVueCuH9J5JrvckV1LpfGTxFShEBgV5OeVgIo75xMb6Ydhuyp4HYRUy?= =?us-ascii?Q?d8fLB5xR/aErcV4l7qh8E90G/8A/VEQzv2GtQ4PbZ1CubR6Xl9kE8rPeFfs4?= =?us-ascii?Q?fRjrY9biZi8GE8lgytx4xkiLoqUxtPWZ+UjSaIXoulUs7Db5RyLiSJAB9P7D?= =?us-ascii?Q?uUBLQGXlab1oRbe1aZkO2CmDPYHhfhescZ1miLk6iC7Av4NludJJubB8dJnI?= =?us-ascii?Q?AdoAv65HcD6aGijOrMcMP33zt2WVWdQC/v/u334WZfBR9AxtrCq6k6d0P3It?= =?us-ascii?Q?ZZj1rxN0cYCQ0CsYl2rvVBsnVEvs0v8j52bCl9Kt7Tg697D3CP9wF3h07rBX?= =?us-ascii?Q?mx41o0jL2iwODcYDKGPaw3zJvq6dzaLNXACnORZwlSgZI6owo0nV2pubWFEE?= =?us-ascii?Q?ImTlpenWON/Gx6BauxzYWFrqcX2Xhjd743m7sYUJGlW7jwGvWoFT5auBvu0f?= =?us-ascii?Q?OpTe+JQI5RZJmoMEj57OXgoW3v6zKPiY4ZiHMkY264v7LZLiHEsd169HfGlU?= =?us-ascii?Q?r3wOXyqSIR7rKxi/frU3GJl0xQcM6pzkdc3YQMtHO9z053fGBbL0OLr0nNVG?= =?us-ascii?Q?eeh8b8/AdoJhRQ1InraKfeR0rP4X+kZZJLVfqr/vvRqhRlbcPsiaq5CuwTj5?= =?us-ascii?Q?drn5Fm1iIW3w6tQxxYgXNK52TB9a3GmsTVcZo9dyOdk8Z8B9O8wMpqcpMlis?= =?us-ascii?Q?HC2FoR52pMe7BW1+DdLCrxMF6/Cq396MdtcGzCr4OEMjZlZFRYu2aGfcpY3g?= =?us-ascii?Q?QFUn9yRzh7WAyuH5dyp2RcdBrFGmH0xLxCzsOrZOcZj4VDD0DhLwUVY3m4Pu?= =?us-ascii?Q?TZwL0zuhoShnxJ5RsSfvol9OS2mC46uYXKHCPdmWTLILX19NC1fMLcsucIIs?= =?us-ascii?Q?2BN3iVz3OsBJowE4a/xZWMDuaJPoAOR4R4JuvZsL9jWoxhloY+oDE/m/VTWW?= =?us-ascii?Q?r8T9QUfGLZBwZjaWM3vpNywUg1jFU3P?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2378; 6:GB6XcOjSuUTGUOX+8AdrZCq9kfPEOKW9Mbcq/CQfi0xroLLKBetWMDpl6d40GFMbVCglT6uDLk1trr42QWl4FcWSnoUa2srorILyRH8l343EB13oq9OUSgl2KIk+PHb1oZEUOTmKdZL4w2jW9LXcfosH/WZKZH0D5wW532HjsBuNsI0X91UejChkjrbg4ssWNmloeD/2fHNnNV2lfJVTnujMhdSIBNnsTjt0xUDvIm2BpREgNFyvv4abOS3VhsQx4n7Rr2yb1tiJSdyHdA0br6Hu8dGGiERnijv7wg5jiSqWAnn0tGZHA0S1bNICEIxx; 5:dZEFFhgUmRvWg0vu0GkLpSQXputGQ47JcLnn2//bmfgyA1hKLyDZ9dLEQ/M+4KudrtL5BkFsehS+7Ze+Eg5MbA5Dw+56fxpVA1f+RT8WcwsYfPcw2cAO7AS366M4IzdCbpU/NWSDqllg0a8XtI5oWLq+0jP92Zq2C0KuYWI6EjM=; 24:HxiJzREkxFt2m3rTci8hz8upAeRzvYlztIUS4xBu8MsYZIgBOZfpwtGFjnbqkK7p5y//0dHRoMzEuX9ItynBBMzEcjktbwxur5EnvsV2iOY=; 7:NNrSpjQGfeCxetPUNpfQ+XiiPnTwSpFfLcigD0HYzc+nShoZYijFL71MposVJi1jCrehfRcNK+4tfMHwl4RzDWH/nDrTRYB1e8//kr3aCV2pGNQBe8oC3S6s8bCAQSCmV8oM3xpNWSORseL45U9LHrzACg8Q5xM8DQEayctewCQWEnuP6tGwKbhfFxUWE92+9WbNCOl06LHUSbg/CFt8kJRmjw+InBEe+w3p/OSgdQHaO7ZmNI7EFsvx8qUfGWjbqdrMrmo9ynhCc0RGCjPQDg== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2016 09:06:50.5624 (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.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB2378 Subject: [dpdk-dev] [PATCH v5 15/17] 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" hotplug which deals with resources 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 | 2 ++ lib/librte_eal/common/eal_common_dev.c | 47 +++++++++++++++++++++++++ lib/librte_eal/common/include/rte_dev.h | 25 +++++++++++++ lib/librte_eal/linuxapp/eal/rte_eal_version.map | 2 ++ 4 files changed, 76 insertions(+) diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map index 1852c4a..6f9324f 100644 --- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map +++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map @@ -159,5 +159,7 @@ DPDK_16.07 { rte_keepalive_mark_sleep; rte_keepalive_register_relay_callback; rte_thread_setname; + rte_eal_dev_attach; + rte_eal_dev_detach; } DPDK_16.04; diff --git a/lib/librte_eal/common/eal_common_dev.c b/lib/librte_eal/common/eal_common_dev.c index a8a4146..14c6cf1 100644 --- a/lib/librte_eal/common/eal_common_dev.c +++ b/lib/librte_eal/common/eal_common_dev.c @@ -150,3 +150,50 @@ 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; + int ret = -1; + + if (name == NULL || devargs == NULL) { + RTE_LOG(ERR, EAL, "Invalid device arguments provided\n"); + return ret; + } + + 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\n"); + return ret; +} + +int rte_eal_dev_detach(const char *name) +{ + struct rte_pci_addr addr; + + if (name == NULL) + goto err; + + 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\n"); + return -1; +} diff --git a/lib/librte_eal/common/include/rte_dev.h b/lib/librte_eal/common/include/rte_dev.h index 85e48f2..b1c0520 100644 --- a/lib/librte_eal/common/include/rte_dev.h +++ b/lib/librte_eal/common/include/rte_dev.h @@ -178,6 +178,31 @@ int rte_eal_vdev_init(const char *name, const char *args); */ int rte_eal_vdev_uninit(const char *name); +/** + * Attach a resource to a registered driver. + * + * @param name + * The resource name, that refers to a pci resource or some private + * way of designating a resource for vdev drivers. Based on this + * resource name, eal will identify a driver capable of handling + * this resource and pass this resource 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 resource from its driver. + * + * @param name + * Same description as for rte_eal_dev_attach(). + * Here, eal will call the driver detaching function. + */ +int rte_eal_dev_detach(const char *name); + #define PMD_REGISTER_DRIVER(d)\ RTE_INIT(devinitfn_ ##d);\ static void devinitfn_ ##d(void)\ diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map index 0513467..6c6163e 100644 --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map @@ -162,5 +162,7 @@ DPDK_16.07 { rte_keepalive_mark_sleep; rte_keepalive_register_relay_callback; rte_thread_setname; + rte_eal_dev_attach; + rte_eal_dev_detach; } DPDK_16.04;