All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jan Beulich" <JBeulich@suse.com>
To: Razvan Cojocaru <rcojocaru@bitdefender.com>
Cc: kevin.tian@intel.com, keir@xen.org, ian.campbell@citrix.com,
	stefano.stabellini@eu.citrix.com, andrew.cooper3@citrix.com,
	eddie.dong@intel.com, tim@xen.org, jun.nakajima@intel.com,
	xen-devel@lists.xenproject.org, ian.jackson@eu.citrix.com
Subject: Re: [PATCH V4 4/5] xen, libxc: Request page fault injection via libxc
Date: Tue, 09 Sep 2014 10:08:12 +0100	[thread overview]
Message-ID: <540EDF9C02000078000326CA@mail.emea.novell.com> (raw)
In-Reply-To: <540DD793.9060101@bitdefender.com>

>>> On 08.09.14 at 18:21, <rcojocaru@bitdefender.com> wrote:
> On 09/08/14 18:47, Jan Beulich wrote:
>>>>> On 05.09.14 at 12:01, <rcojocaru@bitdefender.com> wrote:
>>> +    {
>>> +        hvm_inject_trap(&d->arch.hvm_domain.inject_trap);
>>> +        d->arch.hvm_domain.inject_trap.vector = -1;
>>> +    }
>> 
>> And this is clearly lacking serialization (or a comment saying why
>> serialization isn't needed here).
> 
> If I understood this correctly, this is what Kevin has recommended: that
> only one HVMOP_trap_request should be pending at a time. Or have I
> misunderstood your comment?

Indeed you have - the comment is about dealing with races of e.g.
two CPUs processing a request for trap injection at the same time.

>>> --- a/xen/include/public/hvm/hvm_op.h
>>> +++ b/xen/include/public/hvm/hvm_op.h
>>> @@ -197,6 +197,13 @@ struct xen_hvm_inject_trap {
>>>      uint32_t insn_len;
>>>      /* CR2 for page faults */
>>>      uint64_aligned_t cr2;
>>> +    /*
>>> +     * Only used if vcpuid == ~0 (wildcard for any VCPU).
>>> +     * In that case, injection data is set per-domain, and any VCPU
>>> +     * running a process with matching CR3 in user mode will inject
>>> +     * the trap.
>>> +     */
>>> +    uint64_aligned_t cr3;
>> 
>> The comment should say "Currently only used ...", and the code
>> should then check this (returning the usual -EOPNOTSUPP). Or
>> alternatively implement it right away (which may be the better
>> route taking into consideration the first of the comments above).
> 
> I will gladly change the comment, but I'm not sure for what CR3 value I
> should return -EOPNOTSUPP. Should I enforce that cr3 == 0 for the
> VCPU-specific case and for traps that are not page faults? Could you
> please elaborate on what the alternative is?

First of all you need a value (or separate flag) indicating that the
CR3 check is to not be done. The current lack thereof shows (once
again) that you continue to think just in terms of your use case, not
in terms of a generic injection model. Once such a flag or special
value is in place, the answer to the above is - I think - obvious: For
other than #PF, it may be desirable (but not strictly necessary) to
enforce the value to mean "don't care"; just do whatever currently
is done for CR2. For #PF, the special value (or flag) used to
suppress CR3 checking in the domain case should (for now) get
enforced for the vCPU case.

As to flag or value: Since e.g. ~0 is never valid, this would seem
preferable over 0. And as long as there is one definitely invalid
value, not introducing a separate qualifying flag would seem the
preferred route to me.

Jan

  reply	other threads:[~2014-09-09  9:08 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-05 10:01 [PATCH V4 0/5] Basic guest memory introspection support Razvan Cojocaru
2014-09-05 10:01 ` [PATCH V4 1/5] xen: Emulate with no writes Razvan Cojocaru
2014-09-05 10:01 ` [PATCH V4 2/5] xen: Optimize introspection access to guest state Razvan Cojocaru
2014-09-05 10:01 ` [PATCH V4 3/5] xen, libxc: Force-enable relevant MSR events Razvan Cojocaru
2014-09-05 10:01 ` [PATCH V4 4/5] xen, libxc: Request page fault injection via libxc Razvan Cojocaru
2014-09-05 16:46   ` Tian, Kevin
2014-09-08 15:47   ` Jan Beulich
2014-09-08 16:21     ` Razvan Cojocaru
2014-09-09  9:08       ` Jan Beulich [this message]
2014-09-09 10:31         ` Razvan Cojocaru
2014-09-05 10:01 ` [PATCH V4 5/5] xen: Handle resumed instruction based on previous mem_event reply Razvan Cojocaru
2014-09-08 15:50   ` Jan Beulich
2014-09-08 15:53     ` 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=540EDF9C02000078000326CA@mail.emea.novell.com \
    --to=jbeulich@suse.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=eddie.dong@intel.com \
    --cc=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=jun.nakajima@intel.com \
    --cc=keir@xen.org \
    --cc=kevin.tian@intel.com \
    --cc=rcojocaru@bitdefender.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.