From: Connor Davis <connojdavis@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Connor Davis <connojdavis@gmail.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
George Dunlap <george.dunlap@citrix.com>,
Ian Jackson <iwj@xenproject.org>, Jan Beulich <jbeulich@suse.com>,
Julien Grall <julien@xen.org>,
Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
Paul Durrant <paul@xen.org>,
Tamas K Lengyel <tamas@tklengyel.com>,
Alexandru Isaila <aisaila@bitdefender.com>,
Petre Pircalabu <ppircalabu@bitdefender.com>,
Doug Goldstein <cardoe@cardoe.com>
Subject: [PATCH v2 0/5] Minimal build for RISCV
Date: Thu, 13 May 2021 22:17:07 -0600 [thread overview]
Message-ID: <cover.1620965208.git.connojdavis@gmail.com> (raw)
Hi all,
This series introduces a minimal build for RISCV. It is based on Bobby's
previous work from last year[0]. I have worked to rebase onto current Xen,
as well as update the various header files borrowed from Linux.
This series provides the patches necessary to get a minimal build
working. The build is "minimal" in the sense that 1) it uses a
minimal config and 2) files, functions, and variables are included if
and only if they are required for a successful build based on the
config. It doesn't run at all, as the functions just have stub
implementations.
My hope is that this can serve as a useful example for future ports as
well as inform the community of exactly what is imposed by common code
onto new architectures.
The first 3 patches are mods to non-RISCV bits that enable building a
config with:
!CONFIG_HAS_NS16550
!CONFIG_HAS_PASSTHROUGH
!CONFIG_GRANT_TABLE
respectively. The fourth patch adds the RISCV files, and the last patch
adds a docker container for doing the build. To build from the docker
container (after creating it locally), you can run the following:
$ make XEN_TARGET_ARCH=riscv64 SUBSYSTEMS=xen
The sources taken from Linux are documented in arch/riscv/README.sources.
There were also some files copied from arm:
asm-arm/softirq.h
asm-arm/random.h
asm-arm/nospec.h
asm-arm/numa.h
asm-arm/p2m.h
asm-arm/delay.h
asm-arm/debugger.h
asm-arm/desc.h
asm-arm/guest_access.h
asm-arm/hardirq.h
lib/find_next_bit.c
I imagine some of these will want some consolidation, but I put them
under the respective RISCV directories for now.
[0] https://lore.kernel.org/xen-devel/cover.1579615303.git.bobbyeshleman@gmail.com/
Thanks,
Connor
--
Changes since v1:
- Dropped "xen/sched: Fix build when NR_CPUS == 1" since this was
fixed for 4.15
- Moved #ifdef-ary around iommu_enabled to iommu.h
- Moved struct grant_table declaration above ifdef CONFIG_GRANT_TABLE
instead of defining an empty struct when !CONFIG_GRANT_TABLE
Connor Davis (5):
xen/char: Default HAS_NS16550 to y only for X86 and ARM
xen/common: Guard iommu symbols with CONFIG_HAS_PASSTHROUGH
xen: Fix build when !CONFIG_GRANT_TABLE
xen: Add files needed for minimal riscv build
automation: add container for riscv64 builds
automation/build/archlinux/riscv64.dockerfile | 33 ++
automation/scripts/containerize | 1 +
config/riscv64.mk | 7 +
xen/Makefile | 8 +-
xen/arch/riscv/Kconfig | 54 +++
xen/arch/riscv/Kconfig.debug | 0
xen/arch/riscv/Makefile | 57 +++
xen/arch/riscv/README.source | 19 +
xen/arch/riscv/Rules.mk | 13 +
xen/arch/riscv/arch.mk | 7 +
xen/arch/riscv/configs/riscv64_defconfig | 12 +
xen/arch/riscv/delay.c | 16 +
xen/arch/riscv/domain.c | 144 +++++++
xen/arch/riscv/domctl.c | 36 ++
xen/arch/riscv/guestcopy.c | 57 +++
xen/arch/riscv/head.S | 6 +
xen/arch/riscv/irq.c | 78 ++++
xen/arch/riscv/lib/Makefile | 1 +
xen/arch/riscv/lib/find_next_bit.c | 284 +++++++++++++
xen/arch/riscv/mm.c | 93 +++++
xen/arch/riscv/p2m.c | 144 +++++++
xen/arch/riscv/percpu.c | 17 +
xen/arch/riscv/platforms/Kconfig | 31 ++
xen/arch/riscv/riscv64/asm-offsets.c | 31 ++
xen/arch/riscv/setup.c | 27 ++
xen/arch/riscv/shutdown.c | 28 ++
xen/arch/riscv/smp.c | 35 ++
xen/arch/riscv/smpboot.c | 34 ++
xen/arch/riscv/sysctl.c | 33 ++
xen/arch/riscv/time.c | 35 ++
xen/arch/riscv/traps.c | 35 ++
xen/arch/riscv/vm_event.c | 39 ++
xen/arch/riscv/xen.lds.S | 113 ++++++
xen/common/memory.c | 10 +
xen/drivers/char/Kconfig | 2 +-
xen/include/asm-riscv/altp2m.h | 39 ++
xen/include/asm-riscv/asm.h | 77 ++++
xen/include/asm-riscv/asm_defns.h | 24 ++
xen/include/asm-riscv/atomic.h | 204 ++++++++++
xen/include/asm-riscv/bitops.h | 331 +++++++++++++++
xen/include/asm-riscv/bug.h | 54 +++
xen/include/asm-riscv/byteorder.h | 16 +
xen/include/asm-riscv/cache.h | 24 ++
xen/include/asm-riscv/cmpxchg.h | 382 ++++++++++++++++++
xen/include/asm-riscv/compiler_types.h | 32 ++
xen/include/asm-riscv/config.h | 110 +++++
xen/include/asm-riscv/cpufeature.h | 17 +
xen/include/asm-riscv/csr.h | 219 ++++++++++
xen/include/asm-riscv/current.h | 47 +++
xen/include/asm-riscv/debugger.h | 15 +
xen/include/asm-riscv/delay.h | 17 +
xen/include/asm-riscv/desc.h | 12 +
xen/include/asm-riscv/device.h | 15 +
xen/include/asm-riscv/div64.h | 23 ++
xen/include/asm-riscv/domain.h | 50 +++
xen/include/asm-riscv/event.h | 42 ++
xen/include/asm-riscv/fence.h | 12 +
xen/include/asm-riscv/flushtlb.h | 34 ++
xen/include/asm-riscv/grant_table.h | 12 +
xen/include/asm-riscv/guest_access.h | 41 ++
xen/include/asm-riscv/guest_atomics.h | 60 +++
xen/include/asm-riscv/hardirq.h | 27 ++
xen/include/asm-riscv/hypercall.h | 12 +
xen/include/asm-riscv/init.h | 42 ++
xen/include/asm-riscv/io.h | 283 +++++++++++++
xen/include/asm-riscv/iocap.h | 13 +
xen/include/asm-riscv/iommu.h | 46 +++
xen/include/asm-riscv/irq.h | 58 +++
xen/include/asm-riscv/mem_access.h | 4 +
xen/include/asm-riscv/mm.h | 246 +++++++++++
xen/include/asm-riscv/monitor.h | 65 +++
xen/include/asm-riscv/nospec.h | 25 ++
xen/include/asm-riscv/numa.h | 41 ++
xen/include/asm-riscv/p2m.h | 218 ++++++++++
xen/include/asm-riscv/page-bits.h | 11 +
xen/include/asm-riscv/page.h | 73 ++++
xen/include/asm-riscv/paging.h | 15 +
xen/include/asm-riscv/pci.h | 31 ++
xen/include/asm-riscv/percpu.h | 33 ++
xen/include/asm-riscv/processor.h | 59 +++
xen/include/asm-riscv/random.h | 9 +
xen/include/asm-riscv/regs.h | 23 ++
xen/include/asm-riscv/setup.h | 14 +
xen/include/asm-riscv/smp.h | 46 +++
xen/include/asm-riscv/softirq.h | 16 +
xen/include/asm-riscv/spinlock.h | 12 +
xen/include/asm-riscv/string.h | 28 ++
xen/include/asm-riscv/sysregs.h | 16 +
xen/include/asm-riscv/system.h | 99 +++++
xen/include/asm-riscv/time.h | 31 ++
xen/include/asm-riscv/trace.h | 12 +
xen/include/asm-riscv/types.h | 60 +++
xen/include/asm-riscv/vm_event.h | 60 +++
xen/include/asm-riscv/xenoprof.h | 12 +
xen/include/public/arch-riscv.h | 134 ++++++
xen/include/public/arch-riscv/hvm/save.h | 39 ++
xen/include/public/hvm/save.h | 2 +
xen/include/public/pmu.h | 2 +
xen/include/public/xen.h | 2 +
xen/include/xen/domain.h | 1 +
xen/include/xen/grant_table.h | 3 +-
xen/include/xen/iommu.h | 8 +-
102 files changed, 5375 insertions(+), 5 deletions(-)
create mode 100644 automation/build/archlinux/riscv64.dockerfile
create mode 100644 config/riscv64.mk
create mode 100644 xen/arch/riscv/Kconfig
create mode 100644 xen/arch/riscv/Kconfig.debug
create mode 100644 xen/arch/riscv/Makefile
create mode 100644 xen/arch/riscv/README.source
create mode 100644 xen/arch/riscv/Rules.mk
create mode 100644 xen/arch/riscv/arch.mk
create mode 100644 xen/arch/riscv/configs/riscv64_defconfig
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/guestcopy.c
create mode 100644 xen/arch/riscv/head.S
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/riscv64/asm-offsets.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/asm-riscv/altp2m.h
create mode 100644 xen/include/asm-riscv/asm.h
create mode 100644 xen/include/asm-riscv/asm_defns.h
create mode 100644 xen/include/asm-riscv/atomic.h
create mode 100644 xen/include/asm-riscv/bitops.h
create mode 100644 xen/include/asm-riscv/bug.h
create mode 100644 xen/include/asm-riscv/byteorder.h
create mode 100644 xen/include/asm-riscv/cache.h
create mode 100644 xen/include/asm-riscv/cmpxchg.h
create mode 100644 xen/include/asm-riscv/compiler_types.h
create mode 100644 xen/include/asm-riscv/config.h
create mode 100644 xen/include/asm-riscv/cpufeature.h
create mode 100644 xen/include/asm-riscv/csr.h
create mode 100644 xen/include/asm-riscv/current.h
create mode 100644 xen/include/asm-riscv/debugger.h
create mode 100644 xen/include/asm-riscv/delay.h
create mode 100644 xen/include/asm-riscv/desc.h
create mode 100644 xen/include/asm-riscv/device.h
create mode 100644 xen/include/asm-riscv/div64.h
create mode 100644 xen/include/asm-riscv/domain.h
create mode 100644 xen/include/asm-riscv/event.h
create mode 100644 xen/include/asm-riscv/fence.h
create mode 100644 xen/include/asm-riscv/flushtlb.h
create mode 100644 xen/include/asm-riscv/grant_table.h
create mode 100644 xen/include/asm-riscv/guest_access.h
create mode 100644 xen/include/asm-riscv/guest_atomics.h
create mode 100644 xen/include/asm-riscv/hardirq.h
create mode 100644 xen/include/asm-riscv/hypercall.h
create mode 100644 xen/include/asm-riscv/init.h
create mode 100644 xen/include/asm-riscv/io.h
create mode 100644 xen/include/asm-riscv/iocap.h
create mode 100644 xen/include/asm-riscv/iommu.h
create mode 100644 xen/include/asm-riscv/irq.h
create mode 100644 xen/include/asm-riscv/mem_access.h
create mode 100644 xen/include/asm-riscv/mm.h
create mode 100644 xen/include/asm-riscv/monitor.h
create mode 100644 xen/include/asm-riscv/nospec.h
create mode 100644 xen/include/asm-riscv/numa.h
create mode 100644 xen/include/asm-riscv/p2m.h
create mode 100644 xen/include/asm-riscv/page-bits.h
create mode 100644 xen/include/asm-riscv/page.h
create mode 100644 xen/include/asm-riscv/paging.h
create mode 100644 xen/include/asm-riscv/pci.h
create mode 100644 xen/include/asm-riscv/percpu.h
create mode 100644 xen/include/asm-riscv/processor.h
create mode 100644 xen/include/asm-riscv/random.h
create mode 100644 xen/include/asm-riscv/regs.h
create mode 100644 xen/include/asm-riscv/setup.h
create mode 100644 xen/include/asm-riscv/smp.h
create mode 100644 xen/include/asm-riscv/softirq.h
create mode 100644 xen/include/asm-riscv/spinlock.h
create mode 100644 xen/include/asm-riscv/string.h
create mode 100644 xen/include/asm-riscv/sysregs.h
create mode 100644 xen/include/asm-riscv/system.h
create mode 100644 xen/include/asm-riscv/time.h
create mode 100644 xen/include/asm-riscv/trace.h
create mode 100644 xen/include/asm-riscv/types.h
create mode 100644 xen/include/asm-riscv/vm_event.h
create mode 100644 xen/include/asm-riscv/xenoprof.h
create mode 100644 xen/include/public/arch-riscv.h
create mode 100644 xen/include/public/arch-riscv/hvm/save.h
--
2.31.1
next reply other threads:[~2021-05-14 4:18 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-14 4:17 Connor Davis [this message]
2021-05-14 4:17 ` [PATCH v2 1/5] xen/char: Default HAS_NS16550 to y only for X86 and ARM Connor Davis
2021-05-14 5:34 ` Elliott Mitchell
2021-05-14 14:13 ` Connor Davis
2021-05-14 4:17 ` [PATCH v2 2/5] xen/common: Guard iommu symbols with CONFIG_HAS_PASSTHROUGH Connor Davis
2021-05-14 4:17 ` [PATCH v2 3/5] xen: Fix build when !CONFIG_GRANT_TABLE Connor Davis
2021-05-14 4:17 ` [PATCH v2 4/5] xen: Add files needed for minimal riscv build Connor Davis
2021-05-14 9:46 ` Julien Grall
2021-05-14 13:57 ` Connor Davis
2021-05-14 4:17 ` [PATCH v2 5/5] automation: add container for riscv64 builds Connor Davis
2021-05-14 4:43 ` [PATCH v2 0/5] Minimal build for RISCV Alistair Francis
2021-05-14 14:02 ` Connor Davis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1620965208.git.connojdavis@gmail.com \
--to=connojdavis@gmail.com \
--cc=aisaila@bitdefender.com \
--cc=andrew.cooper3@citrix.com \
--cc=cardoe@cardoe.com \
--cc=george.dunlap@citrix.com \
--cc=iwj@xenproject.org \
--cc=jbeulich@suse.com \
--cc=julien@xen.org \
--cc=paul@xen.org \
--cc=ppircalabu@bitdefender.com \
--cc=sstabellini@kernel.org \
--cc=tamas@tklengyel.com \
--cc=wl@xen.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.