Re: [RFC PATCH v3 0/4] Real mode interrupt injection

Mohammed Gamal
2010-08-16T13:28:06Z

On Mon, Aug 16, 2010 at 4:19 PM, Avi Kivity <avi@redhat.com> wrote:
>  On 08/16/2010 02:37 AM, Mohammed Gamal wrote:
>>
>> On Mon, Aug 16, 2010 at 12:46 AM, Mohammed Gamal<m.gamal005@gmail.com>
>>  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.
>
So we need write back the decode cache after each push. Or let
emulate_push() change the emulation context directly. Please CMIIW

> With that fixed, I get the boot splash.  Not 100% perfect but much closer.
>
> --
> error compiling committee.c: too many arguments to function
>
>