[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC PATCH v2 0/3] Implement the XEN_DOMCTL_memory_mapping hypercall for ARM
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 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |