|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCHv4 00/43] 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.
What we have done in this patch series:
1. Modified the build scripts and restructured
the folders to improve the multi-arch and multi-plat
support,
2. Added boot code for Arm64 QEMU-KVM platform,
3. Enabled MMU and setup a 1:1 mapping page table for
physical memory and virtual memory,
4. Added an exception table to handle SYNC, IRQ and other
exceptions (Just dumping registers in this stage),
5. Supported device tree,
6. A simple PSCI library for CPU suspend, reset and system
shutdown
7. PL011 UART for console and STDIO
8. A simple virtual timer library for debug timestamp.
Wei Chen (43):
build: Adjust sed script to avoid treating arm64 as arm
build: Introduce a new variable UK_FAMILY
arch: Reorganize arch folder to reflect the CPU family schema
include: Reorganize base include folder to reflect CPU family schema
build: Add a makefile function to check GCC version
build: Add a makefile function to warn user when GCC is too old
build: Add a makefile function to check and set flags for valid gcc
arch: Add arm64 architecture config to menuconfig
arch/x86: Rename MARCH_* of x86_64 to MARCH_X86_64_*
arch/arm: Rename MARCH_* of arm32 to MARCH_ARM32_*
arch/arm64: Add processor optimization GCC flags for arm64
arch/arm: Check gcc version and set processor flags for arm32
arch/arm: Add more CPU models to processor optimization list
build: Override default pie option of GCC if possible
uk/arch: Add necessary header files for Arm64
uk/arch: Implement ukarch_find_lsbit for Arm64
plat/include: Define macros for Arm64 to access registers
plat/include: Define address offsets of boot stack and pagetable
plat/kvm: Add link script for Arm64
plat/kvm: Add console library for Arm64
plat/kvm: Add Arm64 basic entry code
plat/kvm: Allow access to floating-point and Advanced SIMD registers
plat/kvm: Add Arm64 virtual timer library to provide ticks
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: Parse command line from device tree for Arm64
plat/kvm: Parse memory info from device tree for Arm64
plat/kvm: Get PSCI conduit method from DTB for arm64
plat/common: Implement PSCI despatch functions for arm64
plat/common: Implement CPU suspend for arm64
plat/common: Implement CPU reset for arm64
plat/common: Implement system off for arm64
plat/kvm: Implement shutdown for Arm64
plat/kvm: Swith away from boot stack
plat/kvm: Add kvm to Arm64 supported platform list
plat/kvm: Update linker.uk to link image for Arm64
plat/kvm: Implement time_block_until for arm64
plat/kvm: Add Arm64 support source code to build list
Config.uk | 2 +-
Makefile | 33 +-
Makefile.uk | 22 +-
arch/Arch.uk | 2 +
arch/Config.uk | 10 +-
arch/arm/Compiler.uk | 9 +-
arch/arm/Makefile.uk | 25 +-
arch/arm/arm/Compiler.uk | 6 +
arch/arm/{ => arm}/Config.uk | 6 +-
arch/arm/arm/Makefile.uk | 72 +++
arch/arm/{ => arm}/divsi3.S | 17 +-
arch/arm/{ => arm}/ldivmod.S | 2 +-
arch/arm/{ => arm}/ldivmod_helper.c | 0
arch/arm/{ => arm}/qdivrem.c | 0
arch/arm/arm64/Compiler.uk | 6 +
arch/arm/arm64/Config.uk | 60 +++
arch/arm/arm64/Makefile.uk | 43 ++
arch/x86/Compiler.uk | 4 +
arch/x86/Makefile.uk | 4 +
arch/{ => x86}/x86_64/Compiler.uk | 0
arch/{ => x86}/x86_64/Config.uk | 34 +-
arch/x86/x86_64/Makefile.uk | 37 ++
arch/x86_64/Makefile.uk | 37 --
include/uk/arch/arm/{ => arm}/atomic.h | 0
include/uk/arch/arm/{ => arm}/intsizes.h | 0
include/uk/arch/arm/{ => arm}/lcpu.h | 0
include/uk/arch/arm/{ => arm}/limits.h | 0
include/uk/arch/arm/{ => arm}/types.h | 0
include/uk/arch/arm/arm64/atomic.h | 64 +++
include/uk/arch/arm/arm64/intsizes.h | 47 ++
include/uk/arch/arm/arm64/lcpu.h | 85 ++++
include/uk/arch/arm/arm64/limits.h | 48 ++
include/uk/arch/{x86_64 => arm/arm64}/types.h | 0
include/uk/arch/atomic.h | 8 +-
include/uk/arch/lcpu.h | 8 +-
include/uk/arch/limits.h | 16 +-
include/uk/arch/types.h | 16 +-
include/uk/arch/{ => x86}/x86_64/atomic.h | 0
include/uk/arch/{ => x86}/x86_64/intsizes.h | 0
include/uk/arch/{ => x86}/x86_64/lcpu.h | 0
include/uk/arch/{ => x86}/x86_64/limits.h | 0
include/uk/arch/x86/x86_64/types.h | 38 ++
plat/common/arm/cpu_native.c | 60 +++
plat/common/arm/psci_arm64.S | 20 +
plat/common/arm/traps.c | 72 +++
plat/common/include/arm/arm64/cpu.h | 87 ++++
plat/common/include/arm/arm64/cpu_defs.h | 387 ++++++++++++++++
plat/common/include/arm/arm64/irq.h | 79 ++++
plat/common/include/arm/cpu.h | 46 ++
plat/common/include/arm/cpu_defs.h | 47 ++
plat/common/include/arm/irq.h | 46 ++
plat/common/include/cpu.h | 4 +-
plat/common/include/irq.h | 47 ++
plat/kvm/Config.uk | 3 +-
plat/kvm/Linker.uk | 5 +-
plat/kvm/Makefile.uk | 28 +-
plat/kvm/arm/console.c | 156 +++++++
plat/kvm/arm/entry64.S | 82 ++++
plat/kvm/arm/exceptions.S | 209 +++++++++
plat/kvm/arm/intctrl.c | 24 +
plat/kvm/arm/lcpu.c | 75 ++++
plat/kvm/arm/link64.ld | 111 +++++
plat/kvm/arm/pagetable.S | 418 ++++++++++++++++++
plat/kvm/arm/setup.c | 211 +++++++++
plat/kvm/arm/time.c | 138 ++++++
plat/kvm/shutdown.c | 11 +-
support/build/Makefile.rules | 20 +
67 files changed, 3006 insertions(+), 141 deletions(-)
create mode 100644 arch/arm/arm/Compiler.uk
rename arch/arm/{ => arm}/Config.uk (80%)
create mode 100644 arch/arm/arm/Makefile.uk
rename arch/arm/{ => arm}/divsi3.S (97%)
rename arch/arm/{ => arm}/ldivmod.S (99%)
rename arch/arm/{ => arm}/ldivmod_helper.c (100%)
rename arch/arm/{ => arm}/qdivrem.c (100%)
create mode 100644 arch/arm/arm64/Compiler.uk
create mode 100644 arch/arm/arm64/Config.uk
create mode 100644 arch/arm/arm64/Makefile.uk
create mode 100644 arch/x86/Compiler.uk
create mode 100644 arch/x86/Makefile.uk
rename arch/{ => x86}/x86_64/Compiler.uk (100%)
rename arch/{ => x86}/x86_64/Config.uk (87%)
create mode 100644 arch/x86/x86_64/Makefile.uk
delete mode 100644 arch/x86_64/Makefile.uk
rename include/uk/arch/arm/{ => arm}/atomic.h (100%)
rename include/uk/arch/arm/{ => arm}/intsizes.h (100%)
rename include/uk/arch/arm/{ => arm}/lcpu.h (100%)
rename include/uk/arch/arm/{ => arm}/limits.h (100%)
rename include/uk/arch/arm/{ => arm}/types.h (100%)
create mode 100644 include/uk/arch/arm/arm64/atomic.h
create mode 100644 include/uk/arch/arm/arm64/intsizes.h
create mode 100644 include/uk/arch/arm/arm64/lcpu.h
create mode 100644 include/uk/arch/arm/arm64/limits.h
rename include/uk/arch/{x86_64 => arm/arm64}/types.h (100%)
rename include/uk/arch/{ => x86}/x86_64/atomic.h (100%)
rename include/uk/arch/{ => x86}/x86_64/intsizes.h (100%)
rename include/uk/arch/{ => x86}/x86_64/lcpu.h (100%)
rename include/uk/arch/{ => x86}/x86_64/limits.h (100%)
create mode 100644 include/uk/arch/x86/x86_64/types.h
create mode 100644 plat/common/arm/cpu_native.c
create mode 100644 plat/common/arm/psci_arm64.S
create mode 100644 plat/common/arm/traps.c
create mode 100644 plat/common/include/arm/arm64/cpu.h
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.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/console.c
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.ld
create mode 100644 plat/kvm/arm/pagetable.S
create mode 100644 plat/kvm/arm/setup.c
create mode 100644 plat/kvm/arm/time.c
--
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 |