From patchwork Wed Aug 12 20:14:56 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roy Pledge X-Patchwork-Id: 506745 X-Patchwork-Delegate: scottwood@freescale.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 5A80D1401F6 for ; Thu, 13 Aug 2015 06:19:03 +1000 (AEST) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 38CD91A2ADA for ; Thu, 13 Aug 2015 06:19:03 +1000 (AEST) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0124.outbound.protection.outlook.com [65.55.169.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id E008F1A1D32 for ; Thu, 13 Aug 2015 06:15:10 +1000 (AEST) Received: from BY2PR03CA061.namprd03.prod.outlook.com (10.141.249.34) by CY1PR03MB1485.namprd03.prod.outlook.com (10.163.17.158) with Microsoft SMTP Server (TLS) id 15.1.225.19; Wed, 12 Aug 2015 20:15:07 +0000 Received: from BL2FFO11FD048.protection.gbl (2a01:111:f400:7c09::180) by BY2PR03CA061.outlook.office365.com (2a01:111:e400:2c5d::34) with Microsoft SMTP Server (TLS) id 15.1.225.19 via Frontend Transport; Wed, 12 Aug 2015 20:15:07 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=freescale.com; vger.kernel.org; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of freescale.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 BL2FFO11FD048.mail.protection.outlook.com (10.173.161.210) with Microsoft SMTP Server (TLS) id 15.1.243.9 via Frontend Transport; Wed, 12 Aug 2015 20:15:06 +0000 Received: from otc-sw1.am.freescale.net (otc-sw1.am.freescale.net [10.29.200.182]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id t7CKEv11011004; Wed, 12 Aug 2015 13:15:05 -0700 From: Roy Pledge To: , Subject: [v2 10/11] soc/qman: Add HOTPLUG_CPU support to the QMan driver Date: Wed, 12 Aug 2015 16:14:56 -0400 Message-ID: <1439410497-19039-11-git-send-email-Roy.Pledge@freescale.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1439410497-19039-1-git-send-email-Roy.Pledge@freescale.com> References: <1439410497-19039-1-git-send-email-Roy.Pledge@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD048; 1:tJyFbRzuYhpJ1WVdTu74wPKoC/SbR0Vvqp4N8p/WHxkatGd6BEturiJaR7YmAoWIoXWTfXTA14FmB2vEt3mWgseIg0ujGNEsCQtHuguL20FUyCXPM3+CodJ3JRnfsEjhWvA5yjaS6U4RV2kquyNYHNb8g95dXUzrust36Mg9vwF5MpL5p1nDgsfHVTrh22kJTscnANBnmkNQuKqBtObLLlv7VVVU1O9PohkvUl3i8IEXIubjvbRdWPuXWDyI6nTwaMYmQLFYyjW+nM5+LYIPSSTuQsM++EjmI8M2mObtcUj81b61qI3Rdj5hvmzXiSz1xCtIg9iUNWWymvuRuYx2r/yjw2NjopVFTF+SP0E9AU81p5o6z0A9ZhoPlqt9lHnjkDQjrKA30fwy4EwOrIhzNQ== X-Forefront-Antispam-Report: CIP:192.88.158.2; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(3050300001)(339900001)(199003)(189002)(86362001)(76176999)(229853001)(87936001)(5003940100001)(50466002)(53806999)(4001450100002)(48376002)(50986999)(68736005)(189998001)(77096005)(19580395003)(19580405001)(6806004)(5001960100002)(104016003)(36756003)(97736004)(2950100001)(5001830100001)(81156007)(46102003)(5001860100001)(4001540100001)(5001770100001)(47776003)(77156002)(85426001)(105606002)(64706001)(106466001)(43066003)(69596002)(50226001)(62966003); DIR:OUT; SFP:1102; SCL:1; SRVR:CY1PR03MB1485; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB1485; 2:8y/lpoUZl+txQdjVW6pCmiYU6M8gBI6Y+DE1oGtM1RXF9R+Pry/3+m7LpK/2yQqheLvAJwVs/IpObi0PlmD/NCvYjiJMVYFcIomDyPoTC9V40f3hj2eA3/dnu/M0V+uZO6PeChU7OKDDrVE6NeqmtU3OFYkq/ahXq7MJDpz7EJY=; 3:r+AeCn9tctbjYxY8uNlCxbLI/jQ47k7tnYOGGriBG4GSdpqGLZmc+wqiEkirSWVJ5mEDjVy0ILx4cIlwvhG7X+H2pbqadSGuuU3Lf7JZCc8quvGYCiETk5vY3TCDQfWtfgCWbYT5TcyjUvk5CxGg95SuhRDdzr1bN2iSyPi3TaBpMAaw8M3eagQpGoa2fYcxDAYyTARSewZM1LAru+erPFTEZqh/hgzTd5xj1kC0ePY=; 25:LyIKpLx5syIxyr15O/aBSLwX/IFf7a+8AL3w88wJIvvwDSAMPbzaCHsU8RBMzdnyMy/OT0u5jWt4Qdd1dKVG7WRS4xIrxA3dUWYfPNtdy3Gf+zcxfOvy+aH79cZv7svk6mqTJtRCAmr44ImWVy+J2rPtIzcPTu20yy0kxNNytRq8W865ox0yq+kz5thgrA8BoVa70ry1PukGCiLK1g0Ocjx4gsExyldiMLekyNgs3CosU8Xuq00UwpCPqhRq4nY93tjUW5uegh/12nIZSblROA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB1485; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB1485; 20:kExLL4sMyIbAzwh03lnS5V3ppVeCFLmECpUcuA7qyVY14Kzr+FfZkAe58iEHLs+QfNDhLvmhRj6fqWfHGFVMb+RAdYb+0g5P7CMPpEIVP7S/aj+0ICqktFX+RlxjEZT2ApD1fUoe1wu4mhWr2vJ7SZ3WflsfQVTjQURWzqv+lRWixkLU7HOjdPf4GgekdC2nIE5vP6GgVRP5nv3h4NFjTRdAMzzBbmW5o12OaFXdo01nHRVNU2JJVg8sJoQnNtyRnuNKqwqpA5QAM9a52gsWm61lzAU6+a3Wp16H3GS+5IGALg2uI6HkKu1/Nc8omus6aT+wbUK7iw9TbMDjLl3xtQTkOJtbH4fT0k85swz0Ylw=; 4:f9cgooycUYjbbhkQ7sAJfBZNP8rt6pKl17rBR8dTD51QRPjO0qokkzs62H1O2e7bpLf3JSBfsxoJ5dlVEulHkLDNM3eB1830rUd/ZfCsnghDWi1wiJ+vciXFnEULred7XBvfVv4P5XdBeM5cmg2FpXXbm7L99/jEffOhYvhG7QZK6Sn6CH4FrXqxAVGQbT6aSZ60kUC3suZQjZkIcBrtWY3iR0IwclZ+Sbw+Ih35KSE6Th0kvAvg+WjXWIZKksxLNuokmfdSrAr1oiH8F0/cP8xCOsxdW+5bU21SYLYFn3M= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:CY1PR03MB1485; BCL:0; PCL:0; RULEID:; SRVR:CY1PR03MB1485; X-Forefront-PRVS: 0666E15D35 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR03MB1485; 23:djfLYl95xPnCxIPbj7PUfEbpp8AsKqA7kr72de5Wn?= =?us-ascii?Q?qK9DBgzLc6iCa+VdUb5w/g1qgvHEqRpWk1g7QLOPN5XzYLGRKI4a57Wu73+t?= =?us-ascii?Q?gypea+FYBQd5v8/h5zu0ZfKkbdpaA377q9TSuQ7VXulE3oU5uy+l5tGR96Cf?= =?us-ascii?Q?G1w8mN1Tj0G0/JjqwbBXI37/hVB1UrtZXy96JGWrMInuYUQQHC2+6/5Si80d?= =?us-ascii?Q?lh9LNLrf7ZUUcGhN/k3mNAkI+HNXUZr6FkHJIZ0cQ7YDwokg++5U9CkbbY8y?= =?us-ascii?Q?ls2s2VT+2VRApZxAf0wsx8OmJOEgUzoLlqdyMViYcP013tVY9s7upQCf6Ki2?= =?us-ascii?Q?zEqZ8Bw8FCaWFskbhDwY0qkcFhVXm+73POzQzTyG/cUo+jAQifkxifToXpbt?= =?us-ascii?Q?IRbmOYrNLpCvC7CA9otIEMPSXdl78vu+CTzmwKJ1jxlcexwdpbrwZXqzqEqW?= =?us-ascii?Q?amEN1hciLDTNKei8ecqBFOYpcKIF26EHM4rgneqCnF0m79rE5v+nGmFFlJOE?= =?us-ascii?Q?9Na3KdQGbAdx4741Ju2fVsC+aMzGPPJrYlJLnCqqifiy5oWwU3tSJqVEbCLj?= =?us-ascii?Q?oKW5FOJ8Xx9ti1wnlqGYttl81UXkoojF39Vq7CYgR5fVjSX9k3XZ5iNF6gES?= =?us-ascii?Q?cHlnr4or5uGIJEmb8LHOHWDd5tglvnUGopON/tPoGInZN/JTsVHkEC74orqK?= =?us-ascii?Q?vd2SGzdXyvvGv3/MjMr4hY/ORsxgiXyyC6AOuqT8Fyn8+mNnRHDHPTJkkTOI?= =?us-ascii?Q?rclQie8kArVFecCAuUEYyodCrRDB8bRJEEXXdvhACWYu06Pg47QpcqKFqy4l?= =?us-ascii?Q?+SI5Xx3r8mMCBMK8QhF70CA8HK/t1UhODEheYbkYyGcDbCK0QM9xEJwn0WWp?= =?us-ascii?Q?gLSxycfcDFNAYJLVPb0YzNpEnZErE6G7BR7zBk5MecDPc2fkOvmPaMgW6eCR?= =?us-ascii?Q?IURAlfFpnpG9T7ChYQ2W5WvTSFFkKfvCe8ZQ17SEkmxC2KikDa712T3uCHOA?= =?us-ascii?Q?U1XBv5okJYt/WTEMBjnK0YTVNsHgjD147KtmxcvRirBlz71Nnp4QHCADdQlu?= =?us-ascii?Q?u6oAd3sMUYvbi+ZdjTkb7i01yWfSG3kqUcUaUN0NcdLzaHykUFaIQFafwIV5?= =?us-ascii?Q?kFGcaXP8Qrr6mQ0bP2vBBX96/Od0ahXVIeQtR8JzctaqdLQUxisvg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB1485; 5:6TMXe+gRujin+E6BbPssBoQrBt6znpRX06tMd3E8tD+DekM5yVBvm2aZEh6pqnDBYhKATQD7oNGiqHRD4Q++JQ2s5yySQwkCiXekgXOomHBd0u+AQG6my00sfLCQBJgGBlrg07MKljAbH7rubz5WVQ==; 24:vVDU4LkA2tWlmT6mqiHUOc5LO4OBjcwrEjeSfPCH5mdkWOY/K3v3e2J6hvWAmg/nRRDfz9WSg3G9YiKwG1ah02lodCg8jV8r6ZQdCg2z2zw=; 20:0EmGtkXUnfTPck15PCNANxXFw2mQdl93OcncFn/LgzqQtqqb2MogwU97POdv2XtLZFe42qYFBaKhLkobYTcNCA== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Aug 2015 20:15:06.4009 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB1485 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Roy.Pledge@freescale.com Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" From: Hai-Ying Wang Add support for CPU hotplug for the DPAA 1.0 Queue Manager driver. Signed-off-by: Hai-Ying Wang Signed-off-by: Emil Medve Signed-off-by: Roy Pledge --- drivers/soc/fsl/qbman/qman_portal.c | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/drivers/soc/fsl/qbman/qman_portal.c b/drivers/soc/fsl/qbman/qman_portal.c index ad9e3ba..85acba2 100644 --- a/drivers/soc/fsl/qbman/qman_portal.c +++ b/drivers/soc/fsl/qbman/qman_portal.c @@ -474,6 +474,46 @@ static void qman_offline_cpu(unsigned int cpu) } } +#ifdef CONFIG_HOTPLUG_CPU +static void qman_online_cpu(unsigned int cpu) +{ + struct qman_portal *p; + const struct qm_portal_config *pcfg; + + p = (struct qman_portal *)affine_portals[cpu]; + if (p) { + pcfg = qman_get_qm_portal_config(p); + if (pcfg) { + irq_set_affinity(pcfg->public_cfg.irq, cpumask_of(cpu)); + qman_portal_update_sdest(pcfg, cpu); + } + } +} + +static int qman_hotplug_cpu_callback(struct notifier_block *nfb, + unsigned long action, void *hcpu) +{ + unsigned int cpu = (unsigned long)hcpu; + + switch (action) { + case CPU_ONLINE: + case CPU_ONLINE_FROZEN: + qman_online_cpu(cpu); + break; + case CPU_DOWN_PREPARE: + case CPU_DOWN_PREPARE_FROZEN: + qman_offline_cpu(cpu); + default: + break; + } + return NOTIFY_OK; +} + +static struct notifier_block qman_hotplug_cpu_notifier = { + .notifier_call = qman_hotplug_cpu_callback, +}; +#endif /* CONFIG_HOTPLUG_CPU */ + __init int qman_init(void) { struct cpumask slave_cpus; @@ -597,6 +637,9 @@ __init int qman_init(void) cpumask_andnot(&offline_cpus, cpu_possible_mask, cpu_online_mask); for_each_cpu(cpu, &offline_cpus) qman_offline_cpu(cpu); +#ifdef CONFIG_HOTPLUG_CPU + register_hotcpu_notifier(&qman_hotplug_cpu_notifier); +#endif return 0; }