Re: [PATCH] KVM: arm64: Add an ISB after mapping a hyp fixmap slot

From: Fuad Tabba

Date: Thu Oct 29 2026 - 04:54:45 EST


Hi Xuheng,

On Wed, 28 Oct 2026 23:02:10 +0000, Xuheng Li <xuheng@xxxxxxxxxxxxxxx> wrote:
[...]
> A litmus test of the same shape (map the slot, DSB ISHST, load through
> it) faulted on a Cortex-A72 in 2 out of 100M runs. Arm's herd7 model
> with -variant vmsa also allows the fault, and forbids it once the ISB
> is added.

nit: it would help to have the litmus test itself in the commit message,
or as a commit note, so the herd7 claim can be checked. Here's the one I
ran (herd7 7.58, -variant vmsa): "Sometimes" as below, "Never" with an
ISB after the DSB, and "Never" without the ISB under -variant vmsa,ETS2.

AArch64 fixmap-noisb
{
[PTE(x)]=(oa:PA(x), valid:0);
0:X1=PTE(x); 0:X2=(oa:PA(x)); 0:X3=x;
}
P0 ;
STR X2,[X1] ;
DSB ISHST ;
LDR W4,[X3] ;
exists (fault(P0,x))

FWIW, the result matches the ARM ARM (B2.3: without FEAT_ETS2, a DSB ST
doesn't order an earlier store before a later translation table walk),
and emit_pte_barriers() in arch/arm64/include/asm/pgtable.h has the same
dsb(ishst) plus isb() after making a kernel pte valid, for the same
reason.

[...]

Reviewed-by: Fuad Tabba <fuad.tabba@xxxxxxxxx>

Tested in protected mode on QEMU, booting a protected and a
non-protected guest, and on an Apple M4 (nested virtualization),
booting a protected guest. No regressions.

Tested-by: Fuad Tabba <fuad.tabba@xxxxxxxxx>

Cheers,
/fuad