Commit b24fc5b2 authored by James Bottomley's avatar James Bottomley

Make the TSC a run-time specifier only

Also localises the parameters and setup into kernel/timers

Adds an external flag so that the tsc can be disabled from the
machine specific setup (used by voyager)
parent 85e270bc
......@@ -280,11 +280,6 @@ config X86_ALIGNMENT_16
depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MELAN || MK6 || M586MMX || M586TSC || M586 || M486
default y
config X86_TSC
bool
depends on MWINCHIP3D || MWINCHIP2 || MCRUSOE || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMIII || M686 || M586MMX || M586TSC
default y
config X86_GOOD_APIC
bool
depends on MK7 || MPENTIUM4 || MPENTIUMIII || M686 || M586MMX
......
......@@ -45,25 +45,6 @@ static int __init cachesize_setup(char *str)
}
__setup("cachesize=", cachesize_setup);
#ifndef CONFIG_X86_TSC
static int tsc_disable __initdata = 0;
static int __init tsc_setup(char *str)
{
tsc_disable = 1;
return 1;
}
#else
#define tsc_disable 0
static int __init tsc_setup(char *str)
{
printk("notsc: Kernel compiled with CONFIG_X86_TSC, cannot disable TSC.\n");
return 1;
}
#endif
__setup("notsc", tsc_setup);
int __init get_model_name(struct cpuinfo_x86 *c)
{
unsigned int *v;
......
......@@ -2,8 +2,6 @@
# Makefile for x86 timers
#
obj-y := timer.o
obj-y := timer.o timer_tsc.o timer_pit.o
obj-y += timer_tsc.o
obj-y += timer_pit.o
obj-$(CONFIG_X86_CYCLONE) += timer_cyclone.o
......@@ -8,9 +8,7 @@ extern struct timer_opts timer_tsc;
/* list of timers, ordered by preference, NULL terminated */
static struct timer_opts* timers[] = {
&timer_tsc,
#ifndef CONFIG_X86_TSC
&timer_pit,
#endif
NULL,
};
......
......@@ -9,7 +9,9 @@
#include <linux/irq.h>
#include <asm/mpspec.h>
#include <asm/timer.h>
#include <asm/smp.h>
#include <asm/io.h>
#include <asm/arch_hooks.h>
extern spinlock_t i8259A_lock;
extern spinlock_t i8253_lock;
......
......@@ -11,6 +11,10 @@
#include <asm/timer.h>
#include <asm/io.h>
/* processor.h for distable_tsc flag */
#include <asm/processor.h>
int tsc_disable __initdata = 0;
extern int x86_udelay_tsc;
extern spinlock_t i8253_lock;
......@@ -287,6 +291,18 @@ static int init_tsc(void)
return -ENODEV;
}
/* disable flag for tsc. Takes effect by clearing the TSC cpu flag
* in cpu/common.c */
static int __init tsc_setup(char *str)
{
tsc_disable = 1;
return 1;
}
__setup("notsc", tsc_setup);
/************************************************************/
/* tsc timer_opts struct */
......
......@@ -29,6 +29,9 @@ void __init intr_init_hook(void)
void __init pre_setup_arch_hook(void)
{
/* Voyagers run their CPUs from independent clocks, so disable
* the TSC code because we can't sync them */
tsc_disable = 1;
}
void __init trap_init_hook(void)
......
......@@ -19,6 +19,9 @@
#include <linux/config.h>
#include <linux/threads.h>
/* flag for disabling the tsc */
extern int tsc_disable;
struct desc_struct {
unsigned long a,b;
};
......
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