Re: Voyager subarchitecture for 2.5.46

john stultz (johnstul@us.ibm.com)
06 Nov 2002 13:35:35 -0800


On Wed, 2002-11-06 at 05:43, Alan Cox wrote:
> On Wed, 2002-11-06 at 02:31, john stultz wrote:
> > I'm fine w/ the X86_TSC change, but I'd drop the X86_PIT for now.
> >
> > Then make the arch/i386/timers/Makefile change to be something like:
> >
> > obj-y := timer.o timer_tsc.o timer_pit.o
> > obj-$(CONFIG_X86_TSC) -= timer_pit.o #does this(-=) work?
> > obj-$(CONFIG_X86_CYCYLONE) += timer_cyclone.o
>
> Not everything is going to have a PIT. Also I need to know if there is a
> PIT for a few other things so I'd prefer to keep it, but I'm not
> excessively bothered

Hmmm. Ok, How about something like what is below? This is very similar
to what James is suggesting, but tries to fix some of the corner cases
as well. The only problem I see with this is that in some places we're
using _X86_PIT_TIMER as an imagined !_X86_TSC_ONLY, so one couldn't have
a kernel that compiled in the Cyclone timer, not the PIT timer, and
allowed one to disable the TSC.

I'm still not sure this is the way to go, but at least gives James a
chance to poke at my code rather then the other way around.

thanks
-john

diff -Nru a/arch/i386/Kconfig b/arch/i386/Kconfig
--- a/arch/i386/Kconfig Mon Nov 4 17:15:15 2002
+++ b/arch/i386/Kconfig Mon Nov 4 17:15:15 2002
@@ -430,6 +430,11 @@
depends on NUMA
default y

+config X86_PIT_TIMER
+ bool
+ depends on !X86_TSC || X86_NUMAQ
+ default n
+
config X86_MCE
bool "Machine Check Exception"
---help---
diff -Nru a/arch/i386/kernel/cpu/common.c b/arch/i386/kernel/cpu/common.c
--- a/arch/i386/kernel/cpu/common.c Mon Nov 4 17:15:15 2002
+++ b/arch/i386/kernel/cpu/common.c Mon Nov 4 17:15:15 2002
@@ -42,7 +42,7 @@
}
__setup("cachesize=", cachesize_setup);

-#ifndef CONFIG_X86_TSC
+#ifdef CONFIG_X86_PIT_TIMER
static int tsc_disable __initdata = 0;

static int __init tsc_setup(char *str)
@@ -55,7 +55,7 @@

static int __init tsc_setup(char *str)
{
- printk("notsc: Kernel compiled with CONFIG_X86_TSC, cannot disable TSC.\n");
+ printk("notsc: Kernel not compiled with CONFIG_X86_PIT_TIMER, cannot disable TSC.\n");
return 1;
}
#endif
diff -Nru a/arch/i386/kernel/timers/Makefile b/arch/i386/kernel/timers/Makefile
--- a/arch/i386/kernel/timers/Makefile Mon Nov 4 17:15:15 2002
+++ b/arch/i386/kernel/timers/Makefile Mon Nov 4 17:15:15 2002
@@ -5,7 +5,7 @@
obj-y := timer.o

obj-y += timer_tsc.o
-obj-y += timer_pit.o
+obj-$(CONFIG_X86_PIT_TIMER) += timer_pit.o
obj-$(CONFIG_X86_CYCLONE) += timer_cyclone.o

include $(TOPDIR)/Rules.make
diff -Nru a/arch/i386/kernel/timers/timer.c b/arch/i386/kernel/timers/timer.c
--- a/arch/i386/kernel/timers/timer.c Mon Nov 4 17:15:15 2002
+++ b/arch/i386/kernel/timers/timer.c Mon Nov 4 17:15:15 2002
@@ -8,7 +8,7 @@
/* list of timers, ordered by preference, NULL terminated */
static struct timer_opts* timers[] = {
&timer_tsc,
-#ifndef CONFIG_X86_TSC
+#ifdef CONFIG_X86_PIT_TIMER
&timer_pit,
#endif
NULL,

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/