Hi Morten,
On Cortex‑A72 (ARMv8), the only architectural primitives available are YIELD,
WFE, and WFI:
YIELD is the only deterministic, low-overhead option (pure CPU relax,
no entry into low-power state)
WFE can be used as a low-power idle hint, but it is event-driven and
not time-based (it may return immediately)
WFI depends on interrupt wakeup and is therefore not suitable for tight
latency loops
For ~1 µs latency targets, the practical approach is a hybrid strategy:
Short waits → spin using YIELD
Slightly longer waits → opportunistically use WFE for power reduction
A simple implementation could look like (not tested):
static inline void rte_armv8_pause(unsigned int iters)
{
if (iters < 64) {
for (unsigned int i = 0; i < iters; i++)
asm volatile("yield");
} else {
asm volatile("sevl");
asm volatile("wfe");
}
}
@Wathsala Vithanage — would appreciate your thoughts, especially if there are
any micro-architectural nuances we should consider.
Regards,
Hemant
> -----Original Message-----
> From: Morten Brørup <[email protected]>
> Sent: 03 June 2026 17:26
> To: Wathsala Vithanage <[email protected]>; Hemant Agrawal
> <[email protected]>; Sachin Saxena (OSS)
> <[email protected]>
> Cc: [email protected]; Maxime Leroy <[email protected]>
> Subject: ARM v8 rte_power_pause
> Importance: High
>
> Hi Wathsala, Hemant and Sachin,
>
> Over at the Grout project, we are discussing power management in the
> context of 100 Gbit/s latency deadlines [1].
>
> rte_power_pause() is not implemented for ARM v8 / Cortex-A72.
> Syscalls such as nanosleep() have too much overhead, and cannot be used.
>
> Any suggestions for a power-reducing method to make a CPU core "sleep" (i.e.
> do nothing) for durations in the order of 1 microsecond?
>
> [1]:
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithu
> b.com%2FDPDK%2Fgrout%2Fpull%2F624%23issuecomment-
> 4602036364&data=05%7C02%7Chemant.agrawal%40nxp.com%7Cdbff5f2e
> 8db1406f0c4008dec1671791%7C686ea1d3bc2b4c6fa92cd99c5c301635%7
> C0%7C0%7C639160845728472826%7CUnknown%7CTWFpbGZsb3d8eyJFb
> XB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTW
> FpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=DRpJWjm2yaF3Cnhk0b
> bFFhmGbKRweOOiWdsWco2NbX0%3D&reserved=0
>
> -Morten