Quoting Thomas Huth (2022-08-30 14:27:30) [...] > > diff --git a/lib/s390x/asm/time.h b/lib/s390x/asm/time.h > > index 7652a151e87a..d7c2bcb4f306 100644 > > --- a/lib/s390x/asm/time.h > > +++ b/lib/s390x/asm/time.h > > @@ -14,6 +14,15 @@ > > #define STCK_SHIFT_US (63 - 51) > > #define STCK_MAX ((1UL << 52) - 1) > > > > +static inline uint64_t get_clock_fast(void) > > +{ > > + uint64_t clk; > > + > > + asm volatile(" stckf %0 " : : "Q"(clk) : "memory"); > > + > > + return clk; > > +} > > Using clk as input parameter together with memory clobbing sounds like a bad > solution to me here. The Linux kernel properly uses it as output parameter > instead: > > static inline unsigned long get_tod_clock_fast(void) > { > unsigned long clk; > > asm volatile("stckf %0" : "=Q" (clk) : : "cc"); > return clk; > } Yes, thanks, it is a better solution. get_clock_us() also does it this way, so while at it let's fix that, too...