[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.LFD.1.10.0809032030271.3243@apollo.tec.linutronix.de>
Date: Wed, 3 Sep 2008 20:40:55 +0200 (CEST)
From: Thomas Gleixner <tglx@...utronix.de>
To: "Luiz Fernando N. Capitulino" <lcapitulino@...driva.com.br>
cc: Dmitry Nezhevenko <dion@...ex.net>, herton@...driva.com.br,
Mikhail Kshevetskiy <mikhail.kshevetskiy@...il.com>,
LKML <linux-kernel@...r.kernel.org>
Subject: Re: 2.6.27-rc5 doesn't boot on a Pavilion laptop
On Wed, 3 Sep 2008, Luiz Fernando N. Capitulino wrote:
> | Find a debug patch below, which looks at the two functions which might
> | loop forver under certain conditions. Does one of the checks hit ?
>
> I can actually boot with this patch. Was this intended?
Yes. That was the only point, where a hard hang could happen.
> As the dmesg has various WARN_ON() outputs I'm attaching it, this is
> the first one:
>
> """
> PCI: Using ACPI for IRQ routing
> DMAR:parse DMAR table failure.
> hpet0: at MMIO 0xfed00000, IRQs 2, 8, 31
> hpet0: 3 32-bit timers, 25000000 Hz
> Switched to high resolution mode on CPU 0
>
> tick_broadcast_set_event is stuck f09fa64 f0a01e4
Hmm, so we fail to force program that HPET with the standard minimum
delta.
I now see why this is happening and it is happening only on systems
with a fast HPET. Your's running 25MHz, so the delta is only 1.92
usec. I was staring at lots of those bugreports without noticing the
frequency.
Sigh. The idea to take a fixed number of HPET cycles as the minimum
was not really brilliant it seems.
Does the patch below help ? Keep the debug patch applied, as we can
see whether the check triggers or not.
Thanks,
tglx
---
arch/x86/kernel/hpet.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: linux-2.6/arch/x86/kernel/hpet.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/hpet.c
+++ linux-2.6/arch/x86/kernel/hpet.c
@@ -210,8 +210,8 @@ static void hpet_legacy_clockevent_regis
/* Calculate the min / max delta */
hpet_clockevent.max_delta_ns = clockevent_delta2ns(0x7FFFFFFF,
&hpet_clockevent);
- hpet_clockevent.min_delta_ns = clockevent_delta2ns(0x30,
- &hpet_clockevent);
+ /* 5 usec minimum reprogramming delta. */
+ hpet_clockevent.min_delta_ns = 5000;
/*
* Start hpet with the boot cpu mask and make it
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists