lkml.org 
[lkml]   [2023]   [Aug]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[patch 28/53] x86/mpparse: Use new APIC registration function
    Date
    Aside of switching over to the new interface, record the number of
    registered CPUs locally, which allows to make num_processors and
    disabled_cpus confined to the topology code.

    No functional change intended.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    ---
    arch/x86/include/asm/mpspec.h | 2 --
    arch/x86/kernel/cpu/topology.c | 2 +-
    arch/x86/kernel/mpparse.c | 21 ++++++++++-----------
    3 files changed, 11 insertions(+), 14 deletions(-)

    --- a/arch/x86/include/asm/mpspec.h
    +++ b/arch/x86/include/asm/mpspec.h
    @@ -61,8 +61,6 @@ static inline void e820__memblock_alloc_
    #define mpparse_parse_smp_config x86_init_noop
    #endif

    -int generic_processor_info(int apicid);
    -
    extern DECLARE_BITMAP(phys_cpu_present_map, MAX_LOCAL_APIC);

    static inline void reset_phys_cpu_present_map(u32 apicid)
    --- a/arch/x86/kernel/cpu/topology.c
    +++ b/arch/x86/kernel/cpu/topology.c
    @@ -128,7 +128,7 @@ static void cpu_update_apic(int cpu, u32
    cpu_mark_primary_thread(cpu, apicid);
    }

    -int generic_processor_info(int apicid)
    +static int generic_processor_info(int apicid)
    {
    int cpu, max = nr_cpu_ids;

    --- a/arch/x86/kernel/mpparse.c
    +++ b/arch/x86/kernel/mpparse.c
    @@ -36,6 +36,8 @@
    * Checksum an MP configuration block.
    */

    +static unsigned int num_procs __initdata;
    +
    static int __init mpf_checksum(unsigned char *mp, int len)
    {
    int sum = 0;
    @@ -48,21 +50,18 @@ static int __init mpf_checksum(unsigned

    static void __init MP_processor_info(struct mpc_cpu *m)
    {
    - int apicid;
    char *bootup_cpu = "";

    - if (!(m->cpuflag & CPU_ENABLED)) {
    - disabled_cpus++;
    - return;
    - }
    + topology_register_apic(m->apicid, CPU_ACPIID_INVALID, m->cpuflag & CPU_ENABLED);

    - apicid = m->apicid;
    + if (!(m->cpuflag & CPU_ENABLED))
    + return;

    if (m->cpuflag & CPU_BOOTPROCESSOR)
    bootup_cpu = " (Bootup-CPU)";

    pr_info("Processor #%d%s\n", m->apicid, bootup_cpu);
    - generic_processor_info(apicid);
    + num_procs++;
    }

    #ifdef CONFIG_X86_IO_APIC
    @@ -239,9 +238,9 @@ static int __init smp_read_mpc(struct mp
    }
    }

    - if (!num_processors)
    + if (!num_procs && !acpi_lapic)
    pr_err("MPTABLE: no processors registered!\n");
    - return num_processors;
    + return num_procs || acpi_lapic;
    }

    #ifdef CONFIG_X86_IO_APIC
    @@ -532,8 +531,8 @@ static __init void mpparse_get_smp_confi
    } else
    BUG();

    - if (!early)
    - pr_info("Processors: %d\n", num_processors);
    + if (!early && !acpi_lapic)
    + pr_info("Processors: %d\n", num_procs);
    /*
    * Only use the first configuration found.
    */
    \
     
     \ /
      Last update: 2023-08-07 15:54    [W:3.304 / U:0.528 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site