[PATCHv2 04/12] arm64: psci: remove unnecessary id indirection

Hanjun Guo hanjun.guo at linaro.org
Tue May 19 01:21:14 PDT 2015


On 2015年05月18日 18:38, Mark Rutland wrote:
> PSCI 0.1 did not define canonical IDs for CPU_ON, CPU_OFF, CPU_SUSPEND,
> or MIGRATE, and so these need to be provided when using firmware
> compliant to PSCI 0.1.
>
> However, functions introduced in 0.2 or later have canonical IDs, and
> these cannot be provided via DT. There's no need to indirect the IDs via
> a table; they can be used directly at callsites (and already are for
> SYSTEM_OFF and SYSTEM_RESET).
>
> This patch removes the unnecessary function ID indirection for
> AFFINITY_INFO and MIGRATE_INFO_TYPE.
>
> Signed-off-by: Mark Rutland <mark.rutland at arm.com>
> Acked-by: Lorenzo Pieralisi <lorenzo.pieralisi at arm.com>
> Cc: Catalin Marinas <catalin.marinas at arm.com>
> Cc: Will Deacon <will.deacon at arm.com>
> ---
>   arch/arm64/kernel/psci.c | 20 +++-----------------
>   1 file changed, 3 insertions(+), 17 deletions(-)
>
> diff --git a/arch/arm64/kernel/psci.c b/arch/arm64/kernel/psci.c
> index 10fa25e..66b5b75 100644
> --- a/arch/arm64/kernel/psci.c
> +++ b/arch/arm64/kernel/psci.c
> @@ -67,8 +67,6 @@ enum psci_function {
>   	PSCI_FN_CPU_ON,
>   	PSCI_FN_CPU_OFF,
>   	PSCI_FN_MIGRATE,
> -	PSCI_FN_AFFINITY_INFO,
> -	PSCI_FN_MIGRATE_INFO_TYPE,
>   	PSCI_FN_MAX,
>   };
>
> @@ -168,22 +166,13 @@ static int psci_migrate(unsigned long cpuid)
>   static int psci_affinity_info(unsigned long target_affinity,
>   		unsigned long lowest_affinity_level)
>   {
> -	int err;
> -	u32 fn;
> -
> -	fn = psci_function_id[PSCI_FN_AFFINITY_INFO];
> -	err = invoke_psci_fn(fn, target_affinity, lowest_affinity_level, 0);
> -	return err;
> +	return invoke_psci_fn(PSCI_0_2_FN64_AFFINITY_INFO, target_affinity,
> +			      lowest_affinity_level, 0);
>   }
>
>   static int psci_migrate_info_type(void)
>   {
> -	int err;
> -	u32 fn;
> -
> -	fn = psci_function_id[PSCI_FN_MIGRATE_INFO_TYPE];
> -	err = invoke_psci_fn(fn, 0, 0, 0);
> -	return err;
> +	return invoke_psci_fn(PSCI_0_2_FN_MIGRATE_INFO_TYPE, 0, 0, 0);
>   }
>
>   static int __maybe_unused cpu_psci_cpu_init_idle(struct device_node *cpu_node,
> @@ -290,11 +279,8 @@ static void __init psci_0_2_set_functions(void)
>   	psci_function_id[PSCI_FN_MIGRATE] = PSCI_0_2_FN64_MIGRATE;
>   	psci_ops.migrate = psci_migrate;
>
> -	psci_function_id[PSCI_FN_AFFINITY_INFO] = PSCI_0_2_FN64_AFFINITY_INFO;
>   	psci_ops.affinity_info = psci_affinity_info;
>
> -	psci_function_id[PSCI_FN_MIGRATE_INFO_TYPE] =
> -		PSCI_0_2_FN_MIGRATE_INFO_TYPE;
>   	psci_ops.migrate_info_type = psci_migrate_info_type;
>
>   	arm_pm_restart = psci_sys_reset;

Reviewed-by: Hanjun Guo <hanjun.guo at linaro.org>

Thanks
Hanjun



More information about the linux-arm-kernel mailing list