From: zhichao.huang@linaro.org (Zhichao Huang)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 00/10] KVM: arm: debug infrastructure support
Date: Sat, 16 May 2015 12:45:41 +0800 [thread overview]
Message-ID: <1431751551-4788-1-git-send-email-zhichao.huang@linaro.org> (raw)
This patch series adds debug support, a key feature missing from the
KVM/armv7 port.
The main idea is borrowed from armv8, which is to keep track of whether
the debug registers are "dirty" (changed by the guest) or not. In this
case, perform the usual save/restore dance, for one run only. It means
we only have a penalty if a guest is actively using the debug registers.
The amount of registers is properly frightening, but CPUs actually
only implement a subset of them. Also, there is a number of registers
we don't bother emulating (things having to do with external debug and
OSlock).
External debug is when you actually plug a physical JTAG into the CPU.
OSlock is a way to prevent "other software" to play with the debug
registers. My understanding is that it is only useful in combination
with the external debug. In both case, implementing support for this
is probably not worth the effort, at least for the time being.
This has been tested on a Cortex-A15 platform, running 32bit guests.
The patches for this series are based off v4.1-rc3 and can be found
at:
https://git.linaro.org/people/zhichao.huang/linux.git
branch: guest-debug/4.1-rc3-v1
Zhichao Huang (10):
KVM: arm: plug guest debug exploit
KVM: arm: rename pm_fake handler to trap_raz_wi
KVM: arm: enable to use the ARM_DSCR_MDBGEN macro from KVM assembly
code
KVM: arm: common infrastructure for handling AArch32 CP14/CP15
KVM: arm: check ordering of all system register tables
KVM: arm: add trap handlers for 32-bit debug registers
KVM: arm: add trap handlers for 64-bit debug registers
KVM: arm: implement dirty bit mechanism for debug registers
KVM: arm: implement lazy world switch for debug registers
KVM: arm: enable trapping of all debug registers
arch/arm/include/asm/hw_breakpoint.h | 54 ++---
arch/arm/include/asm/kvm_asm.h | 15 ++
arch/arm/include/asm/kvm_coproc.h | 3 +-
arch/arm/include/asm/kvm_host.h | 6 +
arch/arm/kernel/asm-offsets.c | 2 +
arch/arm/kvm/coproc.c | 386 +++++++++++++++++++++++++++++------
arch/arm/kvm/handle_exit.c | 4 +-
arch/arm/kvm/interrupts.S | 16 ++
arch/arm/kvm/interrupts_head.S | 313 +++++++++++++++++++++++++++-
9 files changed, 711 insertions(+), 88 deletions(-)
--
1.7.12.4
next reply other threads:[~2015-05-16 4:45 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-16 4:45 Zhichao Huang [this message]
2015-05-16 4:45 ` [PATCH 01/10] KVM: arm: plug guest debug exploit Zhichao Huang
2015-05-16 4:45 ` [PATCH 02/10] KVM: arm: rename pm_fake handler to trap_raz_wi Zhichao Huang
2015-05-16 4:45 ` [PATCH 03/10] KVM: arm: enable to use the ARM_DSCR_MDBGEN macro from KVM assembly code Zhichao Huang
2015-05-16 4:45 ` [PATCH 04/10] KVM: arm: common infrastructure for handling AArch32 CP14/CP15 Zhichao Huang
2015-05-16 4:45 ` [PATCH 05/10] KVM: arm: check ordering of all system register tables Zhichao Huang
2015-05-16 4:45 ` [PATCH 06/10] KVM: arm: add trap handlers for 32-bit debug registers Zhichao Huang
2015-05-16 4:45 ` [PATCH 07/10] KVM: arm: add trap handlers for 64-bit " Zhichao Huang
2015-05-16 4:45 ` [PATCH 08/10] KVM: arm: implement dirty bit mechanism for " Zhichao Huang
2015-05-16 4:45 ` [PATCH 09/10] KVM: arm: implement lazy world switch " Zhichao Huang
2015-05-16 4:45 ` [PATCH 10/10] KVM: arm: enable trapping of all " Zhichao Huang
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=1431751551-4788-1-git-send-email-zhichao.huang@linaro.org \
--to=zhichao.huang@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).