Re: 2.6.31.4: WARNING: at arch/x86/kernel/hpet.c:390 hpet_next_event+0x70/0x80() [occurs when ACPI_PROCESSOR=y]

Pallipadi, Venkatesh
2009-11-17T21:37:08Z

On Tue, Nov 17, 2009 at 03:45:31AM -0800, Justin Piszcz wrote:
>
>
> On Sat, 14 Nov 2009, Justin Piszcz wrote:
>
> >
> >
> > On Fri, 13 Nov 2009, Pallipadi, Venkatesh wrote:
> >
> >> On Fri, 2009-11-13 at 10:43 -0800, Justin Piszcz wrote:
> >>>
> >>> On Fri, 13 Nov 2009, Pallipadi, Venkatesh wrote:
> >>>
> >>>> On Fri, 2009-11-13 at 01:38 -0800, Thomas Gleixner wrote:
> >>>>> On Thu, 12 Nov 2009, Pallipadi, Venkatesh wrote:
> >>>>>> Yes. Yes. This is a hardware errata. I have a patch to workaround this
> >>>>>> and
> >>>>>> waiting on the errata description to get published..
>
> 1. Do we have an ETA of when this will get published?
> 2. Is there a patch available for testing?

Unfortunately, I don't have an ETA for when the errata will be published.

I am still stuck up on what is the original problem you have without the patch
on vanilla kernel? You will see the WARNING in the dmesg. As I understand,
that should not prevent you from loading processor driver or getting the
turbo boost or anything like that. The warning is a one time info and timer
and ACPI P/C states should work just fine.

Anyways, below is the patch that you can use for testing.

---
arch/x86/kernel/hpet.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
index dedc2bd..6beb5b5 100644
--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
@@ -387,7 +387,8 @@ static int hpet_next_event(unsigned long delta,
* what we wrote hit the chip before we compare it to the
* counter.
*/
- WARN_ON_ONCE((u32)hpet_readl(HPET_Tn_CMP(timer)) != cnt);
+ if (unlikely((u32)hpet_readl(HPET_Tn_CMP(timer)) != cnt))
+ WARN_ON_ONCE((u32)hpet_readl(HPET_Tn_CMP(timer)) != cnt);

return (s32)((u32)hpet_readl(HPET_COUNTER) - cnt) >= 0 ? -ETIME : 0;
}
--
1.6.0.6