x86: refactor ->setup_portio_remap() subarch methods
authorIngo Molnar <mingo@elte.hu>
Wed, 28 Jan 2009 11:43:18 +0000 (12:43 +0100)
committerIngo Molnar <mingo@elte.hu>
Wed, 28 Jan 2009 22:20:25 +0000 (23:20 +0100)
Only NUMAQ has a real ->setup_portio_remap() method, the other
subarchitectures define it but keep it empty.

So mark the vector as NULL, extend the generic code to handle
NULL -setup_portio_remap() entries and remove all the empty
handlers.

Also move the NUMAQ method from the header file into the
 apic driver .c file.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
12 files changed:
arch/x86/include/asm/bigsmp/apic.h
arch/x86/include/asm/es7000/apic.h
arch/x86/include/asm/mach-default/mach_apic.h
arch/x86/include/asm/mach-generic/mach_apic.h
arch/x86/include/asm/numaq/apic.h
arch/x86/include/asm/summit/apic.h
arch/x86/kernel/smpboot.c
arch/x86/mach-generic/bigsmp.c
arch/x86/mach-generic/default.c
arch/x86/mach-generic/es7000.c
arch/x86/mach-generic/numaq.c
arch/x86/mach-generic/summit.c

index 0804574..2fa7003 100644 (file)
@@ -95,7 +95,7 @@ static inline physid_mask_t bigsmp_ioapic_phys_id_map(physid_mask_t phys_map)
        return physids_promote(0xFFL);
 }
 
-static inline void setup_portio_remap(void)
+static inline void bigsmp_setup_portio_remap(void)
 {
 }
 
index a09e113..c5b0eb5 100644 (file)
@@ -127,10 +127,6 @@ static inline physid_mask_t es7000_ioapic_phys_id_map(physid_mask_t phys_map)
 }
 
 
-static inline void setup_portio_remap(void)
-{
-}
-
 extern unsigned int boot_cpu_physical_apicid;
 static inline int check_phys_apicid_present(int cpu_physical_apicid)
 {
index 22683e5..54c20e1 100644 (file)
@@ -132,10 +132,6 @@ static inline physid_mask_t default_apicid_to_cpu_present(int phys_apicid)
        return physid_mask_of_physid(phys_apicid);
 }
 
-static inline void setup_portio_remap(void)
-{
-}
-
 static inline int check_phys_apicid_present(int boot_cpu_physical_apicid)
 {
        return physid_isset(boot_cpu_physical_apicid, phys_cpu_present_map);
index 997618f..393a97c 100644 (file)
@@ -3,7 +3,6 @@
 
 #include <asm/genapic.h>
 
-#define setup_portio_remap (apic->setup_portio_remap)
 #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_and (apic->cpu_mask_to_apicid_and)
index 8ac000f..6b62651 100644 (file)
@@ -92,19 +92,6 @@ static inline physid_mask_t numaq_apicid_to_cpu_present(int logical_apicid)
 
 extern void *xquad_portio;
 
-static inline void setup_portio_remap(void)
-{
-       int num_quads = num_online_nodes();
-
-       if (num_quads <= 1)
-                       return;
-
-       printk("Remapping cross-quad port I/O for %d quads\n", num_quads);
-       xquad_portio = ioremap(XQUAD_PORTIO_BASE, num_quads*XQUAD_PORTIO_QUAD);
-       printk("xquad_portio vaddr 0x%08lx, len %08lx\n",
-               (u_long) xquad_portio, (u_long) num_quads*XQUAD_PORTIO_QUAD);
-}
-
 static inline int check_phys_apicid_present(int boot_cpu_physical_apicid)
 {
        return (1);
index 79c1a45..131343b 100644 (file)
@@ -116,7 +116,7 @@ static inline physid_mask_t summit_apicid_to_cpu_present(int apicid)
        return physid_mask_of_physid(0);
 }
 
-static inline void setup_portio_remap(void)
+static inline void summit_setup_portio_remap(void)
 {
 }
 
index 812bf39..0e7d26c 100644 (file)
@@ -1170,7 +1170,8 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
 
        map_cpu_to_logical_apicid();
 
-       setup_portio_remap();
+       if (apic->setup_portio_remap)
+               apic->setup_portio_remap();
 
        smpboot_setup_io_apic();
        /*
index 6139652..4247405 100644 (file)
@@ -84,7 +84,7 @@ struct genapic apic_bigsmp = {
        .cpu_to_logical_apicid          = bigsmp_cpu_to_logical_apicid,
        .cpu_present_to_apicid          = bigsmp_cpu_present_to_apicid,
        .apicid_to_cpu_present          = bigsmp_apicid_to_cpu_present,
-       .setup_portio_remap             = setup_portio_remap,
+       .setup_portio_remap             = NULL,
        .check_phys_apicid_present      = check_phys_apicid_present,
        .enable_apic_mode               = enable_apic_mode,
        .phys_pkg_id                    = phys_pkg_id,
index 8fc704a..b48a58d 100644 (file)
@@ -65,7 +65,7 @@ struct genapic apic_default = {
        .cpu_to_logical_apicid          = default_cpu_to_logical_apicid,
        .cpu_present_to_apicid          = default_cpu_present_to_apicid,
        .apicid_to_cpu_present          = default_apicid_to_cpu_present,
-       .setup_portio_remap             = setup_portio_remap,
+       .setup_portio_remap             = NULL,
        .check_phys_apicid_present      = check_phys_apicid_present,
        .enable_apic_mode               = enable_apic_mode,
        .phys_pkg_id                    = phys_pkg_id,
index 1e0e162..449eca5 100644 (file)
@@ -126,7 +126,7 @@ struct genapic apic_es7000 = {
        .cpu_to_logical_apicid          = es7000_cpu_to_logical_apicid,
        .cpu_present_to_apicid          = es7000_cpu_present_to_apicid,
        .apicid_to_cpu_present          = es7000_apicid_to_cpu_present,
-       .setup_portio_remap             = setup_portio_remap,
+       .setup_portio_remap             = NULL,
        .check_phys_apicid_present      = check_phys_apicid_present,
        .enable_apic_mode               = enable_apic_mode,
        .phys_pkg_id                    = phys_pkg_id,
index 839b86b..e60361b 100644 (file)
@@ -44,6 +44,19 @@ static void numaq_vector_allocation_domain(int cpu, cpumask_t *retmask)
        *retmask = (cpumask_t){ { [0] = APIC_ALL_CPUS, } };
 }
 
+static void numaq_setup_portio_remap(void)
+{
+       int num_quads = num_online_nodes();
+
+       if (num_quads <= 1)
+                       return;
+
+       printk("Remapping cross-quad port I/O for %d quads\n", num_quads);
+       xquad_portio = ioremap(XQUAD_PORTIO_BASE, num_quads*XQUAD_PORTIO_QUAD);
+       printk("xquad_portio vaddr 0x%08lx, len %08lx\n",
+               (u_long) xquad_portio, (u_long) num_quads*XQUAD_PORTIO_QUAD);
+}
+
 struct genapic apic_numaq = {
 
        .name                           = "NUMAQ",
@@ -71,7 +84,7 @@ struct genapic apic_numaq = {
        .cpu_to_logical_apicid          = numaq_cpu_to_logical_apicid,
        .cpu_present_to_apicid          = numaq_cpu_present_to_apicid,
        .apicid_to_cpu_present          = numaq_apicid_to_cpu_present,
-       .setup_portio_remap             = setup_portio_remap,
+       .setup_portio_remap             = numaq_setup_portio_remap,
        .check_phys_apicid_present      = check_phys_apicid_present,
        .enable_apic_mode               = enable_apic_mode,
        .phys_pkg_id                    = phys_pkg_id,
index b6e3760..ffcf7ca 100644 (file)
@@ -64,7 +64,7 @@ struct genapic apic_summit = {
        .cpu_to_logical_apicid          = summit_cpu_to_logical_apicid,
        .cpu_present_to_apicid          = summit_cpu_present_to_apicid,
        .apicid_to_cpu_present          = summit_apicid_to_cpu_present,
-       .setup_portio_remap             = setup_portio_remap,
+       .setup_portio_remap             = NULL,
        .check_phys_apicid_present      = check_phys_apicid_present,
        .enable_apic_mode               = enable_apic_mode,
        .phys_pkg_id                    = phys_pkg_id,