[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




 


Rackspace

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