xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Arianna Avanzini <avanzini.arianna@gmail.com>
To: xen-devel@lists.xen.org
Cc: Ian.Campbell@eu.citrix.com, paolo.valente@unimore.it,
	stefano.stabellini@eu.citrix.com, dario.faggioli@citrix.com,
	Ian.Jackson@eu.citrix.com, julien.grall@citrix.com,
	etrudeau@broadcom.com, avanzini.arianna@gmail.com,
	viktor.kleinik@globallogic.com
Subject: [RFC PATCH v2 0/3] Implement the XEN_DOMCTL_memory_mapping hypercall for ARM
Date: Mon, 10 Mar 2014 09:25:50 +0100	[thread overview]
Message-ID: <1394439953-5723-1-git-send-email-avanzini.arianna@gmail.com> (raw)

Hello,

this patchset is the v2 of my previously-proposed ([1]) attempt of an
implementation of the XEN_DOMCTL_memory_mapping hypercall for the ARM
architecture.

As I already wrote in the cover letter of the first version, as a part of my
thesis project (developed with Paolo Valente, [2]), I am porting an automotive-
grade real-time OS (Evidence's ERIKA Enterprise, [3], [4]) on Xen on ARM.
The port of the OS as a domU has required it to be able to access peripherals
performing memory-mapped I/O; as a consequence, the I/O-memory ranges related
to such peripherals had to be made accessible to the domU.

I have been working on the first version of the patchset after reading a related
xen-devel discussion ([5]), and I afterwards found another topic where Eric
Trudeau had already proposed a possible implementation of the hypercall ([6],
[7]).

The first commit in this patchset gives dom0 access to memory ranges used
for memory-mapped I/O to devices exposed to it, as suggested by Julien Grall.
The previous implementation simply assumed that dom0 could access any range of
I/O memory.

The second commit adds an implementation of the XEN_DOMCTL_memory_mapping
hypercall to xen/arm/domctl.c. As of this commit, with respect to the previous
version, I have been trying to address the following issues.
. The code has been moved to xen/arm/domctl.c, since it is ARM-specific but not
  ARM32-specific, as suggested by Julien Grall. The previous version incorrectly
  implemented the hypercall in xen/arm/arm32/domctl.c.
. The code uses the PADDR_BITS constant already defined for ARM, indicated by
  Julien Grall. The previous implementation wrongly defined a new ARM32-specific
  variable to keep the physical address size. 
. The v2 patchset uses paddr_t as arguments to the map_mmio_regions() function,
  as indicated by Eric Trudeau. The previous version incorrectly used pfn.
. This version of the code aligns addresses given as arguments to the function
  map_mmio_regions(). The previous implementation did not page-align addresses:
  in this way, the wrong number of pages might be mapped, as pointed out by Eric
  Trudeau and Julien Grall.

The third commit adds to libxl code to handle the iomem configuration option by
invoking the newly-implemented hypercall. This still leaves the following
outstanding issue, pointed out by Julien Grall.
. The code used to handle the iomem configuration option by invoking the
  newly-implemented hypercall is common to x86 and ARM. It implements
  a simple 1:1 mapping which could clash with the domU's existing memory
  layout if the range has already been used in the guest's address space.

The code has been tested with Linux v3.13 as dom0 and ERIKA as domU.
Any feedback about this new version of the patches is more than welcome.

Arianna

[1] http://marc.info/?l=xen-devel&m=139372144916158
[2] http://www.unimore.it/
[3] http://www.evidence.eu.com/
[4] http://erika.tuxfamily.org/drupal/
[5] http://lists.xen.org/archives/html/xen-devel/2013-06/msg00870.html
[6] http://marc.info/?l=xen-devel&m=137338996422503
[7] http://lists.xen.org/archives/html/xen-devel/2014-02/msg02514.html

Arianna Avanzini (3):
  arch, arm: allow dom0 access to I/O memory of mapped devices
  arch, arm: add the XEN_DOMCTL_memory_mapping hypercall
  tools, libxl: handle the iomem parameter with the memory_mapping hcall

 tools/libxl/libxl_create.c  | 17 +++++++++++
 xen/arch/arm/domain_build.c | 10 +++++++
 xen/arch/arm/domctl.c       | 69 +++++++++++++++++++++++++++++++++++++++++++++
 xen/arch/arm/p2m.c          |  9 ++++++
 xen/include/asm-arm/p2m.h   |  2 ++
 5 files changed, 107 insertions(+)

-- 
1.9.0

             reply	other threads:[~2014-03-10  8:25 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-10  8:25 Arianna Avanzini [this message]
2014-03-10  8:25 ` [RFC PATCH v2 1/3] arch, arm: allow dom0 access to I/O memory of mapped devices Arianna Avanzini
2014-03-10 11:30   ` Julien Grall
2014-03-11  0:49     ` Arianna Avanzini
2014-03-13 15:27   ` Ian Campbell
2014-03-13 15:40     ` Julien Grall
2014-03-10  8:25 ` [RFC PATCH v2 2/3] arch, arm: add the XEN_DOMCTL_memory_mapping hypercall Arianna Avanzini
2014-03-10 12:03   ` Julien Grall
2014-03-11  1:20     ` Arianna Avanzini
2014-03-13 15:29   ` Ian Campbell
2014-03-13 15:36     ` Jan Beulich
2014-03-13 15:51       ` Dario Faggioli
2014-03-13 15:57         ` Ian Campbell
2014-03-13 16:08         ` Jan Beulich
2014-03-10  8:25 ` [RFC PATCH v2 3/3] tools, libxl: handle the iomem parameter with the memory_mapping hcall Arianna Avanzini
2014-03-13 15:27   ` Ian Campbell
2014-03-13 15:34     ` Julien Grall
2014-03-13 15:49       ` Ian Campbell
2014-03-13 16:36       ` Dario Faggioli
2014-03-13 16:47         ` Julien Grall
2014-03-13 17:32           ` Ian Campbell
2014-03-13 18:37             ` Dario Faggioli
2014-03-13 20:29               ` Julien Grall
2014-03-14  9:55                 ` Dario Faggioli
2014-03-14  9:46               ` Ian Campbell
2014-03-14 12:00                 ` Julien Grall
2014-03-14 12:15                 ` Dario Faggioli
2014-03-14 12:39                   ` Arianna Avanzini
2014-03-14 12:49                   ` Ian Campbell
2014-03-14 15:10                     ` Stefano Stabellini
2014-03-14 15:45                     ` Dario Faggioli
2014-03-14 16:19                       ` Ian Campbell
2014-03-14 16:25                         ` Dario Faggioli
2014-03-14 18:39               ` Eric Trudeau
2014-03-17  9:37                 ` Ian Campbell
2014-03-13 15:43     ` Jan Beulich
2014-03-13 15:51       ` Ian Campbell
2014-03-13 16:53       ` Dario Faggioli
2014-03-13 17:04         ` Jan Beulich

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=1394439953-5723-1-git-send-email-avanzini.arianna@gmail.com \
    --to=avanzini.arianna@gmail.com \
    --cc=Ian.Campbell@eu.citrix.com \
    --cc=Ian.Jackson@eu.citrix.com \
    --cc=dario.faggioli@citrix.com \
    --cc=etrudeau@broadcom.com \
    --cc=julien.grall@citrix.com \
    --cc=paolo.valente@unimore.it \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=viktor.kleinik@globallogic.com \
    --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 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).