From: "Alex Bennée" <alex.bennee@linaro.org> To: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, christoffer.dall@linaro.org, marc.zyngier@arm.com, peter.maydell@linaro.org, agraf@suse.de, drjones@redhat.com, pbonzini@redhat.com, zhichao.huang@linaro.org Cc: jan.kiszka@siemens.com, r65777@freescale.com, bp@suse.de, dahi@linux.vnet.ibm.com Subject: [PATCH v2 00/10] KVM Guest Debug support for arm64 Date: Tue, 31 Mar 2015 16:07:58 +0100 [thread overview] Message-ID: <1427814488-28467-1-git-send-email-alex.bennee@linaro.org> (raw) Hi, Here is V2 of the KVM Guest Debug support for arm64. Although there has been an increase in the total number of patches the implementation is both simpler and more complete. Gone are most of the changes that touch hyp.S replaced with C based hooks kvm_arch_setup/clear_debug() that manipulate the VCPU context before entering hyp.S. As a result I dropped the re-factoring patch for simplicity. The API has been simplified to pass the syndrome information directly back to user-space and leaving it to figure out what each exception is. The ioctl and handle_exit code have been re-factored and simplified. The handle_exit code in particular is all done with one handler which aside from watchpoints is supplying pretty much the same information for every exception. The HW debugging support has been improved by handling guest access to the debug register while debugging is happening. As a result a bunch of the review comments are no longer relevant as they applied to code that no longer exists. All the rest have been addressed as of this patch series. There are a few checkpatch violations for white space. Some in existing code (asm-offsets) and a couple in the handle_exit code where adding a whole extra tab seemed excessive. GIT Repos: The patches for this series are based off v4.0-rc6 and can be found at: https://git.linaro.org/people/alex.bennee/linux.git branch: guest-debug/4.0-rc6-v2 You can find the QEMU code that goes with this patch series at: https://github.com/stsquad/qemu branch: kvm/guest-debug-v2 Patch breakdown: The first 2 patches are simple clean-ups to rationalise some of the commentary and #defines. The next 2 introduce the API and implement the stub ioctl handler which is built up in later patches. The kvm_arch_setup/clear_debug() patch is a functional replacement for the previous manipulations of mdcr_el2 in hyp.S but making the value part of the VCPU context. The next 3 patches implement the various guest debug features. The penultimate patch could be merged with the one before but I kept it split apart for ease of review. The final patch may get dropped before up-streaming but it does provide useful trace points for anyone who want to track what is happening during guest debug. Alex Bennée (10): KVM: add commentary for kvm_debug_exit_arch struct KVM: define common __KVM_GUESTDBG_USE_SW/HW_BP values KVM: arm: guest debug, define API headers KVM: arm: guest debug, add stub KVM_SET_GUEST_DEBUG ioctl KVM: arm: introduce kvm_arch_setup/clear_debug() KVM: arm64: guest debug, add SW break point support KVM: arm64: guest debug, add support for single-step KVM: arm64: guest debug, HW assisted debug support KVM: arm64: trap nested debug register access KVM: arm64: add trace points for guest_debug debug Documentation/virtual/kvm/api.txt | 10 +- arch/arm/include/asm/kvm_host.h | 2 + arch/arm/kvm/arm.c | 51 ++++++- arch/arm64/include/asm/hw_breakpoint.h | 12 ++ arch/arm64/include/asm/kvm_host.h | 19 ++- arch/arm64/include/uapi/asm/kvm.h | 22 +++ arch/arm64/kernel/asm-offsets.c | 1 + arch/arm64/kernel/hw_breakpoint.c | 12 -- arch/arm64/kvm/Makefile | 2 +- arch/arm64/kvm/debug.c | 249 +++++++++++++++++++++++++++++++++ arch/arm64/kvm/handle_exit.c | 43 ++++++ arch/arm64/kvm/hyp.S | 13 +- arch/arm64/kvm/reset.c | 6 + arch/arm64/kvm/sys_regs.c | 55 ++++++++ arch/arm64/kvm/trace.h | 66 +++++++++ arch/powerpc/include/uapi/asm/kvm.h | 4 +- arch/x86/include/uapi/asm/kvm.h | 4 +- include/uapi/linux/kvm.h | 17 ++- 18 files changed, 553 insertions(+), 35 deletions(-) create mode 100644 arch/arm64/kvm/debug.c -- 2.3.4 _______________________________________________ kvmarm mailing list kvmarm@lists.cs.columbia.edu https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
WARNING: multiple messages have this Message-ID (diff)
From: alex.bennee@linaro.org (Alex Bennée) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 00/10] KVM Guest Debug support for arm64 Date: Tue, 31 Mar 2015 16:07:58 +0100 [thread overview] Message-ID: <1427814488-28467-1-git-send-email-alex.bennee@linaro.org> (raw) Hi, Here is V2 of the KVM Guest Debug support for arm64. Although there has been an increase in the total number of patches the implementation is both simpler and more complete. Gone are most of the changes that touch hyp.S replaced with C based hooks kvm_arch_setup/clear_debug() that manipulate the VCPU context before entering hyp.S. As a result I dropped the re-factoring patch for simplicity. The API has been simplified to pass the syndrome information directly back to user-space and leaving it to figure out what each exception is. The ioctl and handle_exit code have been re-factored and simplified. The handle_exit code in particular is all done with one handler which aside from watchpoints is supplying pretty much the same information for every exception. The HW debugging support has been improved by handling guest access to the debug register while debugging is happening. As a result a bunch of the review comments are no longer relevant as they applied to code that no longer exists. All the rest have been addressed as of this patch series. There are a few checkpatch violations for white space. Some in existing code (asm-offsets) and a couple in the handle_exit code where adding a whole extra tab seemed excessive. GIT Repos: The patches for this series are based off v4.0-rc6 and can be found at: https://git.linaro.org/people/alex.bennee/linux.git branch: guest-debug/4.0-rc6-v2 You can find the QEMU code that goes with this patch series at: https://github.com/stsquad/qemu branch: kvm/guest-debug-v2 Patch breakdown: The first 2 patches are simple clean-ups to rationalise some of the commentary and #defines. The next 2 introduce the API and implement the stub ioctl handler which is built up in later patches. The kvm_arch_setup/clear_debug() patch is a functional replacement for the previous manipulations of mdcr_el2 in hyp.S but making the value part of the VCPU context. The next 3 patches implement the various guest debug features. The penultimate patch could be merged with the one before but I kept it split apart for ease of review. The final patch may get dropped before up-streaming but it does provide useful trace points for anyone who want to track what is happening during guest debug. Alex Benn?e (10): KVM: add commentary for kvm_debug_exit_arch struct KVM: define common __KVM_GUESTDBG_USE_SW/HW_BP values KVM: arm: guest debug, define API headers KVM: arm: guest debug, add stub KVM_SET_GUEST_DEBUG ioctl KVM: arm: introduce kvm_arch_setup/clear_debug() KVM: arm64: guest debug, add SW break point support KVM: arm64: guest debug, add support for single-step KVM: arm64: guest debug, HW assisted debug support KVM: arm64: trap nested debug register access KVM: arm64: add trace points for guest_debug debug Documentation/virtual/kvm/api.txt | 10 +- arch/arm/include/asm/kvm_host.h | 2 + arch/arm/kvm/arm.c | 51 ++++++- arch/arm64/include/asm/hw_breakpoint.h | 12 ++ arch/arm64/include/asm/kvm_host.h | 19 ++- arch/arm64/include/uapi/asm/kvm.h | 22 +++ arch/arm64/kernel/asm-offsets.c | 1 + arch/arm64/kernel/hw_breakpoint.c | 12 -- arch/arm64/kvm/Makefile | 2 +- arch/arm64/kvm/debug.c | 249 +++++++++++++++++++++++++++++++++ arch/arm64/kvm/handle_exit.c | 43 ++++++ arch/arm64/kvm/hyp.S | 13 +- arch/arm64/kvm/reset.c | 6 + arch/arm64/kvm/sys_regs.c | 55 ++++++++ arch/arm64/kvm/trace.h | 66 +++++++++ arch/powerpc/include/uapi/asm/kvm.h | 4 +- arch/x86/include/uapi/asm/kvm.h | 4 +- include/uapi/linux/kvm.h | 17 ++- 18 files changed, 553 insertions(+), 35 deletions(-) create mode 100644 arch/arm64/kvm/debug.c -- 2.3.4
next reply other threads:[~2015-03-31 15:07 UTC|newest] Thread overview: 199+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-03-31 15:07 Alex Bennée [this message] 2015-03-31 15:07 ` [PATCH v2 00/10] KVM Guest Debug support for arm64 Alex Bennée 2015-03-31 15:07 ` [PATCH v2 01/10] KVM: add commentary for kvm_debug_exit_arch struct Alex Bennée 2015-03-31 15:07 ` Alex Bennée 2015-03-31 15:07 ` Alex Bennée 2015-04-01 15:38 ` David Hildenbrand 2015-04-01 15:38 ` David Hildenbrand 2015-04-01 15:38 ` David Hildenbrand 2015-04-01 15:38 ` David Hildenbrand 2015-04-10 12:58 ` Andrew Jones 2015-04-10 12:58 ` Andrew Jones 2015-04-13 10:57 ` Christoffer Dall 2015-04-13 10:57 ` Christoffer Dall 2015-04-13 10:57 ` Christoffer Dall 2015-03-31 15:08 ` [PATCH v2 02/10] KVM: define common __KVM_GUESTDBG_USE_SW/HW_BP values Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-04-10 12:59 ` Andrew Jones 2015-04-10 12:59 ` Andrew Jones 2015-04-10 12:59 ` Andrew Jones 2015-04-10 12:59 ` Andrew Jones 2015-04-13 11:55 ` Christoffer Dall 2015-04-13 11:55 ` Christoffer Dall 2015-04-13 11:55 ` Christoffer Dall 2015-04-13 11:55 ` Christoffer Dall 2015-04-13 14:51 ` Alex Bennée 2015-04-13 14:51 ` Alex Bennée 2015-04-13 14:51 ` Alex Bennée 2015-04-13 14:51 ` Alex Bennée 2015-04-13 15:07 ` Andrew Jones 2015-04-13 15:07 ` Andrew Jones 2015-04-13 15:07 ` Andrew Jones 2015-04-13 15:07 ` Andrew Jones 2015-04-14 8:24 ` Christoffer Dall 2015-04-14 8:24 ` Christoffer Dall 2015-04-14 8:24 ` Christoffer Dall 2015-04-14 8:24 ` Christoffer Dall 2015-04-14 8:24 ` Christoffer Dall 2015-03-31 15:08 ` [PATCH v2 03/10] KVM: arm: guest debug, define API headers Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-04-01 15:46 ` David Hildenbrand 2015-04-01 15:46 ` David Hildenbrand 2015-04-01 15:46 ` David Hildenbrand 2015-04-01 16:01 ` Alex Bennée 2015-04-01 16:01 ` Alex Bennée 2015-04-01 16:05 ` David Hildenbrand 2015-04-01 16:05 ` David Hildenbrand 2015-04-01 16:09 ` Peter Maydell 2015-04-01 16:09 ` Peter Maydell 2015-04-10 13:05 ` Andrew Jones 2015-04-10 13:05 ` Andrew Jones 2015-04-10 13:05 ` Andrew Jones 2015-04-13 12:08 ` Christoffer Dall 2015-04-13 12:08 ` Christoffer Dall 2015-04-23 9:54 ` Alex Bennée 2015-04-23 9:54 ` Alex Bennée 2015-04-23 9:54 ` Alex Bennée 2015-03-31 15:08 ` [PATCH v2 04/10] KVM: arm: guest debug, add stub KVM_SET_GUEST_DEBUG ioctl Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-04-01 15:55 ` David Hildenbrand 2015-04-01 15:55 ` David Hildenbrand 2015-04-01 15:55 ` David Hildenbrand 2015-04-09 12:28 ` Andrew Jones 2015-04-09 12:28 ` Andrew Jones 2015-04-09 12:28 ` Andrew Jones 2015-04-09 14:19 ` Alex Bennée 2015-04-09 14:19 ` Alex Bennée 2015-04-09 14:19 ` Alex Bennée 2015-04-13 12:12 ` Christoffer Dall 2015-04-13 12:12 ` Christoffer Dall 2015-04-13 12:12 ` Christoffer Dall 2015-04-14 6:31 ` David Hildenbrand 2015-04-14 6:31 ` David Hildenbrand 2015-04-14 6:31 ` David Hildenbrand 2015-04-14 8:03 ` Alex Bennée 2015-04-14 8:03 ` Alex Bennée 2015-04-14 8:03 ` Alex Bennée 2015-03-31 15:08 ` [PATCH v2 05/10] KVM: arm: introduce kvm_arch_setup/clear_debug() Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-04-01 16:28 ` David Hildenbrand 2015-04-01 16:28 ` David Hildenbrand 2015-04-01 16:28 ` David Hildenbrand 2015-04-09 12:56 ` Andrew Jones 2015-04-09 12:56 ` Andrew Jones 2015-04-09 12:56 ` Andrew Jones 2015-04-09 14:18 ` Alex Bennée 2015-04-09 14:18 ` Alex Bennée 2015-04-09 12:55 ` Andrew Jones 2015-04-09 12:55 ` Andrew Jones 2015-04-09 12:55 ` Andrew Jones 2015-04-13 14:36 ` Christoffer Dall 2015-04-13 14:36 ` Christoffer Dall 2015-04-13 14:48 ` Christoffer Dall 2015-04-13 14:48 ` Christoffer Dall 2015-04-13 14:48 ` Christoffer Dall 2015-04-13 15:29 ` Alex Bennée 2015-04-13 15:29 ` Alex Bennée 2015-04-13 15:29 ` Alex Bennée 2015-03-31 15:08 ` [PATCH v2 06/10] KVM: arm64: guest debug, add SW break point support Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-04-02 12:52 ` David Hildenbrand 2015-04-02 12:52 ` David Hildenbrand 2015-04-02 12:52 ` David Hildenbrand 2015-04-02 14:06 ` Alex Bennée 2015-04-02 14:06 ` Alex Bennée 2015-04-02 14:06 ` Alex Bennée 2015-04-10 13:09 ` Andrew Jones 2015-04-10 13:09 ` Andrew Jones 2015-04-10 13:09 ` Andrew Jones 2015-04-14 8:25 ` Christoffer Dall 2015-04-14 8:25 ` Christoffer Dall 2015-04-23 14:26 ` Alex Bennée 2015-04-23 14:26 ` Alex Bennée 2015-04-23 14:26 ` Alex Bennée 2015-04-27 20:04 ` Christoffer Dall 2015-04-27 20:04 ` Christoffer Dall 2015-04-27 21:57 ` Peter Maydell 2015-04-27 21:57 ` Peter Maydell 2015-04-28 8:42 ` Alex Bennée 2015-04-28 8:42 ` Alex Bennée 2015-04-28 8:42 ` Alex Bennée 2015-04-28 9:34 ` Peter Maydell 2015-04-28 9:34 ` Peter Maydell 2015-04-28 12:56 ` Christoffer Dall 2015-04-28 12:56 ` Christoffer Dall 2015-04-28 14:37 ` Alex Bennée 2015-04-28 14:37 ` Alex Bennée 2015-04-28 14:37 ` Alex Bennée 2015-04-29 8:10 ` Christoffer Dall 2015-04-29 8:10 ` Christoffer Dall 2015-04-29 9:18 ` Alex Bennée 2015-04-29 9:18 ` Alex Bennée 2015-04-29 9:18 ` Alex Bennée 2015-04-29 10:38 ` Christoffer Dall 2015-04-29 10:38 ` Christoffer Dall 2015-04-29 15:08 ` Alex Bennée 2015-04-29 15:08 ` Alex Bennée 2015-04-29 15:08 ` Alex Bennée 2015-04-29 19:20 ` Christoffer Dall 2015-04-29 19:20 ` Christoffer Dall 2015-04-21 14:42 ` Zhichao Huang 2015-04-22 9:46 ` Alex Bennée 2015-04-22 9:46 ` Alex Bennée 2015-04-22 9:46 ` Alex Bennée 2015-03-31 15:08 ` [PATCH v2 07/10] KVM: arm64: guest debug, add support for single-step Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-04-09 13:24 ` Andrew Jones 2015-04-09 13:24 ` Andrew Jones 2015-04-09 14:16 ` Alex Bennée 2015-04-09 14:16 ` Alex Bennée 2015-04-09 14:16 ` Alex Bennée 2015-04-14 8:27 ` Christoffer Dall 2015-04-14 8:27 ` Christoffer Dall 2015-04-14 8:27 ` Christoffer Dall 2015-03-31 15:08 ` [PATCH v2 08/10] KVM: arm64: guest debug, HW assisted debug support Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-04-10 12:25 ` Andrew Jones 2015-04-10 12:25 ` Andrew Jones 2015-04-10 12:25 ` Andrew Jones 2015-04-13 8:00 ` Alex Bennée 2015-04-13 8:00 ` Alex Bennée 2015-04-13 8:00 ` Alex Bennée 2015-04-14 10:23 ` Christoffer Dall 2015-04-14 10:23 ` Christoffer Dall 2015-04-14 10:17 ` Christoffer Dall 2015-04-14 10:17 ` Christoffer Dall 2015-04-14 10:17 ` Christoffer Dall 2015-03-31 15:08 ` [PATCH v2 09/10] KVM: arm64: trap nested debug register access Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-04-10 12:38 ` Andrew Jones 2015-04-10 12:38 ` Andrew Jones 2015-04-10 12:38 ` Andrew Jones 2015-04-13 7:59 ` Alex Bennée 2015-04-13 7:59 ` Alex Bennée 2015-04-13 7:59 ` Alex Bennée 2015-04-14 10:27 ` Christoffer Dall 2015-04-14 10:27 ` Christoffer Dall 2015-04-14 10:27 ` Christoffer Dall 2015-04-14 10:30 ` Christoffer Dall 2015-04-14 10:30 ` Christoffer Dall 2015-04-14 10:30 ` Christoffer Dall 2015-03-31 15:08 ` [PATCH v2 10/10] KVM: arm64: add trace points for guest_debug debug Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-03-31 15:08 ` Alex Bennée 2015-04-10 12:54 ` Andrew Jones 2015-04-10 12:54 ` Andrew Jones 2015-04-13 7:57 ` Alex Bennée 2015-04-13 7:57 ` Alex Bennée 2015-04-14 10:32 ` Christoffer Dall 2015-04-14 10:32 ` Christoffer Dall 2015-04-14 10:32 ` Christoffer Dall
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=1427814488-28467-1-git-send-email-alex.bennee@linaro.org \ --to=alex.bennee@linaro.org \ --cc=agraf@suse.de \ --cc=bp@suse.de \ --cc=christoffer.dall@linaro.org \ --cc=dahi@linux.vnet.ibm.com \ --cc=drjones@redhat.com \ --cc=jan.kiszka@siemens.com \ --cc=kvm@vger.kernel.org \ --cc=kvmarm@lists.cs.columbia.edu \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=marc.zyngier@arm.com \ --cc=pbonzini@redhat.com \ --cc=peter.maydell@linaro.org \ --cc=r65777@freescale.com \ --cc=zhichao.huang@linaro.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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.