[PATCH, RFC] Re: TSC features, ...

Michael S. Zick
2009-06-15T14:25:40Z

On Mon June 15 2009, Michael S. Zick wrote:
> On Mon June 8 2009, Linus Torvalds wrote:
> >
> > Hmm. This all really should be just
> >
> > static int check_est_cpu(unsigned int cpuid)
> > {
> > struct cpuinfo_x86 *cpu = &cpu_data(cpuid);
> > return cpu_has(cpu, X86_FEATURE_EST);
> > }
> >
> > I suspect, with no vendor tests. That's the whole _point_ of CPU features,
> > after all.
> >
>

Like this;
Let the vendor's cpu setup code be responsible for getting the
feature flag correct:

diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index 10a2d91..daea6a9 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -244,22 +244,12 @@ int acpi_processor_resume(struct acpi_device * device)
#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
static void tsc_check_state(int state)
{
- switch (boot_cpu_data.x86_vendor) {
- case X86_VENDOR_AMD:
- case X86_VENDOR_INTEL:
- /*
- * AMD Fam10h TSC will tick in all
- * C/P/S0/S1 states when this bit is set.
- */
- if (boot_cpu_has(X86_FEATURE_NONSTOP_TSC))
- return;
+ if (boot_cpu_has(X86_FEATURE_NONSTOP_TSC))
+ return;

- /*FALL THROUGH*/
- default:
- /* TSC could halt in idle, so notify users */
- if (state > ACPI_STATE_C1)
- mark_tsc_unstable("TSC halts in idle");
- }
+ /* TSC could halt in idle, so notify users */
+ if (state > ACPI_STATE_C1)
+ mark_tsc_unstable("TSC halts in idle");
}
#else
static void tsc_check_state(int state) { return; }

Mike