From: Razvan Cojocaru <rcojocaru@bitdefender.com>
To: George Dunlap <dunlapg@umich.edu>
Cc: "Tian, Kevin" <kevin.tian@intel.com>, Keir Fraser <keir@xen.org>,
Ian Campbell <ian.campbell@citrix.com>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
"Dong, Eddie" <eddie.dong@intel.com>,
Ian Jackson <ian.jackson@eu.citrix.com>, Tim Deegan <tim@xen.org>,
Jan Beulich <jbeulich@suse.com>,
Jun Nakajima <jun.nakajima@intel.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH V6 5/5] xen: Handle resumed instruction based on previous mem_event reply
Date: Wed, 10 Sep 2014 19:12:35 +0300 [thread overview]
Message-ID: <54107873.1040001@bitdefender.com> (raw)
In-Reply-To: <CAFLBxZYsAnLrLh8F02ofdaL+0+GnZZ2MmQEp-uUCAthmVXXtmQ@mail.gmail.com>
On 09/10/2014 07:03 PM, George Dunlap wrote:
> On Tue, Sep 9, 2014 at 11:28 AM, Razvan Cojocaru
> <rcojocaru@bitdefender.com> wrote:
>> In a scenario where a page fault that triggered a mem_event occured,
>> p2m_mem_access_check() will now be able to either 1) emulate the
>> current instruction, or 2) emulate it, but don't allow it to perform
>> any writes.
>>
>> Signed-off-by: Razvan Cojocaru <rcojocaru@bitdefender.com>
>> Acked-by: Kevin Tian <kevin.tian@intel.com>
> [snip]
>
>> + else if ( v->arch.mem_event.emulate_flags == 0 &&
>> + npfec.kind != npfec_kind_with_gla ) /* don't send a mem_event */
>> + {
>> + v->arch.mem_event.emulate_flags = MEM_EVENT_FLAG_EMULATE;
>> + v->arch.mem_event.gpa = gpa;
>> + v->arch.mem_event.eip = eip;
>> + }
>
> It looks like the previous if() is true, that it will never get to
> this point (because it will either return 0 or 1 depending on whether
> p2m->access_required is set). So you don't need to make this an
> "else" here -- you should just add a blank line and make this a normal
> if().
>
> Also, maybe it's just because I'm not familiar with the mem_event
> interface, but I don't really see what this code is doing. It seems
> to be changing the behavior even for clients that aren't using
> MEM_EVENT_FLAG_EMULATE*. Is that intended? In any case it seems like
> there could be a better comment here.
Thanks, those are very good points. I'll make that a regular if(), and
test also if introspection monitoring is enabled (please see patch 3/5:
d->arch.hvm_domain.introspection_enabled) before setting the emulate
flag, that way we won't alter the behaviour for other clients.
As for the previous if, I think that if it holds then it won't be
possible to send a mem_event anyway, hence the else.
Thanks,
Razvan Cojocaru
next prev parent reply other threads:[~2014-09-10 16:12 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-09 10:28 [PATCH V6 0/5] Basic guest memory introspection support Razvan Cojocaru
2014-09-09 10:28 ` [PATCH V6 1/5] xen: Emulate with no writes Razvan Cojocaru
2014-09-09 10:28 ` [PATCH V6 2/5] xen: Optimize introspection access to guest state Razvan Cojocaru
2014-09-09 10:28 ` [PATCH V6 3/5] xen, libxc: Force-enable relevant MSR events Razvan Cojocaru
2014-09-09 10:28 ` [PATCH V6 4/5] xen, libxc: Request page fault injection via libxc Razvan Cojocaru
2014-09-10 14:38 ` Jan Beulich
2014-09-09 10:28 ` [PATCH V6 5/5] xen: Handle resumed instruction based on previous mem_event reply Razvan Cojocaru
2014-09-10 16:03 ` George Dunlap
2014-09-10 16:12 ` Razvan Cojocaru [this message]
2014-09-10 16:38 ` George Dunlap
[not found] ` <CAJu=L59+C7+byC0UJVcriERf-cueiz8CYcCeBOZfXX8ZLjTBRQ@mail.gmail.com>
2014-09-10 18:28 ` Andres Lagar Cavilla
2014-09-10 21:28 ` Razvan Cojocaru
2014-09-11 10:09 ` George Dunlap
2014-09-11 10:44 ` Razvan Cojocaru
2014-09-11 14:40 ` Tamas K Lengyel
2014-09-11 16:42 ` Andres Lagar Cavilla
2014-09-11 18:09 ` Tamas K Lengyel
2014-09-11 18:39 ` Andres Lagar Cavilla
2014-09-11 19:06 ` Andrew Cooper
2014-09-09 10:34 ` [PATCH V6 0/5] Basic guest memory introspection support Jan Beulich
2014-09-09 10:39 ` Razvan Cojocaru
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=54107873.1040001@bitdefender.com \
--to=rcojocaru@bitdefender.com \
--cc=andrew.cooper3@citrix.com \
--cc=dunlapg@umich.edu \
--cc=eddie.dong@intel.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=jbeulich@suse.com \
--cc=jun.nakajima@intel.com \
--cc=keir@xen.org \
--cc=kevin.tian@intel.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=tim@xen.org \
--cc=xen-devel@lists.xenproject.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.