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

[Minios-devel] [UNIKRAFT PATCHv6 00/37] Add arm64/kvm support for Unikraft


  • To: <minios-devel@xxxxxxxxxxxxxxxxxxxx>, <simon.kuenzer@xxxxxxxxx>
  • From: Wei Chen <wei.chen@xxxxxxx>
  • Date: Fri, 14 Sep 2018 07:56:33 +0000
  • Authentication-results: spf=pass (sender IP is 40.67.248.234) smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed) header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none header.from=arm.com;
  • Cc: Kaly.Xin@xxxxxxx, nd@xxxxxxx, wei.chen@xxxxxxx
  • Delivery-date: Fri, 14 Sep 2018 07:57:28 +0000
  • List-id: Mini-os development list <minios-devel.lists.xenproject.org>
  • Nodisclaimer: True
  • Spamdiagnosticmetadata: NSPM
  • Spamdiagnosticoutput: 1:99

This patch series enable Unikraft on arm64/kvm. As we
haven't implemented GIC libraries and full timer support,
this patch series can ONLY work without uksched.

v1: 
https://lists.xenproject.org/archives/html/minios-devel/2018-03/msg00040.html
v2: 
https://lists.xenproject.org/archives/html/minios-devel/2018-04/msg00145.html
v3: https://github.com/Weichen81/unikraft for OSS demo
v4: 
https://lists.xenproject.org/archives/html/minios-devel/2018-07/msg00014.html
v5: 
https://lists.xenproject.org/archives/html/minios-devel/2018-08/msg00044.html

v5 -> v6 Changes:
 1. Base on latest upstream,
 2. Fix some typos,
 3. Fix copyright of atomic.h as discussed in ML,
 4. Move mm.h from plat/common to plat/kvm,
 5. Add comment in Arm64 link script source about adding boot stack
    and plage-table in BSS section,
 6. Move plat/common/asm.h to include/uk/asm.h,
 7. Remove dependence of LIBUKDEBUG_PRINTD from KVM_KERNEL_SERIAL_CONSOLE
    and KVM_KERNEL_VGA_CONSOLE,
 8. Rename KVM_EARLY_DEBUG_PL011_UART to EARLY_PRINT_CONSOLE_PL011_UART_ADDR
    and move it from plat/kvm to plat/ for other platforms
 9. Rename arm/console.c to arm/pl011.c,
10. Introduce an extra variable to check whether PL011 has been initialized,
11. Use VA/PA cache maintenance instead of set/way instructions,
12. Add a short TODO comment and explain that we are using non-floating
    point for now,
13. Move time.c and tscclock.c to x86 folder and implement similar
    files for Arm,
14. Implement ukplat_time_* APIs in Arm/time.c,
15. Use uint32_t for get_counter_frequency,
16. Correct counter_mult in time.c comment to ns_per_tick,
17. Enable ARM64_ERRATUM_858921 for Arm64 by default,
18. Use DLVL_CRIT instead of DLVL_ERR in traps' messages,
19. Use ukplat_crash() instead of UK_CRASH() in traps' messages,
20. Rename TRAP_STACK_SIZE to __TRAP_STACK_SIZE,
21. Replace SMP to UKPLAT_LCPU_MULTICORE,
22. Add source code files of FreeBSD that we referred to copyright header,
23. Use ALIGN_DOWN replace ALIGN_UP to caculate new stack top,
24. Warning when find an invalid PSCI method,
25. Remove UK_BUG from reset function,
26. Halt the system if we don't have PSCI method to reset/shutdown system,
27. Implement system_off for x86 to make shutdown.c architecture independent,
28. Get arch_timer clock frequency from device tree.
29. Fix errno.h missing for nolibc/time.c,
30. Add function for stack pointer retrieval,
31. Add some comments.

Wei Chen (37):
  uk/arch: Implement ukarch_ffsl for Arm64
  plat/include: Define address offsets of boot stack and pagetable
  plat/kvm: Add linker script for Arm64
  plat/kvm: Add Arm64 basic entry code
  plat: Add variables in Config.uk for early debug console
  plat/common: Add early debug console library for Arm64
  plat/common: Add cache maintenance support for arm64
  arch/arm64: Avoid using the floating-point and Advanced SIMD registers
  plat/kvm: Enable tscclock for x86_64 only
  plat/kvm: Move time.c and tscclock.c to x86 sub-directory
  plat/common: Introduce SYSREG_READ32/64 SYSTEM_WRITE32/64 for
    different size
  plat/kvm: Add Arm64 virtual timer library to provide ticks
  plat/common: Add counter workaround for Cortex-A73 erratum 858921
  plat/common: Common arm64 CPU interrupt flag handling
  plat/kvm: Add interrupt handle APIs for arm64
  plat/kvm: Add trap handler to dump registers
  plat/kvm: Add exception table for Arm64
  plat/kvm: Create page tables for Arm64
  plat/kvm: Enable MMU for Arm64
  plat/kvm: Initialize device tree for Arm64
  plat/kvm: Initialize console from device tree for Arm64
  plat/kvm: Parse command line from device tree for Arm64
  plat/kvm: Parse memory info from device tree for Arm64
  plat/common: Implement PSCI despatch functions for arm64
  plat/kvm: Get PSCI conduit method from DTB for Arm64
  plat/common: Implement CPU halt function for arm64
  plat/common: Implement CPU reset for arm64
  plat/common: Implement system off for arm64
  plat/x86: Implement system_off for x86
  plat/kvm: Implement shutdown for Arm64
  plat/kvm: Swith away from boot stack
  plat/kvm: Update linker.uk to link image for Arm64
  plat/kvm: Implement time_block_until for arm64
  plat/kvm: Build pci bus for x86_64 only
  arch/arm64: Add function for stack pointer retrieval
  nolibc: Add eerno.h header for time.c
  plat/common: Get arch_timer clock frequency from DT for Arm

 arch/arm/Compiler.uk                     |   4 +
 arch/arm/Makefile.uk                     |   4 +
 arch/arm/arm64/Config.uk                 |   8 +
 arch/arm/arm64/Makefile.uk               |  11 +-
 include/uk/arch/arm/arm64/atomic.h       |  70 ++++
 include/uk/arch/arm/arm64/lcpu.h         |  23 ++
 include/uk/asm.h                         |  68 ++++
 lib/nolibc/time.c                        |   1 +
 plat/Config.uk                           |   7 +
 plat/common/arm/cache64.S                |  85 +++++
 plat/common/arm/cpu_native.c             |  76 ++++
 plat/common/arm/pl011.c                  | 205 +++++++++++
 plat/common/arm/psci_arm64.S             |  55 +++
 plat/common/arm/time.c                   | 221 +++++++++++
 plat/common/arm/traps.c                  |  71 ++++
 plat/common/include/arm/arm64/cpu.h      |  28 ++
 plat/common/include/arm/arm64/cpu_defs.h | 310 ++++++++++++++++
 plat/common/include/arm/arm64/irq.h      | 105 ++++++
 plat/common/include/arm/cpu_defs.h       |  44 +++
 plat/common/include/arm/irq.h            |  44 +++
 plat/common/include/cpu.h                |   6 +
 plat/common/include/irq.h                |  47 +++
 plat/common/include/x86/cpu.h            |   1 +
 plat/common/x86/cpu_native.c             |  11 +
 plat/kvm/Config.uk                       |   9 +-
 plat/kvm/Linker.uk                       |   7 +-
 plat/kvm/Makefile.uk                     |  32 +-
 plat/kvm/arm/entry64.S                   | 107 ++++++
 plat/kvm/arm/exceptions.S                | 187 ++++++++++
 plat/kvm/arm/intctrl.c                   |  54 +++
 plat/kvm/arm/lcpu.c                      |  70 ++++
 plat/kvm/arm/link64.lds.S                | 129 +++++++
 plat/kvm/arm/pagetable.S                 | 448 +++++++++++++++++++++++
 plat/kvm/arm/setup.c                     | 218 +++++++++++
 plat/kvm/include/kvm-arm/arm64/mm.h      |  83 +++++
 plat/kvm/include/kvm-arm/mm.h            |  44 +++
 plat/kvm/shutdown.c                      |  17 +-
 plat/kvm/time.c                          |  65 ----
 plat/kvm/x86/time.c                      |  45 ++-
 plat/kvm/{ => x86}/tscclock.c            |   0
 40 files changed, 2930 insertions(+), 90 deletions(-)
 create mode 100644 include/uk/arch/arm/arm64/atomic.h
 create mode 100644 include/uk/asm.h
 create mode 100644 plat/common/arm/cache64.S
 create mode 100644 plat/common/arm/cpu_native.c
 create mode 100644 plat/common/arm/pl011.c
 create mode 100644 plat/common/arm/psci_arm64.S
 create mode 100644 plat/common/arm/time.c
 create mode 100644 plat/common/arm/traps.c
 create mode 100644 plat/common/include/arm/arm64/cpu_defs.h
 create mode 100644 plat/common/include/arm/arm64/irq.h
 create mode 100644 plat/common/include/arm/cpu_defs.h
 create mode 100644 plat/common/include/arm/irq.h
 create mode 100644 plat/common/include/irq.h
 create mode 100644 plat/kvm/arm/entry64.S
 create mode 100644 plat/kvm/arm/exceptions.S
 create mode 100644 plat/kvm/arm/intctrl.c
 create mode 100644 plat/kvm/arm/lcpu.c
 create mode 100644 plat/kvm/arm/link64.lds.S
 create mode 100644 plat/kvm/arm/pagetable.S
 create mode 100644 plat/kvm/arm/setup.c
 create mode 100644 plat/kvm/include/kvm-arm/arm64/mm.h
 create mode 100644 plat/kvm/include/kvm-arm/mm.h
 delete mode 100644 plat/kvm/time.c
 rename plat/kvm/{ => x86}/tscclock.c (100%)

--
2.17.1


_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

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