The function has lost all clearing operations. Use the commonly
available name (declared in xen/smp.h), that x86 also uses.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
I would have expected this to also address a Misra violation
(declaration without definition), but I can't spot any rule (having
looked through 8.x in particular) to this effect.
--- a/xen/arch/arm/include/asm/smp.h
+++ b/xen/arch/arm/include/asm/smp.h
@@ -29,7 +29,6 @@ int cpu_up_send_sgi(int cpu);
 extern void init_secondary(void);
 
 extern void smp_init_cpus(void);
-extern void smp_clear_cpu_maps (void);
 extern unsigned int smp_get_max_cpus(void);
 
 #define cpu_physical_id(cpu) cpu_logical_map(cpu)
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -317,7 +317,7 @@ void asmlinkage __init start_xen(unsigne
     /* Initialize traps early allow us to get backtrace when an error occurred */
     init_traps();
 
-    smp_clear_cpu_maps();
+    smp_prepare_boot_cpu();
 
     device_tree_flattened = early_fdt_map(fdt_paddr);
     if ( !device_tree_flattened )
--- a/xen/arch/arm/smpboot.c
+++ b/xen/arch/arm/smpboot.c
@@ -107,8 +107,7 @@ static void remove_cpu_sibling_map(int c
     free_cpumask_var(per_cpu(cpu_core_mask, cpu));
 }
 
-void __init
-smp_clear_cpu_maps (void)
+void __init smp_prepare_boot_cpu(void)
 {
     cpumask_set_cpu(0, &cpu_online_map);
     cpumask_set_cpu(0, &cpu_possible_map);On 17/04/2025 10:36, Jan Beulich wrote: > The function has lost all clearing operations. Use the commonly > available name (declared in xen/smp.h), that x86 also uses. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Michal Orzel <michal.orzel@amd.com> ~Michal
On 2025-04-17 10:36, Jan Beulich wrote:
> The function has lost all clearing operations. Use the commonly
> available name (declared in xen/smp.h), that x86 also uses.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> I would have expected this to also address a Misra violation
> (declaration without definition), but I can't spot any rule (having
> looked through 8.x in particular) to this effect.
> 
The rule you are looking for is 8.6: " An identifier with external 
linkage shall have exactly one external definition", which is explicitly 
deviated in Xen to allow declarations that have no definition, 
especially in the case where definitions may be optimized out by the 
compiler or are simply compiled out. I don't recall the specific 
discussion that led to this deviation, but I can dug it up, if needed.
> --- a/xen/arch/arm/include/asm/smp.h
> +++ b/xen/arch/arm/include/asm/smp.h
> @@ -29,7 +29,6 @@ int cpu_up_send_sgi(int cpu);
>  extern void init_secondary(void);
> 
>  extern void smp_init_cpus(void);
> -extern void smp_clear_cpu_maps (void);
>  extern unsigned int smp_get_max_cpus(void);
> 
>  #define cpu_physical_id(cpu) cpu_logical_map(cpu)
> --- a/xen/arch/arm/setup.c
> +++ b/xen/arch/arm/setup.c
> @@ -317,7 +317,7 @@ void asmlinkage __init start_xen(unsigne
>      /* Initialize traps early allow us to get backtrace when an error 
> occurred */
>      init_traps();
> 
> -    smp_clear_cpu_maps();
> +    smp_prepare_boot_cpu();
> 
>      device_tree_flattened = early_fdt_map(fdt_paddr);
>      if ( !device_tree_flattened )
> --- a/xen/arch/arm/smpboot.c
> +++ b/xen/arch/arm/smpboot.c
> @@ -107,8 +107,7 @@ static void remove_cpu_sibling_map(int c
>      free_cpumask_var(per_cpu(cpu_core_mask, cpu));
>  }
> 
> -void __init
> -smp_clear_cpu_maps (void)
> +void __init smp_prepare_boot_cpu(void)
>  {
>      cpumask_set_cpu(0, &cpu_online_map);
>      cpumask_set_cpu(0, &cpu_possible_map);
-- 
Nicola Vetrini, B.Sc.
Software Engineer
BUGSENG (https://bugseng.com)
LinkedIn: https://www.linkedin.com/in/nicola-vetrini-a42471253
                
            On 17.04.2025 10:48, Nicola Vetrini wrote: > On 2025-04-17 10:36, Jan Beulich wrote: >> The function has lost all clearing operations. Use the commonly >> available name (declared in xen/smp.h), that x86 also uses. >> >> Signed-off-by: Jan Beulich <jbeulich@suse.com> >> --- >> I would have expected this to also address a Misra violation >> (declaration without definition), but I can't spot any rule (having >> looked through 8.x in particular) to this effect. > > The rule you are looking for is 8.6: " An identifier with external > linkage shall have exactly one external definition", which is explicitly > deviated in Xen to allow declarations that have no definition, > especially in the case where definitions may be optimized out by the > compiler or are simply compiled out. I don't recall the specific > discussion that led to this deviation, but I can dug it up, if needed. The respective deviation is imo bogus. Iirc if anything this is about DCE, which isn't "definition is compiled-out or optimized-out by the compiler" but "invocation is compiled-out or optimized-out by the compiler": If the definition was optimized out, there necessarily _is_ a definition in source. Jan
© 2016 - 2025 Red Hat, Inc.