All of lore.kernel.org
 help / color / mirror / Atom feed
From: Borislav Petkov <bp@alien8.de>
To: Vivek Goyal <vgoyal@redhat.com>
Cc: mjg59@srcf.ucam.org, bhe@redhat.com, jkosina@suse.cz,
	greg@kroah.com, kexec@lists.infradead.org,
	linux-kernel@vger.kernel.org, ebiederm@xmission.com,
	hpa@zytor.com, akpm@linux-foundation.org, dyoung@redhat.com,
	chaowang@redhat.com
Subject: Re: [PATCH 13/13] kexec: Support kexec/kdump on EFI systems
Date: Wed, 18 Jun 2014 17:43:55 +0200	[thread overview]
Message-ID: <20140618154355.GH24024@pd.tnic> (raw)
In-Reply-To: <1401800822-27425-14-git-send-email-vgoyal@redhat.com>

On Tue, Jun 03, 2014 at 09:07:02AM -0400, Vivek Goyal wrote:
> This patch does two thigns. It passes EFI run time mappings to second
> kernel in bootparams efi_info. Second kernel parse this info and create
> new mappings in second kernel. That means mappings in first and second
> kernel will be same. This paves the way to enable EFI in kexec kernel.
> 
> This patch also prepares and passes EFI setup data through bootparams.
> This contains bunch of information about various tables and their
> addresses.
> 
> These information gathering and passing has been written along the lines
> of what current kexec-tools is doing to make kexec work with UEFI.
> 
> Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
> ---
>  arch/x86/include/asm/kexec.h       |  4 +-
>  arch/x86/kernel/kexec-bzimage.c    | 40 ++++++++++++----
>  arch/x86/kernel/machine_kexec.c    | 93 ++++++++++++++++++++++++++++++++++++--
>  drivers/firmware/efi/runtime-map.c | 21 +++++++++
>  include/linux/efi.h                | 19 ++++++++
>  5 files changed, 163 insertions(+), 14 deletions(-)
> 
> diff --git a/arch/x86/include/asm/kexec.h b/arch/x86/include/asm/kexec.h
> index 4cbe5f7..d8461cf 100644
> --- a/arch/x86/include/asm/kexec.h
> +++ b/arch/x86/include/asm/kexec.h
> @@ -214,7 +214,9 @@ extern int kexec_setup_cmdline(struct kimage *image,
>  		unsigned long cmdline_offset, char *cmdline,
>  		unsigned long cmdline_len);
>  extern int kexec_setup_boot_parameters(struct kimage *image,
> -					struct boot_params *params);
> +		struct boot_params *params, unsigned long params_load_addr,
> +		unsigned int efi_map_offset, unsigned int efi_map_sz,
> +		unsigned int efi_setup_data_offset);
>  
>  
>  #endif /* __ASSEMBLY__ */
> diff --git a/arch/x86/kernel/kexec-bzimage.c b/arch/x86/kernel/kexec-bzimage.c
> index 8e762d3..55716e1 100644
> --- a/arch/x86/kernel/kexec-bzimage.c
> +++ b/arch/x86/kernel/kexec-bzimage.c
> @@ -15,10 +15,12 @@
>  #include <linux/kexec.h>
>  #include <linux/kernel.h>
>  #include <linux/mm.h>
> +#include <linux/efi.h>
>  
>  #include <asm/bootparam.h>
>  #include <asm/setup.h>
>  #include <asm/crash.h>
> +#include <asm/efi.h>
>  
>  #define MAX_ELFCOREHDR_STR_LEN	30	/* elfcorehdr=0x<64bit-value> */
>  
> @@ -106,7 +108,7 @@ void *bzImage64_load(struct kimage *image, char *kernel,
>  
>  	struct setup_header *header;
>  	int setup_sects, kern16_size, ret = 0;
> -	unsigned long setup_header_size, params_cmdline_sz;
> +	unsigned long setup_header_size, params_cmdline_sz, params_misc_sz;
>  	struct boot_params *params;
>  	unsigned long bootparam_load_addr, kernel_load_addr, initrd_load_addr;
>  	unsigned long purgatory_load_addr;
> @@ -116,6 +118,7 @@ void *bzImage64_load(struct kimage *image, char *kernel,
>  	struct kexec_entry64_regs regs64;
>  	void *stack;
>  	unsigned int setup_hdr_offset = offsetof(struct boot_params, hdr);
> +	unsigned int efi_map_offset, efi_map_sz, efi_setup_data_offset;
>  
>  	header = (struct setup_header *)(kernel + setup_hdr_offset);
>  	setup_sects = header->setup_sects;
> @@ -168,28 +171,47 @@ void *bzImage64_load(struct kimage *image, char *kernel,
>  
>  	pr_debug("Loaded purgatory at 0x%lx\n", purgatory_load_addr);
>  
> -	/* Load Bootparams and cmdline */
> +
> +	/*
> +	 * Load Bootparams and cmdline and space for efi stuff.
> +	 *
> +	 * Allocate memory together for multiple data structures so
> +	 * that they all can go in single area/segment and we don't
> +	 * have to create separate segment for each. Keeps things
> +	 * little bit simple
> +	 */
> +	efi_map_sz = get_efi_runtime_map_size();
> +	efi_map_sz = ALIGN(efi_map_sz, 16);

Yeah, those and the ones below should be inside #ifdef CONFIG_EFI,
strictly speaking. I see you've added dummy functions for the case when
EFI is not enabled to save yourself the ifdeffery. Hm, ok, I guess the
ifdeffery is uglier and the couple of bytes more is simply not worth the
trouble.

:-)

-- 
Regards/Gruss,
    Boris.

Sent from a fat crate under my desk. Formatting is fine.
--

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

WARNING: multiple messages have this Message-ID (diff)
From: Borislav Petkov <bp@alien8.de>
To: Vivek Goyal <vgoyal@redhat.com>
Cc: linux-kernel@vger.kernel.org, kexec@lists.infradead.org,
	ebiederm@xmission.com, hpa@zytor.com, mjg59@srcf.ucam.org,
	greg@kroah.com, jkosina@suse.cz, dyoung@redhat.com,
	chaowang@redhat.com, bhe@redhat.com, akpm@linux-foundation.org
Subject: Re: [PATCH 13/13] kexec: Support kexec/kdump on EFI systems
Date: Wed, 18 Jun 2014 17:43:55 +0200	[thread overview]
Message-ID: <20140618154355.GH24024@pd.tnic> (raw)
In-Reply-To: <1401800822-27425-14-git-send-email-vgoyal@redhat.com>

On Tue, Jun 03, 2014 at 09:07:02AM -0400, Vivek Goyal wrote:
> This patch does two thigns. It passes EFI run time mappings to second
> kernel in bootparams efi_info. Second kernel parse this info and create
> new mappings in second kernel. That means mappings in first and second
> kernel will be same. This paves the way to enable EFI in kexec kernel.
> 
> This patch also prepares and passes EFI setup data through bootparams.
> This contains bunch of information about various tables and their
> addresses.
> 
> These information gathering and passing has been written along the lines
> of what current kexec-tools is doing to make kexec work with UEFI.
> 
> Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
> ---
>  arch/x86/include/asm/kexec.h       |  4 +-
>  arch/x86/kernel/kexec-bzimage.c    | 40 ++++++++++++----
>  arch/x86/kernel/machine_kexec.c    | 93 ++++++++++++++++++++++++++++++++++++--
>  drivers/firmware/efi/runtime-map.c | 21 +++++++++
>  include/linux/efi.h                | 19 ++++++++
>  5 files changed, 163 insertions(+), 14 deletions(-)
> 
> diff --git a/arch/x86/include/asm/kexec.h b/arch/x86/include/asm/kexec.h
> index 4cbe5f7..d8461cf 100644
> --- a/arch/x86/include/asm/kexec.h
> +++ b/arch/x86/include/asm/kexec.h
> @@ -214,7 +214,9 @@ extern int kexec_setup_cmdline(struct kimage *image,
>  		unsigned long cmdline_offset, char *cmdline,
>  		unsigned long cmdline_len);
>  extern int kexec_setup_boot_parameters(struct kimage *image,
> -					struct boot_params *params);
> +		struct boot_params *params, unsigned long params_load_addr,
> +		unsigned int efi_map_offset, unsigned int efi_map_sz,
> +		unsigned int efi_setup_data_offset);
>  
>  
>  #endif /* __ASSEMBLY__ */
> diff --git a/arch/x86/kernel/kexec-bzimage.c b/arch/x86/kernel/kexec-bzimage.c
> index 8e762d3..55716e1 100644
> --- a/arch/x86/kernel/kexec-bzimage.c
> +++ b/arch/x86/kernel/kexec-bzimage.c
> @@ -15,10 +15,12 @@
>  #include <linux/kexec.h>
>  #include <linux/kernel.h>
>  #include <linux/mm.h>
> +#include <linux/efi.h>
>  
>  #include <asm/bootparam.h>
>  #include <asm/setup.h>
>  #include <asm/crash.h>
> +#include <asm/efi.h>
>  
>  #define MAX_ELFCOREHDR_STR_LEN	30	/* elfcorehdr=0x<64bit-value> */
>  
> @@ -106,7 +108,7 @@ void *bzImage64_load(struct kimage *image, char *kernel,
>  
>  	struct setup_header *header;
>  	int setup_sects, kern16_size, ret = 0;
> -	unsigned long setup_header_size, params_cmdline_sz;
> +	unsigned long setup_header_size, params_cmdline_sz, params_misc_sz;
>  	struct boot_params *params;
>  	unsigned long bootparam_load_addr, kernel_load_addr, initrd_load_addr;
>  	unsigned long purgatory_load_addr;
> @@ -116,6 +118,7 @@ void *bzImage64_load(struct kimage *image, char *kernel,
>  	struct kexec_entry64_regs regs64;
>  	void *stack;
>  	unsigned int setup_hdr_offset = offsetof(struct boot_params, hdr);
> +	unsigned int efi_map_offset, efi_map_sz, efi_setup_data_offset;
>  
>  	header = (struct setup_header *)(kernel + setup_hdr_offset);
>  	setup_sects = header->setup_sects;
> @@ -168,28 +171,47 @@ void *bzImage64_load(struct kimage *image, char *kernel,
>  
>  	pr_debug("Loaded purgatory at 0x%lx\n", purgatory_load_addr);
>  
> -	/* Load Bootparams and cmdline */
> +
> +	/*
> +	 * Load Bootparams and cmdline and space for efi stuff.
> +	 *
> +	 * Allocate memory together for multiple data structures so
> +	 * that they all can go in single area/segment and we don't
> +	 * have to create separate segment for each. Keeps things
> +	 * little bit simple
> +	 */
> +	efi_map_sz = get_efi_runtime_map_size();
> +	efi_map_sz = ALIGN(efi_map_sz, 16);

Yeah, those and the ones below should be inside #ifdef CONFIG_EFI,
strictly speaking. I see you've added dummy functions for the case when
EFI is not enabled to save yourself the ifdeffery. Hm, ok, I guess the
ifdeffery is uglier and the couple of bytes more is simply not worth the
trouble.

:-)

-- 
Regards/Gruss,
    Boris.

Sent from a fat crate under my desk. Formatting is fine.
--

  reply	other threads:[~2014-06-18 15:44 UTC|newest]

Thread overview: 214+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-03 13:06 [RFC PATCH 00/13][V3] kexec: A new system call to allow in kernel loading Vivek Goyal
2014-06-03 13:06 ` Vivek Goyal
2014-06-03 13:06 ` [PATCH 01/13] bin2c: Move bin2c in scripts/basic Vivek Goyal
2014-06-03 13:06   ` Vivek Goyal
2014-06-03 16:01   ` Borislav Petkov
2014-06-03 16:01     ` Borislav Petkov
2014-06-03 17:13     ` Vivek Goyal
2014-06-03 17:13       ` Vivek Goyal
2014-06-03 13:06 ` [PATCH 02/13] kernel: Build bin2c based on config option CONFIG_BUILD_BIN2C Vivek Goyal
2014-06-03 13:06   ` Vivek Goyal
2014-06-04  9:13   ` Borislav Petkov
2014-06-04  9:13     ` Borislav Petkov
2014-06-03 13:06 ` [PATCH 03/13] kexec: Move segment verification code in a separate function Vivek Goyal
2014-06-03 13:06   ` Vivek Goyal
2014-06-04  9:32   ` Borislav Petkov
2014-06-04  9:32     ` Borislav Petkov
2014-06-04 18:47     ` Vivek Goyal
2014-06-04 18:47       ` Vivek Goyal
2014-06-04 20:30       ` Borislav Petkov
2014-06-04 20:30         ` Borislav Petkov
2014-06-05 14:05         ` Vivek Goyal
2014-06-05 14:05           ` Vivek Goyal
2014-06-05 14:07           ` Borislav Petkov
2014-06-05 14:07             ` Borislav Petkov
2014-06-03 13:06 ` [PATCH 04/13] resource: Provide new functions to walk through resources Vivek Goyal
2014-06-03 13:06   ` Vivek Goyal
2014-06-04 10:24   ` Borislav Petkov
2014-06-04 10:24     ` Borislav Petkov
2014-06-05 13:58     ` Vivek Goyal
2014-06-05 13:58       ` Vivek Goyal
2014-06-03 13:06 ` [PATCH 05/13] kexec: Make kexec_segment user buffer pointer a union Vivek Goyal
2014-06-03 13:06   ` Vivek Goyal
2014-06-04 10:34   ` Borislav Petkov
2014-06-04 10:34     ` Borislav Petkov
2014-06-03 13:06 ` [PATCH 06/13] kexec: New syscall kexec_file_load() declaration Vivek Goyal
2014-06-03 13:06   ` Vivek Goyal
2014-06-04 15:18   ` Borislav Petkov
2014-06-04 15:18     ` Borislav Petkov
2014-06-05  9:56   ` WANG Chao
2014-06-05  9:56     ` WANG Chao
2014-06-05 15:16     ` Vivek Goyal
2014-06-05 15:16       ` Vivek Goyal
2014-06-05 15:22       ` Vivek Goyal
2014-06-05 15:22         ` Vivek Goyal
2014-06-06  6:34         ` WANG Chao
2014-06-06  6:34           ` WANG Chao
2014-06-03 13:06 ` [PATCH 07/13] kexec: Implementation of new syscall kexec_file_load Vivek Goyal
2014-06-03 13:06   ` Vivek Goyal
2014-06-05 11:15   ` Borislav Petkov
2014-06-05 11:15     ` Borislav Petkov
2014-06-05 20:17     ` Vivek Goyal
2014-06-05 20:17       ` Vivek Goyal
2014-06-06  2:11       ` Borislav Petkov
2014-06-06  2:11         ` Borislav Petkov
2014-06-06 18:02         ` Vivek Goyal
2014-06-06 18:02           ` Vivek Goyal
2014-06-11 14:13           ` Borislav Petkov
2014-06-11 14:13             ` Borislav Petkov
2014-06-11 17:04             ` Vivek Goyal
2014-06-11 17:04               ` Vivek Goyal
2014-06-06  6:56   ` WANG Chao
2014-06-06  6:56     ` WANG Chao
2014-06-06 18:19     ` Vivek Goyal
2014-06-06 18:19       ` Vivek Goyal
2014-06-09  2:11       ` Dave Young
2014-06-09  2:11         ` Dave Young
2014-06-09  5:35         ` WANG Chao
2014-06-09  5:35           ` WANG Chao
2014-06-09 15:41           ` Vivek Goyal
2014-06-09 15:41             ` Vivek Goyal
2014-06-13  7:50             ` Borislav Petkov
2014-06-13  7:50               ` Borislav Petkov
2014-06-13  8:00               ` WANG Chao
2014-06-13  8:00                 ` WANG Chao
2014-06-13  8:10                 ` Borislav Petkov
2014-06-13  8:10                   ` Borislav Petkov
2014-06-13  8:24                   ` WANG Chao
2014-06-13  8:24                     ` WANG Chao
2014-06-13  8:30                     ` Borislav Petkov
2014-06-13  8:30                       ` Borislav Petkov
2014-06-13 12:49                 ` Vivek Goyal
2014-06-13 12:49                   ` Vivek Goyal
2014-06-13 12:46               ` Vivek Goyal
2014-06-13 12:46                 ` Vivek Goyal
2014-06-13 15:36                 ` Borislav Petkov
2014-06-13 15:36                   ` Borislav Petkov
2014-06-16 17:38                   ` Vivek Goyal
2014-06-16 17:38                     ` Vivek Goyal
2014-06-16 20:05                     ` Borislav Petkov
2014-06-16 20:05                       ` Borislav Petkov
2014-06-16 20:53                       ` Vivek Goyal
2014-06-16 20:53                         ` Vivek Goyal
2014-06-16 21:09                         ` Borislav Petkov
2014-06-16 21:09                           ` Borislav Petkov
2014-06-16 21:25                           ` H. Peter Anvin
2014-06-16 21:25                             ` H. Peter Anvin
2014-06-16 21:43                             ` Vivek Goyal
2014-06-16 21:43                               ` Vivek Goyal
2014-06-16 22:10                               ` Borislav Petkov
2014-06-16 22:10                                 ` Borislav Petkov
2014-06-16 22:49                               ` H. Peter Anvin
2014-06-16 22:49                                 ` H. Peter Anvin
2014-06-09 15:30         ` Vivek Goyal
2014-06-09 15:30           ` Vivek Goyal
2014-06-03 13:06 ` [PATCH 08/13] purgatory/sha256: Provide implementation of sha256 in purgaotory context Vivek Goyal
2014-06-03 13:06   ` Vivek Goyal
2014-06-03 13:06 ` [PATCH 09/13] purgatory: Core purgatory functionality Vivek Goyal
2014-06-03 13:06   ` Vivek Goyal
2014-06-05 20:05   ` Borislav Petkov
2014-06-05 20:05     ` Borislav Petkov
2014-06-06 19:51     ` Vivek Goyal
2014-06-06 19:51       ` Vivek Goyal
2014-06-13 10:17       ` Borislav Petkov
2014-06-13 10:17         ` Borislav Petkov
2014-06-16 17:25         ` Vivek Goyal
2014-06-16 17:25           ` Vivek Goyal
2014-06-16 20:10           ` Borislav Petkov
2014-06-16 20:10             ` Borislav Petkov
2014-06-03 13:06 ` [PATCH 10/13] kexec: Load and Relocate purgatory at kernel load time Vivek Goyal
2014-06-03 13:06   ` Vivek Goyal
2014-06-10 16:31   ` Borislav Petkov
2014-06-10 16:31     ` Borislav Petkov
2014-06-11 19:24     ` Vivek Goyal
2014-06-11 19:24       ` Vivek Goyal
2014-06-13 16:14       ` Borislav Petkov
2014-06-13 16:14         ` Borislav Petkov
2014-06-03 13:07 ` [PATCH 11/13] kexec-bzImage: Support for loading bzImage using 64bit entry Vivek Goyal
2014-06-03 13:07   ` Vivek Goyal
2014-06-15 16:35   ` Borislav Petkov
2014-06-15 16:35     ` Borislav Petkov
2014-06-15 16:56     ` H. Peter Anvin
2014-06-15 16:56       ` H. Peter Anvin
2014-06-16 20:06     ` Vivek Goyal
2014-06-16 20:06       ` Vivek Goyal
2014-06-16 20:57       ` Borislav Petkov
2014-06-16 20:57         ` Borislav Petkov
2014-06-16 21:15         ` Vivek Goyal
2014-06-16 21:15           ` Vivek Goyal
2014-06-16 21:27           ` Borislav Petkov
2014-06-16 21:27             ` Borislav Petkov
2014-06-16 21:45             ` Vivek Goyal
2014-06-16 21:45               ` Vivek Goyal
2014-06-24 17:31     ` Vivek Goyal
2014-06-24 17:31       ` Vivek Goyal
2014-06-24 18:23       ` Borislav Petkov
2014-06-24 18:23         ` Borislav Petkov
2014-06-03 13:07 ` [PATCH 12/13] kexec: Support for Kexec on panic using new system call Vivek Goyal
2014-06-03 13:07   ` Vivek Goyal
2014-06-17 21:43   ` Borislav Petkov
2014-06-17 21:43     ` Borislav Petkov
2014-06-18 14:20     ` Vivek Goyal
2014-06-18 14:20       ` Vivek Goyal
2014-06-03 13:07 ` [PATCH 13/13] kexec: Support kexec/kdump on EFI systems Vivek Goyal
2014-06-03 13:07   ` Vivek Goyal
2014-06-18 15:43   ` Borislav Petkov [this message]
2014-06-18 15:43     ` Borislav Petkov
2014-06-18 16:06   ` Borislav Petkov
2014-06-18 16:06     ` Borislav Petkov
2014-06-18 16:06     ` Borislav Petkov
2014-06-18 17:39     ` Vivek Goyal
2014-06-18 17:39       ` Vivek Goyal
2014-06-18 17:39       ` Vivek Goyal
2014-06-03 13:12 ` [RFC PATCH 00/13][V3] kexec: A new system call to allow in kernel loading Vivek Goyal
2014-06-03 13:12   ` Vivek Goyal
2014-06-04  9:22   ` WANG Chao
2014-06-04  9:22     ` WANG Chao
2014-06-04 17:50     ` Vivek Goyal
2014-06-04 17:50       ` Vivek Goyal
2014-06-04 19:39       ` Michael Kerrisk
2014-06-04 19:39         ` Michael Kerrisk
2014-06-04 19:39         ` Michael Kerrisk
2014-06-05 14:04         ` Vivek Goyal
2014-06-05 14:04           ` Vivek Goyal
2014-06-05 14:04           ` Vivek Goyal
2014-06-06  5:45           ` Michael Kerrisk (man-pages)
2014-06-06  5:45             ` Michael Kerrisk (man-pages)
2014-06-06  5:45             ` Michael Kerrisk (man-pages)
2014-06-06 18:04             ` Vivek Goyal
2014-06-06 18:04               ` Vivek Goyal
2014-06-06 18:04               ` Vivek Goyal
2014-06-05  8:31   ` Dave Young
2014-06-05  8:31     ` Dave Young
2014-06-05 15:01     ` Vivek Goyal
2014-06-05 15:01       ` Vivek Goyal
2014-06-06  7:37       ` Dave Young
2014-06-06  7:37         ` Dave Young
2014-06-06 20:04         ` Vivek Goyal
2014-06-06 20:04           ` Vivek Goyal
2014-06-09  1:57           ` Dave Young
2014-06-09  1:57             ` Dave Young
2014-06-06 20:37         ` H. Peter Anvin
2014-06-06 20:37           ` H. Peter Anvin
2014-06-06 20:58           ` Matt Fleming
2014-06-06 20:58             ` Matt Fleming
2014-06-06 21:00             ` H. Peter Anvin
2014-06-06 21:00               ` H. Peter Anvin
2014-06-06 21:02               ` Matt Fleming
2014-06-06 21:02                 ` Matt Fleming
2014-06-12  5:42 ` Dave Young
2014-06-12  5:42   ` Dave Young
2014-06-12 12:36   ` Vivek Goyal
2014-06-12 12:36     ` Vivek Goyal
2014-06-17 14:24   ` Vivek Goyal
2014-06-17 14:24     ` Vivek Goyal
2014-06-18  1:45     ` Dave Young
2014-06-18  1:45       ` Dave Young
2014-06-18  1:52       ` Dave Young
2014-06-18  1:52         ` Dave Young
2014-06-18 12:40         ` Vivek Goyal
2014-06-18 12:40           ` Vivek Goyal
2014-06-16 21:13 ` Borislav Petkov
2014-06-16 21:13   ` Borislav Petkov
2014-06-17 13:24   ` Vivek Goyal
2014-06-17 13:24     ` Vivek Goyal

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=20140618154355.GH24024@pd.tnic \
    --to=bp@alien8.de \
    --cc=akpm@linux-foundation.org \
    --cc=bhe@redhat.com \
    --cc=chaowang@redhat.com \
    --cc=dyoung@redhat.com \
    --cc=ebiederm@xmission.com \
    --cc=greg@kroah.com \
    --cc=hpa@zytor.com \
    --cc=jkosina@suse.cz \
    --cc=kexec@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mjg59@srcf.ucam.org \
    --cc=vgoyal@redhat.com \
    /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.