RFR: 8370947: Mitigate Neoverse-N1 erratum 1542419 negative impact on GenZGC performance [v4]

Evgeny Astigeevich eastigeevich at openjdk.org
Tue Nov 25 16:44:38 UTC 2025


On Thu, 20 Nov 2025 16:35:17 GMT, Evgeny Astigeevich <eastigeevich at openjdk.org> wrote:

>> We cannot execute `tlbi vae3is` here because it requires EL3. We are at EL0.
>
> Or you mean `IC IVAU`?`

I replaced the call of `ICache::invalidate_word()` with:

    asm volatile("dsb ish       \n"
                 "ic  ivau, xzr \n"
                 "isb           \n"
                 : : : "memory");


The code executed in `ICache::invalidate_word()` when all checks are done:

dsb ish
ic  ivau
dsb ish
isb


I use `xzr` in `ic  ivau` because an address in it does not matter. The instruction is trapped and ignored.
I think we don't need the second `dsb` because we will have `dsb sy` in the trap handler.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/28328#discussion_r2560695024


More information about the hotspot-dev mailing list