All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86/apic: remove the legacy bigsmp APIC driver
@ 2013-08-27  5:44 Matt Wilson
  2013-08-27  6:08 ` Keir Fraser
  2013-08-27  8:17 ` Jan Beulich
  0 siblings, 2 replies; 7+ messages in thread
From: Matt Wilson @ 2013-08-27  5:44 UTC (permalink / raw)
  To: xen-devel; +Cc: Andrew Cooper, Keir Fraser, Jan Beulich

The bigsmp APIC driver was used on legacy (32-bit only) x86 platforms
with 8 or more CPUs. In Linux the X86_BIGSMP Kconfig option depends on
X86_32. Since we no longer support 32-bit hypervisors on the x86
platform we can remove this code.

Signed-off-by: Matt Wilson <msw@amazon.com>
Cc: Keir Fraser <keir@xen.org>
Cc: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>
---
 docs/misc/xen-command-line.markdown          |    7 +--
 xen/arch/x86/acpi/boot.c                     |    1 -
 xen/arch/x86/genapic/Makefile                |    1 -
 xen/arch/x86/genapic/bigsmp.c                |   58 --------------------------
 xen/arch/x86/genapic/probe.c                 |   20 ---------
 xen/arch/x86/mpparse.c                       |    9 ----
 xen/include/asm-x86/mach-generic/mach_apic.h |    1 -
 xen/include/asm-x86/mpspec.h                 |    1 -
 8 files changed, 3 insertions(+), 95 deletions(-)
 delete mode 100644 xen/arch/x86/genapic/bigsmp.c

diff --git a/docs/misc/xen-command-line.markdown b/docs/misc/xen-command-line.markdown
index 13c0306..d135c9c 100644
--- a/docs/misc/xen-command-line.markdown
+++ b/docs/misc/xen-command-line.markdown
@@ -132,11 +132,10 @@ domain 0 command line
 Permit Xen to use superpages when performing memory management.
 
 ### apic
-> `= bigsmp | default`
+> `= default`
 
-Override Xen's logic for choosing the APIC driver.  By default, if
-there are more than 8 CPUs, Xen will switch to `bigsmp` over
-`default`.
+Override Xen's logic for choosing the APIC driver.  Currently
+there is only one APIC driver: `default`.
 
 ### allow\_unsafe
 > `= <boolean>`
diff --git a/xen/arch/x86/acpi/boot.c b/xen/arch/x86/acpi/boot.c
index 0e1d570..a095af2 100644
--- a/xen/arch/x86/acpi/boot.c
+++ b/xen/arch/x86/acpi/boot.c
@@ -624,7 +624,6 @@ static void __init acpi_process_madt(void)
 		error = acpi_parse_madt_lapic_entries();
 		if (!error) {
 			acpi_lapic = 1;
-			generic_bigsmp_probe();
  
 			/*
 			 * Parse MADT IO-APIC entries
diff --git a/xen/arch/x86/genapic/Makefile b/xen/arch/x86/genapic/Makefile
index de72b5d..3e7a350 100644
--- a/xen/arch/x86/genapic/Makefile
+++ b/xen/arch/x86/genapic/Makefile
@@ -1,4 +1,3 @@
-obj-y += bigsmp.o
 obj-y += x2apic.o
 obj-y += default.o
 obj-y += delivery.o
diff --git a/xen/arch/x86/genapic/bigsmp.c b/xen/arch/x86/genapic/bigsmp.c
deleted file mode 100644
index 96b23d6..0000000
--- a/xen/arch/x86/genapic/bigsmp.c
+++ /dev/null
@@ -1,58 +0,0 @@
-#include <xen/config.h>
-#include <xen/cpumask.h>
-#include <asm/current.h>
-#include <asm/mpspec.h>
-#include <asm/genapic.h>
-#include <asm/fixmap.h>
-#include <asm/apicdef.h>
-#include <xen/kernel.h>
-#include <xen/smp.h>
-#include <xen/init.h>
-#include <xen/dmi.h>
-#include <asm/mach-default/mach_mpparse.h>
-#include <asm/io_apic.h>
-
-static __init int force_bigsmp(struct dmi_system_id *d)
-{
-	printk(KERN_NOTICE "%s detected: force use of apic=bigsmp\n", d->ident);
-	def_to_bigsmp = 1;
-	return 0;
-}
-
-
-static struct dmi_system_id __initdata bigsmp_dmi_table[] = {
-	{ force_bigsmp, "HP ProLiant DL760 G2", {
-		DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
-		DMI_MATCH(DMI_BIOS_VERSION, "P44-"),
-	}},
-
-	{ force_bigsmp, "HP ProLiant DL740", {
-		DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
-		DMI_MATCH(DMI_BIOS_VERSION, "P47-"),
-	 }},
-	{ force_bigsmp, "UNISYS ES7000-ONE", {
-		DMI_MATCH(DMI_PRODUCT_NAME, "ES7000-ONE")
-	 }},
-	
-	 { }
-};
-
-
-static __init int probe_bigsmp(void)
-{ 
-	/*
-	 * We don't implement cluster mode, so force use of
-	 * physical mode in both cases.
-	 */
-	if (acpi_gbl_FADT.flags &
-	    (ACPI_FADT_APIC_CLUSTER | ACPI_FADT_APIC_PHYSICAL))
-		def_to_bigsmp = 1;
-	else if (!def_to_bigsmp)
-		dmi_check_system(bigsmp_dmi_table);
-	return def_to_bigsmp;
-} 
-
-const struct genapic apic_bigsmp = {
-	APIC_INIT("bigsmp", probe_bigsmp),
-	GENAPIC_PHYS
-};
diff --git a/xen/arch/x86/genapic/probe.c b/xen/arch/x86/genapic/probe.c
index a5f2a24..19e5598 100644
--- a/xen/arch/x86/genapic/probe.c
+++ b/xen/arch/x86/genapic/probe.c
@@ -16,35 +16,15 @@
 #include <asm/mach-generic/mach_apic.h>
 #include <asm/setup.h>
 
-extern const struct genapic apic_bigsmp;
-
 const struct genapic *__read_mostly genapic;
 
 const struct genapic *apic_probe[] __initdata = {
-	&apic_bigsmp, 
 	&apic_default,	/* must be last */
 	NULL,
 };
 
 static bool_t __initdata cmdline_apic;
 
-void __init generic_bigsmp_probe(void)
-{
-	/*
-	 * This routine is used to switch to bigsmp mode when
-	 * - There is no apic= option specified by the user
-	 * - generic_apic_probe() has choosen apic_default as the sub_arch
-	 * - we find more than 8 CPUs in acpi LAPIC listing with xAPIC support
-	 */
-
-	if (!cmdline_apic && genapic == &apic_default)
-		if (apic_bigsmp.probe()) {
-			genapic = &apic_bigsmp;
-			printk(KERN_INFO "Overriding APIC driver with %s\n",
-			       genapic->name);
-		}
-}
-
 static void __init genapic_apic_force(char *str)
 {
 	int i;
diff --git a/xen/arch/x86/mpparse.c b/xen/arch/x86/mpparse.c
index 97d34bc..bc3586d 100644
--- a/xen/arch/x86/mpparse.c
+++ b/xen/arch/x86/mpparse.c
@@ -54,7 +54,6 @@ struct mpc_config_intsrc __read_mostly mp_irqs[MAX_IRQ_SOURCES];
 int __read_mostly mp_irq_entries;
 
 bool_t __read_mostly pic_mode;
-bool_t __read_mostly def_to_bigsmp = 0;
 unsigned long __read_mostly mp_lapic_addr;
 
 /* Processor that is doing the boot up */
@@ -164,14 +163,6 @@ static int __devinit MP_processor_info_x(struct mpc_config_processor *m,
 		cpumask_set_cpu(cpu, &cpu_present_map);
 	}
 
-	if (++num_processors > 8) {
-		/*
-		 * No need for processor or APIC checks: physical delivery
-		 * (bigsmp) mode should always work.
-		 */
-		def_to_bigsmp = 1;
-	}
-
 	return cpu;
 }
 
diff --git a/xen/include/asm-x86/mach-generic/mach_apic.h b/xen/include/asm-x86/mach-generic/mach_apic.h
index ef76456..62a4de1 100644
--- a/xen/include/asm-x86/mach-generic/mach_apic.h
+++ b/xen/include/asm-x86/mach-generic/mach_apic.h
@@ -44,7 +44,6 @@ static inline int multi_timer_check(int apic, int irq)
 }
 
 extern void generic_apic_probe(void);
-extern void generic_bigsmp_probe(void);
 
 /*
  * The following functions based around phys_cpu_present_map are disabled in
diff --git a/xen/include/asm-x86/mpspec.h b/xen/include/asm-x86/mpspec.h
index 8ae3cd5..4971f13 100644
--- a/xen/include/asm-x86/mpspec.h
+++ b/xen/include/asm-x86/mpspec.h
@@ -7,7 +7,6 @@
 
 extern unsigned char mp_bus_id_to_type[MAX_MP_BUSSES];
 
-extern bool_t def_to_bigsmp;
 extern unsigned int boot_cpu_physical_apicid;
 extern bool_t smp_found_config;
 extern void find_smp_config (void);
-- 
1.7.4.5

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-08-28 12:50 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-27  5:44 [PATCH] x86/apic: remove the legacy bigsmp APIC driver Matt Wilson
2013-08-27  6:08 ` Keir Fraser
2013-08-27  8:17 ` Jan Beulich
2013-08-27 18:10   ` Keir Fraser
2013-08-27 21:34   ` Matt Wilson
2013-08-28  7:44     ` Jan Beulich
2013-08-28 12:49       ` Keir Fraser

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.