Page MenuHomeFreeBSD

D42295.diff
No OneTemporary

D42295.diff

diff --git a/sys/amd64/vmm/amd/svm.c b/sys/amd64/vmm/amd/svm.c
--- a/sys/amd64/vmm/amd/svm.c
+++ b/sys/amd64/vmm/amd/svm.c
@@ -1421,6 +1421,12 @@
break;
case IDT_BP:
+ vmexit->exitcode = VM_EXITCODE_BPT;
+ vmexit->u.bpt.inst_length = vmexit->inst_length;
+ vmexit->inst_length = 0;
+
+ reflect = 0;
+ break;
case IDT_OF:
case IDT_BR:
/*
@@ -2333,6 +2339,9 @@
if (val == 0)
error = EINVAL;
break;
+ case VM_CAP_BPT_EXIT:
+ svm_set_intercept(vcpu, VMCB_EXC_INTCPT, BIT(IDT_BP), val);
+ break;
case VM_CAP_IPI_EXIT:
vlapic = vm_lapic(vcpu->vcpu);
vlapic->ipi_exit = val;
@@ -2366,6 +2375,9 @@
case VM_CAP_UNRESTRICTED_GUEST:
*retval = 1; /* unrestricted guest is always enabled */
break;
+ case VM_CAP_BPT_EXIT:
+ *retval = svm_get_intercept(vcpu, VMCB_EXC_INTCPT, BIT(IDT_BP));
+ break;
case VM_CAP_IPI_EXIT:
vlapic = vm_lapic(vcpu->vcpu);
*retval = vlapic->ipi_exit;

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 11, 4:39 AM (18 h, 29 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15750221
Default Alt Text
D42295.diff (934 B)

Event Timeline