From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: [RFC][PATCH 2/4] kvm: Arch-specifc KVM_EXIT_DEBUG payload Date: Fri, 16 May 2008 18:01:58 +0200 Message-ID: <482DAFF6.3050403@web.de> References: <482D9198.7040801@web.de> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: Hollis Blanchard To: kvm-devel Return-path: In-Reply-To: <482D9198.7040801@web.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces@lists.sourceforge.net Errors-To: kvm-devel-bounces@lists.sourceforge.net List-Id: kvm.vger.kernel.org This adds an arch field to kvm_run.debug, the payload that is returned to user space on KVM_EXIT_DEBUG guest exits. For x86, this field is now supposed to report the precise debug exception (#DB or #BP) and the current state of the debug registers (the latter is not yet implemented). --- arch/x86/kvm/vmx.c | 1 + include/asm-x86/kvm.h | 5 +++++ include/linux/kvm.h | 1 + 3 files changed, 7 insertions(+) Index: b/arch/x86/kvm/vmx.c =================================================================== --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -2282,6 +2282,7 @@ static int handle_exception(struct kvm_v if ((intr_info & (INTR_INFO_INTR_TYPE_MASK | INTR_INFO_VECTOR_MASK)) == (INTR_TYPE_EXCEPTION | 1)) { kvm_run->exit_reason = KVM_EXIT_DEBUG; + kvm_run->debug.arch.exception = 1; return 0; } kvm_run->exit_reason = KVM_EXIT_EXCEPTION; Index: b/include/asm-x86/kvm.h =================================================================== --- a/include/asm-x86/kvm.h +++ b/include/asm-x86/kvm.h @@ -230,4 +230,9 @@ struct kvm_pit_state { #define KVM_TRC_APIC_ACCESS (KVM_TRC_HANDLER + 0x14) #define KVM_TRC_TDP_FAULT (KVM_TRC_HANDLER + 0x15) +struct kvm_debug_exit_arch { + __u32 exception; + __u64 dr[8]; +}; + #endif Index: b/include/linux/kvm.h =================================================================== --- a/include/linux/kvm.h +++ b/include/linux/kvm.h @@ -125,6 +125,7 @@ struct kvm_run { __u64 data_offset; /* relative to kvm_run start */ } io; struct { + struct kvm_debug_exit_arch arch; } debug; /* KVM_EXIT_MMIO */ struct { ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/