Re: i386 HPET code

Venkatesh Pallipadi
2005-02-03T20:09:45Z

On Thu, Feb 03, 2005 at 11:30:56AM -0800, john stultz wrote:
> On Thu, 2005-02-03 at 06:28 -0800, Pallipadi, Venkatesh wrote:
> > Can you check whether only the following change makes the problem go
> > away. If yes, then it looks like a hardware issue.
> >
> > > hpet_writel(hpet_tick, HPET_T0_CMP);
> > >+ hpet_writel(hpet_tick, HPET_T0_CMP); /* AK: why twice? */
> > >
>
> Yep. Adding only the second write seems to make the box boot.
>
> Since this isn't just affecting our hardware (see Andrew Walrond's
> comment in the thread), would doing two writes like x86-64 does be
> acceptable?
>

Yes. As this is just the initialization code, I think adding second write
is OK. But, I am not sure why two writes are required and will the two write
be sufficient for all systems. I don't seem to remember anything about this
in HPET specs. I will double check it.

Basically I am thinking of something like this will be a good generic solution
in place of simple two writes.

for (i = 0 ; i <some number for max retries>; i++) {
hpet_writel(hpet_tick, HPET_T0_CMP);
if (hpet_tick == hpet_readl(hpet_tick, HPET_T0_CMP))
break;
}

I think we can wait for result from Andrew's system and chose either one
of the above approaches.

Thanks,
Venki