From: Avi Kivity <avi@redhat.com>
To: Mohammed Gamal <m.gamal005@gmail.com>
Cc: KVM list <kvm@vger.kernel.org>
Subject: Re: [RFC PATCH v3 0/3] Add segment limit checks to emulator
Date: Mon, 12 Jul 2010 16:51:10 +0300 [thread overview]
Message-ID: <4C3B1DCE.4050000@redhat.com> (raw)
In-Reply-To: <AANLkTimHvpE05chocuoQnY0ydOMchMcIInu9QX5F_pV4@mail.gmail.com>
On 07/12/2010 04:39 PM, Mohammed Gamal wrote:
>
>>> What happens is that guests are switched to big real mode so either
>>> gPXE and SeaBIOS need to be modified to work with the way KVM handles
>>> segment limits when switching to real mode, but that'd be only a
>>> temporary solution. The other - and better IMO - option is to get
>>> e_i_g_s=1 completely functional, which is something we want to do
>>> anyway. So we can address all the comments you have on these patches
>>> and eventually merge them along with the rest of e_i_g_s patches.
>>>
>>>
>> Does SeaBIOS use big real mode now?
>>
> I think so, ftrace shows a CR0 access just before the instruction that
> causes the failure. I am not 100% sure though.
>
Ok, will be good to know. In any case, I think it can be made to work
even without e_i_g_s=1.
>> What about expand-down segments? and moving the limit check where the
>> access is emulated (so we are sure we don't miss a check)?
>>
> Let me make sure I am understanding this correctly. I added a check in
> do_insn_fetch_byte() checking for CS limit. Similar checks in
> emulate_push() ane emulate_pop() for SS, and checks in
> x86_decode_insn() for SrcSI and DstDI since they causes accesses to
> segment override and ES respectively. Are we on the same page?
>
You have to do the check wherever you have a read or write that is
qualified by a segment. So the best place for them is in
->read_emulated(), ->write_emulated(), and similar.
A good way to do this is to add a segment variable to 'struct operand',
and doing all the base adjustment at the end (instead of up front as we
do now). That means we'll have the minimum number of places to add
checks to.
> I haven't looked into expand down segments, but I don't think it's
> much of an effort to add though.
>
It's needed, since guests will start failing mysteriously if they use
those segments and the limits are incorrect (though I doubt there are
any guests which use expand-down segments).
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2010-07-12 13:51 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-11 22:56 [RFC PATCH v3 0/3] Add segment limit checks to emulator Mohammed Gamal
2010-07-11 22:56 ` [RFC PATCH v3 1/3] Add helper methods to get segment limits Mohammed Gamal
2010-07-11 22:56 ` [RFC PATCH v3 2/3] x86 emulator: Add segment limit checking helpers Mohammed Gamal
2010-07-11 22:56 ` [RFC PATCH v3 3/3] x86 emulator: Add segment limit checks to emulator functions Mohammed Gamal
2010-07-12 6:26 ` [RFC PATCH v3 0/3] Add segment limit checks to emulator Avi Kivity
2010-07-12 12:36 ` Mohammed Gamal
2010-07-12 13:13 ` Avi Kivity
[not found] ` <AANLkTimHvpE05chocuoQnY0ydOMchMcIInu9QX5F_pV4@mail.gmail.com>
2010-07-12 13:51 ` Avi Kivity [this message]
2010-07-12 14:41 ` Gleb Natapov
2010-07-12 14:49 ` Avi Kivity
2010-07-24 15:45 ` Kevin O'Connor
2010-07-24 16:16 ` Kevin O'Connor
2010-07-25 8:55 ` Avi Kivity
2010-07-25 16:42 ` Kevin O'Connor
2010-07-25 17:19 ` Kevin O'Connor
2010-07-25 18:34 ` Avi Kivity
2010-07-25 18:55 ` Kevin O'Connor
2010-07-25 8:54 ` Avi Kivity
2010-07-25 16:23 ` Kevin O'Connor
2010-07-26 11:47 ` Avi Kivity
2010-07-26 17:47 ` Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C3B1DCE.4050000@redhat.com \
--to=avi@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=m.gamal005@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox