|
@@ -331,3 +331,30 @@ int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu,
|
|
{
|
|
{
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+#define KVM_GUESTDBG_VALID_MASK (KVM_GUESTDBG_ENABLE)
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * kvm_arch_vcpu_ioctl_set_guest_debug - set up guest debugging
|
|
|
|
+ * @kvm: pointer to the KVM struct
|
|
|
|
+ * @kvm_guest_debug: the ioctl data buffer
|
|
|
|
+ *
|
|
|
|
+ * This sets up and enables the VM for guest debugging. Userspace
|
|
|
|
+ * passes in a control flag to enable different debug types and
|
|
|
|
+ * potentially other architecture specific information in the rest of
|
|
|
|
+ * the structure.
|
|
|
|
+ */
|
|
|
|
+int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
|
|
|
|
+ struct kvm_guest_debug *dbg)
|
|
|
|
+{
|
|
|
|
+ if (dbg->control & ~KVM_GUESTDBG_VALID_MASK)
|
|
|
|
+ return -EINVAL;
|
|
|
|
+
|
|
|
|
+ if (dbg->control & KVM_GUESTDBG_ENABLE) {
|
|
|
|
+ vcpu->guest_debug = dbg->control;
|
|
|
|
+ } else {
|
|
|
|
+ /* If not enabled clear all flags */
|
|
|
|
+ vcpu->guest_debug = 0;
|
|
|
|
+ }
|
|
|
|
+ return 0;
|
|
|
|
+}
|