Is it a normal user-mode instruction?
No. These instructions are constrained by privilege level and extension support; user-mode legality must follow the privileged rules.
HFENCE.VVMA is a VS-stage address-translation fence: order/invalidate local-hart translations for the current VMID by guest virtual address and ASID.
HFENCE.VVMA is the Hypervisor extension VS-stage memory-management fence, similar in effect to temporarily entering VS-mode and executing SFENCE.VMA. It guarantees that prior stores already visible to the current hart are ordered before subsequent implicit reads for VS-stage address translation under the same VMID; if rs1 is not x0, it specifies a guest virtual address, and if rs2 is not x0, it specifies a guest ASID. The current VMID comes from hgatp.VMID, not rs2. rs1=x0 means all guest virtual addresses, and rs2=x0 means all ASIDs.
HFENCE.VVMA is the H-extension VS-stage address-translation fence, used to order updates to relevant two-stage translation structures with subsequent implicit translation on the local hart.
Understand this scenario with real code like «hfence.vvma a1, a2».
Understand this scenario with real code like «hfence.vvma a1, a2».
Understand this scenario with real code like «hfence.vvma a1, a2».
No. These instructions are constrained by privilege level and extension support; user-mode legality must follow the privileged rules.
No. Address translation, instruction fetch, and data-memory ordering use different fence/invalidation instructions.