Does HINVAL.GVMA provide ordering by itself?
Not completely. It performs G-stage invalidation; SFENCE.W.INVAL and SFENCE.INVAL.IR provide ordering boundaries in the split-fence sequence.
Svinval/H G-stage translation invalidation: rs1 selects GPA>>2, rs2 selects VMID, and ordering is supplied by split fences.
HINVAL.GVMA is the Hypervisor + Svinval G-stage address-translation-cache invalidation instruction. It invalidates G-stage translation-cache entries matching rs1/rs2; nonzero rs1 contains the guest physical address shifted right by 2 bits (GPA>>2), and nonzero rs2 specifies a VMID. rs1=x0 selects all guest physical addresses, and rs2=x0 selects all VMIDs. It performs invalidation only; ordering is supplied by SFENCE.W.INVAL and SFENCE.INVAL.IR split fences.
Svinval/H G-stage invalidation: shows SYSTEM encoding, rs1/rs2 scope selection, and Svinval/H invalidation without modeling TLB or cache implementation.
This animation shows only the local-hart translation fence/invalidation semantics defined by the privileged architecture; it does not show OS shootdown protocols, TLB structures, cache flushes, page-walk latency, or platform interrupt mechanisms.
HINVAL.GVMA is the G-stage invalidation action inside a split-fence sequence: rs1 uses GPA>>2, rs2 uses VMID, and ordering is not supplied by this instruction alone.
Understand this scenario with real code like «hinval.gvma a1, a2 # a1 = GPA >> 2; a2 = VMID».
Understand this scenario with real code like «hinval.gvma a1, a2 # a1 = GPA >> 2; a2 = VMID».
Understand this scenario with real code like «hinval.gvma a1, a2 # a1 = GPA >> 2; a2 = VMID».
Not completely. It performs G-stage invalidation; SFENCE.W.INVAL and SFENCE.INVAL.IR provide ordering boundaries in the split-fence sequence.
No. Nonzero HINVAL.GVMA rs1 is GPA>>2; HINVAL.VVMA rs1 is guest virtual address.