From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933165AbcHWWv2 (ORCPT ); Tue, 23 Aug 2016 18:51:28 -0400 Received: from mail-sn1nam02on0066.outbound.protection.outlook.com ([104.47.36.66]:51760 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932642AbcHWWv0 (ORCPT ); Tue, 23 Aug 2016 18:51:26 -0400 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; From: Stuart Yoder To: CC: , , , , , , Stuart Yoder Subject: [PATCH 04/14] staging: fsl-mc: move resource pool init/cleanup into allocator Date: Tue, 23 Aug 2016 17:13:24 -0500 Message-ID: <1471990404-28486-1-git-send-email-stuart.yoder@nxp.com> X-Mailer: git-send-email 1.9.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131164642270517405;(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)(5660300001)(586003)(4326007)(189998001)(110136002)(92566002)(2906002)(104016004)(85426001)(86362001)(19580405001)(50466002)(106466001)(11100500001)(2351001)(8936002)(33646002)(77096005)(81166006)(48376002)(81156014)(8676002)(97736004)(356003)(7846002)(5003940100001)(50986999)(8666005)(36756003)(19580395003)(68736007)(229853001)(87936001)(626004)(105606002)(47776003)(50226002)(305945005)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR03MB2234;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11OLC005;1:+nUytJvCLm8HhO46cL3uE65G7yC7Nk6WEwCPd7j/pFZjHe3WBkkMQC0w670E0O02UZt5a0V2o8oPoQkpA+lCjopDkeMUS3yPd1dX9uGC3cjfu1KDeTYgMH4ekhyuSqWpSPExr05nB6oamsee9Ew5qSL7DfCoyemQ7hmJ4G5Eu1vaT+kIBQzmPGIKfzpZbjnuAnxNcBY3L3YrNhChMwF7xSqKrVyPSt3HeJd1vELWQWd6oUm6QUB75FeWQqoPoK1246WmsZs880D+7IpQL8DIYa6rlbDbClWLd1J6RCMkLrWLKEHUCoezIE73QaKInNWOLUsveXZ1LWl3JhtsWMvC7H1bkiflnryWUIRU4u0lVN9gQUgLg4NA9bWqyDfx/tSpmBT6FSP+NEYZMY1bravLuLXhxHYiPKriEQr5kUyvUei8qT/YMTh5GMmxdx4+pz35dorzdfG8GXLHunuVKDB+Jb4YbiT1p5xMLeZYQStQfYy2Zt/bHB8vU19kH/e6q4FAYOL4yUAVcZ1KnCsM5bNya7dMvoSOoPNYS8ar9tnoq3o95oVAKXxKtIuectTExcnqbk/5Q2RRbEfa1KzQOFQ47SePU0VxzYnIS0XtGYWdhUGEhNlOv4wBac0Z338WV81CZo4ZjF9lHBaHQRvV0ncIEQ+SunhNjIt/9+ykRFBIbXc+gNct0Rs24JCQIhgzjhHVTtZXSpmfTvJatqTijkCKsXaM614Ur7dQaxVMH81SC1A= MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 6e7cac29-10e3-4556-189d-08d3cba33817 X-Microsoft-Exchange-Diagnostics: 1;CY1PR03MB2234;2:1yYsDajM++Y0Ooc8kb1pQsTUcey9RikRnsHufD9nLTnqrcT8FBVQMAy2QJ0A54hGO0t/PcYfQua8Ch6gzkEuchuTfADx62IHXySPCMxkrqOcXaOhgF5WB1tHz5E+buPGdXggE/RXOKEg/zpllKl3RLbEUnDO2DZc6GJdHKRMHnabLeS7HcJWXIqkGkbV1ovU;3:L2HCIRKmnAjT0zPGMjT+V1BlblKWoQ2OGYR8mevD/6vSlm/uemtfJkBL8XBkoENRkJaS6RBnnZf27lC0v0iuVoMFS7wXvdigSQeA2sqXYvrm2Ca6PHxxDupMgdKNFKphV56Y0V48Ogpnj/MOrgZGiXiMmhnsMHFEBYiRHDmsys9kLu9VacOcXepbBJ9+5deUU+6pePaUwTTnm6CTS39Xn8Ow7kQtWiRRWqnioBZKIkk=;25:sTD1j8TUpGpp7qMgdJ1zSVPk1GdPlwc+rAJBjLwNb2kDR0gIkgob56u/BVBKv1jKHzVmz9oHtqOR4tHIOfQkuIECz7XAhb6dBwmd255QyLhdx1j22k1F7NPJ73EFXkM1aX+cvWndEK1pUGc4sgqGrCFEib6NudpalXIspnDTpfqrSMus+k1RTfNxu1mPj32qjvmg1uPpfsgRF4dt3oYCw+weKvaz7Rq2DYckrktfe4DPceKyyFwNuIqVQm17edsRXD/0bOc4X52X+h0VERffu5P45PbOBkgwXTTSeyu5z1GBLCIShKk6M0oVZxa/p3xDWf0Pyjbx3EPmNVsK1Jx84uOdOJKoa0Myb7kCzvaea53A8pmoNHhT/WG6A+xyGaGuzgKeq/RowebHCikKyFrw0qQylWycaegW6m9KDYsRPUI= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB2234; X-Microsoft-Exchange-Diagnostics: 1;CY1PR03MB2234;31:mCfP9s/TfVkcZQxy1J8cccXcva9rGUdO4rv0t3R3Ih3LQgHTysKBQxXE+pujt1WsF9yYvBBAY44qUokCM++mvmKGuQyQFhkBib7d/rB+7/arIZuEBw4sTYL7HdI2lrxpbD2wAvzdsT/eLm43Ibf2wQMNMXK+NiOnpHYUGyVwkwlRX2Ab9AelyrZ+wlHT60RehR9ea6GEuD6yVmxGoRbmNCyWeGNOqA3UF1u9Yg1Zlv4=;4:EEJJxWsYBpOhPHirdnY8P9I1P1wP7dKX3qTxoJWmpy5ARvA7TLChoi3fswizAmrWyrTY7KN8IG2htfagNkFNT+NSEX4gx5JKFhWVZevSdE8/qK3+XX62msxMZJCWIwBJ3KPYr2Q3ymHKUufxpJQx3t9Xs5oeee3oGYB6xMlRpbRjhBSLidpqA/HuNGVhfh5PhO+xk/9fNgLgoapMDw/9V0b5tbC7SbC4oMw8vDZ/nFDkocFF9ht4wXk1YArIZTctK1GYcZdJIlfxekFJjNUWIseSj8LGX3Dww1uIYDr/sDaIXVR6aBhZKjUjJm14pKTyFC4/Fd5OKFxaTDdnLmX/96YBMIP+DFcQS6xm4AEmjJARs53l+b+mjJVSnOcLAzp1XJdMjbeXQaWihKTSTKvQLVMps4XSX8EGzWvjAVyIJLtYuyiM6oxQu4/gIi4PxgOIbSam/2iYnKUwg472pyrIEQtaseSbori631g7v7IGVSW4wOfroso3ZpNRQBuL2YvSP20TOvZqek/5b/bUmr3MGu4VmdSfTJGGxxzNMXJ8Frw= 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)(13015025)(13017025)(13023025)(13024025)(13018025)(5005006)(8121501046)(3002001)(10201501046)(6055026);SRVR:CY1PR03MB2234;BCL:0;PCL:0;RULEID:(400006);SRVR:CY1PR03MB2234; X-Forefront-PRVS: 004395A01C X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR03MB2234;23:9WdvZrlNp4zPVN8bqq+sfFwKxoOpz5noD1cyzemyl?= =?us-ascii?Q?aEhFetbd5PvXtoHYb5csVL0LCTwkBzdCnQ7DNygd8qSh9aB+DoLZOtTn4icW?= =?us-ascii?Q?7R46RC1prFQSiXZOizx+bGweLqWlxTHOlAdRPqfboayvjylMIInNu3/jiQDm?= =?us-ascii?Q?fjDBtWcZ6aF4HG/DJwo7U+jxOWi3UJ4r6RvuyHQt48jAwP32aQ+f1+YIerBb?= =?us-ascii?Q?i2oz0d9WzsQy8jdp5lP3fmtzXURPOawe3Fhh3tNHMFSobe363asCTqQt3+Ei?= =?us-ascii?Q?B7w96q/sVUVco+QidUgK2qZuzJH+NP4eXmIWe1q/+4fTzSUMOkOg1O03ZUvf?= =?us-ascii?Q?5NkO1vJrb7dsBMSw0eAt8M/LDslJU/5rUky+9uXo81WItrPN2u/ePccw4y2j?= =?us-ascii?Q?gxUMgxDugabPs73yQOYUtMM7swejCG47oI80qUMazKwF2wy6WAEUnhqQQwxg?= =?us-ascii?Q?MgUES1osivToQwY67V1ODyqnlb2128tnize6kRg72Rg7QvNQfD+ceTWd0Wfb?= =?us-ascii?Q?FoPPvKKxOG+cdVz4Z8yHWj71OkMt7yE/ptL8+WoePbvYcR4kseb29vegkYOo?= =?us-ascii?Q?YpFUqz+qlkKwoaz+NpzHeoCZ8LsK/ksX8bizFE8+TQiYdSiMwJx8T9iNVZrh?= =?us-ascii?Q?iR6ROrCqBao2wrOTLT+XlwI2Kh/jl6UNIo/H1yWO0ByHbs/rVLMSYnoex5sQ?= =?us-ascii?Q?GgVWliU7encpFlxavrlq8fUc8eH5wxCyTTS9XpmuX9Vi+ebaN5KClbjEguv1?= =?us-ascii?Q?4lSSnt5mp0aulOdcP7gdLXYEy0NY/ApkBJRquJL+CjduEIWbp7i66xx0TMbd?= =?us-ascii?Q?Y65YSobrFYQLekDF5rBy5gmWOfwgdalUGbBfltX/keYAV1+iJRK09NxykW6h?= =?us-ascii?Q?e+84OO74T30KvESLPsu5PYnL15p+i5PfdBXqGb9Ou7Z2BgaxKQfeO7ofHk20?= =?us-ascii?Q?Qc3eB0lz2qKm90ytuBKUBf87KNFtN6wY66zd48tfct5uyfASHtbZEBWru4SP?= =?us-ascii?Q?ZUCq++zMq5Gm8TwG/ghsDhUlIHVBrWNaZKz9eETOdLaOWk9Uy/L8xbAoCwcC?= =?us-ascii?Q?KD89zF6CiJng72hZxQIO0PCPBKetIC26d04IKFy+gxPmwUWUOiedRrF83Og9?= =?us-ascii?Q?ASdYFhVIUI=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR03MB2234;6:JcigDGKIgcirizLyrtT7wrdbaBs1hynb5mm6Zi8zk0JHyNSwhy0IajchJ8m4MjWqo7MoIhUNzZElULBngL9txemwkqcFBtx926tdtDeZxGBVYegX1e96YyK1xyYZeucKGnLiu/W9x24s05AHyZyTxXKhxKclayFs7V+n48O4TYuEPD65dVAbw0DSEPpCv7V/wWDSpbBSqR925Z2uxlcal3LlhAvVYnqFvcls4GpjwhAtgIJWgcwMkAAtiBIl6x1RKTJKKcDgdCt8fQ67ohW3B0KC3NXg0eVU803ZODfGW4U=;5:7g9mhVQwfEnmrbZaLHjh0kFay8CEbb6LhSkieSxBvKC9hTizffWTts/nxSvb0yZnS25NHSK9eyQ9HQ6xD9JQ15YxVkpobN0hP2ooUasSNJJDQRWxHM5NPXuadJNwP60Nuf/oaoCz7xR1gyBmEMvn1nn72U8qpvDgfwpZkzpkqNA=;24:KswGzUX/RUu6+8fA6PEW/Biae6gGN9sbBiPeWjcT5X6oAP6Uve4XLodz7p7tZQfT+c1E5y20GpEJUS0c1FPhifJM6pHoBN2Kow8ZzwDNZas=;7:Ox6nLlOuKkDPHa+lEuQu9W4kWhs1g8HVn9LaKBJzy4ZZ0WN7bDZtq8v+FviNO3UKXn+GzKsbO2NuqbkIoQjW3Nigm15EcdoWnZXMm9vgawqNvNLHrCGHjS1mxsYDbzZBGUDTJd1xs/CfzvWpre02EgNA0EqJk0brrrnpmoVoaod4lhEn1SODtBY3pTDkh6Bxkgt3S37nn1ydItfwJchHXDfIaEXloEXvIKg7T8GRRNTAlewIW/fQ8Jyyvbkj8JiM SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Aug 2016 22:17:06.8645 (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: CY1PR03MB2234 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The resource pool init/cleanup functions logically belong in the allocator. Move them to the allocator and rename to reflect the move out of the dprc-driver. Signed-off-by: Stuart Yoder --- drivers/staging/fsl-mc/bus/dprc-driver.c | 55 ++------------------------- drivers/staging/fsl-mc/bus/fsl-mc-allocator.c | 49 ++++++++++++++++++++++++ drivers/staging/fsl-mc/include/mc-bus.h | 4 ++ 3 files changed, 56 insertions(+), 52 deletions(-) diff --git a/drivers/staging/fsl-mc/bus/dprc-driver.c b/drivers/staging/fsl-mc/bus/dprc-driver.c index 83e72b3..89d53da 100644 --- a/drivers/staging/fsl-mc/bus/dprc-driver.c +++ b/drivers/staging/fsl-mc/bus/dprc-driver.c @@ -190,55 +190,6 @@ static void dprc_add_new_devices(struct fsl_mc_device *mc_bus_dev, } } -static void dprc_init_all_resource_pools(struct fsl_mc_device *mc_bus_dev) -{ - int pool_type; - struct fsl_mc_bus *mc_bus = to_fsl_mc_bus(mc_bus_dev); - - for (pool_type = 0; pool_type < FSL_MC_NUM_POOL_TYPES; pool_type++) { - struct fsl_mc_resource_pool *res_pool = - &mc_bus->resource_pools[pool_type]; - - res_pool->type = pool_type; - res_pool->max_count = 0; - res_pool->free_count = 0; - res_pool->mc_bus = mc_bus; - INIT_LIST_HEAD(&res_pool->free_list); - mutex_init(&res_pool->mutex); - } -} - -static void dprc_cleanup_resource_pool(struct fsl_mc_device *mc_bus_dev, - enum fsl_mc_pool_type pool_type) -{ - struct fsl_mc_resource *resource; - struct fsl_mc_resource *next; - struct fsl_mc_bus *mc_bus = to_fsl_mc_bus(mc_bus_dev); - struct fsl_mc_resource_pool *res_pool = - &mc_bus->resource_pools[pool_type]; - int free_count = 0; - - WARN_ON(res_pool->type != pool_type); - WARN_ON(res_pool->free_count != res_pool->max_count); - - list_for_each_entry_safe(resource, next, &res_pool->free_list, node) { - free_count++; - WARN_ON(resource->type != res_pool->type); - WARN_ON(resource->parent_pool != res_pool); - devm_kfree(&mc_bus_dev->dev, resource); - } - - WARN_ON(free_count != res_pool->free_count); -} - -static void dprc_cleanup_all_resource_pools(struct fsl_mc_device *mc_bus_dev) -{ - int pool_type; - - for (pool_type = 0; pool_type < FSL_MC_NUM_POOL_TYPES; pool_type++) - dprc_cleanup_resource_pool(mc_bus_dev, pool_type); -} - /** * dprc_scan_objects - Discover objects in a DPRC * @@ -363,7 +314,7 @@ int dprc_scan_container(struct fsl_mc_device *mc_bus_dev) unsigned int irq_count; struct fsl_mc_bus *mc_bus = to_fsl_mc_bus(mc_bus_dev); - dprc_init_all_resource_pools(mc_bus_dev); + fsl_mc_init_all_resource_pools(mc_bus_dev); /* * Discover objects in the DPRC: @@ -390,7 +341,7 @@ int dprc_scan_container(struct fsl_mc_device *mc_bus_dev) return 0; error: - dprc_cleanup_all_resource_pools(mc_bus_dev); + fsl_mc_cleanup_all_resource_pools(mc_bus_dev); return error; } EXPORT_SYMBOL_GPL(dprc_scan_container); @@ -802,7 +753,7 @@ static int dprc_remove(struct fsl_mc_device *mc_dev) dev_set_msi_domain(&mc_dev->dev, NULL); } - dprc_cleanup_all_resource_pools(mc_dev); + fsl_mc_cleanup_all_resource_pools(mc_dev); error = dprc_close(mc_dev->mc_io, 0, mc_dev->mc_handle); if (error < 0) diff --git a/drivers/staging/fsl-mc/bus/fsl-mc-allocator.c b/drivers/staging/fsl-mc/bus/fsl-mc-allocator.c index 6550564..9695f44 100644 --- a/drivers/staging/fsl-mc/bus/fsl-mc-allocator.c +++ b/drivers/staging/fsl-mc/bus/fsl-mc-allocator.c @@ -668,6 +668,55 @@ void fsl_mc_free_irqs(struct fsl_mc_device *mc_dev) } EXPORT_SYMBOL_GPL(fsl_mc_free_irqs); +void fsl_mc_init_all_resource_pools(struct fsl_mc_device *mc_bus_dev) +{ + int pool_type; + struct fsl_mc_bus *mc_bus = to_fsl_mc_bus(mc_bus_dev); + + for (pool_type = 0; pool_type < FSL_MC_NUM_POOL_TYPES; pool_type++) { + struct fsl_mc_resource_pool *res_pool = + &mc_bus->resource_pools[pool_type]; + + res_pool->type = pool_type; + res_pool->max_count = 0; + res_pool->free_count = 0; + res_pool->mc_bus = mc_bus; + INIT_LIST_HEAD(&res_pool->free_list); + mutex_init(&res_pool->mutex); + } +} + +static void fsl_mc_cleanup_resource_pool(struct fsl_mc_device *mc_bus_dev, + enum fsl_mc_pool_type pool_type) +{ + struct fsl_mc_resource *resource; + struct fsl_mc_resource *next; + struct fsl_mc_bus *mc_bus = to_fsl_mc_bus(mc_bus_dev); + struct fsl_mc_resource_pool *res_pool = + &mc_bus->resource_pools[pool_type]; + int free_count = 0; + + WARN_ON(res_pool->type != pool_type); + WARN_ON(res_pool->free_count != res_pool->max_count); + + list_for_each_entry_safe(resource, next, &res_pool->free_list, node) { + free_count++; + WARN_ON(resource->type != res_pool->type); + WARN_ON(resource->parent_pool != res_pool); + devm_kfree(&mc_bus_dev->dev, resource); + } + + WARN_ON(free_count != res_pool->free_count); +} + +void fsl_mc_cleanup_all_resource_pools(struct fsl_mc_device *mc_bus_dev) +{ + int pool_type; + + for (pool_type = 0; pool_type < FSL_MC_NUM_POOL_TYPES; pool_type++) + fsl_mc_cleanup_resource_pool(mc_bus_dev, pool_type); +} + /** * fsl_mc_allocator_probe - callback invoked when an allocatable device is * being added to the system diff --git a/drivers/staging/fsl-mc/include/mc-bus.h b/drivers/staging/fsl-mc/include/mc-bus.h index f192aa8..2098b3c 100644 --- a/drivers/staging/fsl-mc/include/mc-bus.h +++ b/drivers/staging/fsl-mc/include/mc-bus.h @@ -150,4 +150,8 @@ int fsl_mc_populate_irq_pool(struct fsl_mc_bus *mc_bus, void fsl_mc_cleanup_irq_pool(struct fsl_mc_bus *mc_bus); +void fsl_mc_init_all_resource_pools(struct fsl_mc_device *mc_bus_dev); + +void fsl_mc_cleanup_all_resource_pools(struct fsl_mc_device *mc_bus_dev); + #endif /* _FSL_MC_MCBUS_H_ */ -- 1.9.0