Skip to content

Commit

Permalink
x86/mpparse: Use new APIC registration function
Browse files Browse the repository at this point in the history
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>
Tested-by: Michael Kelley <mhklinux@outlook.com>
Tested-by: Sohil Mehta <sohil.mehta@intel.com>
Link: https://lore.kernel.org/r/20240213210251.830955273@linutronix.de
  • Loading branch information
Thomas Gleixner committed Feb 15, 2024
1 parent 7d319c0 commit 8098428
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 11 deletions.
2 changes: 0 additions & 2 deletions arch/x86/include/asm/mpspec.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,6 @@ static inline void e820__memblock_alloc_reserved_mpc_new(void) { }
#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)
Expand Down
2 changes: 1 addition & 1 deletion arch/x86/kernel/cpu/topology.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ static void cpu_update_apic(int cpu, u32 apicid)
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;

Expand Down
17 changes: 9 additions & 8 deletions arch/x86/kernel/mpparse.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -50,16 +52,15 @@ static void __init MP_processor_info(struct mpc_cpu *m)
{
char *bootup_cpu = "";

if (!(m->cpuflag & CPU_ENABLED)) {
disabled_cpus++;
topology_register_apic(m->apicid, CPU_ACPIID_INVALID, m->cpuflag & CPU_ENABLED);
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(m->apicid);
num_procs++;
}

#ifdef CONFIG_X86_IO_APIC
Expand Down Expand Up @@ -236,9 +237,9 @@ static int __init smp_read_mpc(struct mpc_table *mpc, unsigned early)
}
}

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
Expand Down Expand Up @@ -529,8 +530,8 @@ static __init void mpparse_get_smp_config(unsigned int early)
} 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.
*/
Expand Down

0 comments on commit 8098428

Please sign in to comment.