After some conversation with Avi concerning why unreal mode has been seen to work with KVM on Intel. It clears out the scenario is caused as follows: - guest enters big real mode - kvm squashes limit to 64k-1 - guest executes instructions with offset > 64k - cpu issues #GP due to limit violation - kvm handle_rmode_exception() -> emulator - emulator ignores limit, emulates instruction With these applied I am getting vmentry failures with SeaBIOS and gPXE. I could still get SeaBIOS to work with emulate_invalid_guest_state=1. So it's needless to say that these patches are not meant for merging! -------- Changes from v1: - Added seg_override_limit() and emulate_ss() helpers in emulator - Corrected limit check return values for long mode - Limit Checking is now consistent with the Intel documentation -------- Mohammed Gamal (3): Add helper methods to get segment limits x86 emulator: Add cs_base() helper x86 emulator: Add segment limit checks and helper functions arch/x86/include/asm/kvm_emulate.h | 1 + arch/x86/include/asm/kvm_host.h | 1 + arch/x86/kvm/emulate.c | 143 ++++++++++++++++++++++++++++++------ arch/x86/kvm/svm.c | 8 ++ arch/x86/kvm/vmx.c | 8 ++ arch/x86/kvm/x86.c | 12 +++ 6 files changed, 150 insertions(+), 23 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html