From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [RFC PATCH v3 0/4] Real mode interrupt injection Date: Mon, 16 Aug 2010 16:19:06 +0300 Message-ID: <4C693ACA.9090702@redhat.com> References: <1281908823-4505-1-git-send-email-m.gamal005@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, mtosatti@redhat.com To: Mohammed Gamal Return-path: Received: from mx1.redhat.com ([209.132.183.28]:57789 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753863Ab0HPNTL (ORCPT ); Mon, 16 Aug 2010 09:19:11 -0400 In-Reply-To: Sender: kvm-owner@vger.kernel.org List-ID: On 08/16/2010 02:37 AM, Mohammed Gamal wrote: > On Mon, Aug 16, 2010 at 12:46 AM, Mohammed Gamal wrote: >> This patch introduces real mode interrupt injection for VMX. >> It currently invokes the x86 emulator to emulate interrupts >> instead of manually setting VMX controls. >> >> Needless to say, this is not meant for merging in its current state. >> The emulator still needs some more work to get this completely operational. >> >> Mohammed Gamal (4): >> x86 emulator: Expose emulate_int_real() >> x86: Separate emulation context initialization in a separate function >> x86: Add kvm_inject_realmode_interrupt() wrapper >> VMX: Emulated real mode interrupt injection >> >> arch/x86/include/asm/kvm_emulate.h | 3 +- >> arch/x86/kvm/vmx.c | 65 +++---------------------------- >> arch/x86/kvm/x86.c | 75 ++++++++++++++++++++++-------------- >> arch/x86/kvm/x86.h | 1 + >> 4 files changed, 55 insertions(+), 89 deletions(-) >> --- >> Changes since v2: >> - Refactored emulation context initialization code >> - Commit eip value from the decode cache to the emulation context in x86.c rather than the emulator >> - Add kvm_* prefix to inject_realmode_interrupt() global symbol for consistency >> > Here is a full trace of a MINIX guest since bootup. Looks like we get > stuck somewhere in the BIOS. > https://docs.google.com/leaf?id=0B9UodZT1IuENMzJhNWQxM2YtYzE3YS00YWY4LTk2YTgtZWY3ODNhMWUxMDkx&sort=name&layout=list&num=50 I debugged this for a bit - emulate_int_real() is completely broken. emulate_push() doesn't push anything, it only schedules a push; running these back-to-back will result in only the last push to be executed. With that fixed, I get the boot splash. Not 100% perfect but much closer. -- error compiling committee.c: too many arguments to function