Index | Thread | Search

From:
hshoexer <hshoexer@yerbouti.franken.de>
Subject:
vmm: Inject #UD for VMs running SVM
To:
tech@openbsd.org
Date:
Fri, 21 Nov 2025 15:45:06 +0100

Download raw body.

Thread
Hi,

right now, vmm(4) only injects #UD correctly, when running on
intel/VMX.  Running on amd/SVM we hit the default case.

#UD does not provide an error code, so bit 11 of EVENTINJ must be
clear.

ok?

--------------------------------------------------------------
diff --git a/sys/arch/amd64/amd64/vmm_machdep.c b/sys/arch/amd64/amd64/vmm_machdep.c
index 9e63a0415bb..a85e1908c72 100644
--- a/sys/arch/amd64/amd64/vmm_machdep.c
+++ b/sys/arch/amd64/amd64/vmm_machdep.c
@@ -6739,6 +6739,10 @@ vcpu_run_svm(struct vcpu *vcpu, struct vm_run_params *vrp)
 				 */
 				vmcb->v_eventinj |= (4ULL << 8);
 				break;
+			case VMM_EX_UD:
+				/* Hardware exception, no error code. */
+				vmcb->v_eventinj |= (3ULL << 8);
+				break;
 			case VMM_EX_AC:
 				vcpu->vc_inject.vie_errorcode = 0;
 				/* fallthrough */