Skip to content

Commit

Permalink
x86: change boot_cpu_id to boot_cpu_physical_apicid
Browse files Browse the repository at this point in the history
This is to match i386. The former name was cuter,
but the current is more meaningful and more general,
since cpu_id can be a logical id.

Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Glauber de Oliveira Costa authored and Ingo Molnar committed Apr 17, 2008
1 parent 9d97d0d commit c70dcb7
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 30 deletions.
13 changes: 7 additions & 6 deletions arch/x86/kernel/apic_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,8 @@ void __cpuinit check_boot_apic_timer_broadcast(void)
lapic_clockevent.features |= CLOCK_EVT_FEAT_DUMMY;

local_irq_enable();
clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_FORCE, &boot_cpu_id);
clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_FORCE,
&boot_cpu_physical_apicid);
local_irq_disable();
}

Expand Down Expand Up @@ -857,7 +858,7 @@ static int __init detect_init_APIC(void)
}

mp_lapic_addr = APIC_DEFAULT_PHYS_BASE;
boot_cpu_id = 0;
boot_cpu_physical_apicid = 0;
return 0;
}

Expand All @@ -882,7 +883,7 @@ void __init early_init_lapic_mapping(void)
* Fetch the APIC ID of the BSP in case we have a
* default configuration (or the MP table is broken).
*/
boot_cpu_id = GET_APIC_ID(apic_read(APIC_ID));
boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID));
}

/**
Expand All @@ -909,7 +910,7 @@ void __init init_apic_mappings(void)
* Fetch the APIC ID of the BSP in case we have a
* default configuration (or the MP table is broken).
*/
boot_cpu_id = GET_APIC_ID(apic_read(APIC_ID));
boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID));
}

/*
Expand All @@ -930,8 +931,8 @@ int __init APIC_init_uniprocessor(void)

verify_local_APIC();

phys_cpu_present_map = physid_mask_of_physid(boot_cpu_id);
apic_write(APIC_ID, SET_APIC_ID(boot_cpu_id));
phys_cpu_present_map = physid_mask_of_physid(boot_cpu_physical_apicid);
apic_write(APIC_ID, SET_APIC_ID(boot_cpu_physical_apicid));

setup_local_APIC();

Expand Down
12 changes: 6 additions & 6 deletions arch/x86/kernel/mpparse_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ unsigned long mp_lapic_addr = 0;


/* Processor that is doing the boot up */
unsigned int boot_cpu_id = -1U;
EXPORT_SYMBOL(boot_cpu_id);
unsigned int boot_cpu_physical_apicid = -1U;
EXPORT_SYMBOL(boot_cpu_physical_apicid);

/* Internal processor count */
unsigned int num_processors;
Expand Down Expand Up @@ -107,7 +107,7 @@ static void __cpuinit MP_processor_info(struct mpc_config_processor *m)
}
if (m->mpc_cpuflag & CPU_BOOTPROCESSOR) {
bootup_cpu = " (Bootup-CPU)";
boot_cpu_id = m->mpc_apicid;
boot_cpu_physical_apicid = m->mpc_apicid;
}

printk(KERN_INFO "Processor #%d%s\n", m->mpc_apicid, bootup_cpu);
Expand Down Expand Up @@ -665,16 +665,16 @@ void __init mp_register_lapic_address(u64 address)
{
mp_lapic_addr = (unsigned long) address;
set_fixmap_nocache(FIX_APIC_BASE, mp_lapic_addr);
if (boot_cpu_id == -1U)
boot_cpu_id = GET_APIC_ID(apic_read(APIC_ID));
if (boot_cpu_physical_apicid == -1U)
boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID));
}

void __cpuinit mp_register_lapic (u8 id, u8 enabled)
{
struct mpc_config_processor processor;
int boot_cpu = 0;

if (id == boot_cpu_id)
if (id == boot_cpu_physical_apicid)
boot_cpu = 1;

processor.mpc_type = MP_PROCESSOR;
Expand Down
18 changes: 10 additions & 8 deletions arch/x86/kernel/smpboot_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -602,7 +602,8 @@ static __init void disable_smp(void)
cpu_present_map = cpumask_of_cpu(0);
cpu_possible_map = cpumask_of_cpu(0);
if (smp_found_config)
phys_cpu_present_map = physid_mask_of_physid(boot_cpu_id);
phys_cpu_present_map =
physid_mask_of_physid(boot_cpu_physical_apicid);
else
phys_cpu_present_map = physid_mask_of_physid(0);
cpu_set(0, per_cpu(cpu_sibling_map, 0));
Expand Down Expand Up @@ -637,9 +638,10 @@ static int __init smp_sanity_check(unsigned max_cpus)
* Should not be necessary because the MP table should list the boot
* CPU too, but we do it for the sake of robustness anyway.
*/
if (!physid_isset(boot_cpu_id, phys_cpu_present_map)) {
printk(KERN_NOTICE "weird, boot CPU (#%d) not listed by the BIOS.\n",
boot_cpu_id);
if (!physid_isset(boot_cpu_physical_apicid, phys_cpu_present_map)) {
printk(KERN_NOTICE
"weird, boot CPU (#%d) not listed by the BIOS.\n",
boot_cpu_physical_apicid);
physid_set(hard_smp_processor_id(), phys_cpu_present_map);
}

Expand All @@ -648,7 +650,7 @@ static int __init smp_sanity_check(unsigned max_cpus)
*/
if (!cpu_has_apic) {
printk(KERN_ERR "BIOS bug, local APIC #%d not detected!...\n",
boot_cpu_id);
boot_cpu_physical_apicid);
printk(KERN_ERR "... forcing use of dummy APIC emulation. (tell your hw vendor)\n");
nr_ioapics = 0;
return -1;
Expand Down Expand Up @@ -709,9 +711,9 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
enable_IO_APIC();
end_local_APIC_setup();

if (GET_APIC_ID(apic_read(APIC_ID)) != boot_cpu_id) {
if (GET_APIC_ID(apic_read(APIC_ID)) != boot_cpu_physical_apicid) {
panic("Boot APIC ID in local APIC unexpected (%d vs %d)",
GET_APIC_ID(apic_read(APIC_ID)), boot_cpu_id);
GET_APIC_ID(apic_read(APIC_ID)), boot_cpu_physical_apicid);
/* Or can we switch back to PIC here? */
}

Expand Down Expand Up @@ -756,7 +758,7 @@ int __cpuinit native_cpu_up(unsigned int cpu)

Dprintk("++++++++++++++++++++=_---CPU UP %u\n", cpu);

if (apicid == BAD_APICID || apicid == boot_cpu_id ||
if (apicid == BAD_APICID || apicid == boot_cpu_physical_apicid ||
!physid_isset(apicid, phys_cpu_present_map)) {
printk("__cpu_up: bad cpu %d\n", cpu);
return -EINVAL;
Expand Down
1 change: 0 additions & 1 deletion include/asm-x86/apic.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ extern int apic_runs_main_timer;
extern int ioapic_force;
extern int disable_apic;
extern int disable_apic_timer;
extern unsigned boot_cpu_id;

/*
* Basic functions accessing APICs.
Expand Down
3 changes: 3 additions & 0 deletions include/asm-x86/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,9 @@ extern void prefill_possible_map(void);
extern unsigned long setup_trampoline(void);

void smp_store_cpu_info(int id);
#define cpu_physical_id(cpu) per_cpu(x86_cpu_to_apicid, cpu)
#else
#define cpu_physical_id(cpu) boot_cpu_physical_apicid
#endif

#ifdef CONFIG_X86_32
Expand Down
5 changes: 0 additions & 5 deletions include/asm-x86/smp_32.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ extern void zap_low_mappings (void);
DECLARE_PER_CPU(int, cpu_number);
#define raw_smp_processor_id() (x86_read_percpu(cpu_number))

#define cpu_physical_id(cpu) per_cpu(x86_cpu_to_apicid, cpu)

extern int safe_smp_processor_id(void);

/* We don't mark CPUs online until __cpu_up(), so we need another measure */
Expand All @@ -41,10 +39,7 @@ static inline int num_booting_cpus(void)
}

#else /* CONFIG_SMP */

#define safe_smp_processor_id() 0
#define cpu_physical_id(cpu) boot_cpu_physical_apicid

#endif /* !CONFIG_SMP */

#ifdef CONFIG_X86_LOCAL_APIC
Expand Down
4 changes: 0 additions & 4 deletions include/asm-x86/smp_64.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ extern int smp_call_function_mask(cpumask_t mask, void (*func)(void *),
#ifdef CONFIG_SMP

#define raw_smp_processor_id() read_pda(cpunumber)
#define cpu_physical_id(cpu) per_cpu(x86_cpu_to_apicid, cpu)

#define stack_smp_processor_id() \
({ \
Expand All @@ -41,9 +40,6 @@ static inline int num_booting_cpus(void)
}

#else /* CONFIG_SMP */

extern unsigned int boot_cpu_id;
#define cpu_physical_id(cpu) boot_cpu_id
#define stack_smp_processor_id() 0

#endif /* !CONFIG_SMP */
Expand Down

0 comments on commit c70dcb7

Please sign in to comment.