From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933282AbbHZUf5 (ORCPT ); Wed, 26 Aug 2015 16:35:57 -0400 Received: from mail-by2on0102.outbound.protection.outlook.com ([207.46.100.102]:22076 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932084AbbHZUf4 (ORCPT ); Wed, 26 Aug 2015 16:35:56 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=scottwood@freescale.com; Date: Wed, 26 Aug 2015 15:35:39 -0500 From: Scott Wood To: Chenhui Zhao CC: , , Subject: Re: [PATCH v2,2/5] powerpc/rcpm: add RCPM driver Message-ID: <20150826203539.GA10582@home.buserror.net> References: <1440590988-25594-1-git-send-email-chenhui.zhao@freescale.com> <1440590988-25594-2-git-send-email-chenhui.zhao@freescale.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <1440590988-25594-2-git-send-email-chenhui.zhao@freescale.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-Originating-IP: [2601:448:8100:f9f:12bf:48ff:fe84:c9a0] X-ClientProxiedBy: BY2PR05CA044.namprd05.prod.outlook.com (10.141.250.34) To BY1PR03MB1481.namprd03.prod.outlook.com (25.162.210.14) X-Microsoft-Exchange-Diagnostics: 1;BY1PR03MB1481;2:pphxI4tmx8JdCFGZyQtzTIwyFoM1/DbxDiRASGKL47gCEeGGdTnDf9ApIn9KUZ+ptX+0sQxitp8OgYlLLvRmWfcKCSCdI2V/4260hHNtvc0f79j/8d/2rlkYMwSY82nv1Cq1LtP1uVqYthur/cjLS/r3r719weLsyWuEPUHo4ZA=;3:yVw+cJXk6InDhksjGseBJvhZ2Vp2r9P0P0G/kg2i0tQpLgYjaAS1THmeC6DWAWAyO2LgfHYA59Uhq1wSeMBhL/tZvkYIvdj040pfQFpOouHX9TrsVeGqZtqgDn4/4NsU87tnWRHTYGPfTDJ0DXBFsA==;25:qqjsFV9NhM5VqH9Xi7j27yiD7M9r7m7i4T9dZUUa7UmnGf5sz98tWQkdK0YQd43mh/FjuhrCORP/G52j5rHDe1VbXUzn9glhkugPqFzMPoFneXKjaHz9Fc5OUuHJt94/GE5lYUFi3l6ycrCrlrhzlsrL90zQpCMR/XZN2g4fAvFCliq//cL1VX6AXH5KcGG6A6YLyL5y0ohOpFNtg17ckY68Hgc4VQBcpzHke6wk0JEYuX7iCGC5NNsaC+7Cz0viTUHS+mTIqnVyTPgLXZXN7w== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY1PR03MB1481; X-Microsoft-Exchange-Diagnostics: 1;BY1PR03MB1481;20:JxPx/4cKrVENyLI+oVl7LteeECdg6lvPkA44e98eNlv1RgRXrpcjtQuJMd0H8Lk52HLbjR+AuRTsDODIQ83NeDG1MKuUbJvH+Be1W9Q759xSH+pFvdvupILWg6KhpIiVf/YYzWJL2SGZnRWZW73XU/aCbaU8H///cLb+KHxOAZMjT/vdp6mAvTGg0Ei0VxpcaEokXHFY+5NpazCgTo3n35VbT2sojPHySz+X61GXDTmNloEw8t+H06XWPpX0B51QnEOzq1CFlTuS3J7u1//3pvOdxliOBeNG5s1QQCe5MOl5oX4rG9+0s+5K1fUj13TDlRKzko2yoA1hpV8ROm5p0CpQ8W74IQLPpNw8gc8DqQ7I/B3cICC3SVTQNiIJh6LeDXBIiRNWGV5GYz18iCZi80sNffy+ObBYeJW4wxDG1G+VatUmMyV6i7h0B7vjhLJ+5QHh7FW4S+zxAHXeW8/6Ijw4zYrKyafDQrnGAf2qqFUorev/BUOexi+DY6aBkHy6;4:fVr6x4Gd6S1na1Vd1fDiV2O911keou+WIjlhH51F/Nm1laoIKQTJkpJsahSE83nPkRL409cK7+9aeaGQygRoh85YPv1mw9BF+ay8Wc/VV/6EmaEfejFM1vn8j6+SWoLWrgbcITCvDgbK4h+gGXAkt9zcTobWCfWG/uUUs1kk2ixbIvT6GLC0hnPpm9ROnFVm48JLlZoYWebgJFfgDt2H/lmEMG8GAXcWZUPlOnLeixglPpYvxmWA+x+/ztqjVoN6EcepVPfz0vwU/4HaCSuaOMNdoes8gj5dGvlvlACMIdLdLe3Vy53au2lcNnePJMRu X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(8121501046)(3002001);SRVR:BY1PR03MB1481;BCL:0;PCL:0;RULEID:;SRVR:BY1PR03MB1481; X-Forefront-PRVS: 0680FADD48 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(189002)(199003)(24454002)(97736004)(106356001)(68736005)(92566002)(5001860100001)(5007970100001)(69596002)(4001540100001)(33656002)(5001830100001)(189998001)(46102003)(4001350100001)(87976001)(86362001)(2950100001)(53416004)(101416001)(81156007)(97756001)(83506001)(42186005)(77156002)(77096005)(122386002)(5004730100002)(62966003)(5001960100002)(64706001)(4001450100002)(50466002)(40100003)(110136002)(46406003)(105586002)(23726002)(50986999)(47776003)(107886002)(54356999)(76176999)(3826002)(4001430100001);DIR:OUT;SFP:1102;SCL:1;SRVR:BY1PR03MB1481;H:home.buserror.net;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY1PR03MB1481;23:OEgeuwClhvp+TREj4rJ+4tdDI36xrd+Fe60mxtvED?= =?us-ascii?Q?Io1oYOdkUmysau4POcc69qT+A4dXOQi7uN+k+75WqHziyWtef50tLFRteZ01?= =?us-ascii?Q?DMTeeFKYg5NIF14AHHn9oGwEYZ/2lpfYjyYnkfuvYzEV+d0CLSLA3kOW4J4t?= =?us-ascii?Q?gquH0zGI1hB0KU1xUpX7W4HyOGuEcLRcFC99wVuJ3CGfss1J5OwAC5RnKIiF?= =?us-ascii?Q?hZHSBATFdvHX+R1n1Kj9qlFWJdvgxEkyWEWZe2YjGlrnjpHQhqXPM7OKuKrO?= =?us-ascii?Q?HLofZ2io6Gv9sowrQhmfIxr4nyc3w2CIhdbftO/lryKxijYUnTCozjv66dyK?= =?us-ascii?Q?2Oo7rm47Nbzopzt/6zSIXy6EvETAuDjL1/zdX8n+xIxMMh7cXzZpm/R1zwPO?= =?us-ascii?Q?+CF5eEOFZ8l9o3vjNi854G5QDfYMjZXQN+8ZK73KKW17KGAiJabKqRlrpyYy?= =?us-ascii?Q?ruTXjPIPJ9FfmZvPs9K3mVxzV0FqQiEHxp/rVriKEv4CaPyhc/XO1vQLJJym?= =?us-ascii?Q?Mm8SU0mQZIVbS0X+xjcREFeTVEKsBhMaXjC2I+iLUogEwQgY01fwNW5/49Lp?= =?us-ascii?Q?QfPX0rPo68pzDK+6H+ZeEXLp8xzHLsCXCj+TbfKl/dcB7xifQ8E0b1r9vpRt?= =?us-ascii?Q?BJNDlmaEKB7waQroENSH8IFXEa38uL5i/5487vEN42XIIbx7ujx0+WywsYJu?= =?us-ascii?Q?cEfvqu98Z25G5SYLf4c7CxZ3M1+Mn845KkihdEBEcHV0xpmivc6I2o5enMfD?= =?us-ascii?Q?6jZ9hG/FkgTEdjljGNWCR1rUCxYju7uB5Jg1qpkqYvF7Pq59vSET8Vz98aIu?= =?us-ascii?Q?9BRiNtv3qT1eed6rMyA2VRAQlRbRCwJGgsuIR8C57yyDDsLKzl+N58eSIPYz?= =?us-ascii?Q?ThCiAqaXR2Ue0v2WuWHpQJhKBmKiyG5nLPvdhVH7QpVM5VdewooIYWqBMFhz?= =?us-ascii?Q?DPGVpxsuFCFuMcSklNbBl7nD/T6vNA5NaDszCoG6lIEac+HrXIA1VRu/ilRf?= =?us-ascii?Q?tGVPYaFGJ29YItUrwFnF8T8TfSIi2pXJk9vH8ClnwVO09Wi07i8MdNxE15MS?= =?us-ascii?Q?uVdKAIe6hIJyIrWIkxpzYY3XDYEuE+4AoqTgnD8pD2a8WL7r0eXAfHG5T0Tp?= =?us-ascii?Q?Aw47uLUfwWeAPd4attjrHwns5Tisr9lzYzCJsGbPOQB9oLgDkFQTKGHCQr+o?= =?us-ascii?Q?ucP64neoGL5Y3Npe8NIDBPNa2Frh1LPYzcyUBlp5fgNwx/oVUoTschgMKzS/?= =?us-ascii?Q?waoG/YysNP3QFcdT7C26Qms6cKUbkGyG5Vf/kHV?= X-Microsoft-Exchange-Diagnostics: 1;BY1PR03MB1481;5:TvxMYwT3yKLdW6CPuPb3tgP0zkFiW5ud6qFAGIyVtEhf+u3CQBNro70MwDv0YRprtKAgLLkKLsO+5xVfHWxwgFuo5YGqEFw16BeLzfBwUBEicyS9VBruk5fgqDgQKqs8rVhROJnbhHunFuY/Pd99cA==;24:K5jicmwhcycf0SuCwIwGf44pnk1GCgg62FQHjCeY2A0L5Ds/0amD8gVZEzCIfP2W5s3kLjm+5XWXAQZ3WAMoO+Jkg7gJjGDlmUzBZ/IWsyM=;20:HSTGQWshgVWRn3VD4iDhBd2OOthDBGlCpucTX4AZzKnHHBr2AZ0YU9FuLg9DZcEPkhuMxdAwKLa/15ImhdPBbQ== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Aug 2015 20:35:53.2465 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR03MB1481 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Aug 26, 2015 at 08:09:45PM +0800, Chenhui Zhao wrote: > +#ifdef CONFIG_PPC_BOOK3E > +static void qoriq_disable_thread(int cpu) > +{ > + int hw_cpu = get_hard_smp_processor_id(cpu); > + int thread = cpu_thread_in_core(hw_cpu); > + > + mtspr(SPRN_TENC, TEN_THREAD(thread)); > +} > +#endif This file is always used on book3e. If the intent is to only build this on 64-bit, use CONFIG_PPC64 rather than relying on the fact that this one of the confusing mess of BOOKE/BOOK3E symbols is 64-bit-only. > +static void rcpm_v2_cpu_die(int cpu) > +{ > +#ifdef CONFIG_PPC_BOOK3E > + int primary; > + > + if (threads_per_core == 2) { > + primary = cpu_first_thread_sibling(cpu); > + if (cpu_is_offline(primary) && cpu_is_offline(primary + 1)) { > + /* if both threads are offline, put the cpu in PH20 */ > + rcpm_v2_cpu_enter_state(cpu, E500_PM_PH20); > + } else { > + /* if only one thread is offline, disable the thread */ > + qoriq_disable_thread(cpu); > + } > + } > +#endif > + > + if (threads_per_core == 1) { > + rcpm_v2_cpu_enter_state(cpu, E500_PM_PH20); > + return; > + } > +} That "return;" adds nothing, and it's even more awkward having it on the one-thread case but not the two-thread case. > +static void rcpm_v1_cpu_up_prepare(int cpu) > +{ > + rcpm_v1_cpu_exit_state(cpu, E500_PM_PH15); > + rcpm_v1_irq_unmask(cpu); > +} > + > +static void rcpm_v2_cpu_exit_state(int cpu, int state) > +{ > + int hw_cpu = get_hard_smp_processor_id(cpu); > + u32 mask = 1 << cpu_core_index_of_thread(hw_cpu); Are you sure cpu_core_index_of_thread() is supposed to take a hardware cpu id? The only current user, pseries_energy.c, has the comment "Convert logical cpu number to core number". > +static const struct of_device_id rcpm_matches[] = { > + { > + .compatible = "fsl,qoriq-rcpm-1.0", > + .data = (void *)&qoriq_rcpm_v1_ops, > + }, > + { > + .compatible = "fsl,qoriq-rcpm-2.0", > + .data = (void *)&qoriq_rcpm_v2_ops, > + }, > + { > + .compatible = "fsl,qoriq-rcpm-2.1", > + .data = (void *)&qoriq_rcpm_v2_ops, > + }, > + {}, > +}; Unnecessary (and const-unsafe) casts. > + > +int __init fsl_rcpm_init(void) > +{ > + struct device_node *np; > + const struct of_device_id *match; > + void __iomem *base; > + > + np = of_find_matching_node_and_match(NULL, rcpm_matches, &match); > + if (!np) { > + pr_err("can't find the rcpm node.\n"); > + return -ENODEV; > + } It's not an error for the device tree node to not have this. -Scott