[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC PATCH 0/6] xen/riscv: Add necessary files for RISC-V Xen build.
Hello everyone, My name is Xie Xun and I am a graduate student in computer science. I spend some time porting Xen to RISV-V based on Bobby's work. Now Xen can use device tree to initialize memory and load guest kernel. Timer interrupt is also enabled for both xen and guest kernel. This patch series is the first part of the work. It only adds necessary files for a successful xen build. The only thing xen will do is printing a message. There are some problems though. The first patch of this series is very large, but it seems most of the code is necessary for building xen. I am trying my best to remove some code but it still has more than 8000 lines of code. Looking forward to your feedback. Xen can be built with: $ make XEN_TARGET_ARCH=riscv64 CROSS_COMPILE=riscv64-linux-gnu- tiny64_defconfig $ make XEN_TARGET_ARCH=riscv64 CROSS_COMPILE=riscv64-linux-gnu- Run with Qemu: $ qemu-system-riscv64 -machine virt -m 1G -kernel xen Bobby and Alistair's patch: https://lists.xenproject.org/archives/html/xen-devel/2020-01/msg01731.html This patch series is based on Bobby's Repo: https://gitlab.com/xen-on-risc-v/xen/-/tree/riscv-rebase This patch series is available in: https://github.com/xiexun162534/xen/tree/riscv-patch My latest work: https://github.com/xiexun162534/xen/tree/riscv-port Xie Xun (6): xen/riscv: Add necessary headers and definitions to build xen. xen/riscv: Add early page table setup code. xen/riscv: Add head.S xen/riscv: Add sbi.c, sbi.h xen/riscv: Add early_printk xen/riscv: Print "xen start" in start_xen using early_printk. xen/arch/riscv/Kconfig | 2 + xen/arch/riscv/Makefile | 53 ++ xen/arch/riscv/Rules.mk | 57 ++ xen/arch/riscv/delay.c | 14 + xen/arch/riscv/domain.c | 191 ++++ xen/arch/riscv/domctl.c | 52 ++ xen/arch/riscv/early_printk.c | 48 + xen/arch/riscv/guestcopy.c | 59 ++ xen/arch/riscv/include/asm/acpi.h | 9 + xen/arch/riscv/include/asm/altp2m.h | 39 + xen/arch/riscv/include/asm/asm.h | 76 ++ xen/arch/riscv/include/asm/atomic.h | 375 ++++++++ xen/arch/riscv/include/asm/bitops.h | 397 ++++++++ xen/arch/riscv/include/asm/bug.h | 67 ++ xen/arch/riscv/include/asm/byteorder.h | 16 + xen/arch/riscv/include/asm/cache.h | 24 + xen/arch/riscv/include/asm/cmpxchg.h | 382 ++++++++ xen/arch/riscv/include/asm/config.h | 149 ++- xen/arch/riscv/include/asm/cpufeature.h | 68 ++ xen/arch/riscv/include/asm/csr.h | 81 ++ xen/arch/riscv/include/asm/current.h | 41 + xen/arch/riscv/include/asm/debugger.h | 15 + xen/arch/riscv/include/asm/delay.h | 28 + xen/arch/riscv/include/asm/desc.h | 12 + xen/arch/riscv/include/asm/device.h | 93 ++ xen/arch/riscv/include/asm/div64.h | 23 + xen/arch/riscv/include/asm/domain.h | 80 ++ xen/arch/riscv/include/asm/early_printk.h | 10 + xen/arch/riscv/include/asm/event.h | 42 + xen/arch/riscv/include/asm/fence.h | 12 + xen/arch/riscv/include/asm/flushtlb.h | 56 ++ xen/arch/riscv/include/asm/grant_table.h | 93 ++ xen/arch/riscv/include/asm/guest_access.h | 125 +++ xen/arch/riscv/include/asm/guest_atomics.h | 62 ++ xen/arch/riscv/include/asm/hardirq.h | 27 + xen/arch/riscv/include/asm/hypercall.h | 12 + xen/arch/riscv/include/asm/init.h | 42 + xen/arch/riscv/include/asm/io.h | 283 ++++++ xen/arch/riscv/include/asm/iocap.h | 16 + xen/arch/riscv/include/asm/iommu.h | 46 + xen/arch/riscv/include/asm/iommu_fwspec.h | 68 ++ xen/arch/riscv/include/asm/irq.h | 62 ++ xen/arch/riscv/include/asm/mem_access.h | 35 + xen/arch/riscv/include/asm/mm.h | 320 +++++++ xen/arch/riscv/include/asm/monitor.h | 65 ++ xen/arch/riscv/include/asm/nospec.h | 25 + xen/arch/riscv/include/asm/numa.h | 41 + xen/arch/riscv/include/asm/p2m.h | 307 +++++++ xen/arch/riscv/include/asm/page-bits.h | 14 + xen/arch/riscv/include/asm/page.h | 319 +++++++ xen/arch/riscv/include/asm/paging.h | 16 + xen/arch/riscv/include/asm/pci.h | 31 + xen/arch/riscv/include/asm/percpu.h | 35 + xen/arch/riscv/include/asm/processor.h | 176 ++++ xen/arch/riscv/include/asm/random.h | 9 + xen/arch/riscv/include/asm/regs.h | 42 + xen/arch/riscv/include/asm/riscv_encoding.h | 960 ++++++++++++++++++++ xen/arch/riscv/include/asm/sbi.h | 275 ++++++ xen/arch/riscv/include/asm/setup.h | 23 + xen/arch/riscv/include/asm/smp.h | 69 ++ xen/arch/riscv/include/asm/softirq.h | 16 + xen/arch/riscv/include/asm/spinlock.h | 13 + xen/arch/riscv/include/asm/string.h | 28 + xen/arch/riscv/include/asm/system.h | 98 ++ xen/arch/riscv/include/asm/time.h | 81 ++ xen/arch/riscv/include/asm/trace.h | 12 + xen/arch/riscv/include/asm/traps.h | 30 + xen/arch/riscv/include/asm/types.h | 73 ++ xen/arch/riscv/include/asm/vm_event.h | 63 ++ xen/arch/riscv/include/asm/xenoprof.h | 12 + xen/arch/riscv/irq.c | 126 +++ xen/arch/riscv/lib/Makefile | 1 + xen/arch/riscv/lib/find_next_bit.c | 285 ++++++ xen/arch/riscv/mm.c | 633 +++++++++++++ xen/arch/riscv/p2m.c | 97 ++ xen/arch/riscv/percpu.c | 84 ++ xen/arch/riscv/platforms/Kconfig | 31 + xen/arch/riscv/riscv64/Makefile | 2 +- xen/arch/riscv/riscv64/asm-offsets.c | 39 + xen/arch/riscv/riscv64/head.S | 219 ++++- xen/arch/riscv/sbi.c | 483 ++++++++++ xen/arch/riscv/setup.c | 67 ++ xen/arch/riscv/shutdown.c | 24 + xen/arch/riscv/smp.c | 38 + xen/arch/riscv/smpboot.c | 78 ++ xen/arch/riscv/sysctl.c | 31 + xen/arch/riscv/time.c | 69 ++ xen/arch/riscv/traps.c | 87 ++ xen/arch/riscv/vm_event.c | 51 ++ xen/arch/riscv/xen.lds.S | 274 ++++++ xen/include/public/arch-riscv.h | 182 ++++ xen/include/public/arch-riscv/hvm/save.h | 39 + xen/include/public/hvm/save.h | 2 + xen/include/public/io/protocols.h | 3 + xen/include/public/pmu.h | 2 + xen/include/public/xen.h | 2 + 96 files changed, 9536 insertions(+), 8 deletions(-) create mode 100644 xen/arch/riscv/delay.c create mode 100644 xen/arch/riscv/domain.c create mode 100644 xen/arch/riscv/domctl.c create mode 100644 xen/arch/riscv/early_printk.c create mode 100644 xen/arch/riscv/guestcopy.c create mode 100644 xen/arch/riscv/include/asm/acpi.h create mode 100644 xen/arch/riscv/include/asm/altp2m.h create mode 100644 xen/arch/riscv/include/asm/asm.h create mode 100644 xen/arch/riscv/include/asm/atomic.h create mode 100644 xen/arch/riscv/include/asm/bitops.h create mode 100644 xen/arch/riscv/include/asm/bug.h create mode 100644 xen/arch/riscv/include/asm/byteorder.h create mode 100644 xen/arch/riscv/include/asm/cache.h create mode 100644 xen/arch/riscv/include/asm/cmpxchg.h create mode 100644 xen/arch/riscv/include/asm/cpufeature.h create mode 100644 xen/arch/riscv/include/asm/csr.h create mode 100644 xen/arch/riscv/include/asm/current.h create mode 100644 xen/arch/riscv/include/asm/debugger.h create mode 100644 xen/arch/riscv/include/asm/delay.h create mode 100644 xen/arch/riscv/include/asm/desc.h create mode 100644 xen/arch/riscv/include/asm/device.h create mode 100644 xen/arch/riscv/include/asm/div64.h create mode 100644 xen/arch/riscv/include/asm/domain.h create mode 100644 xen/arch/riscv/include/asm/early_printk.h create mode 100644 xen/arch/riscv/include/asm/event.h create mode 100644 xen/arch/riscv/include/asm/fence.h create mode 100644 xen/arch/riscv/include/asm/flushtlb.h create mode 100644 xen/arch/riscv/include/asm/grant_table.h create mode 100644 xen/arch/riscv/include/asm/guest_access.h create mode 100644 xen/arch/riscv/include/asm/guest_atomics.h create mode 100644 xen/arch/riscv/include/asm/hardirq.h create mode 100644 xen/arch/riscv/include/asm/hypercall.h create mode 100644 xen/arch/riscv/include/asm/init.h create mode 100644 xen/arch/riscv/include/asm/io.h create mode 100644 xen/arch/riscv/include/asm/iocap.h create mode 100644 xen/arch/riscv/include/asm/iommu.h create mode 100644 xen/arch/riscv/include/asm/iommu_fwspec.h create mode 100644 xen/arch/riscv/include/asm/irq.h create mode 100644 xen/arch/riscv/include/asm/mem_access.h create mode 100644 xen/arch/riscv/include/asm/mm.h create mode 100644 xen/arch/riscv/include/asm/monitor.h create mode 100644 xen/arch/riscv/include/asm/nospec.h create mode 100644 xen/arch/riscv/include/asm/numa.h create mode 100644 xen/arch/riscv/include/asm/p2m.h create mode 100644 xen/arch/riscv/include/asm/page-bits.h create mode 100644 xen/arch/riscv/include/asm/page.h create mode 100644 xen/arch/riscv/include/asm/paging.h create mode 100644 xen/arch/riscv/include/asm/pci.h create mode 100644 xen/arch/riscv/include/asm/percpu.h create mode 100644 xen/arch/riscv/include/asm/processor.h create mode 100644 xen/arch/riscv/include/asm/random.h create mode 100644 xen/arch/riscv/include/asm/regs.h create mode 100644 xen/arch/riscv/include/asm/riscv_encoding.h create mode 100644 xen/arch/riscv/include/asm/sbi.h create mode 100644 xen/arch/riscv/include/asm/setup.h create mode 100644 xen/arch/riscv/include/asm/smp.h create mode 100644 xen/arch/riscv/include/asm/softirq.h create mode 100644 xen/arch/riscv/include/asm/spinlock.h create mode 100644 xen/arch/riscv/include/asm/string.h create mode 100644 xen/arch/riscv/include/asm/system.h create mode 100644 xen/arch/riscv/include/asm/time.h create mode 100644 xen/arch/riscv/include/asm/trace.h create mode 100644 xen/arch/riscv/include/asm/traps.h create mode 100644 xen/arch/riscv/include/asm/types.h create mode 100644 xen/arch/riscv/include/asm/vm_event.h create mode 100644 xen/arch/riscv/include/asm/xenoprof.h create mode 100644 xen/arch/riscv/irq.c create mode 100644 xen/arch/riscv/lib/Makefile create mode 100644 xen/arch/riscv/lib/find_next_bit.c create mode 100644 xen/arch/riscv/mm.c create mode 100644 xen/arch/riscv/p2m.c create mode 100644 xen/arch/riscv/percpu.c create mode 100644 xen/arch/riscv/platforms/Kconfig create mode 100644 xen/arch/riscv/sbi.c create mode 100644 xen/arch/riscv/setup.c create mode 100644 xen/arch/riscv/shutdown.c create mode 100644 xen/arch/riscv/smp.c create mode 100644 xen/arch/riscv/smpboot.c create mode 100644 xen/arch/riscv/sysctl.c create mode 100644 xen/arch/riscv/time.c create mode 100644 xen/arch/riscv/traps.c create mode 100644 xen/arch/riscv/vm_event.c create mode 100644 xen/arch/riscv/xen.lds.S create mode 100644 xen/include/public/arch-riscv.h create mode 100644 xen/include/public/arch-riscv/hvm/save.h -- 2.30.2
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |