From: alex.bennee@linaro.org (Alex Bennée)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v7 02/11] KVM: arm64: guest debug, define API headers
Date: Wed, 1 Jul 2015 19:28:54 +0100 [thread overview]
Message-ID: <1435775343-20034-3-git-send-email-alex.bennee@linaro.org> (raw)
In-Reply-To: <1435775343-20034-1-git-send-email-alex.bennee@linaro.org>
This commit defines the API headers for guest debugging. There are two
architecture specific debug structures:
- kvm_guest_debug_arch, allows us to pass in HW debug registers
- kvm_debug_exit_arch, signals exception and possible faulting address
The type of debugging being used is controlled by the architecture
specific control bits of the kvm_guest_debug->control flags in the ioctl
structure.
Signed-off-by: Alex Benn?e <alex.bennee@linaro.org>
Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Acked-by: Christoffer Dall <christoffer.dall@linaro.org>
---
v2
- expose hsr and pc directly to user-space
v3
- s/control/controlled/ in commit message
- add v8 to ARM ARM comment (ARM Architecture Reference Manual)
- add rb tag
- rm pc, add far
- re-word comments on alignment
- rename KVM_ARM_NDBG_REGS -> KVM_ARM_MAX_DBG_REGS
v4
- now uses common HW/SW BP define
- add a-b-tag
- use u32 for control regs
v5
- revert to have arch specific KVM_GUESTDBG_USE_SW/HW_BP
- rm stale comments dbgctrl was stored as u64
v6
- mv far comment from later patch
- KVM_GUESTDBG_USE_HW_BP -> KVM_GUESTDBG_USE_HW
- revert control regs to u64 (parity with GET/SET_ONE_REG)
---
arch/arm64/include/uapi/asm/kvm.h | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/arch/arm64/include/uapi/asm/kvm.h b/arch/arm64/include/uapi/asm/kvm.h
index d268320..d82f3f3 100644
--- a/arch/arm64/include/uapi/asm/kvm.h
+++ b/arch/arm64/include/uapi/asm/kvm.h
@@ -100,12 +100,39 @@ struct kvm_sregs {
struct kvm_fpu {
};
+/*
+ * See v8 ARM ARM D7.3: Debug Registers
+ *
+ * The architectural limit is 16 debug registers of each type although
+ * in practice there are usually less (see ID_AA64DFR0_EL1).
+ *
+ * Although the control registers are architecturally defined as 32
+ * bits wide we use a 64 bit structure here to keep parity with
+ * KVM_GET/SET_ONE_REG behaviour which treats all system registers as
+ * 64 bit values. It also allows for the possibility of the
+ * architecture expanding the control registers without having to
+ * change the userspace ABI.
+ */
+#define KVM_ARM_MAX_DBG_REGS 16
struct kvm_guest_debug_arch {
+ __u64 dbg_bcr[KVM_ARM_MAX_DBG_REGS];
+ __u64 dbg_bvr[KVM_ARM_MAX_DBG_REGS];
+ __u64 dbg_wcr[KVM_ARM_MAX_DBG_REGS];
+ __u64 dbg_wvr[KVM_ARM_MAX_DBG_REGS];
};
struct kvm_debug_exit_arch {
+ __u32 hsr;
+ __u64 far; /* used for watchpoints */
};
+/*
+ * Architecture specific defines for kvm_guest_debug->control
+ */
+
+#define KVM_GUESTDBG_USE_SW_BP (1 << 16)
+#define KVM_GUESTDBG_USE_HW (1 << 17)
+
struct kvm_sync_regs {
};
--
2.4.5
next prev parent reply other threads:[~2015-07-01 18:28 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-01 18:28 [PATCH v7 00/11] KVM Guest Debug support for arm64 Alex Bennée
2015-07-01 18:28 ` [PATCH v7 01/11] KVM: add comments for kvm_debug_exit_arch struct Alex Bennée
2015-07-01 18:28 ` Alex Bennée [this message]
2015-07-01 18:28 ` [PATCH v7 03/11] KVM: arm: guest debug, add stub KVM_SET_GUEST_DEBUG ioctl Alex Bennée
2015-07-01 18:28 ` [PATCH v7 04/11] KVM: arm: introduce kvm_arm_init/setup/clear_debug Alex Bennée
2015-07-01 18:28 ` [PATCH v7 05/11] KVM: arm64: guest debug, add SW break point support Alex Bennée
2015-07-01 18:28 ` [PATCH v7 06/11] KVM: arm64: guest debug, add support for single-step Alex Bennée
2015-07-01 18:28 ` [PATCH v7 07/11] KVM: arm64: re-factor hyp.S debug register code Alex Bennée
2015-07-01 18:29 ` [PATCH v7 08/11] KVM: arm64: introduce vcpu->arch.debug_ptr Alex Bennée
2015-07-02 18:34 ` Christoffer Dall
2015-07-03 7:14 ` Alex Bennée
2015-07-03 21:46 ` Christoffer Dall
2015-07-03 21:43 ` Christoffer Dall
2015-07-01 18:29 ` [PATCH v7 09/11] KVM: arm64: guest debug, HW assisted debug support Alex Bennée
2015-07-02 8:48 ` Will Deacon
2015-07-02 13:50 ` Alex Bennée
2015-07-03 9:23 ` Will Deacon
2015-07-03 16:07 ` Alex Bennée
2015-07-06 8:51 ` Will Deacon
2015-07-06 9:02 ` Alex Bennée
2015-07-06 9:31 ` Christoffer Dall
2015-07-01 18:29 ` [PATCH v7 10/11] KVM: arm64: enable KVM_CAP_SET_GUEST_DEBUG Alex Bennée
2015-07-01 18:29 ` [PATCH v7 11/11] KVM: arm64: add trace points for guest_debug debug Alex Bennée
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=1435775343-20034-3-git-send-email-alex.bennee@linaro.org \
--to=alex.bennee@linaro.org \
--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).