The Cyclone chipset was only used for systems that are now unsupported. These two patches remove this vestigial code.
IBM''s Summit chipset was only used for 32-bit only Intel ccNUMA and IA-64 machines, neither of which are supported by Xen anymore. 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 | 2 +- xen/arch/x86/genapic/Makefile | 1 - xen/arch/x86/genapic/probe.c | 2 - xen/arch/x86/genapic/summit.c | 27 ------ xen/include/asm-x86/mach-default/mach_mpspec.h | 2 +- xen/include/asm-x86/mach-summit/mach_mpparse.h | 108 ------------------------ 6 files changed, 2 insertions(+), 140 deletions(-) delete mode 100644 xen/arch/x86/genapic/summit.c delete mode 100644 xen/include/asm-x86/mach-summit/mach_mpparse.h diff --git a/docs/misc/xen-command-line.markdown b/docs/misc/xen-command-line.markdown index 202d800..428e097 100644 --- a/docs/misc/xen-command-line.markdown +++ b/docs/misc/xen-command-line.markdown @@ -132,7 +132,7 @@ domain 0 command line Permit Xen to use superpages when performing memory management. ### apic -> `= summit | bigsmp | default` +> `= bigsmp | 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 diff --git a/xen/arch/x86/genapic/Makefile b/xen/arch/x86/genapic/Makefile index d6a8717..de72b5d 100644 --- a/xen/arch/x86/genapic/Makefile +++ b/xen/arch/x86/genapic/Makefile @@ -3,4 +3,3 @@ obj-y += x2apic.o obj-y += default.o obj-y += delivery.o obj-y += probe.o -obj-y += summit.o diff --git a/xen/arch/x86/genapic/probe.c b/xen/arch/x86/genapic/probe.c index 1a29490..a5f2a24 100644 --- a/xen/arch/x86/genapic/probe.c +++ b/xen/arch/x86/genapic/probe.c @@ -16,13 +16,11 @@ #include <asm/mach-generic/mach_apic.h> #include <asm/setup.h> -extern const struct genapic apic_summit; extern const struct genapic apic_bigsmp; const struct genapic *__read_mostly genapic; const struct genapic *apic_probe[] __initdata = { - &apic_summit, &apic_bigsmp, &apic_default, /* must be last */ NULL, diff --git a/xen/arch/x86/genapic/summit.c b/xen/arch/x86/genapic/summit.c deleted file mode 100644 index c84f14e..0000000 --- a/xen/arch/x86/genapic/summit.c +++ /dev/null @@ -1,27 +0,0 @@ -/* - * APIC driver for the IBM "Summit" chipset. - */ -#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/string.h> -#include <xen/smp.h> -#include <xen/init.h> -#include <asm/mach-summit/mach_mpparse.h> -#include <asm/io_apic.h> - -static __init int probe_summit(void) -{ - /* probed later in mptable/ACPI hooks */ - return 0; -} - -const struct genapic apic_summit = { - APIC_INIT("summit", probe_summit), - GENAPIC_PHYS -}; diff --git a/xen/include/asm-x86/mach-default/mach_mpspec.h b/xen/include/asm-x86/mach-default/mach_mpspec.h index 9ef0b94..1a4e3f8 100644 --- a/xen/include/asm-x86/mach-default/mach_mpspec.h +++ b/xen/include/asm-x86/mach-default/mach_mpspec.h @@ -3,7 +3,7 @@ #define MAX_IRQ_SOURCES 256 -/* Summit or generic (i.e. installer) kernels need lots of bus entries. */ +/* Generic (i.e. installer) kernels need lots of bus entries. */ /* Maximum 256 PCI busses, plus 1 ISA bus in each of 4 cabinets. */ #define MAX_MP_BUSSES 260 diff --git a/xen/include/asm-x86/mach-summit/mach_mpparse.h b/xen/include/asm-x86/mach-summit/mach_mpparse.h deleted file mode 100644 index b57a3c4..0000000 --- a/xen/include/asm-x86/mach-summit/mach_mpparse.h +++ /dev/null @@ -1,108 +0,0 @@ -#ifndef __ASM_MACH_MPPARSE_H -#define __ASM_MACH_MPPARSE_H - -extern bool_t use_cyclone; - -#ifdef CONFIG_X86_SUMMIT_NUMA -extern void setup_summit(void); -#else -#define setup_summit() {} -#endif - -extern int usb_early_handoff; -static inline int __init mps_oem_check(struct mp_config_table *mpc, char *oem, - char *productid) -{ - if (!strncmp(oem, "IBM ENSW", 8) && - (!strncmp(productid, "VIGIL SMP", 9) - || !strncmp(productid, "EXA", 3) - || !strncmp(productid, "RUTHLESS SMP", 12))){ - use_cyclone = 1; /*enable cyclone-timer*/ - setup_summit(); - /*usb_early_handoff = 1;*/ - return 1; - } - return 0; -} - -/* Hook from generic ACPI tables.c */ -static inline int __init acpi_madt_oem_check(char *oem_id, char *oem_table_id) -{ - if (!strncmp(oem_id, "IBM", 3) && - (!strncmp(oem_table_id, "SERVIGIL", 8) - || !strncmp(oem_table_id, "EXA", 3))){ - use_cyclone = 1; /*enable cyclone-timer*/ - setup_summit(); - /*usb_early_handoff = 1;*/ - return 1; - } - return 0; -} - -struct rio_table_hdr { - unsigned char version; /* Version number of this data structure */ - /* Version 3 adds chassis_num & WP_index */ - unsigned char num_scal_dev; /* # of Scalability devices (Twisters for Vigil) */ - unsigned char num_rio_dev; /* # of RIO I/O devices (Cyclones and Winnipegs) */ -} __attribute__((packed)); - -struct scal_detail { - unsigned char node_id; /* Scalability Node ID */ - unsigned long CBAR; /* Address of 1MB register space */ - unsigned char port0node; /* Node ID port connected to: 0xFF=None */ - unsigned char port0port; /* Port num port connected to: 0,1,2, or 0xFF=None */ - unsigned char port1node; /* Node ID port connected to: 0xFF = None */ - unsigned char port1port; /* Port num port connected to: 0,1,2, or 0xFF=None */ - unsigned char port2node; /* Node ID port connected to: 0xFF = None */ - unsigned char port2port; /* Port num port connected to: 0,1,2, or 0xFF=None */ - unsigned char chassis_num; /* 1 based Chassis number (1 = boot node) */ -} __attribute__((packed)); - -struct rio_detail { - unsigned char node_id; /* RIO Node ID */ - unsigned long BBAR; /* Address of 1MB register space */ - unsigned char type; /* Type of device */ - unsigned char owner_id; /* For WPEG: Node ID of Cyclone that owns this WPEG*/ - /* For CYC: Node ID of Twister that owns this CYC */ - unsigned char port0node; /* Node ID port connected to: 0xFF=None */ - unsigned char port0port; /* Port num port connected to: 0,1,2, or 0xFF=None */ - unsigned char port1node; /* Node ID port connected to: 0xFF=None */ - unsigned char port1port; /* Port num port connected to: 0,1,2, or 0xFF=None */ - unsigned char first_slot; /* For WPEG: Lowest slot number below this WPEG */ - /* For CYC: 0 */ - unsigned char status; /* For WPEG: Bit 0 = 1 : the XAPIC is used */ - /* = 0 : the XAPIC is not used, ie:*/ - /* ints fwded to another XAPIC */ - /* Bits1:7 Reserved */ - /* For CYC: Bits0:7 Reserved */ - unsigned char WP_index; /* For WPEG: WPEG instance index - lower ones have */ - /* lower slot numbers/PCI bus numbers */ - /* For CYC: No meaning */ - unsigned char chassis_num; /* 1 based Chassis number */ - /* For LookOut WPEGs this field indicates the */ - /* Expansion Chassis #, enumerated from Boot */ - /* Node WPEG external port, then Boot Node CYC */ - /* external port, then Next Vigil chassis WPEG */ - /* external port, etc. */ - /* Shared Lookouts have only 1 chassis number (the */ - /* first one assigned) */ -} __attribute__((packed)); - - -typedef enum { - CompatTwister = 0, /* Compatibility Twister */ - AltTwister = 1, /* Alternate Twister of internal 8-way */ - CompatCyclone = 2, /* Compatibility Cyclone */ - AltCyclone = 3, /* Alternate Cyclone of internal 8-way */ - CompatWPEG = 4, /* Compatibility WPEG */ - AltWPEG = 5, /* Second Planar WPEG */ - LookOutAWPEG = 6, /* LookOut WPEG */ - LookOutBWPEG = 7, /* LookOut WPEG */ -} node_type; - -static inline int is_WPEG(struct rio_detail *rio){ - return (rio->type == CompatWPEG || rio->type == AltWPEG || - rio->type == LookOutAWPEG || rio->type == LookOutBWPEG); -} - -#endif /* __ASM_MACH_MPPARSE_H */ -- 1.7.4.5
Matt Wilson
2013-Aug-26 04:34 UTC
[PATCH 2/2] x86/time: remove Cyclone as a platform timer
The Cyclone time source was part of IBM''s Summit chipset, which was only used for 32-bit only ccNUMA and IA-64 machines. Neither of these are supported by Xen anymore. 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 | 2 +- xen/arch/x86/time.c | 71 +--------------------------------- xen/include/asm-x86/fixmap.h | 1 - 3 files changed, 4 insertions(+), 70 deletions(-) diff --git a/docs/misc/xen-command-line.markdown b/docs/misc/xen-command-line.markdown index 428e097..13c0306 100644 --- a/docs/misc/xen-command-line.markdown +++ b/docs/misc/xen-command-line.markdown @@ -194,7 +194,7 @@ and reboots. If set, override Xen''s calculation of the level 2 cache line size. ### clocksource -> `= pit | hpet | cyclone | acpi` +> `= pit | hpet | acpi` If set, override Xen''s default choice for the platform timer. diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index c31029c..c1bbd50 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -39,7 +39,7 @@ #include <asm/setup.h> /* for early_time_init */ #include <public/arch-x86/cpuid.h> -/* opt_clocksource: Force clocksource to one of: pit, hpet, cyclone, acpi. */ +/* opt_clocksource: Force clocksource to one of: pit, hpet, acpi. */ static char __initdata opt_clocksource[10]; string_param("clocksource", opt_clocksource); @@ -378,72 +378,7 @@ static struct platform_timesource __initdata plt_hpet }; /************************************************************ - * PLATFORM TIMER 3: IBM ''CYCLONE'' TIMER - */ - -bool_t __initdata use_cyclone; - -/* - * Although the counter is read via a 64-bit register, I believe it is actually - * a 40-bit counter. Since this will wrap, I read only the low 32 bits and - * periodically fold into a 64-bit software counter, just as for PIT and HPET. - */ -#define CYCLONE_CBAR_ADDR 0xFEB00CD0 -#define CYCLONE_PMCC_OFFSET 0x51A0 -#define CYCLONE_MPMC_OFFSET 0x51D0 -#define CYCLONE_MPCS_OFFSET 0x51A8 -#define CYCLONE_TIMER_FREQ 100000000 - -/* Cyclone MPMC0 register. */ -static volatile u32 *__read_mostly cyclone_timer; - -static u64 read_cyclone_count(void) -{ - return *cyclone_timer; -} - -static volatile u32 *__init map_cyclone_reg(unsigned long regaddr) -{ - unsigned long pageaddr = regaddr & PAGE_MASK; - unsigned long offset = regaddr & ~PAGE_MASK; - set_fixmap_nocache(FIX_CYCLONE_TIMER, pageaddr); - return (volatile u32 *)(fix_to_virt(FIX_CYCLONE_TIMER) + offset); -} - -static int __init init_cyclone(struct platform_timesource *pts) -{ - u32 base; - - if ( !use_cyclone ) - return 0; - - /* Find base address. */ - base = *(map_cyclone_reg(CYCLONE_CBAR_ADDR)); - if ( base == 0 ) - { - printk(KERN_ERR "Cyclone: Could not find valid CBAR value.\n"); - return 0; - } - - /* Enable timer and map the counter register. */ - *(map_cyclone_reg(base + CYCLONE_PMCC_OFFSET)) = 1; - *(map_cyclone_reg(base + CYCLONE_MPCS_OFFSET)) = 1; - cyclone_timer = map_cyclone_reg(base + CYCLONE_MPMC_OFFSET); - return 1; -} - -static struct platform_timesource __initdata plt_cyclone -{ - .id = "cyclone", - .name = "IBM Cyclone", - .frequency = CYCLONE_TIMER_FREQ, - .read_counter = read_cyclone_count, - .counter_bits = 32, - .init = init_cyclone -}; - -/************************************************************ - * PLATFORM TIMER 4: ACPI PM TIMER + * PLATFORM TIMER 3: ACPI PM TIMER */ u32 __read_mostly pmtmr_ioport; @@ -600,7 +535,7 @@ static void resume_platform_timer(void) static void __init init_platform_timer(void) { static struct platform_timesource * __initdata plt_timers[] = { - &plt_cyclone, &plt_hpet, &plt_pmtimer, &plt_pit + &plt_hpet, &plt_pmtimer, &plt_pit }; struct platform_timesource *pts = NULL; diff --git a/xen/include/asm-x86/fixmap.h b/xen/include/asm-x86/fixmap.h index 029dc3e..d850be4 100644 --- a/xen/include/asm-x86/fixmap.h +++ b/xen/include/asm-x86/fixmap.h @@ -56,7 +56,6 @@ enum fixed_addresses { FIX_ACPI_BEGIN, FIX_ACPI_END = FIX_ACPI_BEGIN + FIX_ACPI_PAGES - 1, FIX_HPET_BASE, - FIX_CYCLONE_TIMER, FIX_KEXEC_BASE_0, FIX_KEXEC_BASE_END = FIX_KEXEC_BASE_0 \ + ((KEXEC_XEN_NO_PAGES >> 1) * KEXEC_IMAGE_NR) - 1, -- 1.7.4.5
>>> On 26.08.13 at 06:34, Matt Wilson <msw@amazon.com> wrote: > The Cyclone chipset was only used for systems that are now > unsupported. These two patches remove this vestigial code.Is these being used just in 32-bit only systems documented somewhere? Jan
On Mon, Aug 26, 2013 at 12:31:18PM +0100, Jan Beulich wrote:> >>> On 26.08.13 at 06:34, Matt Wilson <msw@amazon.com> wrote: > > The Cyclone chipset was only used for systems that are now > > unsupported. These two patches remove this vestigial code. > > Is these being used just in 32-bit only systems documented > somewhere?The Linux kernel config for X86_SUMMIT depends on X86_32_NON_STANDARD, "Support non-standard 32-bit SMP architectures." I worked to enable Summit support in Red Hat''s products circa 2001-2002 for IBM''s x440. Regarding support for IA-64, see: http://www-03.ibm.com/press/us/en/pressrelease/1124.wss I believe the model for that was x455. --msw
>>> On 26.08.13 at 17:29, Matt Wilson <msw@amazon.com> wrote: > On Mon, Aug 26, 2013 at 12:31:18PM +0100, Jan Beulich wrote: >> >>> On 26.08.13 at 06:34, Matt Wilson <msw@amazon.com> wrote: >> > The Cyclone chipset was only used for systems that are now >> > unsupported. These two patches remove this vestigial code. >> >> Is these being used just in 32-bit only systems documented >> somewhere? > > The Linux kernel config for X86_SUMMIT depends on X86_32_NON_STANDARD, > "Support non-standard 32-bit SMP architectures." I worked to enable > Summit support in Red Hat''s products circa 2001-2002 for IBM''s x440.Ah, yes, okay.> Regarding support for IA-64, see: > http://www-03.ibm.com/press/us/en/pressrelease/1124.wss > > I believe the model for that was x455.IA-64 is of no interest anymore in the context of Xen. Jan
Andrew Cooper
2013-Aug-26 22:04 UTC
Re: [PATCH 0/2] x86: remove Summit and Cyclone support
On 26/08/2013 05:34, Matt Wilson wrote:> The Cyclone chipset was only used for systems that are now > unsupported. These two patches remove this vestigial code. >It would be more clear if you specifically mentioned that this hardware is from IA-64 servers, which we indeed don''t care about any more. (Perhaps tweak the commit messages?) As for the patches themselves, they do appear to be in order (and thanks for remembering xen-command-line.markdown). Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
On Mon, Aug 26, 2013 at 11:04:49PM +0100, Andrew Cooper wrote:> On 26/08/2013 05:34, Matt Wilson wrote: > > The Cyclone chipset was only used for systems that are now > > unsupported. These two patches remove this vestigial code. > > > > It would be more clear if you specifically mentioned that this hardware > is from IA-64 servers, which we indeed don''t care about any more. > (Perhaps tweak the commit messages?)The individual patch comments say as much. Keep in mind the chipset was used for both 32-bit x86 and IA-64 Intel platforms. Please let me know if there''s anything in particular you''d suggest for the patch commit messages.> As for the patches themselves, they do appear to be in order (and thanks > for remembering xen-command-line.markdown). > > Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>Thanks! --msw