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

[Xen-devel] [PATCH ARM v6 00/14] mini-os: initial ARM support



This series is based on Karim's ARM support commits, further broken up into
smaller patches.

The comments from last time should be addressed now, plus a few other things:

- The series is rebased on staging, dropping patches that have already been
  applied.

- The changes have been further split into smaller patches to ease reviewing.
  Note that the build system isn't changed to allow building the new code until
  patch 13.

- Define BUG to cause an undefined instruction fault. This lets us us dump the
  registers.

- Renamed stack to _boot_stack for clarity.

- Include kernel.h from arm/os.h. This is for consistency with x86/os.h
  and is needed to compile with lwIP.

- Moved SVC stack to first 16KB of RAM (provides some protection against
  stack overlow corrupting memory).

- Put translation table in second 16KB (simplifies boot code).

- Moved shared_info_page and irqstack to .bss section (smaller image).

- Moved __bss_start and _edata inside section in linker script.
  The linker adds non-listed sections, such as .got, just before .bss.
  This meant that we accidentally zeroed those out too.

- Enable floating point unit.

- Require only minimum FDT property lengths (requested by Ian Campbell).

Addressed Julien Grall's comments:

- Get hypercall numbers from xen.h.
- Avoid duplicating the definition of _start's virtual address.
- Moved definition of physical_address_offset from asm to C.
- Added paddr_t type to represent physical addresses.
- Added comments explaining the lengths when checking FDT properties.
- Fixed (commented) DEBUG macro.
- Drop check for arm,cortex-a9-gic.

There are two assumptions the code makes that may need changing in the future, 
but
which hopefully don't need to hold up this initial support:

- The assumption that the kernel will be loaded at start of RAM + 0x8000.

- The assumption that Xen will mark the GIC address range as device memory.
  This should probably be fixed when the C code gains the ability to control
  the translation tables, map 4K pages, etc.


Karim Raslan (3):
  mini-os: headers for ARM
  mini-os: import libfdt
  mini-os: arm: events

Thomas Leonard (11):
  mini-os: x86_64: make thread stacks 16-byte aligned
  mini-os: don't include lib.h from mm.h
  mini-os: added HYPERVISOR_xsm_op
  mini-os: use generic local_irq_enable function
  mini-os: arm: boot code
  mini-os: arm: memory management
  mini-os: arm: scheduling
  mini-os: arm: time
  mini-os: arm: interrupt controller
  mini-os: arm: build system
  mini-os: arm: show registers, stack and exception vector on fault

 extras/mini-os/ARM-TODO.txt                      |    5 +
 extras/mini-os/COPYING                           |   27 +
 extras/mini-os/Config.mk                         |    2 +
 extras/mini-os/Makefile                          |   22 +
 extras/mini-os/arch/arm/Makefile                 |   32 +
 extras/mini-os/arch/arm/arch.mk                  |    7 +
 extras/mini-os/arch/arm/arm32.S                  |  294 +++++
 extras/mini-os/arch/arm/events.c                 |   31 +
 extras/mini-os/arch/arm/gic.c                    |  232 ++++
 extras/mini-os/arch/arm/hypercalls32.S           |   64 +
 extras/mini-os/arch/arm/minios-arm32.lds         |   79 ++
 extras/mini-os/arch/arm/mm.c                     |  138 ++
 extras/mini-os/arch/arm/panic.c                  |   98 ++
 extras/mini-os/arch/arm/sched.c                  |   38 +
 extras/mini-os/arch/arm/setup.c                  |  119 ++
 extras/mini-os/arch/arm/time.c                   |  202 +++
 extras/mini-os/arch/x86/sched.c                  |    3 +
 extras/mini-os/events.c                          |    4 +-
 extras/mini-os/include/arm/arch_endian.h         |    7 +
 extras/mini-os/include/arm/arch_limits.h         |    9 +
 extras/mini-os/include/arm/arch_mm.h             |   38 +
 extras/mini-os/include/arm/arch_sched.h          |   19 +
 extras/mini-os/include/arm/arch_spinlock.h       |   36 +
 extras/mini-os/include/arm/arm32/arch_wordsize.h |    1 +
 extras/mini-os/include/arm/gic.h                 |    1 +
 extras/mini-os/include/arm/hypercall-arm.h       |   98 ++
 extras/mini-os/include/arm/os.h                  |  216 ++++
 extras/mini-os/include/arm/traps.h               |   20 +
 extras/mini-os/include/fdt.h                     |   60 +
 extras/mini-os/include/hypervisor.h              |    2 +
 extras/mini-os/include/lib.h                     |    4 +-
 extras/mini-os/include/libfdt.h                  | 1478 ++++++++++++++++++++++
 extras/mini-os/include/libfdt_env.h              |   37 +
 extras/mini-os/include/mm.h                      |    5 +-
 extras/mini-os/include/types.h                   |   10 +-
 extras/mini-os/include/x86/os.h                  |    7 +
 extras/mini-os/kernel.c                          |    2 +-
 extras/mini-os/lib/fdt/fdt.c                     |  222 ++++
 extras/mini-os/lib/fdt/fdt_empty_tree.c          |   84 ++
 extras/mini-os/lib/fdt/fdt_ro.c                  |  574 +++++++++
 extras/mini-os/lib/fdt/fdt_rw.c                  |  492 +++++++
 extras/mini-os/lib/fdt/fdt_strerror.c            |   96 ++
 extras/mini-os/lib/fdt/fdt_sw.c                  |  256 ++++
 extras/mini-os/lib/fdt/fdt_wip.c                 |  118 ++
 extras/mini-os/lib/fdt/libfdt_internal.h         |   95 ++
 extras/mini-os/lib/memmove.c                     |   45 +
 extras/mini-os/lib/string.c                      |   12 +
 extras/mini-os/lock.c                            |    1 +
 extras/mini-os/main.c                            |    1 +
 extras/mini-os/tpmfront.c                        |    1 +
 50 files changed, 5433 insertions(+), 11 deletions(-)
 create mode 100644 extras/mini-os/ARM-TODO.txt
 create mode 100755 extras/mini-os/arch/arm/Makefile
 create mode 100644 extras/mini-os/arch/arm/arch.mk
 create mode 100644 extras/mini-os/arch/arm/arm32.S
 create mode 100644 extras/mini-os/arch/arm/events.c
 create mode 100644 extras/mini-os/arch/arm/gic.c
 create mode 100644 extras/mini-os/arch/arm/hypercalls32.S
 create mode 100755 extras/mini-os/arch/arm/minios-arm32.lds
 create mode 100644 extras/mini-os/arch/arm/mm.c
 create mode 100644 extras/mini-os/arch/arm/panic.c
 create mode 100644 extras/mini-os/arch/arm/sched.c
 create mode 100644 extras/mini-os/arch/arm/setup.c
 create mode 100644 extras/mini-os/arch/arm/time.c
 create mode 100644 extras/mini-os/include/arm/arch_endian.h
 create mode 100644 extras/mini-os/include/arm/arch_limits.h
 create mode 100644 extras/mini-os/include/arm/arch_mm.h
 create mode 100644 extras/mini-os/include/arm/arch_sched.h
 create mode 100755 extras/mini-os/include/arm/arch_spinlock.h
 create mode 100644 extras/mini-os/include/arm/arm32/arch_wordsize.h
 create mode 100644 extras/mini-os/include/arm/gic.h
 create mode 100644 extras/mini-os/include/arm/hypercall-arm.h
 create mode 100644 extras/mini-os/include/arm/os.h
 create mode 100644 extras/mini-os/include/arm/traps.h
 create mode 100644 extras/mini-os/include/fdt.h
 create mode 100644 extras/mini-os/include/libfdt.h
 create mode 100644 extras/mini-os/include/libfdt_env.h
 create mode 100644 extras/mini-os/lib/fdt/fdt.c
 create mode 100644 extras/mini-os/lib/fdt/fdt_empty_tree.c
 create mode 100644 extras/mini-os/lib/fdt/fdt_ro.c
 create mode 100644 extras/mini-os/lib/fdt/fdt_rw.c
 create mode 100644 extras/mini-os/lib/fdt/fdt_strerror.c
 create mode 100644 extras/mini-os/lib/fdt/fdt_sw.c
 create mode 100644 extras/mini-os/lib/fdt/fdt_wip.c
 create mode 100644 extras/mini-os/lib/fdt/libfdt_internal.h
 create mode 100644 extras/mini-os/lib/memmove.c

-- 
2.0.1


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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