From: Alistair Francis <Alistair.Francis@wdc.com>
To: "bobbyeshleman@gmail.com" <bobbyeshleman@gmail.com>,
"sstabellini@kernel.org" <sstabellini@kernel.org>
Cc: "dan@dlrobertson.com" <dan@dlrobertson.com>,
"julien@xen.org" <julien@xen.org>, "wl@xen.org" <wl@xen.org>,
"konrad.wilk@oracle.com" <konrad.wilk@oracle.com>,
"George.Dunlap@eu.citrix.com" <George.Dunlap@eu.citrix.com>,
"andrew.cooper3@citrix.com" <andrew.cooper3@citrix.com>,
"ian.jackson@eu.citrix.com" <ian.jackson@eu.citrix.com>,
"bobby.eshleman@starlab.io" <bobby.eshleman@starlab.io>,
"jbeulich@suse.com" <jbeulich@suse.com>,
"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [RFC XEN PATCH 00/23] xen: beginning support for RISC-V
Date: Tue, 16 Jun 2020 01:10:17 +0000 [thread overview]
Message-ID: <f1bff09cf101b185efe7c2f7d53d64b0aeee84a2.camel@wdc.com> (raw)
In-Reply-To: <alpine.DEB.2.21.2006151802470.9074@sstabellini-ThinkPad-T480s>
On Mon, 2020-06-15 at 18:03 -0700, Stefano Stabellini wrote:
> Any updates? I am looking forward to this :-)
FYI, I would like to talk more about RISC-V Xen at the Xen Virtual
summit. I'll put it forward as a BoF subject.
I haven't worked on this, although the RISC-V Hypervisor spec is
progressing towards ratification.
Alistair
>
>
> On Tue, 21 Jan 2020, Bobby Eshleman wrote:
> > Hey everybody,
> >
> > This is an RFC patchset for the very beginnings of adding RISC-V
> > support
> > to Xen. This RFC is really just to start a dialogue about
> > supporting
> > RISC-V and align with the Xen project and community before going
> > further. For that reason, it is very rough and very incomplete.
> >
> > My name is Bobby Eshleman, I'm a software engineer at
> > Star Lab / Wind River on the ARM team, mostly having worked in the
> > Linux
> > kernel. I've also been involved a good amount with Xen on ARM
> > here,
> > mostly dealing with tooling, deployment, and testing. A lot of
> > this
> > patchset is heavily inspired by the Xen/ARM source code
> > (particularly
> > the early setup up code).
> >
> > Currently, this patchset really only sets up virtual memory for Xen
> > and
> > initializes UART to enable print output. None of RISC-V's
> > virtualization support has been implemented yet, although that is
> > the
> > next road to start going down. Many functions only contain dummy
> > implementations. Many shortcuts have been taken and TODO's have
> > been
> > left accordingly. It is very, very rough. Be forewarned: you are
> > quite
> > likely to see some ungainly code here (despite my efforts to clean
> > it up
> > before sending this patchset out). My intent with this RFC is to
> > align
> > early and gauge interest, as opposed to presenting a totally
> > complete
> > patchset.
> >
> > Because the ARM and RISC-V use cases will likely bear resemblance,
> > the
> > RISC-V port should probably respect the design considerations that
> > have
> > been laid out and respected by Xen on ARM for dom0less, safety
> > certification, etc... My inclination has been to initially target
> > or
> > prioritize dom0less (without excluding dom0full) and use the ARM
> > dom0less implementation as a model to follow. I'd love feedback on
> > this
> > point and on how the Xen project might envision a RISC-V
> > implementation.
> >
> > This patchset has _some_ code for future support for 32-bit, but
> > currently my focus is on 64-bit.
> >
> > Again, this is a very, very rough and totally incomplete
> > patchset. My
> > goal here is just to gauge community interest, begin discussing
> > what Xen
> > on RISC-V may look like, receive feedback, and see if I'm heading
> > in the
> > right direction.
> >
> > My big questions are:
> > Does the Xen project have interest in RISC-V?
> > What can be done to make the RISC-V port as upstreamable as
> > possible?
> > Any major pitfalls?
> >
> > It would be great to hear all of your feedback.
> >
> > Alistair Francis (20):
> > HACK: OE Build changes
> > HACK: Makefile: Don't build Xen tools
> > riscv: makefiles and Kconfig
> > riscv: Add riscv to tools/libxc header files
> > riscv: Add asm-offsets.c
> > riscv: Add delay.c
> > riscv: Add domain.c
> > riscv: Add domctl.c
> > riscv: Add guestcopy.c
> > riscv: Add time.c
> > riscv: Add smp.c
> > riscv: Add shutdown.c
> > riscv: Add traps.c
> > riscv: Add irq.c
> > riscv: Add vm_event.c
> > riscv: Add p2m.c
> > riscv: Add the lib directory
> > riscv: Add smpboot.c
> > riscv: Add percpu.c
> > riscv: Add sysctl.c
> >
> > Bobby Eshleman (3):
> > riscv: header files
> > riscv: early setup code
> > riscv: Add iommu.c
> >
> > Makefile | 13 +-
> > config/StdGNU.mk | 12 +-
> > config/riscv64.mk | 7 +
> > tools/configure | 32 +-
> > tools/firmware/Makefile | 12 +-
> > tools/libxc/include/xenctrl.h | 7 +
> > tools/libxc/xc_core.h | 2 +
> > tools/libxc/xc_core_riscv.h | 57 ++
> > xen/Makefile | 2 +-
> > xen/Rules.mk | 2 +-
> > xen/arch/Kconfig | 1 +
> > xen/arch/riscv/Kconfig | 36 +
> > xen/arch/riscv/Makefile | 62 ++
> > xen/arch/riscv/Rules.mk | 55 ++
> > xen/arch/riscv/asm-offsets.c | 38 +
> > xen/arch/riscv/configs/riscv32_defconfig | 0
> > xen/arch/riscv/configs/riscv64_defconfig | 0
> > xen/arch/riscv/delay.c | 114 +++
> > xen/arch/riscv/domain.c | 273 +++++++
> > xen/arch/riscv/domctl.c | 53 ++
> > xen/arch/riscv/guestcopy.c | 158 ++++
> > xen/arch/riscv/head.S | 180 +++++
> > xen/arch/riscv/irq.c | 107 +++
> > xen/arch/riscv/lib/Makefile | 1 +
> > xen/arch/riscv/lib/find_next_bit.c | 284 +++++++
> > xen/arch/riscv/mm.c | 925
> > +++++++++++++++++++++++
> > xen/arch/riscv/p2m.c | 261 +++++++
> > xen/arch/riscv/percpu.c | 84 ++
> > xen/arch/riscv/platforms/Kconfig | 31 +
> > xen/arch/riscv/setup.c | 122 +++
> > xen/arch/riscv/shutdown.c | 24 +
> > xen/arch/riscv/smp.c | 41 +
> > xen/arch/riscv/smpboot.c | 114 +++
> > xen/arch/riscv/sysctl.c | 31 +
> > xen/arch/riscv/time.c | 74 ++
> > xen/arch/riscv/traps.c | 56 ++
> > xen/arch/riscv/vm_event.c | 42 +
> > xen/arch/riscv/xen.lds.S | 262 +++++++
> > xen/drivers/passthrough/Makefile | 1 +
> > xen/drivers/passthrough/riscv/Makefile | 1 +
> > xen/drivers/passthrough/riscv/iommu.c | 74 ++
> > xen/include/asm-riscv/altp2m.h | 39 +
> > xen/include/asm-riscv/asm.h | 76 ++
> > xen/include/asm-riscv/atomic.h | 249 ++++++
> > xen/include/asm-riscv/bitops.h | 331 ++++++++
> > xen/include/asm-riscv/bug.h | 59 ++
> > 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/config.h | 203 +++++
> > xen/include/asm-riscv/csr.h | 117 +++
> > xen/include/asm-riscv/current.h | 50 ++
> > xen/include/asm-riscv/debugger.h | 15 +
> > xen/include/asm-riscv/delay.h | 28 +
> > 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 | 85 +++
> > xen/include/asm-riscv/event.h | 42 +
> > xen/include/asm-riscv/fence.h | 12 +
> > xen/include/asm-riscv/flushtlb.h | 56 ++
> > xen/include/asm-riscv/grant_table.h | 93 +++
> > xen/include/asm-riscv/guest_access.h | 164 ++++
> > xen/include/asm-riscv/guest_atomics.h | 62 ++
> > 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 | 16 +
> > xen/include/asm-riscv/iommu.h | 49 ++
> > xen/include/asm-riscv/irq.h | 58 ++
> > xen/include/asm-riscv/mem_access.h | 35 +
> > xen/include/asm-riscv/mm.h | 308 ++++++++
> > 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 | 410 ++++++++++
> > xen/include/asm-riscv/page.h | 327 ++++++++
> > xen/include/asm-riscv/paging.h | 16 +
> > xen/include/asm-riscv/pci.h | 31 +
> > xen/include/asm-riscv/percpu.h | 34 +
> > xen/include/asm-riscv/pgtable-bits.h | 53 ++
> > xen/include/asm-riscv/processor.h | 60 ++
> > xen/include/asm-riscv/random.h | 9 +
> > xen/include/asm-riscv/regs.h | 42 +
> > xen/include/asm-riscv/riscv_encoding.h | 682 +++++++++++++++++
> > xen/include/asm-riscv/setup.h | 16 +
> > xen/include/asm-riscv/smp.h | 50 ++
> > xen/include/asm-riscv/softirq.h | 16 +
> > xen/include/asm-riscv/spinlock.h | 13 +
> > xen/include/asm-riscv/string.h | 28 +
> > xen/include/asm-riscv/sysregs.h | 14 +
> > xen/include/asm-riscv/system.h | 96 +++
> > xen/include/asm-riscv/time.h | 60 ++
> > xen/include/asm-riscv/trace.h | 12 +
> > xen/include/asm-riscv/types.h | 73 ++
> > xen/include/asm-riscv/vm_event.h | 61 ++
> > xen/include/asm-riscv/xenoprof.h | 12 +
> > xen/include/public/arch-riscv.h | 181 +++++
> > 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 +
> > 103 files changed, 9064 insertions(+), 42 deletions(-)
> > create mode 100644 config/riscv64.mk
> > create mode 100644 tools/libxc/xc_core_riscv.h
> > create mode 100644 xen/arch/riscv/Kconfig
> > create mode 100644 xen/arch/riscv/Makefile
> > create mode 100644 xen/arch/riscv/Rules.mk
> > create mode 100644 xen/arch/riscv/asm-offsets.c
> > create mode 100644 xen/arch/riscv/configs/riscv32_defconfig
> > 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/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/drivers/passthrough/riscv/Makefile
> > create mode 100644 xen/drivers/passthrough/riscv/iommu.c
> > 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/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/config.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.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/pgtable-bits.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/riscv_encoding.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.25.0
> >
> > The source code can be found on github:
> > https://github.com/beshleman/xen/tree/port-to-risc-v
> >
> > The patchset only targets the QEMU virt board and it is tested on
> > Alistair Francis's patchset for QEMU with RISC-V hypervisor
> > extensions
> > v0.5, found here:
> >
> > https://github.com/alistair23/qemu/tree/mainline/alistair/riscv-hyp-ext-v0.5.next
> >
> > QEMU is built with:
> > git clone --single-branch --branch mainline/alistair/riscv-hyp-
> > ext-v0.5.next \
> > https://github.com/alistair23/qemu.git
> > cd qemu
> > mkdir build && cd build
> > ../configure --target-list=riscv64-softmmu
> > make -j$(nproc) && make install
> >
> > The bootloader used is the standard OpenSBI, built with the
> > command:
> > CROSS_COMPILE=riscv64-unknown-linux-gnu- PLATFORM=qemu/virt
> > FW_PAYLOAD_PATH=../xen/xen/xen make
> >
> > Xen/RISC-V is built with:
> > XEN_TARGET_ARCH=riscv64 CROSS_COMPILE=riscv64-unknown-linux-
> > gnu- make build
> >
> > Xen may be ran with the following command:
> > qemu-system-riscv64 -cpu rv64,x-h=true -M virt -m 512M -display
> > none \
> > -serial stdio -kernel \
> > opensbi/build/platform/qemu/virt/firmware/fw_payload.el
> > f
> >
> > Also, shoutout to Alistair Francis (from Western Digital) for
> > getting
> > the ball rolling and doing a ton of the groundwork with
> > Makefile/Kconfig, a ton of the RISC-V specific header files, and
> > also
> > the QEMU RISC-V H extension support, and Dan Robertson (a colleague
> > of
> > mine at Star Lab) for help in forward porting a number of patches
> > that
> > were out-of-sync with upstream.
> >
> >
> > Thanks,
> > Bobby Eshleman
> >
next prev parent reply other threads:[~2020-06-16 1:10 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-22 1:58 [Xen-devel] [RFC XEN PATCH 00/23] xen: beginning support for RISC-V Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 01/23] HACK: OE Build changes Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 02/23] HACK: Makefile: Don't build Xen tools Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 03/23] riscv: makefiles and Kconfig Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 04/23] riscv: header files Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 05/23] riscv: early setup code Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 06/23] riscv: Add riscv to tools/libxc header files Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 07/23] riscv: Add asm-offsets.c Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 08/23] riscv: Add delay.c Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 09/23] riscv: Add domain.c Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 10/23] riscv: Add domctl.c Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 11/23] riscv: Add guestcopy.c Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 12/23] riscv: Add time.c Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 13/23] riscv: Add smp.c Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 14/23] riscv: Add shutdown.c Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 15/23] riscv: Add traps.c Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 16/23] riscv: Add irq.c Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 17/23] riscv: Add vm_event.c Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 18/23] riscv: Add p2m.c Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 19/23] riscv: Add the lib directory Bobby Eshleman
2020-06-22 11:38 ` Jan Beulich
2020-06-30 1:55 ` Bobby Eshleman
2020-01-22 1:58 ` [Xen-devel] [RFC XEN PATCH 20/23] riscv: Add smpboot.c Bobby Eshleman
2020-01-22 1:59 ` [Xen-devel] [RFC XEN PATCH 21/23] riscv: Add percpu.c Bobby Eshleman
2020-01-22 1:59 ` [Xen-devel] [RFC XEN PATCH 22/23] riscv: Add sysctl.c Bobby Eshleman
2020-06-22 11:43 ` Jan Beulich
2020-06-30 1:51 ` Bobby Eshleman
2020-01-22 1:59 ` [Xen-devel] [RFC XEN PATCH 23/23] riscv: Add iommu.c Bobby Eshleman
2020-01-22 14:57 ` [Xen-devel] [RFC XEN PATCH 00/23] xen: beginning support for RISC-V Andrew Cooper
2020-01-22 16:27 ` Lars Kurth
2020-01-23 5:31 ` Bobby Eshleman
2020-01-23 23:44 ` Lars Kurth
2020-01-25 1:59 ` Bobby Eshleman
2020-01-22 21:05 ` Stefano Stabellini
[not found] ` <20200123044527.GA5583@bobbye-pc>
2020-01-23 5:13 ` Bobby Eshleman
2020-01-23 5:19 ` Bobby Eshleman
2020-01-23 16:02 ` Andrew Cooper
2020-01-25 1:58 ` Bobby Eshleman
2020-01-23 8:25 ` Alistair Francis
2020-01-24 13:41 ` Andrew Cooper
2020-01-25 3:26 ` Bobby Eshleman
2020-01-25 17:11 ` Andrew Cooper
2020-01-28 3:37 ` Bobby Eshleman
2020-06-16 1:03 ` Stefano Stabellini
2020-06-16 1:08 ` Roman Shaposhnik
2020-06-16 1:10 ` Alistair Francis [this message]
2020-06-16 3:51 ` Bobby Eshleman
2020-06-16 20:16 ` Stefano Stabellini
2020-06-30 1:50 ` Bobby 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=f1bff09cf101b185efe7c2f7d53d64b0aeee84a2.camel@wdc.com \
--to=alistair.francis@wdc.com \
--cc=George.Dunlap@eu.citrix.com \
--cc=andrew.cooper3@citrix.com \
--cc=bobby.eshleman@starlab.io \
--cc=bobbyeshleman@gmail.com \
--cc=dan@dlrobertson.com \
--cc=ian.jackson@eu.citrix.com \
--cc=jbeulich@suse.com \
--cc=julien@xen.org \
--cc=konrad.wilk@oracle.com \
--cc=sstabellini@kernel.org \
--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).