All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Andrii Anisov <andrii.anisov@gmail.com>
Cc: Julien Grall <julien.grall@arm.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	"LOPEZ, FUENTES NACARINO Jairo Eduardo" <jairo@ruri.waseda.jp>,
	xen-devel@lists.xen.org
Subject: Re: RT Xen on ARM - R-Car series
Date: Thu, 14 Feb 2019 17:29:09 +0100	[thread overview]
Message-ID: <20190214162909.ylnjnarbkfkrpwyk@mac> (raw)
In-Reply-To: <316d93d5-7b4d-ace3-9bfa-7680057e92bd@gmail.com>

On Tue, Feb 12, 2019 at 08:21:32PM +0200, Andrii Anisov wrote:
> Hello Roger,
> 
> Sorry for a delayed response.
> 
> On 07.02.19 12:35, Roger Pau Monné wrote:
> > I've been thinking about this with other Citrix folks, and I'm not
> > sure the proposed patch is a good solution. It's not possible for us
> > to know whether there's a kernel somewhere relying on changing the
> > virtual address of the runtime state area without issuing a new
> > hypercall.
> 
> Do you mean allocating another buffer by VM and mapping it to a virtual address known to XEN? Or remapping existing buffer to a different virtual address?

I meant that with the current interface a user could change the
backing memory behind the virtual address passed in the runstate
register hypercall and expect Xen to write to the new physical memory
area without having to do anything else.

Attempting to do that with my proposed patch can result in hard to
debug guest memory corruption.

> > If such kernel existed by making this change we would introduce random
> > memory corruption to that kernel, which would be very hard to track
> > and considered a regression.
> 
> I guess you actually mean that VM is trying to map another physical buffer to a vaddr known to XEN. As I said here [1], even current implementation looks problematic, because VM's changes in PT are not atomic from the hypervisor point of view.
> I stated that for ARM, but x86 does not seem to differ here.

OSes use atomic operations to update a PTE, so I'm not sure how that
could be problematic. Xen will either get the new or the old address
from the PTE, but never a half-written value. Any OS wanting to do
this should be very careful about how it's page tables are updated.

> Actually VM trying to make changes behind a hypervisor's back is a really bad idea. Because the hypervisor *is* always behind the VM's back.
> 
> > I think the best way to move forward is to pick my patch and introduce
> > a new hypercall that instead of a virtual address takes a guest
> > physical address. Will you be OK with this Andrii?
> It might work better for this. And introducing a new interface is a chance to get rid of a mixed legacy.

Yes, I think introducing a new hypercall is the best way to move
forward.

> > Note that the Linux kernel would also need to be modified to make use
> > of this new hypercall, but that's likely close to a 1 line change.I would not say it is a 1 line change.
> I think about a page alignment for the runstate area, I'd like to have it directly accessed from XEN. I do not like `update_runstate_area()` with its all kind of copy_to_guest, done twice a context switch.

In order to simplify stuff the new interface could require runstate
areas to be page aligned, but I think the check can be relaxed to
simply require runstate areas to not cross a page boundary.

If you use a guest physical address for the interface you don't have
to use copy_to_guest because that expects a guest virtual addresses.

Thanks, Roger.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  reply	other threads:[~2019-02-14 16:29 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CACrvCsaeHuwzZzUQTzNYF7fqmgQWNJUVOQZv9D0MnYrXjqzZtQ@mail.gmail.com>
2018-12-22 12:21 ` RT Xen on ARM - R-Car series Andrii Anisov
2018-12-25 16:07   ` LOPEZ, FUENTES NACARINO Jairo Eduardo
2018-12-27 11:07     ` Andrii Anisov
2018-12-28 15:22       ` LOPEZ, FUENTES NACARINO Jairo Eduardo
2018-12-28  8:28         ` Andrii Anisov
2018-12-28  8:32           ` Andrii Anisov
2018-12-28  8:39           ` Andrii Anisov
2019-01-04  9:09             ` LOPEZ, FUENTES NACARINO Jairo Eduardo
2019-01-08 17:04               ` LOPEZ, FUENTES NACARINO Jairo Eduardo
2019-01-11 20:12                 ` LOPEZ, FUENTES NACARINO Jairo Eduardo
2019-01-14  8:42                   ` Andrii Anisov
2019-01-16  7:53                   ` Andrii Anisov
2019-01-21 18:04                     ` LOPEZ, FUENTES NACARINO Jairo Eduardo
     [not found]                     ` <CACrvCsZB-tps6=Vr=1Phf5oo5eUReabMLJzkbO3d2hmNLDOxww@mail.gmail.com>
     [not found]                       ` <7e217489-2c1a-c35f-d51f-0969654aa8cc@gmail.com>
     [not found]                         ` <CACrvCsaYJ-zGkZwfdV7BXDABW8u_EDQetU3pq+2otRGXWTXagw@mail.gmail.com>
     [not found]                           ` <4d078801-b804-06e7-ad5c-8032b1dbaa84@gmail.com>
2019-01-28 17:20                             ` LOPEZ, FUENTES NACARINO Jairo Eduardo
2019-01-28  8:25                               ` Andrii Anisov
2019-01-29 15:30                                 ` LOPEZ, FUENTES NACARINO Jairo Eduardo
2019-01-29 13:29                                   ` Andrii Anisov
2019-01-30 20:23                                     ` LOPEZ, FUENTES NACARINO Jairo Eduardo
2019-01-30 12:12                                       ` Julien Grall
2019-01-31 11:22                                         ` Andrii Anisov
2019-01-31 11:37                                           ` Julien Grall
2019-01-31 12:00                                             ` Andrii Anisov
2019-01-31 12:20                                               ` Julien Grall
2019-01-31 21:56                                                 ` Stefano Stabellini
2019-01-31 23:14                                                   ` Julien Grall
2019-02-01 10:02                                                     ` Andrii Anisov
2019-02-01 10:12                                                       ` Julien Grall
2019-02-01 10:35                                                         ` Andrii Anisov
2019-02-01 11:06                                                           ` Julien Grall
2019-02-01 16:53                                                     ` Roger Pau Monné
2019-02-01 17:40                                                       ` Julien Grall
2019-02-04 10:28                                                         ` Andrii Anisov
2019-02-04 11:21                                                           ` Julien Grall
2019-02-04 14:46                                                             ` Andrii Anisov
2019-02-04 15:05                                                               ` Julien Grall
2019-02-04 12:53                                                         ` Roger Pau Monné
2019-02-04 21:58                                                           ` Julien Grall
2019-02-05  8:40                                                             ` Andrii Anisov
2019-02-05  9:45                                                               ` Roger Pau Monné
2019-02-05  9:54                                                                 ` Andrii Anisov
2019-02-05 10:10                                                                   ` Roger Pau Monné
2019-02-06 20:20                                                               ` Andrii Anisov
2019-02-06 21:03                                                                 ` Stefano Stabellini
2019-02-07  9:42                                                                   ` Andrii Anisov
2019-02-07 10:35                                                                     ` Roger Pau Monné
2019-02-07 10:59                                                                       ` Julien Grall
2019-02-12 18:21                                                                         ` Andrii Anisov
2019-02-12 19:21                                                                           ` Julien Grall
2019-02-14 14:18                                                                             ` Andrii Anisov
2019-02-14 17:29                                                                               ` Julien Grall
2019-02-15 11:30                                                                                 ` Andrii Anisov
2019-02-15 17:13                                                                                   ` Julien Grall
2019-02-15 17:41                                                                                     ` Andrii Anisov
2019-02-16  8:42                                                                                       ` Julien Grall
2019-02-12 18:21                                                                       ` Andrii Anisov
2019-02-14 16:29                                                                         ` Roger Pau Monné [this message]
2019-02-15 15:21                                                                           ` Andrii Anisov
2019-02-15 16:31                                                                             ` Julien Grall
2019-02-15 17:30                                                                               ` Andrii Anisov
2019-02-15 18:36                                                                                 ` Julien Grall
2019-02-14 17:08                                                                         ` Julien Grall
2019-02-05  9:26                                                             ` Roger Pau Monné
2019-02-01 10:07                                                   ` Andrii Anisov
2019-02-01 10:16                                                     ` Julien Grall
2019-02-01 10:35                                                       ` Andrii Anisov
2019-02-01 10:51                                                         ` Julien Grall
2019-02-01 18:00                                                           ` Stefano Stabellini
2019-02-04 10:32                                                           ` Andrii Anisov
2019-02-04 11:36                                                             ` Julien Grall
2019-02-04 15:19                                                               ` Andrii Anisov
2019-02-04 22:06                                                                 ` Julien Grall
2019-02-05  9:01                                                                   ` Andrii Anisov
2019-02-05 19:18                                                                     ` Stefano Stabellini
2019-02-07 10:53                                                                       ` Andrii Anisov
     [not found]                                         ` <CACrvCsbkFG=3To83qi7xxmtmgC_9PKvuLz73edhiaV7TsJAZqQ@mail.gmail.com>
2019-01-31 12:24                                           ` Julien Grall
2019-01-16 20:46                   ` Andrii Anisov
2019-01-16  7:40                 ` Andrii Anisov
2019-01-17  2:08                   ` LOPEZ, FUENTES NACARINO Jairo Eduardo
2018-12-28 17:35         ` LOPEZ, FUENTES NACARINO Jairo Eduardo

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=20190214162909.ylnjnarbkfkrpwyk@mac \
    --to=roger.pau@citrix.com \
    --cc=andrii.anisov@gmail.com \
    --cc=jairo@ruri.waseda.jp \
    --cc=julien.grall@arm.com \
    --cc=sstabellini@kernel.org \
    --cc=xen-devel@lists.xen.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.