RFR: 8366441: AArch64: Support WFET in OnSpinWait [v3]
Ruben
duke at openjdk.org
Mon Feb 9 21:33:44 UTC 2026
> Implement OnSpinWait based on WFET - wait for event with timeout:
> - introduce OnSpinWaitDelay - the OnSpinWait time in nanoseconds;
> - the OnSpinWaitInstCount is expected to be 1 when WFET is used;
> - the waiting loop is followed by SB - to ensure following instructions aren't speculated until wait is finished;
> - the timer register is read via the self-synchronized view CNTVCTSS_EL0 to prevent the read being hoisted out of the loop.
>
> The WFET and CNTVCTSS_EL0 read are added to aarch64-asmtest.py as hex values - using the instruction mnemonics would require support of -march=armv9-2.a, and consequently, the binutils 2.36+.
Ruben has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains eight commits:
- Set default OnSpinWaitDelay to 100
- Address review comments
- Apply PR review "Suggested changes" from @theRealAph
- Merge from mainline
- Fix bsd_aarch64 build
- Update
- Address review comments
- Fix test
- Mark the support experimental
- Remove changes in src/hotspot/os_cpu/bsd_aarch64
- Merge from mainline
- 8366441: AArch64: Support WFET in OnSpinWait
Implement OnSpinWait based on WFET - wait for event with timeout:
- introduce OnSpinWaitDelay - the OnSpinWait time in nanoseconds;
- the OnSpinWaitInstCount is expected to be 1 when WFET is used;
- the waiting loop is followed by SB - to ensure following instructions
aren't speculated until wait is finished;
- the timer register is read via the self-synchronized view
CNTVCTSS_EL0 to prevent the read being hoisted out of the loop.
The WFET and CNTVCTSS_EL0 read are added to aarch64-asmtest.py as
hex values - using the instruction mnemonics would require support of
-march=armv9-2.a, and consequently, the binutils 2.36+.
Co-authored-by: Stuart Monteith <stuart.monteith at arm.com>
-------------
Changes: https://git.openjdk.org/jdk/pull/27030/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27030&range=02
Stats: 1295 lines in 15 files changed: 157 ins; 2 del; 1136 mod
Patch: https://git.openjdk.org/jdk/pull/27030.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/27030/head:pull/27030
PR: https://git.openjdk.org/jdk/pull/27030
More information about the hotspot-dev
mailing list