All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julien Grall <julien@xen.org>
To: Anthony PERARD <anthony.perard@citrix.com>,
	xen-devel@lists.xenproject.org
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
	"George Dunlap" <george.dunlap@citrix.com>,
	"Jan Beulich" <jbeulich@suse.com>,
	"Stefano Stabellini" <sstabellini@kernel.org>,
	"Wei Liu" <wl@xen.org>,
	"Volodymyr Babchuk" <Volodymyr_Babchuk@epam.com>,
	"Bertrand Marquis" <bertrand.marquis@arm.com>,
	"Roger Pau Monné" <roger.pau@citrix.com>
Subject: Re: [XEN PATCH v9 04/30] build: set ALL_OBJS in main Makefile; move prelink.o to main Makefile
Date: Thu, 17 Feb 2022 19:30:39 +0000	[thread overview]
Message-ID: <b7f3e614-eebb-8247-c540-8e8a853c679c@xen.org> (raw)
In-Reply-To: <20220125110103.3527686-5-anthony.perard@citrix.com>

Hi Anthony,

On 25/01/2022 11:00, Anthony PERARD wrote:
> This is to avoid arch/$arch/Makefile having to recurse into parents
> directories.
> 
> This avoid duplication of the logic to build prelink.o between arches.
> 
> In order to do that, we cut the $(TARGET) target in the main Makefile in
> two, there is a "prepare" phase/target runned before starting to build
> "prelink.o" which will prepare "include/" among other things, then all
> the $(ALL_OBJS) will be generated in order to build "prelink.o" and
> finally $(TARGET) will be generated by calling into "arch/*/" to make
> $(TARGET).
> 
> Now we don't need to prefix $(ALL_OBJS) with $(BASEDIR) as it is now
> only used from the main Makefile. Other changes is to use "$<" instead
> of spelling "prelink.o" in the target "$(TARGET)" in both
> arch/*/Makefile.
> 
> Beside "prelink.o" been at a different location, no other functional
> change intended.
> 
> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>

Acked-by: Julien Grall <jgrall@amazon.com>

Cheers,

> ---
> 
> Notes:
>      v9:
>      - set ALL_OBJS and ALL_LIBS on make command line instead of exporting
>        them.
>      - arm/Rules.mk, have one rule instead of two for head.o
>      - fix typo in title
>      
>      v8:
>      - rebased
>      - move Arm specific dependencies between $(ALL_OBJS) objects (head.o)
>        into Arm specific "Rules.mk" instead of the common "build.mk".
>      
>      v7:
>      - change, now things are in build.mk: no more prepare phase needed
> 
>   xen/Makefile          | 12 +++++++++++-
>   xen/Rules.mk          | 13 -------------
>   xen/arch/arm/Makefile | 31 ++++---------------------------
>   xen/arch/arm/Rules.mk |  4 ++++
>   xen/arch/arm/arch.mk  |  2 ++
>   xen/arch/x86/Makefile | 29 ++++++-----------------------
>   xen/arch/x86/arch.mk  |  2 ++
>   xen/build.mk          | 18 ++++++++++++++++++
>   8 files changed, 47 insertions(+), 64 deletions(-)
> 
> diff --git a/xen/Makefile b/xen/Makefile
> index fb37043d08e0..d953dc50ac6a 100644
> --- a/xen/Makefile
> +++ b/xen/Makefile
> @@ -285,6 +285,16 @@ CFLAGS += -flto
>   LDFLAGS-$(CONFIG_CC_IS_CLANG) += -plugin LLVMgold.so
>   endif
>   
> +# Note that link order matters!
> +ALL_OBJS-y                := common/built_in.o
> +ALL_OBJS-y                += drivers/built_in.o
> +ALL_OBJS-y                += lib/built_in.o
> +ALL_OBJS-y                += xsm/built_in.o
> +ALL_OBJS-y                += arch/$(TARGET_ARCH)/built_in.o
> +ALL_OBJS-$(CONFIG_CRYPTO) += crypto/built_in.o
> +
> +ALL_LIBS-y                := lib/lib.a
> +
>   include $(BASEDIR)/arch/$(TARGET_ARCH)/arch.mk
>   
>   # define new variables to avoid the ones defined in Config.mk
> @@ -407,7 +417,7 @@ $(TARGET): FORCE
>   	$(MAKE) -f $(BASEDIR)/Rules.mk -C include
>   	$(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) include
>   	$(MAKE) -f $(BASEDIR)/Rules.mk arch/$(TARGET_ARCH)/include/asm/asm-offsets.h
> -	$(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) MKRELOC=$(MKRELOC) $@
> +	$(MAKE) -f $(BASEDIR)/Rules.mk MKRELOC=$(MKRELOC) "ALL_OBJS=$(ALL_OBJS-y)" "ALL_LIBS=$(ALL_LIBS-y)" $@
>   
>   SUBDIRS = xsm arch/$(TARGET_ARCH) common drivers lib test
>   define all_sources
> diff --git a/xen/Rules.mk b/xen/Rules.mk
> index 7b8b9047cfd5..77d359bedaf8 100644
> --- a/xen/Rules.mk
> +++ b/xen/Rules.mk
> @@ -8,25 +8,12 @@
>   include $(XEN_ROOT)/Config.mk
>   include $(BASEDIR)/scripts/Kbuild.include
>   
> -# Note that link order matters!
> -ALL_OBJS-y               += $(BASEDIR)/common/built_in.o
> -ALL_OBJS-y               += $(BASEDIR)/drivers/built_in.o
> -ALL_OBJS-y               += $(BASEDIR)/lib/built_in.o
> -ALL_OBJS-y               += $(BASEDIR)/xsm/built_in.o
> -ALL_OBJS-y               += $(BASEDIR)/arch/$(TARGET_ARCH)/built_in.o
> -ALL_OBJS-$(CONFIG_CRYPTO)   += $(BASEDIR)/crypto/built_in.o
> -
> -ALL_LIBS-y               := $(BASEDIR)/lib/lib.a
> -
>   # Initialise some variables
>   lib-y :=
>   targets :=
>   CFLAGS-y :=
>   AFLAGS-y :=
>   
> -ALL_OBJS := $(ALL_OBJS-y)
> -ALL_LIBS := $(ALL_LIBS-y)
> -
>   SPECIAL_DATA_SECTIONS := rodata $(foreach a,1 2 4 8 16, \
>                                               $(foreach w,1 2 4, \
>                                                           rodata.str$(w).$(a)) \
> diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
> index d0dee10102b6..14952275772b 100644
> --- a/xen/arch/arm/Makefile
> +++ b/xen/arch/arm/Makefile
> @@ -75,14 +75,6 @@ ifneq ($(CONFIG_DTB_FILE),"")
>   obj-y += dtb.o
>   endif
>   
> -ALL_OBJS := $(TARGET_SUBARCH)/head.o $(ALL_OBJS)
> -
> -# head.o is built by descending into the sub-directory, depends on the part of
> -# $(ALL_OBJS) that will eventually recurse into $(TARGET_SUBARCH)/ and build
> -# head.o
> -$(TARGET_SUBARCH)/head.o: $(BASEDIR)/arch/arm/built_in.o
> -$(TARGET_SUBARCH)/head.o: ;
> -
>   ifdef CONFIG_LIVEPATCH
>   all_symbols = --all-symbols
>   ifdef CONFIG_FAST_SYMBOL_LOOKUP
> @@ -98,33 +90,18 @@ ifeq ($(CONFIG_ARM_64),y)
>   	ln -sf $(@F) $@.efi
>   endif
>   
> -ifeq ($(CONFIG_LTO),y)
> -# Gather all LTO objects together
> -prelink_lto.o: $(ALL_OBJS) $(ALL_LIBS)
> -	$(LD_LTO) -r -o $@ $(filter-out %.a,$^) --start-group $(filter %.a,$^) --end-group
> -
> -# Link it with all the binary objects
> -prelink.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) prelink_lto.o
> -	$(call if_changed,ld)
> -else
> -prelink.o: $(ALL_OBJS) $(ALL_LIBS) FORCE
> -	$(call if_changed,ld)
> -endif
> -
> -targets += prelink.o
> -
> -$(TARGET)-syms: prelink.o xen.lds
> -	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o \
> +$(TARGET)-syms: $(BASEDIR)/prelink.o xen.lds
> +	$(LD) $(XEN_LDFLAGS) -T xen.lds -N $< \
>   	    $(BASEDIR)/common/symbols-dummy.o -o $(@D)/.$(@F).0
>   	$(NM) -pa --format=sysv $(@D)/.$(@F).0 \
>   		| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort >$(@D)/.$(@F).0.S
>   	$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).0.o
> -	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o \
> +	$(LD) $(XEN_LDFLAGS) -T xen.lds -N $< \
>   	    $(@D)/.$(@F).0.o -o $(@D)/.$(@F).1
>   	$(NM) -pa --format=sysv $(@D)/.$(@F).1 \
>   		| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort >$(@D)/.$(@F).1.S
>   	$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).1.o
> -	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
> +	$(LD) $(XEN_LDFLAGS) -T xen.lds -N $< $(build_id_linker) \
>   	    $(@D)/.$(@F).1.o -o $@
>   	$(NM) -pa --format=sysv $(@D)/$(@F) \
>   		| $(BASEDIR)/tools/symbols --all-symbols --xensyms --sysv --sort \
> diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
> index e69de29bb2d1..c6463a433efd 100644
> --- a/xen/arch/arm/Rules.mk
> +++ b/xen/arch/arm/Rules.mk
> @@ -0,0 +1,4 @@
> +# head.o is built by descending into arch/arm/$(TARGET_SUBARCH), depends on the
> +# part of $(ALL_OBJS) that will eventually recurse into $(TARGET_SUBARCH)/ and
> +# build head.o
> +arch/arm/$(TARGET_SUBARCH)/head.o: arch/arm/built_in.o ;
> diff --git a/xen/arch/arm/arch.mk b/xen/arch/arm/arch.mk
> index c3ac443b3788..ba3f140e2ea7 100644
> --- a/xen/arch/arm/arch.mk
> +++ b/xen/arch/arm/arch.mk
> @@ -26,3 +26,5 @@ ifeq ($(CONFIG_ARM64_ERRATUM_843419),y)
>           LDFLAGS += --fix-cortex-a53-843419
>       endif
>   endif
> +
> +ALL_OBJS-y := arch/arm/$(TARGET_SUBARCH)/head.o $(ALL_OBJS-y)
> diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
> index 9fc884813cb5..a830b5791e8b 100644
> --- a/xen/arch/x86/Makefile
> +++ b/xen/arch/x86/Makefile
> @@ -123,37 +123,20 @@ $(TARGET): $(TARGET)-syms $(efi-y) boot/mkelf32
>   
>   CFLAGS-$(XEN_BUILD_EFI) += -DXEN_BUILD_EFI
>   
> -ALL_OBJS := $(BASEDIR)/arch/x86/boot/built_in.o $(BASEDIR)/arch/x86/efi/built_in.o $(ALL_OBJS)
> -
> -ifeq ($(CONFIG_LTO),y)
> -# Gather all LTO objects together
> -prelink_lto.o: $(ALL_OBJS) $(ALL_LIBS)
> -	$(LD_LTO) -r -o $@ $(filter-out %.a,$^) --start-group $(filter %.a,$^) --end-group
> -
> -# Link it with all the binary objects
> -prelink.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) prelink_lto.o FORCE
> -	$(call if_changed,ld)
> -else
> -prelink.o: $(ALL_OBJS) $(ALL_LIBS) FORCE
> -	$(call if_changed,ld)
> -endif
> -
> -targets += prelink.o
> -
> -$(TARGET)-syms: prelink.o xen.lds
> -	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
> +$(TARGET)-syms: $(BASEDIR)/prelink.o xen.lds
> +	$(LD) $(XEN_LDFLAGS) -T xen.lds -N $< $(build_id_linker) \
>   	    $(BASEDIR)/common/symbols-dummy.o -o $(@D)/.$(@F).0
>   	$(NM) -pa --format=sysv $(@D)/.$(@F).0 \
>   		| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort \
>   		>$(@D)/.$(@F).0.S
>   	$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).0.o
> -	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
> +	$(LD) $(XEN_LDFLAGS) -T xen.lds -N $< $(build_id_linker) \
>   	    $(@D)/.$(@F).0.o -o $(@D)/.$(@F).1
>   	$(NM) -pa --format=sysv $(@D)/.$(@F).1 \
>   		| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort $(syms-warn-dup-y) \
>   		>$(@D)/.$(@F).1.S
>   	$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).1.o
> -	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
> +	$(LD) $(XEN_LDFLAGS) -T xen.lds -N $< $(build_id_linker) \
>   	    $(@D)/.$(@F).1.o -o $@
>   	$(NM) -pa --format=sysv $(@D)/$(@F) \
>   		| $(BASEDIR)/tools/symbols --all-symbols --xensyms --sysv --sort \
> @@ -206,7 +189,7 @@ note_file_option ?= $(note_file)
>   
>   ifeq ($(XEN_BUILD_PE),y)
>   extra-y += efi.lds
> -$(TARGET).efi: prelink.o $(note_file) efi.lds efi/relocs-dummy.o efi/mkreloc
> +$(TARGET).efi: $(BASEDIR)/prelink.o $(note_file) efi.lds efi/relocs-dummy.o efi/mkreloc
>   ifeq ($(CONFIG_DEBUG_INFO),y)
>   	$(if $(filter --strip-debug,$(EFI_LDFLAGS)),echo,:) "Will strip debug info from $(@F)"
>   endif
> @@ -235,7 +218,7 @@ $(TARGET).efi: FORCE
>   	echo '$(if $(filter y,$(XEN_BUILD_EFI)),xen.efi generation,EFI support) disabled'
>   endif
>   
> -efi/buildid.o efi/relocs-dummy.o: $(BASEDIR)/arch/x86/efi/built_in.o
> +# These should already have been rebuilt when building the prerequisite of "prelink.o"
>   efi/buildid.o efi/relocs-dummy.o: ;
>   
>   .PHONY: include
> diff --git a/xen/arch/x86/arch.mk b/xen/arch/x86/arch.mk
> index fa7cf3844362..bfd5eaa35f25 100644
> --- a/xen/arch/x86/arch.mk
> +++ b/xen/arch/x86/arch.mk
> @@ -104,3 +104,5 @@ endif
>   
>   # Set up the assembler include path properly for older toolchains.
>   CFLAGS += -Wa,-I$(BASEDIR)/include
> +
> +ALL_OBJS-y := arch/x86/boot/built_in.o arch/x86/efi/built_in.o $(ALL_OBJS-y)
> diff --git a/xen/build.mk b/xen/build.mk
> index 3d7a91df22d1..af1b28311393 100644
> --- a/xen/build.mk
> +++ b/xen/build.mk
> @@ -59,3 +59,21 @@ arch/$(TARGET_ARCH)/include/asm/asm-offsets.h: asm-offsets.s
>   	  sed -rne "/^[^#].*==>/{s:.*==>(.*)<==.*:\1:; s: [\$$#]: :; p;}"; \
>   	  echo ""; \
>   	  echo "#endif") <$< >$@
> +
> +ifeq ($(CONFIG_LTO),y)
> +# Gather all LTO objects together
> +prelink_lto.o: $(ALL_OBJS) $(ALL_LIBS)
> +	$(LD_LTO) -r -o $@ $(filter-out %.a,$^) --start-group $(filter %.a,$^) --end-group
> +
> +# Link it with all the binary objects
> +prelink.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) prelink_lto.o FORCE
> +	$(call if_changed,ld)
> +else
> +prelink.o: $(ALL_OBJS) $(ALL_LIBS) FORCE
> +	$(call if_changed,ld)
> +endif
> +
> +targets += prelink.o
> +
> +$(TARGET): prelink.o FORCE
> +	$(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) $@

-- 
Julien Grall


  parent reply	other threads:[~2022-02-17 19:30 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-25 11:00 [XEN PATCH v9 00/30] xen: Build system improvements, now with out-of-tree build! Anthony PERARD
2022-01-25 11:00 ` [XEN PATCH v9 01/30] build: set XEN_BUILD_EFI earlier Anthony PERARD
2022-01-27 15:35   ` Jan Beulich
2022-01-25 11:00 ` [XEN PATCH v9 02/30] build: avoid re-executing the main Makefile by introducing build.mk Anthony PERARD
2022-01-25 11:00 ` [XEN PATCH v9 03/30] build: fix exported variable name CFLAGS_stack_boundary Anthony PERARD
2022-01-27 15:36   ` Jan Beulich
2022-01-28 11:14   ` Jan Beulich
2022-01-28 15:04     ` Anthony PERARD
2022-01-31  8:57       ` Jan Beulich
2022-01-25 11:00 ` [XEN PATCH v9 04/30] build: set ALL_OBJS in main Makefile; move prelink.o to main Makefile Anthony PERARD
2022-01-27 15:50   ` Jan Beulich
2022-01-28 11:32     ` Anthony PERARD
2022-01-28 11:41       ` Jan Beulich
2022-02-17 16:29         ` Julien Grall
2022-02-17 19:29           ` Julien Grall
2022-02-17 15:58   ` Ping: " Anthony PERARD
2022-02-17 19:30   ` Julien Grall [this message]
2022-01-25 11:00 ` [XEN PATCH v9 05/30] build: prepare to always invoke $(MAKE) from xen/, use $(obj) Anthony PERARD
2022-01-25 16:06   ` Daniel P. Smith
2022-01-25 11:00 ` [XEN PATCH v9 06/30] build: rework test/livepatch/Makefile Anthony PERARD
2022-02-17 15:42   ` Ping: " Anthony PERARD
2022-03-08 14:15   ` Ross Lagerwall
2022-01-25 11:00 ` [XEN PATCH v9 07/30] build: rework cloc recipe Anthony PERARD
2022-01-25 11:00 ` [XEN PATCH v9 08/30] build: fix enforce unique symbols for recent clang version Anthony PERARD
2022-01-27 15:57   ` Jan Beulich
2022-01-28 12:03     ` Anthony PERARD
2022-01-28 12:43       ` Jan Beulich
2022-01-28 15:52         ` Anthony PERARD
2022-01-31  8:59           ` Jan Beulich
2022-01-25 11:00 ` [XEN PATCH v9 09/30] build: build everything from the root dir, use obj=$subdir Anthony PERARD
2022-01-25 16:07   ` Daniel P. Smith
2022-01-25 11:00 ` [XEN PATCH v9 10/30] build: introduce if_changed_deps Anthony PERARD
2022-01-25 11:00 ` [XEN PATCH v9 11/30] build: rename __LINKER__ to LINKER_SCRIPT Anthony PERARD
2022-01-25 11:00 ` [XEN PATCH v9 12/30] build: hook kconfig into xen build system Anthony PERARD
2022-01-25 11:00 ` [XEN PATCH v9 13/30] xen/tools/kconfig: fix build with -Wdeclaration-after-statement Anthony PERARD
2022-01-25 11:00 ` [XEN PATCH v9 14/30] build: remove KBUILD_ specific from Makefile.host Anthony PERARD
2022-01-25 11:00 ` [XEN PATCH v9 15/30] build: handle always-y and hostprogs-always-y Anthony PERARD
2022-01-25 11:00 ` [XEN PATCH v9 16/30] build: start building the tools with the main makefiles Anthony PERARD
2022-01-25 11:00 ` [XEN PATCH v9 17/30] build: add headers path to CFLAGS once for all archs Anthony PERARD
2022-01-25 11:00 ` [XEN PATCH v9 18/30] build: generate x86's asm-macros.h with filechk Anthony PERARD
2022-01-25 11:00 ` [XEN PATCH v9 19/30] build: clean-up "clean" rules of duplication Anthony PERARD
2022-01-25 16:09   ` Daniel P. Smith
2022-01-25 11:00 ` [XEN PATCH v9 20/30] build: rework "clean" to clean from the root dir Anthony PERARD
2022-01-25 16:09   ` Daniel P. Smith
2022-02-17 19:32   ` Julien Grall
2022-01-25 11:00 ` [XEN PATCH v9 21/30] build: use main rune to build host binary x86's mkelf32 and mkreloc Anthony PERARD
2022-01-25 11:00 ` [XEN PATCH v9 22/30] build: rework coverage and ubsan CFLAGS handling Anthony PERARD
2022-01-25 11:00 ` [XEN PATCH v9 23/30] build,x86: remove the need for build32.mk Anthony PERARD
2022-03-03 10:29   ` Jan Beulich
2022-03-03 15:31     ` Anthony PERARD
2022-01-25 11:00 ` [XEN PATCH v9 24/30] build: grab common EFI source files in arch specific dir Anthony PERARD
2022-02-08 21:08   ` Julien Grall
2022-03-03 10:37   ` Jan Beulich
2022-03-03 15:41     ` Anthony PERARD
2022-03-03 16:01       ` Jan Beulich
2022-03-03 16:50         ` Anthony PERARD
2022-03-03 16:54           ` Jan Beulich
2022-01-25 11:00 ` [XEN PATCH v9 25/30] build: replace $(BASEDIR) by $(objtree) Anthony PERARD
2022-01-25 11:00 ` [XEN PATCH v9 26/30] build: replace $(BASEDIR) and use $(srctree) Anthony PERARD
2022-01-25 16:10   ` Daniel P. Smith
2022-03-03 15:17   ` Anthony PERARD
2022-01-25 11:01 ` [XEN PATCH v9 27/30] build: rework "headers*.chk" prerequisite in include/ Anthony PERARD
2022-03-03 10:44   ` Jan Beulich
2022-01-25 11:01 ` [XEN PATCH v9 28/30] build: specify source tree in include/ for prerequisite Anthony PERARD
2022-03-03 10:53   ` Jan Beulich
2022-01-25 11:01 ` [XEN PATCH v9 29/30] build: shuffle main Makefile Anthony PERARD
2022-03-03 11:06   ` Jan Beulich
2022-01-25 11:01 ` [XEN PATCH v9 30/30] build: adding out-of-tree support to the xen build Anthony PERARD
2022-01-25 11:37   ` Anthony PERARD
2022-02-17 19:35     ` Julien Grall
2022-01-25 16:11   ` Daniel P. Smith

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=b7f3e614-eebb-8247-c540-8e8a853c679c@xen.org \
    --to=julien@xen.org \
    --cc=Volodymyr_Babchuk@epam.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=anthony.perard@citrix.com \
    --cc=bertrand.marquis@arm.com \
    --cc=george.dunlap@citrix.com \
    --cc=jbeulich@suse.com \
    --cc=roger.pau@citrix.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 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.