[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCHv6 00/37] Add arm64/kvm support for Unikraft
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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |