Re: [PATCH] [4/7] Convert TSC disabling to generic cpuid disable bitmap

From: Andi Kleen
Date: Sat Jan 19 2008 - 13:57:38 EST


On Saturday 19 January 2008 19:15:48 Ian Campbell wrote:
> On Fri, 2008-01-18 at 18:27 +0100, Andi Kleen wrote:
> > Index: linux/arch/x86/xen/time.c
> > ===================================================================
> > --- linux.orig/arch/x86/xen/time.c
> > +++ linux/arch/x86/xen/time.c
> > @@ -592,7 +592,7 @@ __init void xen_time_init(void)
> > set_normalized_timespec(&wall_to_monotonic,
> > -xtime.tv_sec, -xtime.tv_nsec);
> >
> > - tsc_disable = 0;
> > + setup_clear_cpu_cap(X86_FEATURE_TSC);
> >
> > xen_setup_timer(cpu);
> > xen_setup_cpu_clockevents();
>
> That inverts the meaning, doesn't it? Previously the code force the TSC
> to be on and now it forcefully disables it. Now when booting a Xen guest
> I get:
> Kernel panic - not syncing: Kernel compiled for Pentium+, requires TSC feature!

You're right -- i was a bit overzealous in search'n'replace with that one.
It's the only place who force enables TSC.


> diff --git a/arch/x86/xen/time.c b/arch/x86/xen/time.c
> index 6f5c74a..b3721fd 100644
> --- a/arch/x86/xen/time.c
> +++ b/arch/x86/xen/time.c
> @@ -592,7 +592,7 @@ __init void xen_time_init(void)
> set_normalized_timespec(&wall_to_monotonic,
> -xtime.tv_sec, -xtime.tv_nsec);
>
> - setup_clear_cpu_cap(X86_FEATURE_TSC);
> + setup_force_cpu_cap(X86_FEATURE_TSC);

Actually that would be only needed if someone else disabled TSC explicitely before.

Simply deleting this should be sufficient. Does this patch work for you?

It would break if someone passes notsc to a Xen kernel, but then a lot of options make the kernel
break if you don't know what you're doing so that doesn't seem like a big issue.

-Andi

---

Don't disable TSC in Xen boot

That was a typo in the previous TSC option changes.

TSC shouldn't be disabled at this point, so just don't do anything.

Signed-off-by: Andi Kleen <ak@xxxxxxx>

Index: linux/arch/x86/xen/time.c
===================================================================
--- linux.orig/arch/x86/xen/time.c
+++ linux/arch/x86/xen/time.c
@@ -592,8 +592,6 @@ __init void xen_time_init(void)
set_normalized_timespec(&wall_to_monotonic,
-xtime.tv_sec, -xtime.tv_nsec);

- setup_clear_cpu_cap(X86_FEATURE_TSC);
-
xen_setup_timer(cpu);
xen_setup_cpu_clockevents();
}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/