Re: [BUG] x86_udelay_tsc not honoring notsc

From: Martin J. Bligh (mbligh@aracnet.com)
Date: Thu Sep 19 2002 - 22:07:06 EST


Does this help (on top of John's TSC patch in rollup 0)?

diff -urN -X /home/fletch/.diff.exclude virgin/include/asm-i386/cpufeature.h cpu_has_tsc/include/asm-i386/cpufeature.h
--- virgin/include/asm-i386/cpufeature.h Mon Sep 9 10:35:04 2002
+++ cpu_has_tsc/include/asm-i386/cpufeature.h Thu Sep 19 20:07:11 2002
@@ -70,7 +70,11 @@
 #define cpu_has_vme boot_cpu_has(X86_FEATURE_VME)
 #define cpu_has_de boot_cpu_has(X86_FEATURE_DE)
 #define cpu_has_pse boot_cpu_has(X86_FEATURE_PSE)
-#define cpu_has_tsc boot_cpu_has(X86_FEATURE_TSC)
+#ifdef CONFIG_X86_TSC
+#define cpu_has_tsc boot_cpu_has(X86_FEATURE_TSC)
+#else
+#define cpu_has_tsc (0)
+#endif
 #define cpu_has_pae boot_cpu_has(X86_FEATURE_PAE)
 #define cpu_has_pge boot_cpu_has(X86_FEATURE_PGE)
 #define cpu_has_apic
        boot_cpu_has(X86_FEATURE_APIC)

--On Thursday, September 19, 2002 5:10 PM -0700 William Lee Irwin III <wli@holomorphy.com> wrote:

> Even though I booted with notsc, rdtsc happens here and appears to
> generate #GP or some such nonsense:
>
> Restoring NMI vector
> Booting processor 14/52 eip 2000
> Initializing CPU#14
> masked ExtINT on CPU#14
> Leaving ESR disabled.
> Calibrating delay loop...
> Program received signal SIGEMT, Emulation trap.
> __rdtsc_delay (loops=69700) at delay.c:40
> 40 delay.c: No such file or directory.
> in delay.c
> (gdb) bt
># 0 __rdtsc_delay (loops=69700) at delay.c:40
># 1 0xc019f31d in __delay (loops=69700) at delay.c:63
># 2 0xc019f384 in __const_udelay (xloops=429400) at delay.c:74
># 3 0xc02c1709 in do_boot_cpu (apicid=52) at smpboot.c:865
># 4 0xc02c1a4e in smp_boot_cpus (max_cpus=4294967295) at smpboot.c:1095
># 5 0xc02c1c70 in smp_prepare_cpus (max_cpus=4294967295) at smpboot.c:1199
># 6 0xc01050d7 in init (unused=0x0) at main.c:547
> (gdb) p $eip
> $3 = (void *) 0xc019f2d4
> (gdb) disassemble $eip
> Dump of assembler code for function __rdtsc_delay:
> 0xc019f2c0 <__rdtsc_delay>: push %ebp
> 0xc019f2c1 <__rdtsc_delay+1>: mov %esp,%ebp
> 0xc019f2c3 <__rdtsc_delay+3>: push %ebx
> 0xc019f2c4 <__rdtsc_delay+4>: mov 0x8(%ebp),%ebx
> 0xc019f2c7 <__rdtsc_delay+7>: rdtsc
> 0xc019f2c9 <__rdtsc_delay+9>: mov %eax,%ecx
> 0xc019f2cb <__rdtsc_delay+11>: nop
> 0xc019f2cc <__rdtsc_delay+12>: lea 0x0(%esi,1),%esi
> 0xc019f2d0 <__rdtsc_delay+16>: repz nop
> 0xc019f2d2 <__rdtsc_delay+18>: rdtsc
> 0xc019f2d4 <__rdtsc_delay+20>: sub %ecx,%eax
> 0xc019f2d6 <__rdtsc_delay+22>: cmp %ebx,%eax
> 0xc019f2d8 <__rdtsc_delay+24>: jb 0xc019f2d0 <__rdtsc_delay+16>
> 0xc019f2da <__rdtsc_delay+26>: pop %ebx
> 0xc019f2db <__rdtsc_delay+27>: mov %ebp,%esp
> 0xc019f2dd <__rdtsc_delay+29>: pop %ebp
> 0xc019f2de <__rdtsc_delay+30>: ret
> End of assembler dump.
>
> -
> 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/
>
>

-
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/



This archive was generated by hypermail 2b29 : Mon Sep 23 2002 - 22:00:29 EST