lkml.org 
[lkml]   [2005]   [Jun]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
Date
From
SubjectRe: [2.6.12] x86-64 IO-APIC + timer doesn't work II + PATCH
On Sat, Jun 18, 2005 at 02:52:52PM +0100, Alistair John Strachan wrote:
> Hi,
>
> I upgraded my nForce3 x86-64 desktop from 2.6.12-rc5 to 2.6.12 today and
> something strange started happening. Waay back in 2.6.x I had problems with
> the "noapic" default for nForce boards on x86-64, and so used the "apic"
> kernel boot parameter to force the apic on; this worked successfully for a
> long time with no timer problems.
>
> However, as of 2.6.12 (maybe -rc6, too?) my desktop occasionally fails to boot
> with the message:
>
> "IO-APIC + timer doesn't work! Try using the 'noapic' kernel parameter."
> (arch/x86_64/kernel/io_apic.c)
>
> However, this message is intermittent; it is sometimes possible to boot
> without getting it, and everything works fine. So I took its advice and ran
> with noapic, and everything seems fine now.
>
> However, I just thought I'd let whoever maintains this bit of code know that
> the check isn't a "sure thing": it's not being flagged reliably. Whether this
> is my BIOS or the kernel, I don't know.

It's a bit of a shot into the dark, but could you test if the following
patch helps? The A64 is quite aggressive in reordering instructions and it
might be breaking __delay() and cause it to return early.

If not I would check what a failing case and a working case output for

Calibrating delay loop... 3940.35 BogoMIPS (lpj=1970176)

Does the failing kernel output something different here?

-Andi


diff -u linux-2.6.12/arch/x86_64/lib/delay.c-o linux-2.6.12-rc6-git4-work/arch/x86_64/lib/delay.c
--- linux-2.6.12/arch/x86_64/lib/delay.c-o 2005-06-11 13:04:28.000000000 +0200
+++ linux-2.6.12/arch/x86_64/lib/delay.c 2005-06-19 01:49:09.000000000 +0200
@@ -27,9 +27,9 @@
do
{
rep_nop();
+ sync_core();
rdtscl(now);
- }
- while((now-bclock) < loops);
+ } while((now-bclock) < loops);
}

inline void __const_udelay(unsigned long xloops)
-
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/
\
 
 \ /
  Last update: 2005-06-19 01:55    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site