提交 4c9961d5 编写于 作者: Y Yinghai Lu 提交者: Ingo Molnar

x86: make read_apic_id return final apicid

also remove GET_APIC_ID when read_apic_id is used.

need to apply after
	[PATCH] x86: mach_apicdef.h need to include before smp.h
Signed-off-by: NYinghai Lu <yhlu.kernel@gmail.com>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>
Signed-off-by: NIngo Molnar <mingo@elte.hu>
上级 4696ca5b
...@@ -761,7 +761,7 @@ static void __init acpi_register_lapic_address(unsigned long address) ...@@ -761,7 +761,7 @@ static void __init acpi_register_lapic_address(unsigned long address)
set_fixmap_nocache(FIX_APIC_BASE, address); set_fixmap_nocache(FIX_APIC_BASE, address);
if (boot_cpu_physical_apicid == -1U) { if (boot_cpu_physical_apicid == -1U) {
boot_cpu_physical_apicid = GET_APIC_ID(read_apic_id()); boot_cpu_physical_apicid = read_apic_id();
#ifdef CONFIG_X86_32 #ifdef CONFIG_X86_32
apic_version[boot_cpu_physical_apicid] = apic_version[boot_cpu_physical_apicid] =
GET_APIC_VERSION(apic_read(APIC_LVR)); GET_APIC_VERSION(apic_read(APIC_LVR));
......
...@@ -1230,7 +1230,7 @@ void __init init_apic_mappings(void) ...@@ -1230,7 +1230,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(read_apic_id()); boot_cpu_physical_apicid = read_apic_id();
} }
...@@ -1270,7 +1270,7 @@ int __init APIC_init_uniprocessor(void) ...@@ -1270,7 +1270,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(read_apic_id()); boot_cpu_physical_apicid = read_apic_id();
#endif #endif
physid_set_mask_of_physid(boot_cpu_physical_apicid, &phys_cpu_present_map); physid_set_mask_of_physid(boot_cpu_physical_apicid, &phys_cpu_present_map);
......
...@@ -1060,7 +1060,7 @@ void __init early_init_lapic_mapping(void) ...@@ -1060,7 +1060,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(read_apic_id()); boot_cpu_physical_apicid = read_apic_id();
} }
/** /**
...@@ -1069,7 +1069,7 @@ void __init early_init_lapic_mapping(void) ...@@ -1069,7 +1069,7 @@ void __init early_init_lapic_mapping(void)
void __init init_apic_mappings(void) void __init init_apic_mappings(void)
{ {
if (x2apic) { if (x2apic) {
boot_cpu_physical_apicid = GET_APIC_ID(read_apic_id()); boot_cpu_physical_apicid = read_apic_id();
return; return;
} }
...@@ -1092,7 +1092,7 @@ void __init init_apic_mappings(void) ...@@ -1092,7 +1092,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(read_apic_id()); boot_cpu_physical_apicid = read_apic_id();
} }
/* /*
......
...@@ -101,7 +101,7 @@ static unsigned int read_xapic_id(void) ...@@ -101,7 +101,7 @@ static unsigned int read_xapic_id(void)
{ {
unsigned int id; unsigned int id;
id = GET_XAPIC_ID(apic_read(APIC_ID)); id = GET_APIC_ID(apic_read(APIC_ID));
return id; return id;
} }
......
...@@ -1501,7 +1501,7 @@ void /*__init*/ print_local_APIC(void *dummy) ...@@ -1501,7 +1501,7 @@ void /*__init*/ print_local_APIC(void *dummy)
smp_processor_id(), hard_smp_processor_id()); smp_processor_id(), hard_smp_processor_id());
v = apic_read(APIC_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(read_apic_id())); 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);
...@@ -1709,8 +1709,7 @@ void disable_IO_APIC(void) ...@@ -1709,8 +1709,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.physical.physical_dest = entry.dest.physical.physical_dest = 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:
......
...@@ -1246,7 +1246,7 @@ void __apicdebuginit print_local_APIC(void * dummy) ...@@ -1246,7 +1246,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); 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, 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);
...@@ -1439,7 +1439,7 @@ void disable_IO_APIC(void) ...@@ -1439,7 +1439,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(read_apic_id()); entry.dest = read_apic_id();
/* /*
* Add it to the IO-APIC irq-routing table: * Add it to the IO-APIC irq-routing table:
......
...@@ -211,7 +211,7 @@ static void __cpuinit smp_callin(void) ...@@ -211,7 +211,7 @@ static 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(read_apic_id()); phys_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__,
...@@ -1157,9 +1157,9 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus) ...@@ -1157,9 +1157,9 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
} }
preempt_disable(); preempt_disable();
if (GET_APIC_ID(read_apic_id()) != boot_cpu_physical_apicid) { if (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(read_apic_id()), boot_cpu_physical_apicid); read_apic_id(), boot_cpu_physical_apicid);
/* Or can we switch back to PIC here? */ /* Or can we switch back to PIC here? */
} }
preempt_enable(); preempt_enable();
......
...@@ -56,7 +56,7 @@ static inline void init_apic_ldr(void) ...@@ -56,7 +56,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(read_apic_id()), phys_cpu_present_map); return physid_isset(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)
......
...@@ -5,9 +5,8 @@ ...@@ -5,9 +5,8 @@
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
#define APIC_ID_MASK (0xFFu<<24) #define APIC_ID_MASK (0xFFu<<24)
#define GET_APIC_ID(x) (x) #define GET_APIC_ID(x) (((x)>>24) & 0xFFu)
#define SET_APIC_ID(x) (((x)<<24)) #define SET_APIC_ID(x) (((x)<<24))
#define GET_XAPIC_ID(x) (((x) >> 24) & 0xFFu)
#else #else
#define APIC_ID_MASK (0xF<<24) #define APIC_ID_MASK (0xF<<24)
static inline unsigned get_apic_id(unsigned long x) static inline unsigned get_apic_id(unsigned long x)
......
...@@ -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(read_apic_id()); boot_cpu_physical_apicid = read_apic_id();
return (1); return (1);
} }
......
...@@ -165,9 +165,14 @@ static inline int logical_smp_processor_id(void) ...@@ -165,9 +165,14 @@ 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));
} }
#include <mach_apicdef.h>
static inline unsigned int read_apic_id(void) static inline unsigned int read_apic_id(void)
{ {
return *(u32 *)(APIC_BASE + APIC_ID); unsigned int reg;
reg = *(u32 *)(APIC_BASE + APIC_ID);
return GET_APIC_ID(reg);
} }
#endif #endif
...@@ -175,11 +180,11 @@ static inline unsigned int read_apic_id(void) ...@@ -175,11 +180,11 @@ static inline unsigned int read_apic_id(void)
# if defined(APIC_DEFINITION) || defined(CONFIG_X86_64) # if defined(APIC_DEFINITION) || defined(CONFIG_X86_64)
extern int hard_smp_processor_id(void); extern int hard_smp_processor_id(void);
# else # else
# include <mach_apicdef.h> #include <mach_apicdef.h>
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(read_apic_id()); return read_apic_id();
} }
# endif /* APIC_DEFINITION */ # endif /* APIC_DEFINITION */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册