xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH ARM v6 00/14] mini-os: initial ARM support
@ 2014-07-16 11:07 Thomas Leonard
  2014-07-16 11:07 ` [PATCH ARM v6 01/14] mini-os: x86_64: make thread stacks 16-byte aligned Thomas Leonard
                   ` (15 more replies)
  0 siblings, 16 replies; 75+ messages in thread
From: Thomas Leonard @ 2014-07-16 11:07 UTC (permalink / raw)
  To: xen-devel
  Cc: Thomas Leonard, Dave.Scott, anil, stefano.stabellini,
	samuel.thibault

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

^ permalink raw reply	[flat|nested] 75+ messages in thread

end of thread, other threads:[~2014-08-05 10:56 UTC | newest]

Thread overview: 75+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-16 11:07 [PATCH ARM v6 00/14] mini-os: initial ARM support Thomas Leonard
2014-07-16 11:07 ` [PATCH ARM v6 01/14] mini-os: x86_64: make thread stacks 16-byte aligned Thomas Leonard
2014-07-17 15:50   ` Ian Campbell
2014-07-17 18:15     ` Samuel Thibault
2014-07-18 10:00       ` Ian Campbell
2014-07-18 13:22         ` Samuel Thibault
2014-07-17 18:15   ` Samuel Thibault
2014-07-16 11:07 ` [PATCH ARM v6 02/14] mini-os: don't include lib.h from mm.h Thomas Leonard
2014-07-16 13:30   ` Thomas Leonard
2014-07-17 15:51     ` Ian Campbell
2014-07-17 18:17     ` Samuel Thibault
2014-07-16 11:07 ` [PATCH ARM v6 03/14] mini-os: added HYPERVISOR_xsm_op Thomas Leonard
2014-07-16 11:07 ` [PATCH ARM v6 04/14] mini-os: headers for ARM Thomas Leonard
2014-07-16 21:25   ` Julien Grall
2014-07-17  8:14     ` Thomas Leonard
2014-07-17  9:04       ` Ian Campbell
2014-07-17 11:41         ` Julien Grall
2014-07-17 15:59   ` Ian Campbell
2014-07-18  1:29     ` Chen Baozi
2014-07-18  7:58     ` Thomas Leonard
2014-07-17 18:27   ` Samuel Thibault
2014-07-18  7:54     ` Thomas Leonard
2014-07-16 11:07 ` [PATCH ARM v6 05/14] mini-os: import libfdt Thomas Leonard
2014-07-16 11:44   ` Andrew Cooper
2014-07-16 12:29     ` Ian Campbell
2014-07-16 13:02       ` Andrew Cooper
2014-07-16 13:34         ` Ian Campbell
2014-07-16 14:13           ` Anil Madhavapeddy
2014-07-16 14:35             ` Ian Campbell
2014-07-17 18:30           ` Samuel Thibault
2014-07-16 11:07 ` [PATCH ARM v6 06/14] mini-os: use generic local_irq_enable function Thomas Leonard
2014-07-17 16:00   ` Ian Campbell
2014-07-17 18:32   ` Samuel Thibault
2014-07-16 11:07 ` [PATCH ARM v6 07/14] mini-os: arm: boot code Thomas Leonard
2014-07-16 21:49   ` Julien Grall
2014-07-17  9:37     ` Thomas Leonard
2014-07-17  9:46       ` Ian Campbell
2014-07-17  9:48         ` Thomas Leonard
2014-07-17 16:28   ` Ian Campbell
2014-07-30 10:47     ` Thomas Leonard
2014-07-30 11:26       ` Ian Campbell
2014-07-30 12:20         ` Thomas Leonard
2014-07-30 12:54           ` Ian Campbell
2014-07-30 13:37             ` Thomas Leonard
2014-07-30 13:43               ` Ian Campbell
2014-07-16 11:07 ` [PATCH ARM v6 08/14] mini-os: arm: memory management Thomas Leonard
2014-07-21 17:36   ` Julien Grall
2014-08-03 10:23     ` Thomas Leonard
2014-07-16 11:07 ` [PATCH ARM v6 09/14] mini-os: arm: scheduling Thomas Leonard
2014-07-28 10:53   ` Ian Campbell
2014-07-28 11:20     ` Thomas Leonard
2014-07-28 11:26       ` Ian Campbell
2014-07-16 11:07 ` [PATCH ARM v6 10/14] mini-os: arm: events Thomas Leonard
2014-07-28 10:55   ` Ian Campbell
2014-07-16 11:07 ` [PATCH ARM v6 11/14] mini-os: arm: time Thomas Leonard
2014-07-21 17:45   ` Julien Grall
2014-07-28 10:41     ` Ian Campbell
2014-07-16 11:07 ` [PATCH ARM v6 12/14] mini-os: arm: interrupt controller Thomas Leonard
2014-07-21 17:56   ` Julien Grall
2014-07-16 11:07 ` [PATCH ARM v6 13/14] mini-os: arm: build system Thomas Leonard
2014-07-16 22:03   ` Julien Grall
2014-07-17 10:16     ` Thomas Leonard
2014-07-28 10:58   ` Ian Campbell
2014-07-16 11:07 ` [PATCH ARM v6 14/14] mini-os: arm: show registers, stack and exception vector on fault Thomas Leonard
2014-07-28 11:13   ` Ian Campbell
2014-07-28 11:49     ` Thomas Leonard
2014-07-28 12:01       ` Ian Campbell
2014-07-16 21:29 ` [PATCH ARM v6 00/14] mini-os: initial ARM support Julien Grall
2014-07-17 15:55   ` Ian Campbell
2014-07-17 16:17     ` Ian Campbell
2014-07-18  8:07       ` Thomas Leonard
2014-07-18  8:17     ` Thomas Leonard
2014-07-18 10:07       ` Ian Campbell
2014-07-18 12:45 ` Ian Campbell
2014-08-05 10:56   ` Thomas Leonard

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).