Commit 7cf6c945 authored by David Rientjes's avatar David Rientjes

x86, apic: Remove support for IBM Summit/EXA chipset

There should no longer be any IBM x440 systems or those using the
Summit/EXA chipset out in the wild, so remove support for it.

We've done our due diligence in reaching out to any contact information
listed for this chipset and no indication was given that it should be
kept around.
Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
parent 58f5d2d4
...@@ -350,7 +350,6 @@ config X86_EXTENDED_PLATFORM ...@@ -350,7 +350,6 @@ config X86_EXTENDED_PLATFORM
RDC R-321x SoC RDC R-321x SoC
SGI 320/540 (Visual Workstation) SGI 320/540 (Visual Workstation)
STA2X11-based (e.g. Northville) STA2X11-based (e.g. Northville)
Summit/EXA (IBM x440)
Moorestown MID devices Moorestown MID devices
If you have one of these systems, or if you want to build a If you have one of these systems, or if you want to build a
...@@ -488,10 +487,10 @@ config X86_32_NON_STANDARD ...@@ -488,10 +487,10 @@ config X86_32_NON_STANDARD
depends on X86_32 && SMP depends on X86_32 && SMP
depends on X86_EXTENDED_PLATFORM depends on X86_EXTENDED_PLATFORM
---help--- ---help---
This option compiles in the NUMAQ, Summit, bigsmp, This option compiles in the NUMAQ, bigsmp, and STA2X11 default
STA2X11, default subarchitectures. It is intended for a generic subarchitectures. It is intended for a generic binary kernel. If you
binary kernel. If you select them all, kernel will probe it select them all, kernel will probe it one by one and will fallback to
one by one and will fallback to default. default.
# Alphabetically sorted list of Non standard 32 bit platforms # Alphabetically sorted list of Non standard 32 bit platforms
...@@ -547,13 +546,6 @@ config STA2X11 ...@@ -547,13 +546,6 @@ config STA2X11
option is selected the kernel will still be able to boot on option is selected the kernel will still be able to boot on
standard PC machines. standard PC machines.
config X86_SUMMIT
bool "Summit/EXA (IBM x440)"
depends on X86_32_NON_STANDARD
---help---
This option is needed for IBM systems that use the Summit/EXA chipset.
In particular, it is needed for the x440.
config X86_32_IRIS config X86_32_IRIS
tristate "Eurobraille/Iris poweroff module" tristate "Eurobraille/Iris poweroff module"
depends on X86_32 depends on X86_32
...@@ -676,14 +668,6 @@ config MEMTEST ...@@ -676,14 +668,6 @@ config MEMTEST
memtest=4, mean do 4 test patterns. memtest=4, mean do 4 test patterns.
If you are unsure how to answer this question, answer N. If you are unsure how to answer this question, answer N.
config X86_SUMMIT_NUMA
def_bool y
depends on X86_32 && NUMA && X86_32_NON_STANDARD
config X86_CYCLONE_TIMER
def_bool y
depends on X86_SUMMIT
source "arch/x86/Kconfig.cpu" source "arch/x86/Kconfig.cpu"
config HPET_TIMER config HPET_TIMER
...@@ -812,7 +796,7 @@ config NR_CPUS ...@@ -812,7 +796,7 @@ config NR_CPUS
range 2 8192 if SMP && !MAXSMP && CPUMASK_OFFSTACK && X86_64 range 2 8192 if SMP && !MAXSMP && CPUMASK_OFFSTACK && X86_64
default "1" if !SMP default "1" if !SMP
default "8192" if MAXSMP default "8192" if MAXSMP
default "32" if SMP && (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP) default "32" if SMP && (X86_NUMAQ || X86_BIGSMP)
default "8" if SMP default "8" if SMP
---help--- ---help---
This allows you to specify the maximum number of CPUs which this This allows you to specify the maximum number of CPUs which this
...@@ -1232,8 +1216,8 @@ config DIRECT_GBPAGES ...@@ -1232,8 +1216,8 @@ config DIRECT_GBPAGES
config NUMA config NUMA
bool "Numa Memory Allocation and Scheduler Support" bool "Numa Memory Allocation and Scheduler Support"
depends on SMP depends on SMP
depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || X86_BIGSMP || X86_SUMMIT && ACPI)) depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || X86_BIGSMP))
default y if (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP) default y if (X86_NUMAQ || X86_BIGSMP)
---help--- ---help---
Enable NUMA (Non Uniform Memory Access) support. Enable NUMA (Non Uniform Memory Access) support.
...@@ -1245,14 +1229,11 @@ config NUMA ...@@ -1245,14 +1229,11 @@ config NUMA
(or later), AMD Opteron, or EM64T NUMA. (or later), AMD Opteron, or EM64T NUMA.
For 32-bit this is only needed on (rare) 32-bit-only platforms For 32-bit this is only needed on (rare) 32-bit-only platforms
that support NUMA topologies, such as NUMAQ / Summit, or if you that support NUMA topologies, such as NUMAQ, or if you boot a 32-bit
boot a 32-bit kernel on a 64-bit NUMA platform. kernel on a 64-bit NUMA platform.
Otherwise, you should say N. Otherwise, you should say N.
comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI"
depends on X86_32 && X86_SUMMIT && (!HIGHMEM64G || !ACPI)
config AMD_NUMA config AMD_NUMA
def_bool y def_bool y
prompt "Old style AMD Opteron NUMA detection" prompt "Old style AMD Opteron NUMA detection"
......
...@@ -19,7 +19,6 @@ endif ...@@ -19,7 +19,6 @@ endif
# APIC probe will depend on the listing order here # APIC probe will depend on the listing order here
obj-$(CONFIG_X86_NUMAQ) += numaq_32.o obj-$(CONFIG_X86_NUMAQ) += numaq_32.o
obj-$(CONFIG_X86_SUMMIT) += summit_32.o
obj-$(CONFIG_X86_BIGSMP) += bigsmp_32.o obj-$(CONFIG_X86_BIGSMP) += bigsmp_32.o
# For 32bit, probe_32 need to be listed last # For 32bit, probe_32 need to be listed last
......
This diff is collapsed.
obj-$(CONFIG_CLKSRC_OF) += clksrc-of.o obj-$(CONFIG_CLKSRC_OF) += clksrc-of.o
obj-$(CONFIG_ATMEL_TCB_CLKSRC) += tcb_clksrc.o obj-$(CONFIG_ATMEL_TCB_CLKSRC) += tcb_clksrc.o
obj-$(CONFIG_X86_CYCLONE_TIMER) += cyclone.o
obj-$(CONFIG_X86_PM_TIMER) += acpi_pm.o obj-$(CONFIG_X86_PM_TIMER) += acpi_pm.o
obj-$(CONFIG_SCx200HR_TIMER) += scx200_hrt.o obj-$(CONFIG_SCx200HR_TIMER) += scx200_hrt.o
obj-$(CONFIG_CS5535_CLOCK_EVENT_SRC) += cs5535-clockevt.o obj-$(CONFIG_CS5535_CLOCK_EVENT_SRC) += cs5535-clockevt.o
......
#include <linux/clocksource.h>
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/timex.h>
#include <linux/init.h>
#include <asm/pgtable.h>
#include <asm/io.h>
#include <asm/mach_timer.h>
#define CYCLONE_CBAR_ADDR 0xFEB00CD0 /* base address ptr */
#define CYCLONE_PMCC_OFFSET 0x51A0 /* offset to control register */
#define CYCLONE_MPCS_OFFSET 0x51A8 /* offset to select register */
#define CYCLONE_MPMC_OFFSET 0x51D0 /* offset to count register */
#define CYCLONE_TIMER_FREQ 99780000 /* 100Mhz, but not really */
#define CYCLONE_TIMER_MASK CLOCKSOURCE_MASK(32) /* 32 bit mask */
int use_cyclone = 0;
static void __iomem *cyclone_ptr;
static cycle_t read_cyclone(struct clocksource *cs)
{
return (cycle_t)readl(cyclone_ptr);
}
static struct clocksource clocksource_cyclone = {
.name = "cyclone",
.rating = 250,
.read = read_cyclone,
.mask = CYCLONE_TIMER_MASK,
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
static int __init init_cyclone_clocksource(void)
{
unsigned long base; /* saved value from CBAR */
unsigned long offset;
u32 __iomem* volatile cyclone_timer; /* Cyclone MPMC0 register */
u32 __iomem* reg;
int i;
/* make sure we're on a summit box: */
if (!use_cyclone)
return -ENODEV;
printk(KERN_INFO "Summit chipset: Starting Cyclone Counter.\n");
/* find base address: */
offset = CYCLONE_CBAR_ADDR;
reg = ioremap_nocache(offset, sizeof(reg));
if (!reg) {
printk(KERN_ERR "Summit chipset: Could not find valid CBAR register.\n");
return -ENODEV;
}
/* even on 64bit systems, this is only 32bits: */
base = readl(reg);
iounmap(reg);
if (!base) {
printk(KERN_ERR "Summit chipset: Could not find valid CBAR value.\n");
return -ENODEV;
}
/* setup PMCC: */
offset = base + CYCLONE_PMCC_OFFSET;
reg = ioremap_nocache(offset, sizeof(reg));
if (!reg) {
printk(KERN_ERR "Summit chipset: Could not find valid PMCC register.\n");
return -ENODEV;
}
writel(0x00000001,reg);
iounmap(reg);
/* setup MPCS: */
offset = base + CYCLONE_MPCS_OFFSET;
reg = ioremap_nocache(offset, sizeof(reg));
if (!reg) {
printk(KERN_ERR "Summit chipset: Could not find valid MPCS register.\n");
return -ENODEV;
}
writel(0x00000001,reg);
iounmap(reg);
/* map in cyclone_timer: */
offset = base + CYCLONE_MPMC_OFFSET;
cyclone_timer = ioremap_nocache(offset, sizeof(u64));
if (!cyclone_timer) {
printk(KERN_ERR "Summit chipset: Could not find valid MPMC register.\n");
return -ENODEV;
}
/* quick test to make sure its ticking: */
for (i = 0; i < 3; i++){
u32 old = readl(cyclone_timer);
int stall = 100;
while (stall--)
barrier();
if (readl(cyclone_timer) == old) {
printk(KERN_ERR "Summit chipset: Counter not counting! DISABLED\n");
iounmap(cyclone_timer);
cyclone_timer = NULL;
return -ENODEV;
}
}
cyclone_ptr = cyclone_timer;
return clocksource_register_hz(&clocksource_cyclone,
CYCLONE_TIMER_FREQ);
}
arch_initcall(init_cyclone_clocksource);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment