x86: refactor ->check_phys_apicid_present() subarch methods

- spread out the namespace to per driver methods

 - extend it to 64-bit as well so that we can use
   apic->check_phys_apicid_present() unconditionally

Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Ingo Molnar 2009-01-28 12:43:18 +01:00
Родитель d83093b504
Коммит a27a621001
17 изменённых файлов: 38 добавлений и 25 удалений

Просмотреть файл

@ -99,13 +99,13 @@ static inline void bigsmp_setup_portio_remap(void)
{ {
} }
static inline void enable_apic_mode(void) static inline int bigsmp_check_phys_apicid_present(int boot_cpu_physical_apicid)
{ {
return 1;
} }
static inline int check_phys_apicid_present(int boot_cpu_physical_apicid) static inline void enable_apic_mode(void)
{ {
return (1);
} }
/* As we are using single CPU as destination, pick only one CPU here */ /* As we are using single CPU as destination, pick only one CPU here */

Просмотреть файл

@ -126,9 +126,9 @@ static inline physid_mask_t es7000_ioapic_phys_id_map(physid_mask_t phys_map)
return physids_promote(0xff); return physids_promote(0xff);
} }
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 es7000_check_phys_apicid_present(int cpu_physical_apicid)
{ {
boot_cpu_physical_apicid = read_apic_id(); boot_cpu_physical_apicid = read_apic_id();
return (1); return (1);

Просмотреть файл

@ -110,6 +110,7 @@ DECLARE_PER_CPU(int, x2apic_extra_bits);
extern void default_setup_apic_routing(void); extern void default_setup_apic_routing(void);
extern int default_cpu_present_to_apicid(int mps_cpu); extern int default_cpu_present_to_apicid(int mps_cpu);
extern int default_check_phys_apicid_present(int boot_cpu_physical_apicid);
#endif #endif
#endif /* _ASM_X86_GENAPIC_64_H */ #endif /* _ASM_X86_GENAPIC_64_H */

Просмотреть файл

@ -118,13 +118,26 @@ static inline int __default_cpu_present_to_apicid(int mps_cpu)
return BAD_APICID; return BAD_APICID;
} }
static inline int
__default_check_phys_apicid_present(int boot_cpu_physical_apicid)
{
return physid_isset(boot_cpu_physical_apicid, phys_cpu_present_map);
}
#ifdef CONFIG_X86_32 #ifdef CONFIG_X86_32
static inline int default_cpu_present_to_apicid(int mps_cpu) static inline int default_cpu_present_to_apicid(int mps_cpu)
{ {
return __default_cpu_present_to_apicid(mps_cpu); return __default_cpu_present_to_apicid(mps_cpu);
} }
static inline int
default_check_phys_apicid_present(int boot_cpu_physical_apicid)
{
return __default_check_phys_apicid_present(boot_cpu_physical_apicid);
}
#else #else
extern int default_cpu_present_to_apicid(int mps_cpu); extern int default_cpu_present_to_apicid(int mps_cpu);
extern int default_check_phys_apicid_present(int boot_cpu_physical_apicid);
#endif #endif
static inline physid_mask_t default_apicid_to_cpu_present(int phys_apicid) static inline physid_mask_t default_apicid_to_cpu_present(int phys_apicid)
@ -132,11 +145,6 @@ static inline physid_mask_t default_apicid_to_cpu_present(int phys_apicid)
return physid_mask_of_physid(phys_apicid); return physid_mask_of_physid(phys_apicid);
} }
static inline int check_phys_apicid_present(int boot_cpu_physical_apicid)
{
return physid_isset(boot_cpu_physical_apicid, phys_cpu_present_map);
}
static inline void enable_apic_mode(void) static inline void enable_apic_mode(void)
{ {
} }

Просмотреть файл

@ -3,7 +3,6 @@
#include <asm/genapic.h> #include <asm/genapic.h>
#define check_phys_apicid_present (apic->check_phys_apicid_present)
#define cpu_mask_to_apicid (apic->cpu_mask_to_apicid) #define cpu_mask_to_apicid (apic->cpu_mask_to_apicid)
#define cpu_mask_to_apicid_and (apic->cpu_mask_to_apicid_and) #define cpu_mask_to_apicid_and (apic->cpu_mask_to_apicid_and)
#define enable_apic_mode (apic->enable_apic_mode) #define enable_apic_mode (apic->enable_apic_mode)

Просмотреть файл

@ -92,9 +92,9 @@ static inline physid_mask_t numaq_apicid_to_cpu_present(int logical_apicid)
extern void *xquad_portio; extern void *xquad_portio;
static inline int check_phys_apicid_present(int boot_cpu_physical_apicid) static inline int numaq_check_phys_apicid_present(int boot_cpu_physical_apicid)
{ {
return (1); return 1;
} }
static inline void enable_apic_mode(void) static inline void enable_apic_mode(void)

Просмотреть файл

@ -120,7 +120,7 @@ static inline void summit_setup_portio_remap(void)
{ {
} }
static inline int check_phys_apicid_present(int boot_cpu_physical_apicid) static inline int summit_check_phys_apicid_present(int boot_cpu_physical_apicid)
{ {
return 1; return 1;
} }

Просмотреть файл

@ -200,7 +200,7 @@ struct genapic apic_flat = {
.cpu_present_to_apicid = default_cpu_present_to_apicid, .cpu_present_to_apicid = default_cpu_present_to_apicid,
.apicid_to_cpu_present = NULL, .apicid_to_cpu_present = NULL,
.setup_portio_remap = NULL, .setup_portio_remap = NULL,
.check_phys_apicid_present = NULL, .check_phys_apicid_present = default_check_phys_apicid_present,
.enable_apic_mode = NULL, .enable_apic_mode = NULL,
.phys_pkg_id = phys_pkg_id, .phys_pkg_id = phys_pkg_id,
.mps_oem_check = NULL, .mps_oem_check = NULL,
@ -344,7 +344,7 @@ struct genapic apic_physflat = {
.cpu_present_to_apicid = default_cpu_present_to_apicid, .cpu_present_to_apicid = default_cpu_present_to_apicid,
.apicid_to_cpu_present = NULL, .apicid_to_cpu_present = NULL,
.setup_portio_remap = NULL, .setup_portio_remap = NULL,
.check_phys_apicid_present = NULL, .check_phys_apicid_present = default_check_phys_apicid_present,
.enable_apic_mode = NULL, .enable_apic_mode = NULL,
.phys_pkg_id = phys_pkg_id, .phys_pkg_id = phys_pkg_id,
.mps_oem_check = NULL, .mps_oem_check = NULL,

Просмотреть файл

@ -202,7 +202,7 @@ struct genapic apic_x2apic_cluster = {
.cpu_present_to_apicid = default_cpu_present_to_apicid, .cpu_present_to_apicid = default_cpu_present_to_apicid,
.apicid_to_cpu_present = NULL, .apicid_to_cpu_present = NULL,
.setup_portio_remap = NULL, .setup_portio_remap = NULL,
.check_phys_apicid_present = NULL, .check_phys_apicid_present = default_check_phys_apicid_present,
.enable_apic_mode = NULL, .enable_apic_mode = NULL,
.phys_pkg_id = phys_pkg_id, .phys_pkg_id = phys_pkg_id,
.mps_oem_check = NULL, .mps_oem_check = NULL,

Просмотреть файл

@ -198,7 +198,7 @@ struct genapic apic_x2apic_phys = {
.cpu_present_to_apicid = default_cpu_present_to_apicid, .cpu_present_to_apicid = default_cpu_present_to_apicid,
.apicid_to_cpu_present = NULL, .apicid_to_cpu_present = NULL,
.setup_portio_remap = NULL, .setup_portio_remap = NULL,
.check_phys_apicid_present = NULL, .check_phys_apicid_present = default_check_phys_apicid_present,
.enable_apic_mode = NULL, .enable_apic_mode = NULL,
.phys_pkg_id = phys_pkg_id, .phys_pkg_id = phys_pkg_id,
.mps_oem_check = NULL, .mps_oem_check = NULL,

Просмотреть файл

@ -263,7 +263,7 @@ struct genapic apic_x2apic_uv_x = {
.cpu_present_to_apicid = default_cpu_present_to_apicid, .cpu_present_to_apicid = default_cpu_present_to_apicid,
.apicid_to_cpu_present = NULL, .apicid_to_cpu_present = NULL,
.setup_portio_remap = NULL, .setup_portio_remap = NULL,
.check_phys_apicid_present = NULL, .check_phys_apicid_present = default_check_phys_apicid_present,
.enable_apic_mode = NULL, .enable_apic_mode = NULL,
.phys_pkg_id = phys_pkg_id, .phys_pkg_id = phys_pkg_id,
.mps_oem_check = NULL, .mps_oem_check = NULL,

Просмотреть файл

@ -908,6 +908,11 @@ int default_cpu_present_to_apicid(int mps_cpu)
{ {
return __default_cpu_present_to_apicid(mps_cpu); return __default_cpu_present_to_apicid(mps_cpu);
} }
int default_check_phys_apicid_present(int boot_cpu_physical_apicid)
{
return __default_check_phys_apicid_present(boot_cpu_physical_apicid);
}
#endif #endif
int __cpuinit native_cpu_up(unsigned int cpu) int __cpuinit native_cpu_up(unsigned int cpu)
@ -1058,7 +1063,7 @@ static int __init smp_sanity_check(unsigned max_cpus)
* Should not be necessary because the MP table should list the boot * Should not be necessary because the MP table should list the boot
* CPU too, but we do it for the sake of robustness anyway. * CPU too, but we do it for the sake of robustness anyway.
*/ */
if (!check_phys_apicid_present(boot_cpu_physical_apicid)) { if (!apic->check_phys_apicid_present(boot_cpu_physical_apicid)) {
printk(KERN_NOTICE printk(KERN_NOTICE
"weird, boot CPU (#%d) not listed by the BIOS.\n", "weird, boot CPU (#%d) not listed by the BIOS.\n",
boot_cpu_physical_apicid); boot_cpu_physical_apicid);

Просмотреть файл

@ -85,7 +85,7 @@ struct genapic apic_bigsmp = {
.cpu_present_to_apicid = bigsmp_cpu_present_to_apicid, .cpu_present_to_apicid = bigsmp_cpu_present_to_apicid,
.apicid_to_cpu_present = bigsmp_apicid_to_cpu_present, .apicid_to_cpu_present = bigsmp_apicid_to_cpu_present,
.setup_portio_remap = NULL, .setup_portio_remap = NULL,
.check_phys_apicid_present = check_phys_apicid_present, .check_phys_apicid_present = bigsmp_check_phys_apicid_present,
.enable_apic_mode = enable_apic_mode, .enable_apic_mode = enable_apic_mode,
.phys_pkg_id = phys_pkg_id, .phys_pkg_id = phys_pkg_id,
.mps_oem_check = mps_oem_check, .mps_oem_check = mps_oem_check,

Просмотреть файл

@ -66,7 +66,7 @@ struct genapic apic_default = {
.cpu_present_to_apicid = default_cpu_present_to_apicid, .cpu_present_to_apicid = default_cpu_present_to_apicid,
.apicid_to_cpu_present = default_apicid_to_cpu_present, .apicid_to_cpu_present = default_apicid_to_cpu_present,
.setup_portio_remap = NULL, .setup_portio_remap = NULL,
.check_phys_apicid_present = check_phys_apicid_present, .check_phys_apicid_present = default_check_phys_apicid_present,
.enable_apic_mode = enable_apic_mode, .enable_apic_mode = enable_apic_mode,
.phys_pkg_id = phys_pkg_id, .phys_pkg_id = phys_pkg_id,
.mps_oem_check = mps_oem_check, .mps_oem_check = mps_oem_check,

Просмотреть файл

@ -127,7 +127,7 @@ struct genapic apic_es7000 = {
.cpu_present_to_apicid = es7000_cpu_present_to_apicid, .cpu_present_to_apicid = es7000_cpu_present_to_apicid,
.apicid_to_cpu_present = es7000_apicid_to_cpu_present, .apicid_to_cpu_present = es7000_apicid_to_cpu_present,
.setup_portio_remap = NULL, .setup_portio_remap = NULL,
.check_phys_apicid_present = check_phys_apicid_present, .check_phys_apicid_present = es7000_check_phys_apicid_present,
.enable_apic_mode = enable_apic_mode, .enable_apic_mode = enable_apic_mode,
.phys_pkg_id = phys_pkg_id, .phys_pkg_id = phys_pkg_id,
.mps_oem_check = mps_oem_check, .mps_oem_check = mps_oem_check,

Просмотреть файл

@ -85,7 +85,7 @@ struct genapic apic_numaq = {
.cpu_present_to_apicid = numaq_cpu_present_to_apicid, .cpu_present_to_apicid = numaq_cpu_present_to_apicid,
.apicid_to_cpu_present = numaq_apicid_to_cpu_present, .apicid_to_cpu_present = numaq_apicid_to_cpu_present,
.setup_portio_remap = numaq_setup_portio_remap, .setup_portio_remap = numaq_setup_portio_remap,
.check_phys_apicid_present = check_phys_apicid_present, .check_phys_apicid_present = numaq_check_phys_apicid_present,
.enable_apic_mode = enable_apic_mode, .enable_apic_mode = enable_apic_mode,
.phys_pkg_id = phys_pkg_id, .phys_pkg_id = phys_pkg_id,
.mps_oem_check = mps_oem_check, .mps_oem_check = mps_oem_check,

Просмотреть файл

@ -65,7 +65,7 @@ struct genapic apic_summit = {
.cpu_present_to_apicid = summit_cpu_present_to_apicid, .cpu_present_to_apicid = summit_cpu_present_to_apicid,
.apicid_to_cpu_present = summit_apicid_to_cpu_present, .apicid_to_cpu_present = summit_apicid_to_cpu_present,
.setup_portio_remap = NULL, .setup_portio_remap = NULL,
.check_phys_apicid_present = check_phys_apicid_present, .check_phys_apicid_present = summit_check_phys_apicid_present,
.enable_apic_mode = enable_apic_mode, .enable_apic_mode = enable_apic_mode,
.phys_pkg_id = phys_pkg_id, .phys_pkg_id = phys_pkg_id,
.mps_oem_check = mps_oem_check, .mps_oem_check = mps_oem_check,