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