xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: "Aravindh Puthiyaparambil (aravindp)" <aravindp@cisco.com>,
	Jan Beulich <JBeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Tim Deegan <tim@xen.org>, Keir Fraser <keir@xen.org>,
	Ian Jackson <ian.jackson@eu.citrix.com>,
	Ian Campbell <ian.campbell@citrix.com>
Subject: Re: [PATCH RFC v2 1/4] x86/mm: Shadow and p2m changes for PV mem_access
Date: Fri, 22 Aug 2014 10:34:17 +0100	[thread overview]
Message-ID: <53F70E99.7030501@citrix.com> (raw)
In-Reply-To: <97A500D504438F4ABC02EBA81613CC63318E00F6@xmb-aln-x02.cisco.com>

On 22/08/14 03:29, Aravindh Puthiyaparambil (aravindp) wrote:
>>> No, at least not about unspecified hypothetical ones. But again - a
>>> vague statement like you gave, without any kind of quantification of
>>> the imposed overhead, isn't going to be good enough a judgment.
>>> After all pausing a domain can be quite problematic for its performance
>>> if that happens reasonably frequently. Otoh I admit that the user of
>>> your new mechanism has a certain level of control over the impact via
>>> the number of pages (s)he wants to write-protect. So yes, perhaps it
>>> isn't going to be too bad as long as the hackery you need to do isn't.
>> I just wanted to give an update as to where I stand so as to not leave this
>> thread hanging. As I was working through pausing and unpausing the domain
>> during Xen writes to guest memory, I found a spot where the write happens
>> outside of __copy_to_user_ll() and __put_user_size(). It occurs in
>> create_bounce_frame() where Xen writes to the guest stack to setup an
>> exception frame. At that moment, if the guest stack is marked read-only, we
>> end up in the same situation as with the copy to guest functions but with no
>> obvious place to revert the page table entry back to read-only. I am at the
>> moment looking for a spot where I can do this.
> I have a solution for the create_bounc_frame() issue I described above. Please find below a POC patch that includes pausing and unpausing the domain during the Xen writes to guest memory. I have it on top of the patch that was using CR0.WP to highlight the difference. Please take a look and let me know if this solution is acceptable. 
>
> PS: I do realize whatever I do to create_bounce_frame() will have to be reflected in the compat version. If this is correct approach I will do the same there too.
>
> Thanks,
> Aravindh

What is wrong with just making use of CR0.WP to solve this issue?

Alternatively, locate the page in question and use map_domain_page() to
get a supervisor rw mapping.


I am concerned with the addition of a the vcpu specifics to
shadow_write_entries().  Most of the shadow code is already vcpu centric
where it should be domain centric, and steps are being made to alleviate
these problems.  Any access in from a toolstack/device model hypercall
will probably be using vcpu[0], which will cause this logic to be
applied in an erroneous context.

~Andrew

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

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-08  2:50 [PATCH RFC v2 0/4] Add mem_access support for PV domains Aravindh Puthiyaparambil
2014-07-08  2:50 ` [PATCH RFC v2 1/4] x86/mm: Shadow and p2m changes for PV mem_access Aravindh Puthiyaparambil
2014-07-24 14:29   ` Jan Beulich
2014-07-24 23:34     ` Aravindh Puthiyaparambil (aravindp)
2014-07-25  7:19       ` Jan Beulich
2014-07-25 21:39         ` Aravindh Puthiyaparambil (aravindp)
2014-07-28  6:49           ` Jan Beulich
2014-07-28 21:14             ` Aravindh Puthiyaparambil (aravindp)
2014-07-30  4:05             ` Aravindh Puthiyaparambil (aravindp)
2014-07-30  7:11               ` Jan Beulich
2014-07-30 18:35                 ` Aravindh Puthiyaparambil (aravindp)
2014-08-01  6:39                   ` Jan Beulich
2014-08-01 18:08                     ` Aravindh Puthiyaparambil (aravindp)
2014-08-04  7:03                       ` Jan Beulich
2014-08-05  0:14                         ` Aravindh Puthiyaparambil (aravindp)
2014-08-05  6:33                           ` Jan Beulich
2014-08-13 22:14                             ` Aravindh Puthiyaparambil (aravindp)
2014-08-22  2:29                             ` Aravindh Puthiyaparambil (aravindp)
2014-08-22  9:34                               ` Andrew Cooper [this message]
2014-08-22 10:02                                 ` Jan Beulich
2014-08-22 10:14                                   ` Andrew Cooper
2014-08-22 18:28                                 ` Aravindh Puthiyaparambil (aravindp)
2014-08-22 18:52                                   ` Andrew Cooper
2014-08-25 12:45                                 ` Gianluca Guida
2014-08-25 13:01                                   ` Jan Beulich
2014-08-25 13:02                                   ` Andrew Cooper
2014-08-25 13:59                                     ` Gianluca Guida
2014-08-22 15:33                               ` Jan Beulich
2014-08-22 19:07                                 ` Aravindh Puthiyaparambil (aravindp)
2014-08-22 19:24                                   ` Andrew Cooper
2014-08-22 19:48                                     ` Aravindh Puthiyaparambil (aravindp)
2014-08-22 20:02                                       ` Andrew Cooper
2014-08-22 20:13                                         ` Aravindh Puthiyaparambil (aravindp)
2014-08-25  7:34                                           ` Jan Beulich
2014-08-25  7:33                                         ` Jan Beulich
2014-08-25 12:49                                           ` Andrew Cooper
2014-08-25 13:09                                             ` Jan Beulich
2014-08-25 16:56                                               ` Aravindh Puthiyaparambil (aravindp)
2014-08-26  7:08                                                 ` Jan Beulich
2014-08-26 22:27                                                   ` Aravindh Puthiyaparambil (aravindp)
2014-08-26 23:30                                                     ` Andrew Cooper
2014-08-28  9:34                                                       ` Tim Deegan
2014-08-28 18:33                                                         ` Aravindh Puthiyaparambil (aravindp)
2014-08-27  6:33                                                     ` Jan Beulich
2014-08-27  7:49                                                       ` Tim Deegan
2014-08-27 17:29                                                       ` Aravindh Puthiyaparambil (aravindp)
2014-08-25 17:44                                               ` Andrew Cooper
2014-08-26  7:12                                                 ` Jan Beulich
2014-08-25  7:29                                       ` Jan Beulich
2014-08-25 16:40                                         ` Aravindh Puthiyaparambil (aravindp)
2014-08-28  9:14           ` Tim Deegan
2014-08-28 18:31             ` Aravindh Puthiyaparambil (aravindp)
2014-08-28 19:00               ` Tim Deegan
2014-08-28 19:23                 ` Aravindh Puthiyaparambil (aravindp)
2014-08-28 20:37                   ` Tim Deegan
2014-08-28 21:35                     ` Aravindh Puthiyaparambil (aravindp)
2014-08-28 22:20                     ` Aravindh Puthiyaparambil (aravindp)
2014-08-29  9:52                       ` Tim Deegan
2014-08-29 17:52                         ` Aravindh Puthiyaparambil (aravindp)
2014-08-29 19:03                         ` Aravindh Puthiyaparambil (aravindp)
2014-09-01 10:38                           ` Jan Beulich
2014-09-02 21:57                             ` Aravindh Puthiyaparambil (aravindp)
2014-09-03  8:31                               ` Jan Beulich
2014-09-03 18:50                                 ` Aravindh Puthiyaparambil (aravindp)
2014-09-04  6:39                                   ` Jan Beulich
2014-09-04 18:24                                     ` Aravindh Puthiyaparambil (aravindp)
2014-09-05  8:11                                       ` Jan Beulich
2014-09-05 22:49                                         ` Aravindh Puthiyaparambil (aravindp)
     [not found]                                   ` <20140904083906.GA86555@deinos.phlegethon.org>
     [not found]                                     ` <540849430200007800030C47@mail.emea.novell.com>
2014-09-11 19:40                                       ` Aravindh Puthiyaparambil (aravindp)
2014-09-12  7:21                                         ` Jan Beulich
2014-09-12 18:01                                           ` Aravindh Puthiyaparambil (aravindp)
2014-08-28  9:09       ` Tim Deegan
2014-08-28 18:23         ` Aravindh Puthiyaparambil (aravindp)
2014-07-08  2:50 ` [PATCH RFC v2 2/4] x86/mem_access: mem_access and mem_event changes to support PV domains Aravindh Puthiyaparambil
2014-07-24 14:38   ` Jan Beulich
2014-07-24 23:52     ` Aravindh Puthiyaparambil (aravindp)
2014-07-25  7:23       ` Jan Beulich
2014-07-25 21:47         ` Aravindh Puthiyaparambil (aravindp)
2014-07-28  6:56           ` Jan Beulich
2014-07-28 21:16             ` Aravindh Puthiyaparambil (aravindp)
2014-07-08  2:50 ` [PATCH RFC v2 3/4] tools/libxc: Add APIs for PV mem_access Aravindh Puthiyaparambil
2014-07-08  2:50 ` [PATCH RFC v2 4/4] tool/xen-access: Add support for PV domains Aravindh Puthiyaparambil
2014-07-08 16:27 ` [PATCH RFC v2 0/4] Add mem_access " Konrad Rzeszutek Wilk
2014-07-08 17:57   ` Aravindh Puthiyaparambil (aravindp)
2014-07-09  0:31   ` Aravindh Puthiyaparambil (aravindp)

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=53F70E99.7030501@citrix.com \
    --to=andrew.cooper3@citrix.com \
    --cc=JBeulich@suse.com \
    --cc=aravindp@cisco.com \
    --cc=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=keir@xen.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).