[PATCH v2 05/25] x86: mp_init: Drop the num_cpus static variable

Bin Meng bmeng.cn at gmail.com
Sun Jun 28 07:23:18 CEST 2020


Hi Simon,

On Mon, Jun 15, 2020 at 1:00 AM Simon Glass <sjg at chromium.org> wrote:
>
> This does not need to be global across all functions in this file. Pass a
> parameter instead.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> Reviewed-by: Wolfgang Wallner <wolfgang.wallner at br-automation.com>
> ---
>
> (no changes since v1)
>
>  arch/x86/cpu/mp_init.c | 22 +++++++++++++++-------
>  1 file changed, 15 insertions(+), 7 deletions(-)
>
> diff --git a/arch/x86/cpu/mp_init.c b/arch/x86/cpu/mp_init.c
> index 8b00d57c88..aebbca6618 100644
> --- a/arch/x86/cpu/mp_init.c
> +++ b/arch/x86/cpu/mp_init.c
> @@ -31,9 +31,6 @@
>
>  DECLARE_GLOBAL_DATA_PTR;
>
> -/* Total CPUs include BSP */
> -static int num_cpus;
> -
>  /* This also needs to match the sipi.S assembly code for saved MSR encoding */
>  struct saved_msr {
>         uint32_t index;
> @@ -384,13 +381,23 @@ static int start_aps(int num_aps, atomic_t *ap_count)
>         return 0;
>  }
>
> -static int bsp_do_flight_plan(struct udevice *cpu, struct mp_flight_plan *plan)
> +/**
> + * bsp_do_flight_plan() - Do the flight plan on all CPUs

on the BSP

> + *
> + * This runs the flight plan on the main CPU used to boot U-Boot
> + *
> + * @cpu: Device for the main CPU
> + * @plan: Flight plan to run
> + * @num_aps: Number of APs (CPUs other than the BSP)
> + * @returns 0 on success, -ETIMEDOUT if an AP failed to come up
> + */
> +static int bsp_do_flight_plan(struct udevice *cpu, struct mp_flight_plan *plan,
> +                             int num_aps)
>  {
>         int i;
>         int ret = 0;
>         const int timeout_us = 100000;
>         const int step_us = 100;
> -       int num_aps = num_cpus - 1;
>
>         for (i = 0; i < plan->num_records; i++) {
>                 struct mp_flight_record *rec = &plan->records[i];
> @@ -410,6 +417,7 @@ static int bsp_do_flight_plan(struct udevice *cpu, struct mp_flight_plan *plan)
>
>                 release_barrier(&rec->barrier);
>         }
> +
>         return ret;
>  }
>
> @@ -454,7 +462,7 @@ static struct mp_flight_record mp_steps[] = {
>
>  int mp_init(void)
>  {
> -       int num_aps;
> +       int num_aps, num_cpus;
>         atomic_t *ap_count;
>         struct udevice *cpu;
>         int ret;
> @@ -516,7 +524,7 @@ int mp_init(void)
>         }
>
>         /* Walk the flight plan for the BSP */
> -       ret = bsp_do_flight_plan(cpu, &mp_info);
> +       ret = bsp_do_flight_plan(cpu, &mp_info, num_aps);
>         if (ret) {
>                 debug("CPU init failed: err=%d\n", ret);
>                 return ret;
> --

Other than that,
Reviewed-by: Bin Meng <bmeng.cn at gmail.com>

Regards,
Bin


More information about the U-Boot mailing list