Re: [PATCH] use 64bit timer for hpet

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Liao,

On Fri, Jul 02 2021 at 16:13, zhaoyan liao wrote:
> The kernel judges whether the tsc clock is accurate in the
> clocksource_watchdog background thread function. The hpet clock source
> is 32-bit, but tsc is 64-bit. Therefore, when the system is busy and the
> clocksource_watchdog cannot be scheduled in time, the hpet clock may
> overflow and cause the system to misjudge tsc as unreliable.

Seriously? The wrap-around time for 32bit HPET @24MHz is ~3 minutes.

> In this case, we recommend that the kernel adopts the 64-bit hpet clock
> by default to keep the width of the two clock sources the same to reduce
> misjudgment. Some CPU models may not support 64-bit hpet, but according
> to the description of the CPU's register manual, it does not affect our
> reading action.

So much for the theory.

> -#define HPET_MASK			CLOCKSOURCE_MASK(32)
> +#define HPET_MASK			CLOCKSOURCE_MASK(64)

How is that valid for a 32bit HPET? This breaks the clocksource.
 
> +inline unsigned long hpet_readq(unsigned int a)
> +{
> +	return readq(hpet_virt_address + a);

Breaks 32bit build immediately.

Aside of that the reason why the kernel does not support 64bit HPET is
that there are HPETs which advertise 64bit support, but the
implementation is buggy.

IOW, while this works for your hardware this breaks quite some parts of
the universe. Not really a good approach.

Thanks,

        tglx



[Index of Archives]     [Kernel Development]     [Kernel Announce]     [Kernel Newbies]     [Linux Networking Development]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Device Mapper]

  Powered by Linux