x86, bigsmp: consolidate code
authorIngo Molnar <mingo@elte.hu>
Wed, 28 Jan 2009 18:04:37 +0000 (19:04 +0100)
committerIngo Molnar <mingo@elte.hu>
Thu, 29 Jan 2009 13:16:47 +0000 (14:16 +0100)
Move all code to arch/x86/kernel/bigsmp_32.c.

With this it ceases to rely on any build-time subarch features.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/Makefile
arch/x86/kernel/bigsmp_32.c [new file with mode: 0644]
arch/x86/mach-generic/Makefile
arch/x86/mach-generic/bigsmp.c [deleted file]

index a382ca6f6a173e82a4e2e8ddafad435ba66fc73f..4239847906a1b3b29dc4f3a3a225db5cebfcb382 100644 (file)
@@ -71,6 +71,7 @@ obj-$(CONFIG_FUNCTION_GRAPH_TRACER)   += ftrace.o
 obj-$(CONFIG_KEXEC)            += machine_kexec_$(BITS).o
 obj-$(CONFIG_KEXEC)            += relocate_kernel_$(BITS).o crash.o
 obj-$(CONFIG_CRASH_DUMP)       += crash_dump_$(BITS).o
+obj-$(CONFIG_X86_BIGSMP)       += bigsmp_32.o
 obj-$(CONFIG_X86_NUMAQ)                += numaq_32.o
 obj-$(CONFIG_X86_ES7000)       += es7000_32.o
 obj-$(CONFIG_X86_SUMMIT)       += summit_32.o
diff --git a/arch/x86/kernel/bigsmp_32.c b/arch/x86/kernel/bigsmp_32.c
new file mode 100644 (file)
index 0000000..626f45c
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * APIC driver for "bigsmp" XAPIC machines with more than 8 virtual CPUs.
+ * Drives the local APIC in "clustered mode".
+ */
+#define APIC_DEFINITION 1
+#include <linux/threads.h>
+#include <linux/cpumask.h>
+#include <asm/mpspec.h>
+#include <asm/genapic.h>
+#include <asm/fixmap.h>
+#include <asm/apicdef.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/dmi.h>
+#include <asm/bigsmp/apicdef.h>
+#include <linux/smp.h>
+#include <asm/bigsmp/apic.h>
+#include <asm/bigsmp/ipi.h>
+
+static int dmi_bigsmp; /* can be set by dmi scanners */
+
+static int hp_ht_bigsmp(const struct dmi_system_id *d)
+{
+       printk(KERN_NOTICE "%s detected: force use of apic=bigsmp\n", d->ident);
+       dmi_bigsmp = 1;
+       return 0;
+}
+
+
+static const struct dmi_system_id bigsmp_dmi_table[] = {
+       { hp_ht_bigsmp, "HP ProLiant DL760 G2",
+       { DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
+       DMI_MATCH(DMI_BIOS_VERSION, "P44-"),}
+       },
+
+       { hp_ht_bigsmp, "HP ProLiant DL740",
+       { DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
+       DMI_MATCH(DMI_BIOS_VERSION, "P47-"),}
+       },
+        { }
+};
+
+static void bigsmp_vector_allocation_domain(int cpu, cpumask_t *retmask)
+{
+       cpus_clear(*retmask);
+       cpu_set(cpu, *retmask);
+}
+
+static int probe_bigsmp(void)
+{
+       if (def_to_bigsmp)
+               dmi_bigsmp = 1;
+       else
+               dmi_check_system(bigsmp_dmi_table);
+       return dmi_bigsmp;
+}
+
+struct genapic apic_bigsmp = {
+
+       .name                           = "bigsmp",
+       .probe                          = probe_bigsmp,
+       .acpi_madt_oem_check            = NULL,
+       .apic_id_registered             = bigsmp_apic_id_registered,
+
+       .irq_delivery_mode              = dest_Fixed,
+       /* phys delivery to target CPU: */
+       .irq_dest_mode                  = 0,
+
+       .target_cpus                    = bigsmp_target_cpus,
+       .disable_esr                    = 1,
+       .dest_logical                   = 0,
+       .check_apicid_used              = bigsmp_check_apicid_used,
+       .check_apicid_present           = bigsmp_check_apicid_present,
+
+       .vector_allocation_domain       = bigsmp_vector_allocation_domain,
+       .init_apic_ldr                  = bigsmp_init_apic_ldr,
+
+       .ioapic_phys_id_map             = bigsmp_ioapic_phys_id_map,
+       .setup_apic_routing             = bigsmp_setup_apic_routing,
+       .multi_timer_check              = NULL,
+       .apicid_to_node                 = bigsmp_apicid_to_node,
+       .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             = NULL,
+       .check_phys_apicid_present      = bigsmp_check_phys_apicid_present,
+       .enable_apic_mode               = NULL,
+       .phys_pkg_id                    = bigsmp_phys_pkg_id,
+       .mps_oem_check                  = NULL,
+
+       .get_apic_id                    = bigsmp_get_apic_id,
+       .set_apic_id                    = NULL,
+       .apic_id_mask                   = 0xFF << 24,
+
+       .cpu_mask_to_apicid             = bigsmp_cpu_mask_to_apicid,
+       .cpu_mask_to_apicid_and         = bigsmp_cpu_mask_to_apicid_and,
+
+       .send_IPI_mask                  = default_send_IPI_mask,
+       .send_IPI_mask_allbutself       = NULL,
+       .send_IPI_allbutself            = bigsmp_send_IPI_allbutself,
+       .send_IPI_all                   = bigsmp_send_IPI_all,
+       .send_IPI_self                  = NULL,
+
+       .wakeup_cpu                     = NULL,
+       .trampoline_phys_low            = DEFAULT_TRAMPOLINE_PHYS_LOW,
+       .trampoline_phys_high           = DEFAULT_TRAMPOLINE_PHYS_HIGH,
+
+       .wait_for_init_deassert         = default_wait_for_init_deassert,
+
+       .smp_callin_clear_local_apic    = NULL,
+       .store_NMI_vector               = NULL,
+       .inquire_remote_apic            = default_inquire_remote_apic,
+};
index 4ede08d309e6b635422819d6aff1de4d722222ed..05e4a7ca774259b9fafced025f8de99766a48a99 100644 (file)
@@ -5,4 +5,3 @@
 EXTRA_CFLAGS                   := -Iarch/x86/kernel
 
 obj-y                          := probe.o default.o
-obj-$(CONFIG_X86_BIGSMP)       += bigsmp.o
diff --git a/arch/x86/mach-generic/bigsmp.c b/arch/x86/mach-generic/bigsmp.c
deleted file mode 100644 (file)
index 626f45c..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * APIC driver for "bigsmp" XAPIC machines with more than 8 virtual CPUs.
- * Drives the local APIC in "clustered mode".
- */
-#define APIC_DEFINITION 1
-#include <linux/threads.h>
-#include <linux/cpumask.h>
-#include <asm/mpspec.h>
-#include <asm/genapic.h>
-#include <asm/fixmap.h>
-#include <asm/apicdef.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/dmi.h>
-#include <asm/bigsmp/apicdef.h>
-#include <linux/smp.h>
-#include <asm/bigsmp/apic.h>
-#include <asm/bigsmp/ipi.h>
-
-static int dmi_bigsmp; /* can be set by dmi scanners */
-
-static int hp_ht_bigsmp(const struct dmi_system_id *d)
-{
-       printk(KERN_NOTICE "%s detected: force use of apic=bigsmp\n", d->ident);
-       dmi_bigsmp = 1;
-       return 0;
-}
-
-
-static const struct dmi_system_id bigsmp_dmi_table[] = {
-       { hp_ht_bigsmp, "HP ProLiant DL760 G2",
-       { DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
-       DMI_MATCH(DMI_BIOS_VERSION, "P44-"),}
-       },
-
-       { hp_ht_bigsmp, "HP ProLiant DL740",
-       { DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
-       DMI_MATCH(DMI_BIOS_VERSION, "P47-"),}
-       },
-        { }
-};
-
-static void bigsmp_vector_allocation_domain(int cpu, cpumask_t *retmask)
-{
-       cpus_clear(*retmask);
-       cpu_set(cpu, *retmask);
-}
-
-static int probe_bigsmp(void)
-{
-       if (def_to_bigsmp)
-               dmi_bigsmp = 1;
-       else
-               dmi_check_system(bigsmp_dmi_table);
-       return dmi_bigsmp;
-}
-
-struct genapic apic_bigsmp = {
-
-       .name                           = "bigsmp",
-       .probe                          = probe_bigsmp,
-       .acpi_madt_oem_check            = NULL,
-       .apic_id_registered             = bigsmp_apic_id_registered,
-
-       .irq_delivery_mode              = dest_Fixed,
-       /* phys delivery to target CPU: */
-       .irq_dest_mode                  = 0,
-
-       .target_cpus                    = bigsmp_target_cpus,
-       .disable_esr                    = 1,
-       .dest_logical                   = 0,
-       .check_apicid_used              = bigsmp_check_apicid_used,
-       .check_apicid_present           = bigsmp_check_apicid_present,
-
-       .vector_allocation_domain       = bigsmp_vector_allocation_domain,
-       .init_apic_ldr                  = bigsmp_init_apic_ldr,
-
-       .ioapic_phys_id_map             = bigsmp_ioapic_phys_id_map,
-       .setup_apic_routing             = bigsmp_setup_apic_routing,
-       .multi_timer_check              = NULL,
-       .apicid_to_node                 = bigsmp_apicid_to_node,
-       .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             = NULL,
-       .check_phys_apicid_present      = bigsmp_check_phys_apicid_present,
-       .enable_apic_mode               = NULL,
-       .phys_pkg_id                    = bigsmp_phys_pkg_id,
-       .mps_oem_check                  = NULL,
-
-       .get_apic_id                    = bigsmp_get_apic_id,
-       .set_apic_id                    = NULL,
-       .apic_id_mask                   = 0xFF << 24,
-
-       .cpu_mask_to_apicid             = bigsmp_cpu_mask_to_apicid,
-       .cpu_mask_to_apicid_and         = bigsmp_cpu_mask_to_apicid_and,
-
-       .send_IPI_mask                  = default_send_IPI_mask,
-       .send_IPI_mask_allbutself       = NULL,
-       .send_IPI_allbutself            = bigsmp_send_IPI_allbutself,
-       .send_IPI_all                   = bigsmp_send_IPI_all,
-       .send_IPI_self                  = NULL,
-
-       .wakeup_cpu                     = NULL,
-       .trampoline_phys_low            = DEFAULT_TRAMPOLINE_PHYS_LOW,
-       .trampoline_phys_high           = DEFAULT_TRAMPOLINE_PHYS_HIGH,
-
-       .wait_for_init_deassert         = default_wait_for_init_deassert,
-
-       .smp_callin_clear_local_apic    = NULL,
-       .store_NMI_vector               = NULL,
-       .inquire_remote_apic            = default_inquire_remote_apic,
-};