Commit 8098428c authored by Thomas Gleixner's avatar Thomas Gleixner

x86/mpparse: Use new APIC registration function

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: default avatarThomas Gleixner <tglx@linutronix.de>
Tested-by: default avatarMichael Kelley <mhklinux@outlook.com>
Tested-by: default avatarSohil Mehta <sohil.mehta@intel.com>
Link: https://lore.kernel.org/r/20240213210251.830955273@linutronix.de

parent 7d319c0f
...@@ -61,8 +61,6 @@ static inline void e820__memblock_alloc_reserved_mpc_new(void) { } ...@@ -61,8 +61,6 @@ static inline void e820__memblock_alloc_reserved_mpc_new(void) { }
#define mpparse_parse_smp_config x86_init_noop #define mpparse_parse_smp_config x86_init_noop
#endif #endif
int generic_processor_info(int apicid);
extern DECLARE_BITMAP(phys_cpu_present_map, MAX_LOCAL_APIC); extern DECLARE_BITMAP(phys_cpu_present_map, MAX_LOCAL_APIC);
static inline void reset_phys_cpu_present_map(u32 apicid) static inline void reset_phys_cpu_present_map(u32 apicid)
......
...@@ -133,7 +133,7 @@ static void cpu_update_apic(int cpu, u32 apicid) ...@@ -133,7 +133,7 @@ static void cpu_update_apic(int cpu, u32 apicid)
cpu_mark_primary_thread(cpu, 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; int cpu, max = nr_cpu_ids;
......
...@@ -36,6 +36,8 @@ ...@@ -36,6 +36,8 @@
* Checksum an MP configuration block. * Checksum an MP configuration block.
*/ */
static unsigned int num_procs __initdata;
static int __init mpf_checksum(unsigned char *mp, int len) static int __init mpf_checksum(unsigned char *mp, int len)
{ {
int sum = 0; int sum = 0;
...@@ -50,16 +52,15 @@ static void __init MP_processor_info(struct mpc_cpu *m) ...@@ -50,16 +52,15 @@ static void __init MP_processor_info(struct mpc_cpu *m)
{ {
char *bootup_cpu = ""; char *bootup_cpu = "";
if (!(m->cpuflag & CPU_ENABLED)) { topology_register_apic(m->apicid, CPU_ACPIID_INVALID, m->cpuflag & CPU_ENABLED);
disabled_cpus++; if (!(m->cpuflag & CPU_ENABLED))
return; return;
}
if (m->cpuflag & CPU_BOOTPROCESSOR) if (m->cpuflag & CPU_BOOTPROCESSOR)
bootup_cpu = " (Bootup-CPU)"; bootup_cpu = " (Bootup-CPU)";
pr_info("Processor #%d%s\n", m->apicid, bootup_cpu); pr_info("Processor #%d%s\n", m->apicid, bootup_cpu);
generic_processor_info(m->apicid); num_procs++;
} }
#ifdef CONFIG_X86_IO_APIC #ifdef CONFIG_X86_IO_APIC
...@@ -236,9 +237,9 @@ static int __init smp_read_mpc(struct mpc_table *mpc, unsigned early) ...@@ -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"); pr_err("MPTABLE: no processors registered!\n");
return num_processors; return num_procs || acpi_lapic;
} }
#ifdef CONFIG_X86_IO_APIC #ifdef CONFIG_X86_IO_APIC
...@@ -529,8 +530,8 @@ static __init void mpparse_get_smp_config(unsigned int early) ...@@ -529,8 +530,8 @@ static __init void mpparse_get_smp_config(unsigned int early)
} else } else
BUG(); BUG();
if (!early) if (!early && !acpi_lapic)
pr_info("Processors: %d\n", num_processors); pr_info("Processors: %d\n", num_procs);
/* /*
* Only use the first configuration found. * Only use the first configuration found.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment