From: Connor Davis <connojdavis@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Bobby Eshleman <bobbyeshleman@gmail.com>,
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>,
Dario Faggioli <dfaggioli@suse.com>,
Tamas K Lengyel <tamas@tklengyel.com>,
Alexandru Isaila <aisaila@bitdefender.com>,
Petre Pircalabu <ppircalabu@bitdefender.com>,
Doug Goldstein <cardoe@cardoe.com>
Subject: [PATCH for-next 0/6] Minimal build for RISCV
Date: Thu, 25 Feb 2021 08:23:59 -0700 [thread overview]
Message-ID: <cover.1614265718.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 4 patches are mods to non-RISCV bits that enable building a
config with:
!CONFIG_HAS_NS16550
!CONFIG_HAS_PASSTHROUGH
NR_CPUS == 1
!CONFIG_GRANT_TABLE
respectively. The fifth 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/
Connor Davis (6):
xen/char: Default HAS_NS16550 to y only for X86 and ARM
xen/common: Guard iommu symbols with CONFIG_HAS_PASSTHROUGH
xen/sched: Fix build when NR_CPUS == 1
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 | 32 ++
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 | 150 +++++++
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/domain.c | 2 +
xen/common/memory.c | 10 +
xen/common/sched/core.c | 2 +-
xen/common/sysctl.c | 2 +
xen/drivers/char/Kconfig | 2 +-
xen/drivers/char/serial.c | 1 +
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 | 15 +
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 | 55 +++
xen/include/asm-riscv/xenoprof.h | 12 +
xen/include/public/arch-riscv.h | 183 +++++++++
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 | 2 +
105 files changed, 5421 insertions(+), 4 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.27.0
next reply other threads:[~2021-02-25 15:26 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-25 15:23 Connor Davis [this message]
2021-02-25 15:24 ` [PATCH for-next 1/6] xen/char: Default HAS_NS16550 to y only for X86 and ARM Connor Davis
2021-02-25 15:24 ` [PATCH for-next 2/6] xen/common: Guard iommu symbols with CONFIG_HAS_PASSTHROUGH Connor Davis
2021-02-25 15:45 ` Jan Beulich
2021-02-26 2:54 ` Connor Davis
2021-02-26 7:41 ` Jan Beulich
2021-02-25 15:24 ` [PATCH for-next 3/6] xen/sched: Fix build when NR_CPUS == 1 Connor Davis
2021-02-25 15:50 ` Jan Beulich
2021-02-26 3:08 ` Connor Davis
2021-02-26 8:31 ` Jan Beulich
2021-02-26 16:49 ` Dario Faggioli
2021-02-27 4:17 ` Connor Davis
2021-02-25 22:55 ` Bob Eshleman
2021-02-26 3:01 ` Connor Davis
2021-02-26 15:21 ` Bob Eshleman
2021-02-25 15:24 ` [PATCH for-next 4/6] xen: Fix build when !CONFIG_GRANT_TABLE Connor Davis
2021-02-25 15:53 ` Jan Beulich
2021-02-26 3:36 ` Connor Davis
2021-02-25 15:24 ` [PATCH for-next 5/6] xen: Add files needed for minimal riscv build Connor Davis
2021-02-25 23:14 ` Andrew Cooper
2021-02-26 1:06 ` Stefano Stabellini
2021-02-27 4:05 ` Connor Davis
2021-02-26 3:29 ` Connor Davis
2021-02-26 15:30 ` Bob Eshleman
2021-02-26 15:55 ` Andrew Cooper
2021-02-26 16:21 ` Bob Eshleman
2021-02-26 16:56 ` Andrew Cooper
2021-03-12 17:01 ` Jan Beulich
2021-03-12 17:09 ` Jan Beulich
2021-05-14 3:25 ` Connor Davis
2021-02-25 15:24 ` [PATCH for-next 6/6] automation: add container for riscv64 builds Connor Davis
2021-02-26 0:31 ` Stefano Stabellini
2021-02-26 6:15 ` Connor Davis
2021-02-26 15:54 ` [PATCH for-next 0/6] Minimal build for RISCV Bob Eshleman
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.1614265718.git.connojdavis@gmail.com \
--to=connojdavis@gmail.com \
--cc=aisaila@bitdefender.com \
--cc=andrew.cooper3@citrix.com \
--cc=bobbyeshleman@gmail.com \
--cc=cardoe@cardoe.com \
--cc=dfaggioli@suse.com \
--cc=george.dunlap@citrix.com \
--cc=iwj@xenproject.org \
--cc=jbeulich@suse.com \
--cc=julien@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).