[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v5 00/25] xen: ARMv7 with virtualization extensions



Hello everyone,
this is the fifth version of the patch series that introduces ARMv7
with virtualization extensions support in Xen.
The series allows Xen and Dom0 to boot on a Cortex-A15 based Versatile
Express simulator.
See the following announce email for more informations about what we
are trying to achieve, as well as the original git history:

See http://marc.info/?l=xen-devel&m=132257857628098&w=2


The first 7 patches affect generic Xen code and are not ARM specific;
often they fix real issues, hidden in the default X86 configuration.

The following 18 patches introduce ARMv7 with virtualization extensions
support: makefiles first, then the asm-arm header files and finally
everything else, ordered in a way that should make the patches easier
to read.


Changes in v5:

- fix compilation after rebase;

- route interrupt 34 (peripheral timer) to dom0;

- GICD_ICFGR ... GICD_ICFGRN return 1;

- expand tabs;

- keep the diff of arch/arm/lib with Linux's equivalents small;

- check the size of the arguments of elf_load_image;


Changes in v4:

- fix arm build after rebasing on xen-unstable
87c607efbfece009360f615b2bf98959f4ea48e8;

- use ABS() in __ldivmod_helper;

- return a negative integer in case of errors in elf_load_image.


Changes in v3:

- introduce clear_guest for x86 and ia64 (I kept ia64 version of
  clear_user for symmetry but it is not actually used anywhere);

- rename the current ARM *_user functions to *_guest;

- use raw_clear_guest and raw_copy_to_guest in elf_load_image.


Changes in v2:

- introduce CONFIG_XENOPROF;

- make _srodata and  _erodata const char[];

- do not include p2m.h ifdef __ia64__;

- remove wrong comment about pfn.h;

- introduce HAS_KEXEC and CONFIG_KEXEC;

- use long in __do_clear_user;

- remove the div64 patch, implement __aeabi_ldivmod and __aeabi_uldivmod
instead;

- move "arm: makefiles" at the end of the series.



Stefano Stabellini (25):
      Move cpufreq option parsing to cpufreq.c
      Include some header files that are not automatically included on all archs
      A collection of fixes to Xen common files
      xen: implement an signed 64 bit division helper function
      Introduce clear_user and clear_guest
      libelf-loader: introduce elf_load_image
      xen/common/Makefile: introduce HAS_CPUFREQ, HAS_PCI, HAS_PASSTHROUGH, 
HAS_NS16550, HAS_KEXEC
      arm: compile tmem
      arm: header files
      arm: bit manipulation, copy and division libraries
      arm: entry.S and head.S
      arm: domain
      arm: domain_build
      arm: driver for CoreLink GIC-400 Generic Interrupt Controller
      arm: mmio handlers
      arm: irq
      arm: mm and p2m
      arm: pl011 UART driver
      arm: early setup code
      arm: shutdown, smp and smpboot
      arm: driver for the generic timer for ARMv7
      arm: trap handlers
      arm: vgic emulation
      arm: vtimer
      arm: makefiles

 config/arm.mk                          |   18 +
 tools/libxc/xc_dom_elfloader.c         |    8 +-
 tools/libxc/xc_hvm_build.c             |    5 +-
 xen/arch/arm/Makefile                  |   76 ++++
 xen/arch/arm/Rules.mk                  |   29 ++
 xen/arch/arm/asm-offsets.c             |   76 ++++
 xen/arch/arm/domain.c                  |  269 ++++++++++++++
 xen/arch/arm/domain_build.c            |  213 +++++++++++
 xen/arch/arm/dummy.S                   |   72 ++++
 xen/arch/arm/entry.S                   |  107 ++++++
 xen/arch/arm/gic.c                     |  473 +++++++++++++++++++++++++
 xen/arch/arm/gic.h                     |  154 ++++++++
 xen/arch/arm/guestcopy.c               |   81 +++++
 xen/arch/arm/head.S                    |  298 ++++++++++++++++
 xen/arch/arm/io.c                      |   51 +++
 xen/arch/arm/io.h                      |   55 +++
 xen/arch/arm/irq.c                     |  180 ++++++++++
 xen/arch/arm/lib/Makefile              |    5 +
 xen/arch/arm/lib/assembler.h           |   49 +++
 xen/arch/arm/lib/bitops.h              |   87 +++++
 xen/arch/arm/lib/changebit.S           |   18 +
 xen/arch/arm/lib/clearbit.S            |   19 +
 xen/arch/arm/lib/copy_template.S       |  267 ++++++++++++++
 xen/arch/arm/lib/div64.S               |  211 +++++++++++
 xen/arch/arm/lib/findbit.S             |  198 +++++++++++
 xen/arch/arm/lib/lib1funcs.S           |  389 ++++++++++++++++++++
 xen/arch/arm/lib/memcpy.S              |   63 ++++
 xen/arch/arm/lib/memmove.S             |  200 +++++++++++
 xen/arch/arm/lib/memset.S              |  129 +++++++
 xen/arch/arm/lib/memzero.S             |  127 +++++++
 xen/arch/arm/lib/setbit.S              |   18 +
 xen/arch/arm/lib/testchangebit.S       |   18 +
 xen/arch/arm/lib/testclearbit.S        |   18 +
 xen/arch/arm/lib/testsetbit.S          |   18 +
 xen/arch/arm/mm.c                      |  321 +++++++++++++++++
 xen/arch/arm/p2m.c                     |  214 +++++++++++
 xen/arch/arm/setup.c                   |  206 +++++++++++
 xen/arch/arm/shutdown.c                |   23 ++
 xen/arch/arm/smp.c                     |   29 ++
 xen/arch/arm/smpboot.c                 |   50 +++
 xen/arch/arm/time.c                    |  181 ++++++++++
 xen/arch/arm/traps.c                   |  609 ++++++++++++++++++++++++++++++++
 xen/arch/arm/vgic.c                    |  605 +++++++++++++++++++++++++++++++
 xen/arch/arm/vtimer.c                  |  148 ++++++++
 xen/arch/arm/vtimer.h                  |   35 ++
 xen/arch/arm/xen.lds.S                 |  141 ++++++++
 xen/arch/ia64/Rules.mk                 |    5 +
 xen/arch/ia64/linux/memcpy_mck.S       |  177 +++++++++
 xen/arch/x86/Rules.mk                  |    5 +
 xen/arch/x86/domain_build.c            |    7 +-
 xen/arch/x86/hvm/hvm.c                 |  107 ++++++
 xen/arch/x86/usercopy.c                |   36 ++
 xen/common/Makefile                    |    2 +-
 xen/common/domain.c                    |   37 +--
 xen/common/domctl.c                    |    1 +
 xen/common/grant_table.c               |    1 +
 xen/common/irq.c                       |    1 +
 xen/common/kernel.c                    |    2 +-
 xen/common/keyhandler.c                |    1 +
 xen/common/lib.c                       |   19 +
 xen/common/libelf/libelf-dominfo.c     |    6 +
 xen/common/libelf/libelf-loader.c      |   30 ++-
 xen/common/memory.c                    |    4 +-
 xen/common/sched_credit2.c             |    6 -
 xen/common/shutdown.c                  |    4 +
 xen/common/spinlock.c                  |    1 +
 xen/common/tmem.c                      |    3 +-
 xen/common/tmem_xen.c                  |    4 +-
 xen/common/wait.c                      |    1 +
 xen/common/xencomm.c                   |  111 ++++++
 xen/drivers/Makefile                   |    6 +-
 xen/drivers/char/Makefile              |    3 +-
 xen/drivers/char/console.c             |    5 +
 xen/drivers/char/pl011.c               |  266 ++++++++++++++
 xen/drivers/cpufreq/cpufreq.c          |   31 ++
 xen/include/asm-arm/asm_defns.h        |   18 +
 xen/include/asm-arm/atomic.h           |  236 ++++++++++++
 xen/include/asm-arm/bitops.h           |  213 +++++++++++
 xen/include/asm-arm/bug.h              |   15 +
 xen/include/asm-arm/byteorder.h        |   16 +
 xen/include/asm-arm/cache.h            |   20 +
 xen/include/asm-arm/config.h           |  125 +++++++
 xen/include/asm-arm/cpregs.h           |  207 +++++++++++
 xen/include/asm-arm/current.h          |   60 ++++
 xen/include/asm-arm/debugger.h         |   15 +
 xen/include/asm-arm/delay.h            |   15 +
 xen/include/asm-arm/desc.h             |   12 +
 xen/include/asm-arm/div64.h            |  235 ++++++++++++
 xen/include/asm-arm/domain.h           |   82 +++++
 xen/include/asm-arm/elf.h              |   33 ++
 xen/include/asm-arm/event.h            |   41 +++
 xen/include/asm-arm/flushtlb.h         |   31 ++
 xen/include/asm-arm/grant_table.h      |   35 ++
 xen/include/asm-arm/guest_access.h     |  131 +++++++
 xen/include/asm-arm/hardirq.h          |   28 ++
 xen/include/asm-arm/hypercall.h        |   24 ++
 xen/include/asm-arm/init.h             |   12 +
 xen/include/asm-arm/io.h               |   12 +
 xen/include/asm-arm/iocap.h            |   20 +
 xen/include/asm-arm/irq.h              |   30 ++
 xen/include/asm-arm/mm.h               |  315 +++++++++++++++++
 xen/include/asm-arm/multicall.h        |   23 ++
 xen/include/asm-arm/nmi.h              |   15 +
 xen/include/asm-arm/numa.h             |   21 ++
 xen/include/asm-arm/p2m.h              |   88 +++++
 xen/include/asm-arm/page.h             |  335 ++++++++++++++++++
 xen/include/asm-arm/paging.h           |   13 +
 xen/include/asm-arm/pci.h              |    7 +
 xen/include/asm-arm/percpu.h           |   28 ++
 xen/include/asm-arm/processor.h        |  269 ++++++++++++++
 xen/include/asm-arm/regs.h             |   43 +++
 xen/include/asm-arm/setup.h            |   20 +
 xen/include/asm-arm/smp.h              |   25 ++
 xen/include/asm-arm/softirq.h          |   15 +
 xen/include/asm-arm/spinlock.h         |  144 ++++++++
 xen/include/asm-arm/string.h           |   38 ++
 xen/include/asm-arm/system.h           |  202 +++++++++++
 xen/include/asm-arm/time.h             |   26 ++
 xen/include/asm-arm/trace.h            |   12 +
 xen/include/asm-arm/types.h            |   57 +++
 xen/include/asm-arm/xenoprof.h         |   12 +
 xen/include/asm-ia64/config.h          |    2 +
 xen/include/asm-ia64/uaccess.h         |   12 +
 xen/include/asm-x86/config.h           |    3 +
 xen/include/asm-x86/guest_access.h     |   18 +
 xen/include/asm-x86/hvm/guest_access.h |    1 +
 xen/include/asm-x86/uaccess.h          |    1 +
 xen/include/public/arch-arm.h          |  125 +++++++
 xen/include/public/xen.h               |    2 +
 xen/include/xen/domain.h               |    2 +
 xen/include/xen/grant_table.h          |    1 +
 xen/include/xen/guest_access.h         |    6 +
 xen/include/xen/irq.h                  |   13 +
 xen/include/xen/kernel.h               |   12 +-
 xen/include/xen/libelf.h               |    4 +-
 xen/include/xen/list.h                 |    1 +
 xen/include/xen/paging.h               |    2 +-
 xen/include/xen/sched.h                |    4 +
 xen/include/xen/serial.h               |    2 +
 xen/include/xen/time.h                 |    1 +
 xen/include/xen/timer.h                |    1 +
 xen/include/xen/tmem_xen.h             |    1 +
 xen/include/xen/xencomm.h              |   24 ++
 143 files changed, 10993 insertions(+), 62 deletions(-)

A git branch is available here, based on xen-unstable (git CS
775163293ff2933a5ffafb97045aa4962b75165b):

git://xenbits.xen.org/people/sstabellini/xen-unstable.git arm-v5


Cheers,

Stefano

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.