On Thu, Feb 27, 2025 at 03:17:27PM +0100, Arnd Bergmann wrote: > From: Arnd Bergmann <arnd@xxxxxxxx> > > While reviewing a patch to the ioread64_hi_lo() helpers, I noticed > that there are several PTP drivers that use multiple register reads > to access a 64-bit hardware register in a racy way. > > There are usually safe ways of doing this, but at least these four > drivers do that. A third register read obviously makes the hardware > access 50% slower. If the low word counds nanoseconds and a single > register read takes on the order of 1µs, the resulting value is > wrong in one of 4 million cases, which is pretty rare but common > enough that it would be observed in practice. ... > Sorry I hadn't sent this out as a proper patch so far. Any ideas > what we should do here? Actually this reminds me one of the discussion where it was some interesting HW design that latches the value on the first read of _low_ part (IIRC), but I might be mistaken with the details. That said, it's from HW to HW, it might be race-less in some cases. -- With Best Regards, Andy Shevchenko