[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] x86/apic: remove the legacy bigsmp APIC driver



On 27/08/2013 06:44, "Matt Wilson" <msw@xxxxxxxxxx> wrote:

> 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@xxxxxxxxxx>
> Cc: Keir Fraser <keir@xxxxxxx>
> Cc: Jan Beulich <jbeulich@xxxxxxxx>
> Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>

Acked-by: Keir Fraser <keir@xxxxxxx>

> ---
>  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);



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.