Re: [RESEND PATCH v4] x86/hpet: Reduce HPET counter read contention

From: Dave Hansen
Date: Fri Aug 12 2016 - 17:16:15 EST


On 08/12/2016 01:18 PM, Andy Lutomirski wrote:
> I don't think this is right. If the HPET ever returns the same value
> twice in a row (unlikely because it's generally too slow to read, but
> it's plausible that someone will make a fast HPET some day), then this
> could deadlock.

True...

I guess that means we've got to do some kind of sequence counter
preferably in the same cacheline as the HPET value itself, or _something
that we guarantee to change on each write to the cached value.

> Also, does this code need to be NMI-safe? This implementation is
> deadlocky if it's called from an NMI.

Urg. Can't we just do

if (in_nmi())
return read_real_hpet();

?

> The original code was wait-free, right? That was a nice property, too.

You mean no spins? I don't think this one really spins ever either.