From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 0/6] HVM Emulation and trap injection fixes Date: Tue, 23 Sep 2014 16:03:25 +0100 Message-ID: <1411484611-31027-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Xen-devel Cc: Andrew Cooper List-Id: xen-devel@lists.xenproject.org This series covers issues discovered during the analysis of XSAs 105 and 106. Patch 1 makes fixes to the SYS{CALL,ENTER,EXIT} emulation Patches 2-4 provide support to inject software events from the emulator Patch 5 introduces HVM Forced Emulation Prefix support to aid testing Patch 6 is misc cleanup to svm_inject_trap() As part of developing the software event injection emulation (and reverse engineering AMD's behaviour), I developed a unit test. The unit test tests: * icebp (0xf1) * int $1 (0xcd 0x01) * int3 (0xcc) * int $3 (0xcd 0x03) In the following setups: * Regular instruction * Regular instruction with a redundant addr32 (0x67) prefix * Forced emulation prefix * Forced eumation and redundant addr32 prefix Under the following conditions: * Ring0, all perms ok * Ring0, descriptor not present * Ring3, all perms ok * Ring3, descriptor not present * Ring3, dpl=0 Verifying that the correct exception occurs with correct eip and error code (when appropriate). Given some TUITs I hope to upstream a framework for unit testing in this fashion. Andrew Cooper (5): x86/emulate: Provide further information about software events x86/hvm: Don't discard the SW/HW event distinction from the emulator x86/emulate: Support for emulating software event injection x86/hvm: Forced Emulation Prefix for debug builds of Xen x86/svm: Misc cleanup Jan Beulich (1): x86emul: fix SYSCALL/SYSENTER/SYSEXIT emulation docs/misc/xen-command-line.markdown | 11 ++ xen/arch/x86/hvm/emulate.c | 50 ++++++-- xen/arch/x86/hvm/hvm.c | 5 + xen/arch/x86/hvm/io.c | 2 +- xen/arch/x86/hvm/svm/svm.c | 77 ++++++++++-- xen/arch/x86/hvm/vmx/realmode.c | 14 +-- xen/arch/x86/hvm/vmx/vmx.c | 18 ++- xen/arch/x86/mm.c | 2 + xen/arch/x86/mm/shadow/common.c | 1 + xen/arch/x86/x86_emulate/x86_emulate.c | 203 +++++++++++++++++++++++--------- xen/arch/x86/x86_emulate/x86_emulate.h | 19 +++ xen/include/asm-x86/hvm/emulate.h | 5 +- xen/include/asm-x86/hvm/hvm.h | 5 + 13 files changed, 326 insertions(+), 86 deletions(-) -- 1.7.10.4