Commit 05f2d12c authored by Jack Steiner's avatar Jack Steiner Committed by Ingo Molnar

x86: change GET_APIC_ID() from an inline function to an out-of-line function

Introduce a function to read the local APIC_ID.

This change is in preparation for additional changes to
the APICID functions that will come in a later patch.
Signed-off-by: default avatarJack Steiner <steiner@sgi.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent a5c15d41
...@@ -1195,7 +1195,7 @@ void __init init_apic_mappings(void) ...@@ -1195,7 +1195,7 @@ void __init init_apic_mappings(void)
* default configuration (or the MP table is broken). * default configuration (or the MP table is broken).
*/ */
if (boot_cpu_physical_apicid == -1U) if (boot_cpu_physical_apicid == -1U)
boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID)); boot_cpu_physical_apicid = GET_APIC_ID(read_apic_id());
#ifdef CONFIG_X86_IO_APIC #ifdef CONFIG_X86_IO_APIC
{ {
...@@ -1265,7 +1265,7 @@ int __init APIC_init_uniprocessor(void) ...@@ -1265,7 +1265,7 @@ int __init APIC_init_uniprocessor(void)
* might be zero if read from MP tables. Get it from LAPIC. * might be zero if read from MP tables. Get it from LAPIC.
*/ */
#ifdef CONFIG_CRASH_DUMP #ifdef CONFIG_CRASH_DUMP
boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID)); boot_cpu_physical_apicid = GET_APIC_ID(read_apic_id());
#endif #endif
phys_cpu_present_map = physid_mask_of_physid(boot_cpu_physical_apicid); phys_cpu_present_map = physid_mask_of_physid(boot_cpu_physical_apicid);
......
...@@ -650,10 +650,10 @@ int __init verify_local_APIC(void) ...@@ -650,10 +650,10 @@ int __init verify_local_APIC(void)
/* /*
* The ID register is read/write in a real APIC. * The ID register is read/write in a real APIC.
*/ */
reg0 = apic_read(APIC_ID); reg0 = read_apic_id();
apic_printk(APIC_DEBUG, "Getting ID: %x\n", reg0); apic_printk(APIC_DEBUG, "Getting ID: %x\n", reg0);
apic_write(APIC_ID, reg0 ^ APIC_ID_MASK); apic_write(APIC_ID, reg0 ^ APIC_ID_MASK);
reg1 = apic_read(APIC_ID); reg1 = read_apic_id();
apic_printk(APIC_DEBUG, "Getting ID: %x\n", reg1); apic_printk(APIC_DEBUG, "Getting ID: %x\n", reg1);
apic_write(APIC_ID, reg0); apic_write(APIC_ID, reg0);
if (reg1 != (reg0 ^ APIC_ID_MASK)) if (reg1 != (reg0 ^ APIC_ID_MASK))
...@@ -892,7 +892,7 @@ void __init early_init_lapic_mapping(void) ...@@ -892,7 +892,7 @@ void __init early_init_lapic_mapping(void)
* Fetch the APIC ID of the BSP in case we have a * Fetch the APIC ID of the BSP in case we have a
* default configuration (or the MP table is broken). * default configuration (or the MP table is broken).
*/ */
boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID)); boot_cpu_physical_apicid = GET_APIC_ID(read_apic_id());
} }
/** /**
...@@ -919,7 +919,7 @@ void __init init_apic_mappings(void) ...@@ -919,7 +919,7 @@ void __init init_apic_mappings(void)
* Fetch the APIC ID of the BSP in case we have a * Fetch the APIC ID of the BSP in case we have a
* default configuration (or the MP table is broken). * default configuration (or the MP table is broken).
*/ */
boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID)); boot_cpu_physical_apicid = GET_APIC_ID(read_apic_id());
} }
/* /*
...@@ -1140,7 +1140,7 @@ static int lapic_suspend(struct sys_device *dev, pm_message_t state) ...@@ -1140,7 +1140,7 @@ static int lapic_suspend(struct sys_device *dev, pm_message_t state)
maxlvt = lapic_get_maxlvt(); maxlvt = lapic_get_maxlvt();
apic_pm_state.apic_id = apic_read(APIC_ID); apic_pm_state.apic_id = read_apic_id();
apic_pm_state.apic_taskpri = apic_read(APIC_TASKPRI); apic_pm_state.apic_taskpri = apic_read(APIC_TASKPRI);
apic_pm_state.apic_ldr = apic_read(APIC_LDR); apic_pm_state.apic_ldr = apic_read(APIC_LDR);
apic_pm_state.apic_dfr = apic_read(APIC_DFR); apic_pm_state.apic_dfr = apic_read(APIC_DFR);
......
...@@ -97,7 +97,7 @@ static void flat_send_IPI_all(int vector) ...@@ -97,7 +97,7 @@ static void flat_send_IPI_all(int vector)
static int flat_apic_id_registered(void) static int flat_apic_id_registered(void)
{ {
return physid_isset(GET_APIC_ID(apic_read(APIC_ID)), phys_cpu_present_map); return physid_isset(GET_APIC_ID(read_apic_id()), phys_cpu_present_map);
} }
static unsigned int flat_cpu_mask_to_apicid(cpumask_t cpumask) static unsigned int flat_cpu_mask_to_apicid(cpumask_t cpumask)
......
...@@ -1482,8 +1482,8 @@ void /*__init*/ print_local_APIC(void * dummy) ...@@ -1482,8 +1482,8 @@ void /*__init*/ print_local_APIC(void * dummy)
printk("\n" KERN_DEBUG "printing local APIC contents on CPU#%d/%d:\n", printk("\n" KERN_DEBUG "printing local APIC contents on CPU#%d/%d:\n",
smp_processor_id(), hard_smp_processor_id()); smp_processor_id(), hard_smp_processor_id());
v = apic_read(APIC_ID); printk(KERN_INFO "... APIC ID: %08x (%01x)\n", v,
printk(KERN_INFO "... APIC ID: %08x (%01x)\n", v, GET_APIC_ID(v)); GET_APIC_ID(read_apic_id()));
v = apic_read(APIC_LVR); v = apic_read(APIC_LVR);
printk(KERN_INFO "... APIC VERSION: %08x\n", v); printk(KERN_INFO "... APIC VERSION: %08x\n", v);
ver = GET_APIC_VERSION(v); ver = GET_APIC_VERSION(v);
...@@ -1692,7 +1692,7 @@ void disable_IO_APIC(void) ...@@ -1692,7 +1692,7 @@ void disable_IO_APIC(void)
entry.delivery_mode = dest_ExtINT; /* ExtInt */ entry.delivery_mode = dest_ExtINT; /* ExtInt */
entry.vector = 0; entry.vector = 0;
entry.dest.physical.physical_dest = entry.dest.physical.physical_dest =
GET_APIC_ID(apic_read(APIC_ID)); GET_APIC_ID(read_apic_id());
/* /*
* Add it to the IO-APIC irq-routing table: * Add it to the IO-APIC irq-routing table:
......
...@@ -1068,8 +1068,7 @@ void __apicdebuginit print_local_APIC(void * dummy) ...@@ -1068,8 +1068,7 @@ void __apicdebuginit print_local_APIC(void * dummy)
printk("\n" KERN_DEBUG "printing local APIC contents on CPU#%d/%d:\n", printk("\n" KERN_DEBUG "printing local APIC contents on CPU#%d/%d:\n",
smp_processor_id(), hard_smp_processor_id()); smp_processor_id(), hard_smp_processor_id());
v = apic_read(APIC_ID); printk(KERN_INFO "... APIC ID: %08x (%01x)\n", v, GET_APIC_ID(read_apic_id()));
printk(KERN_INFO "... APIC ID: %08x (%01x)\n", v, GET_APIC_ID(v));
v = apic_read(APIC_LVR); v = apic_read(APIC_LVR);
printk(KERN_INFO "... APIC VERSION: %08x\n", v); printk(KERN_INFO "... APIC VERSION: %08x\n", v);
ver = GET_APIC_VERSION(v); ver = GET_APIC_VERSION(v);
...@@ -1263,7 +1262,7 @@ void disable_IO_APIC(void) ...@@ -1263,7 +1262,7 @@ void disable_IO_APIC(void)
entry.dest_mode = 0; /* Physical */ entry.dest_mode = 0; /* Physical */
entry.delivery_mode = dest_ExtINT; /* ExtInt */ entry.delivery_mode = dest_ExtINT; /* ExtInt */
entry.vector = 0; entry.vector = 0;
entry.dest = GET_APIC_ID(apic_read(APIC_ID)); entry.dest = GET_APIC_ID(read_apic_id());
/* /*
* Add it to the IO-APIC irq-routing table: * Add it to the IO-APIC irq-routing table:
......
...@@ -802,7 +802,7 @@ void __init mp_register_lapic_address(u64 address) ...@@ -802,7 +802,7 @@ void __init mp_register_lapic_address(u64 address)
set_fixmap_nocache(FIX_APIC_BASE, mp_lapic_addr); set_fixmap_nocache(FIX_APIC_BASE, mp_lapic_addr);
if (boot_cpu_physical_apicid == -1U) if (boot_cpu_physical_apicid == -1U)
boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID)); boot_cpu_physical_apicid = GET_APIC_ID(read_apic_id());
Dprintk("Boot CPU = %d\n", boot_cpu_physical_apicid); Dprintk("Boot CPU = %d\n", boot_cpu_physical_apicid);
} }
......
...@@ -631,7 +631,7 @@ void __init mp_register_lapic_address(u64 address) ...@@ -631,7 +631,7 @@ void __init mp_register_lapic_address(u64 address)
mp_lapic_addr = (unsigned long)address; mp_lapic_addr = (unsigned long)address;
set_fixmap_nocache(FIX_APIC_BASE, mp_lapic_addr); set_fixmap_nocache(FIX_APIC_BASE, mp_lapic_addr);
if (boot_cpu_physical_apicid == -1U) if (boot_cpu_physical_apicid == -1U)
boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID)); boot_cpu_physical_apicid = GET_APIC_ID(read_apic_id());
} }
void __cpuinit mp_register_lapic(u8 id, u8 enabled) void __cpuinit mp_register_lapic(u8 id, u8 enabled)
{ {
......
...@@ -237,7 +237,7 @@ void __cpuinit smp_callin(void) ...@@ -237,7 +237,7 @@ void __cpuinit smp_callin(void)
/* /*
* (This works even if the APIC is not enabled.) * (This works even if the APIC is not enabled.)
*/ */
phys_id = GET_APIC_ID(apic_read(APIC_ID)); phys_id = GET_APIC_ID(read_apic_id());
cpuid = smp_processor_id(); cpuid = smp_processor_id();
if (cpu_isset(cpuid, cpu_callin_map)) { if (cpu_isset(cpuid, cpu_callin_map)) {
panic("%s: phys CPU#%d, CPU#%d already present??\n", __func__, panic("%s: phys CPU#%d, CPU#%d already present??\n", __func__,
...@@ -1205,9 +1205,9 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus) ...@@ -1205,9 +1205,9 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
return; return;
} }
if (GET_APIC_ID(apic_read(APIC_ID)) != boot_cpu_physical_apicid) { if (GET_APIC_ID(read_apic_id()) != boot_cpu_physical_apicid) {
panic("Boot APIC ID in local APIC unexpected (%d vs %d)", panic("Boot APIC ID in local APIC unexpected (%d vs %d)",
GET_APIC_ID(apic_read(APIC_ID)), boot_cpu_physical_apicid); GET_APIC_ID(read_apic_id()), boot_cpu_physical_apicid);
/* Or can we switch back to PIC here? */ /* Or can we switch back to PIC here? */
} }
......
...@@ -54,7 +54,7 @@ static inline void init_apic_ldr(void) ...@@ -54,7 +54,7 @@ static inline void init_apic_ldr(void)
static inline int apic_id_registered(void) static inline int apic_id_registered(void)
{ {
return physid_isset(GET_APIC_ID(apic_read(APIC_ID)), phys_cpu_present_map); return physid_isset(GET_APIC_ID(read_apic_id()), phys_cpu_present_map);
} }
static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask) static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask)
......
...@@ -141,7 +141,7 @@ static inline void setup_portio_remap(void) ...@@ -141,7 +141,7 @@ static inline void setup_portio_remap(void)
extern unsigned int boot_cpu_physical_apicid; extern unsigned int boot_cpu_physical_apicid;
static inline int check_phys_apicid_present(int cpu_physical_apicid) static inline int check_phys_apicid_present(int cpu_physical_apicid)
{ {
boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID)); boot_cpu_physical_apicid = GET_APIC_ID(read_apic_id());
return (1); return (1);
} }
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
static inline int apic_id_registered(void) static inline int apic_id_registered(void)
{ {
return physid_isset(GET_APIC_ID(apic_read(APIC_ID)), phys_cpu_present_map); return physid_isset(GET_APIC_ID(read_apic_id()), phys_cpu_present_map);
} }
/* /*
......
...@@ -174,6 +174,11 @@ static inline int logical_smp_processor_id(void) ...@@ -174,6 +174,11 @@ static inline int logical_smp_processor_id(void)
return GET_APIC_LOGICAL_ID(*(u32 *)(APIC_BASE + APIC_LDR)); return GET_APIC_LOGICAL_ID(*(u32 *)(APIC_BASE + APIC_LDR));
} }
static inline unsigned int read_apic_id(void)
{
return *(u32 *)(APIC_BASE + APIC_ID);
}
# ifdef APIC_DEFINITION # ifdef APIC_DEFINITION
extern int hard_smp_processor_id(void); extern int hard_smp_processor_id(void);
# else # else
...@@ -181,7 +186,7 @@ extern int hard_smp_processor_id(void); ...@@ -181,7 +186,7 @@ extern int hard_smp_processor_id(void);
static inline int hard_smp_processor_id(void) static inline int hard_smp_processor_id(void)
{ {
/* we don't want to mark this access volatile - bad code generation */ /* we don't want to mark this access volatile - bad code generation */
return GET_APIC_ID(*(u32 *)(APIC_BASE + APIC_ID)); return GET_APIC_ID(read_apic_id());
} }
# endif /* APIC_DEFINITION */ # endif /* APIC_DEFINITION */
......
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