linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 03/25] KVM: arm: guest debug, add stub KVM_SET_GUEST_DEBUG ioctl
Date: Thu, 20 Aug 2015 17:28:41 +0100	[thread overview]
Message-ID: <1440088143-4722-4-git-send-email-marc.zyngier@arm.com> (raw)
In-Reply-To: <1440088143-4722-1-git-send-email-marc.zyngier@arm.com>

From: Alex Benn?e <alex.bennee@linaro.org>

This commit adds a stub function to support the KVM_SET_GUEST_DEBUG
ioctl. Any unsupported flag will return -EINVAL. For now, only
KVM_GUESTDBG_ENABLE is supported, although it won't have any effects.

Signed-off-by: Alex Benn?e <alex.bennee@linaro.org>.
Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 Documentation/virtual/kvm/api.txt |  2 +-
 arch/arm/kvm/arm.c                |  7 -------
 arch/arm/kvm/guest.c              |  6 ++++++
 arch/arm64/kvm/guest.c            | 27 +++++++++++++++++++++++++++
 4 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
index 9f746ea..19adfd3 100644
--- a/Documentation/virtual/kvm/api.txt
+++ b/Documentation/virtual/kvm/api.txt
@@ -2671,7 +2671,7 @@ handled.
 4.87 KVM_SET_GUEST_DEBUG
 
 Capability: KVM_CAP_SET_GUEST_DEBUG
-Architectures: x86, s390, ppc
+Architectures: x86, s390, ppc, arm64
 Type: vcpu ioctl
 Parameters: struct kvm_guest_debug (in)
 Returns: 0 on success; -1 on error
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
index bc738d2..1b693cb 100644
--- a/arch/arm/kvm/arm.c
+++ b/arch/arm/kvm/arm.c
@@ -301,13 +301,6 @@ void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
 	kvm_arm_set_running_vcpu(NULL);
 }
 
-int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
-					struct kvm_guest_debug *dbg)
-{
-	return -EINVAL;
-}
-
-
 int kvm_arch_vcpu_ioctl_get_mpstate(struct kvm_vcpu *vcpu,
 				    struct kvm_mp_state *mp_state)
 {
diff --git a/arch/arm/kvm/guest.c b/arch/arm/kvm/guest.c
index d503fbb..96e935b 100644
--- a/arch/arm/kvm/guest.c
+++ b/arch/arm/kvm/guest.c
@@ -290,3 +290,9 @@ int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu,
 {
 	return -EINVAL;
 }
+
+int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
+					struct kvm_guest_debug *dbg)
+{
+	return -EINVAL;
+}
diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c
index 9535bd5..0ba8677 100644
--- a/arch/arm64/kvm/guest.c
+++ b/arch/arm64/kvm/guest.c
@@ -331,3 +331,30 @@ int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu,
 {
 	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;
+}
-- 
2.1.4

  parent reply	other threads:[~2015-08-20 16:28 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-20 16:28 [GIT PULL] KVM/ARM pull request for 4.3 Marc Zyngier
2015-08-20 16:28 ` [PATCH 01/25] KVM: add comments for kvm_debug_exit_arch struct Marc Zyngier
2015-08-20 16:28 ` [PATCH 02/25] KVM: arm64: guest debug, define API headers Marc Zyngier
2015-08-20 16:28 ` Marc Zyngier [this message]
2015-08-20 16:28 ` [PATCH 04/25] KVM: arm: introduce kvm_arm_init/setup/clear_debug Marc Zyngier
2015-08-20 16:28 ` [PATCH 05/25] KVM: arm64: guest debug, add SW break point support Marc Zyngier
2015-08-20 16:28 ` [PATCH 06/25] KVM: arm64: guest debug, add support for single-step Marc Zyngier
2015-08-20 16:28 ` [PATCH 07/25] KVM: arm64: re-factor hyp.S debug register code Marc Zyngier
2015-08-20 16:28 ` [PATCH 08/25] KVM: arm64: introduce vcpu->arch.debug_ptr Marc Zyngier
2015-08-20 16:28 ` [PATCH 09/25] KVM: arm64: guest debug, HW assisted debug support Marc Zyngier
2015-08-20 16:28 ` [PATCH 10/25] KVM: arm64: enable KVM_CAP_SET_GUEST_DEBUG Marc Zyngier
2015-08-20 16:28 ` [PATCH 11/25] KVM: arm64: add trace points for guest_debug debug Marc Zyngier
2015-08-20 16:28 ` [PATCH 12/25] arm64/kvm: Add generic v8 KVM target Marc Zyngier
2015-08-20 16:28 ` [PATCH 13/25] arm64: KVM: remove remaining reference to vgic_sr_vectors Marc Zyngier
2015-08-20 16:28 ` [PATCH 14/25] arm/arm64: KVM: Fix ordering of timer/GIC on guest entry Marc Zyngier
2015-08-20 16:28 ` [PATCH 15/25] arm/arm64: KVM: Move vgic handling to a non-preemptible section Marc Zyngier
2015-08-20 16:28 ` [PATCH 16/25] KVM: arm/arm64: vgic: Convert struct vgic_lr to use bitfields Marc Zyngier
2015-08-20 16:28 ` [PATCH 17/25] KVM: arm/arm64: vgic: Allow HW irq to be encoded in LR Marc Zyngier
2015-08-20 16:28 ` [PATCH 18/25] KVM: arm/arm64: vgic: Relax vgic_can_sample_irq for edge IRQs Marc Zyngier
2015-08-20 16:28 ` [PATCH 19/25] KVM: arm/arm64: vgic: Allow dynamic mapping of physical/virtual interrupts Marc Zyngier
2015-08-20 16:28 ` [PATCH 20/25] KVM: arm/arm64: vgic: Allow HW interrupts to be queued to a guest Marc Zyngier
2015-08-20 16:28 ` [PATCH 21/25] KVM: arm/arm64: vgic: Add vgic_{get, set}_phys_irq_active Marc Zyngier
2015-08-20 16:29 ` [PATCH 22/25] KVM: arm/arm64: vgic: Prevent userspace injection of a mapped interrupt Marc Zyngier
2015-08-20 16:29 ` [PATCH 23/25] KVM: arm/arm64: timer: Allow the timer to control the active state Marc Zyngier
2015-08-20 16:29 ` [PATCH 24/25] arm64: KVM: Optimize arm64 skip 30-50% vfp/simd save/restore on exits Marc Zyngier
2015-08-20 16:29 ` [PATCH 25/25] arm: KVM: keep arm vfp/simd exit handling consistent with arm64 Marc Zyngier
2015-08-22  7:00 ` [GIT PULL] KVM/ARM pull request for 4.3 Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1440088143-4722-4-git-send-email-marc.zyngier@arm.com \
    --to=marc.zyngier@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).