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.
Svinval/H VS-stage invalidation: invalidate by guest virtual address and ASID, with ordering supplied by split fences.
HINVAL.VVMA is the Hypervisor + Svinval VS-stage address-translation-cache invalidation instruction. It invalidates VS-stage translation-cache entries matching the guest virtual address in rs1 and ASID in rs2; rs1=x0 means all guest virtual addresses, and rs2=x0 means all ASIDs. The current VMID comes from the virtualization context rather than rs2. It performs invalidation only; ordering is supplied by SFENCE.W.INVAL and SFENCE.INVAL.IR.
HINVAL.VVMA is the Svinval/H VS-stage address-translation invalidation; it performs invalidation only, while SFENCE.W.INVAL and SFENCE.INVAL.IR supply split-fence ordering.
Understand this scenario with real code like «hinval.vvma a1, a2».
Understand this scenario with real code like «hinval.vvma a1, a2».
Understand this scenario with real code like «hinval.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.