[PATCH v4 01/13] powerpc/rtas: Add for_each_rtas_function() iterator

Aneesh Kumar K.V (IBM) aneesh.kumar at kernel.org
Mon Nov 20 19:07:06 AEDT 2023


Nathan Lynch via B4 Relay <devnull+nathanl.linux.ibm.com at kernel.org>
writes:

> From: Nathan Lynch <nathanl at linux.ibm.com>
>
> Add a convenience macro for iterating over every element of the
> internal function table and convert the one site that can use it. An
> additional user of the macro is anticipated in changes to follow.
>

Reviewed-by: Aneesh Kumar K.V (IBM) <aneesh.kumar at kernel.org>

> Signed-off-by: Nathan Lynch <nathanl at linux.ibm.com>
> ---
>  arch/powerpc/kernel/rtas.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c
> index eddc031c4b95..1ad1869e2e96 100644
> --- a/arch/powerpc/kernel/rtas.c
> +++ b/arch/powerpc/kernel/rtas.c
> @@ -454,6 +454,11 @@ static struct rtas_function rtas_function_table[] __ro_after_init = {
>  	},
>  };
>  
> +#define for_each_rtas_function(funcp)                                       \
> +	for (funcp = &rtas_function_table[0];                               \
> +	     funcp < &rtas_function_table[ARRAY_SIZE(rtas_function_table)]; \
> +	     ++funcp)
> +
>  /*
>   * Nearly all RTAS calls need to be serialized. All uses of the
>   * default rtas_args block must hold rtas_lock.
> @@ -525,10 +530,10 @@ static DEFINE_XARRAY(rtas_token_to_function_xarray);
>  
>  static int __init rtas_token_to_function_xarray_init(void)
>  {
> +	const struct rtas_function *func;
>  	int err = 0;
>  
> -	for (size_t i = 0; i < ARRAY_SIZE(rtas_function_table); ++i) {
> -		const struct rtas_function *func = &rtas_function_table[i];
> +	for_each_rtas_function(func) {
>  		const s32 token = func->token;
>  
>  		if (token == RTAS_UNKNOWN_SERVICE)
>
> -- 
> 2.41.0


More information about the Linuxppc-dev mailing list