Re: [PATCH v16 03/16] arm64/delay: move, fixup usecs_to_cycles()

From: Ankur Arora

Date: Sat Oct 17 2026 - 03:20:48 EST



Catalin Marinas <catalin.marinas@xxxxxxx> writes:

> This Message Is From an External Sender
> This message came from outside your organization.
> Report Suspicious
>
> On Fri, Oct 16, 2026 at 12:08:24AM -0700, Ankur Arora wrote:
>> diff --git a/arch/arm64/include/asm/delay-const.h b/arch/arm64/include/asm/delay-const.h
>> new file mode 100644
>> index 000000000000..6ccdfe0a4130
>> --- /dev/null
>> +++ b/arch/arm64/include/asm/delay-const.h
>> @@ -0,0 +1,35 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +#ifndef _ASM_DELAY_CONST_H
>> +#define _ASM_DELAY_CONST_H
>> +
>> +#include <linux/math64.h>
>> +#include <linux/types.h>
>> +#include <asm/param.h> /* For HZ */
>> +
>> +/* 2**32 / 1000000 (rounded up) */
>> +#define __usecs_to_xloops_mult 0x10C7UL
>> +
>> +/* 2**32 / 1000000000 (rounded up) */
>> +#define __nsecs_to_xloops_mult 0x5UL
>> +
>> +extern unsigned long loops_per_jiffy;
>> +static inline u64 xloops_to_cycles(u64 xloops)
>> +{
>> + u64 loops_per_sec = (u64)loops_per_jiffy * HZ;
>> +
>> + return mul_u64_u64_shr(xloops, loops_per_sec, 32);
>> +}
>> +
>> +static inline u64 usecs_to_cycles(u64 time_usecs)
>> +{
>> + return xloops_to_cycles(time_usecs * __usecs_to_xloops_mult);
>> +}
>> +
>> +static inline u64 nsecs_to_cycles(u64 time_nsecs)
>> +{
>> + return xloops_to_cycles((time_nsecs) * __nsecs_to_xloops_mult);
>> +}
>> +
>> +u64 notrace __delay_cycles(void);
>> +
>> +#endif /* _ASM_DELAY_CONST_H */
>
> The bot reports are valid, moving these into headers pulled elsewhere
> will clash with existing functions with the same name. You fixed one but
> there's another.

Yeah I had missed out on usecs_to_cycles.

> Isn't it easier to just add an arm64_ prefix to these?
>
> Alternatively, I think we only need nsecs_to_cycles(). We have an out of
> line call to __delay_cycles() already, so can we not just add a new
> function to use directly and avoid polluting the headers:
>
> u64 arm64_wfet_deadline(u64 timeout_ns)
> {
> return __delay_cycles() + nsecs_to_cycles(timeout_ns);
> }
> EXPORT_SYMBOL_GPL(arm64_wfet_deadline);
>
> I prefer the latter if it works.

Yes agreed this is a better fix. Avoids chasing those names in drivers
all over the place.

--
ankur