All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <marc.zyngier@arm.com>
To: Andrew Jones <drjones@redhat.com>
Cc: linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	kvmarm@lists.cs.columbia.edu,
	Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will.deacon@arm.com>, Jon Masters <jcm@redhat.com>,
	Robin Murphy <robin.murphy@arm.com>
Subject: Re: [PATCH v2 07/16] arm/arm64: KVM: Add PSCI version selection API
Date: Wed, 31 Jan 2018 17:45:56 +0000	[thread overview]
Message-ID: <1de5a7a8-8118-597f-d1a3-14c406b57b0e@arm.com> (raw)
In-Reply-To: <20180131173824.leyfy4vlqq3vmd37@kamzik.brq.redhat.com>

On 31/01/18 17:38, Andrew Jones wrote:
> On Mon, Jan 29, 2018 at 05:45:50PM +0000, Marc Zyngier wrote:
>> Although we've implemented PSCI 1.0 and 1.1, nothing can select them
>> Since all the new PSCI versions are backward compatible, we decide to
>> default to the latest version of the PSCI implementation. This is no
>> different from doing a firmware upgrade on KVM.
>>
>> But in order to give a chance to hypothetical badly implemented guests
>> that would have a fit by discovering something other than PSCI 0.2,
>> let's provide a new API that allows userspace to pick one particular
>> version of the API.
>>
>> This is implemented as a new class of "firmware" registers, where
>> we expose the PSCI version. This allows the PSCI version to be
>> save/restored as part of a guest migration, and also set to
>> any supported version if the guest requires it.
>>
>> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
>> ---
>>  Documentation/virtual/kvm/api.txt      |  3 +-
>>  Documentation/virtual/kvm/arm/psci.txt | 28 ++++++++++++++
>>  arch/arm/include/asm/kvm_host.h        |  3 ++
>>  arch/arm/include/uapi/asm/kvm.h        |  6 +++
>>  arch/arm/kvm/guest.c                   | 13 +++++++
>>  arch/arm64/include/asm/kvm_host.h      |  3 ++
>>  arch/arm64/include/uapi/asm/kvm.h      |  6 +++
>>  arch/arm64/kvm/guest.c                 | 14 ++++++-
>>  include/kvm/arm_psci.h                 |  9 +++++
>>  virt/kvm/arm/psci.c                    | 68 +++++++++++++++++++++++++++++++++-
>>  10 files changed, 149 insertions(+), 4 deletions(-)
>>  create mode 100644 Documentation/virtual/kvm/arm/psci.txt
>>
>> diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
>> index 57d3ee9e4bde..334905202141 100644
>> --- a/Documentation/virtual/kvm/api.txt
>> +++ b/Documentation/virtual/kvm/api.txt
>> @@ -2493,7 +2493,8 @@ Possible features:
>>  	  and execute guest code when KVM_RUN is called.
>>  	- KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode.
>>  	  Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only).
>> -	- KVM_ARM_VCPU_PSCI_0_2: Emulate PSCI v0.2 for the CPU.
>> +	- KVM_ARM_VCPU_PSCI_0_2: Emulate PSCI v0.2 (or a future revision
>> +          backward compatible with v0.2) for the CPU.
>>  	  Depends on KVM_CAP_ARM_PSCI_0_2.
>>  	- KVM_ARM_VCPU_PMU_V3: Emulate PMUv3 for the CPU.
>>  	  Depends on KVM_CAP_ARM_PMU_V3.
>> diff --git a/Documentation/virtual/kvm/arm/psci.txt b/Documentation/virtual/kvm/arm/psci.txt
>> new file mode 100644
>> index 000000000000..2e49a4e9f084
>> --- /dev/null
>> +++ b/Documentation/virtual/kvm/arm/psci.txt
>> @@ -0,0 +1,28 @@
>> +KVM implements the PSCI (Power State Coordination Interface)
>> +specification in order to provide services such as CPU on/off, reset
>> +and power-off to the guest.
>> +
>> +The PSCI specification is regularly updated to provide new features,
>> +and KVM implements these updates if they make sense from a virtualization
>> +point of view.
>> +
>> +This means that a guest booted on two different versions of KVM can
>> +observe two different "firmware" revisions. This could cause issues if
>> +a given guest is tied to a particular PSCI revision (unlikely), or if
>> +a migration causes a different PSCI version to be exposed out of the
>> +blue to an unsuspecting guest.
>> +
>> +In order to remedy this situation, KVM exposes a set of "firmware
>> +pseuodo-registers" that can be manipulated using the GET/SET_ONE_REG
>> +interface. These registers can be saved/restored by userspace, and set
>> +to a convenient value if required.
> 
> Userspace can save/restore any state it deems necessary. 

Only if it has access to it. Until now, that wasn't an option.

> Is there another
> reason to invent a pseudo register? Considering the PSCI version is VM
> state, then maybe a VM "device" attribute[*], like s390 use, would fit
> better. 

Possibly. But that means current userspace won't engage the mitigation
by default, and that's pretty bad.

> Or, if keeping it VCPU state has some benefit, then we already
> have VCPU device attribute support for ARM that we could extend with
> another attribute. An advantage of using the device-attr API is that it
> has KVM_HAS_DEVICE_ATTR, allowing the new attribute support to be probed.
> How should userspace check if the pseudo register is supported? Maybe
> by just failing with NOT_SUPPORTED to get/set it?
> 
> [*] Documentation/virtual/kvm/devices/vm.txt

Frankly, I have no opinion on the way to implement it. My only
requirement is that it becomes enabled by default, without any userspace
change.

> 
>> +
>> +The following register is defined:
>> +
>> +* KVM_REG_ARM_PSCI_VERSION:
>> +
>> +  - Only valid if the vcpu has KVM_ARM_VCPU_PSCI_0_2 feature set
>> +  - Returns the current PSCI version on GET_ONE_REG
>> +  - Allows any supported PSCI version compatible with v0.2 to be set
>> +    with SET_ONE_REG
>> +  - Affects the whole VM (even if the register view is per-vcpu)
> 
> 
>> diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h
>> index acbf9ec7b396..e9d57060d88c 100644
>> --- a/arch/arm/include/asm/kvm_host.h
>> +++ b/arch/arm/include/asm/kvm_host.h
>> @@ -75,6 +75,9 @@ struct kvm_arch {
>>  	/* Interrupt controller */
>>  	struct vgic_dist	vgic;
>>  	int max_vcpus;
>> +
>> +	/* Mandated version of PSCI */
>> +	u32 psci_version;
>>  };
>>  
>>  #define KVM_NR_MEM_OBJS     40
>> diff --git a/arch/arm/include/uapi/asm/kvm.h b/arch/arm/include/uapi/asm/kvm.h
>> index 6edd177bb1c7..47dfc99f5cd0 100644
>> --- a/arch/arm/include/uapi/asm/kvm.h
>> +++ b/arch/arm/include/uapi/asm/kvm.h
>> @@ -186,6 +186,12 @@ struct kvm_arch_memory_slot {
>>  #define KVM_REG_ARM_VFP_FPINST		0x1009
>>  #define KVM_REG_ARM_VFP_FPINST2		0x100A
>>  
>> +/* KVM-as-firmware specific pseudo-registers */
>> +#define KVM_REG_ARM_FW			(0x0014 << KVM_REG_ARM_COPROC_SHIFT)
> 
> Is this 0x14 documented somewhere? I'm just curious how the space for
> pseudo registers is reserved. Is there a common place that we should
> document that 0x14 is for the firmware (if it's not documented there
> already)?

No. First come, first served.

	M.
-- 
Jazz is not dead. It just smells funny...

WARNING: multiple messages have this Message-ID (diff)
From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 07/16] arm/arm64: KVM: Add PSCI version selection API
Date: Wed, 31 Jan 2018 17:45:56 +0000	[thread overview]
Message-ID: <1de5a7a8-8118-597f-d1a3-14c406b57b0e@arm.com> (raw)
In-Reply-To: <20180131173824.leyfy4vlqq3vmd37@kamzik.brq.redhat.com>

On 31/01/18 17:38, Andrew Jones wrote:
> On Mon, Jan 29, 2018 at 05:45:50PM +0000, Marc Zyngier wrote:
>> Although we've implemented PSCI 1.0 and 1.1, nothing can select them
>> Since all the new PSCI versions are backward compatible, we decide to
>> default to the latest version of the PSCI implementation. This is no
>> different from doing a firmware upgrade on KVM.
>>
>> But in order to give a chance to hypothetical badly implemented guests
>> that would have a fit by discovering something other than PSCI 0.2,
>> let's provide a new API that allows userspace to pick one particular
>> version of the API.
>>
>> This is implemented as a new class of "firmware" registers, where
>> we expose the PSCI version. This allows the PSCI version to be
>> save/restored as part of a guest migration, and also set to
>> any supported version if the guest requires it.
>>
>> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
>> ---
>>  Documentation/virtual/kvm/api.txt      |  3 +-
>>  Documentation/virtual/kvm/arm/psci.txt | 28 ++++++++++++++
>>  arch/arm/include/asm/kvm_host.h        |  3 ++
>>  arch/arm/include/uapi/asm/kvm.h        |  6 +++
>>  arch/arm/kvm/guest.c                   | 13 +++++++
>>  arch/arm64/include/asm/kvm_host.h      |  3 ++
>>  arch/arm64/include/uapi/asm/kvm.h      |  6 +++
>>  arch/arm64/kvm/guest.c                 | 14 ++++++-
>>  include/kvm/arm_psci.h                 |  9 +++++
>>  virt/kvm/arm/psci.c                    | 68 +++++++++++++++++++++++++++++++++-
>>  10 files changed, 149 insertions(+), 4 deletions(-)
>>  create mode 100644 Documentation/virtual/kvm/arm/psci.txt
>>
>> diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
>> index 57d3ee9e4bde..334905202141 100644
>> --- a/Documentation/virtual/kvm/api.txt
>> +++ b/Documentation/virtual/kvm/api.txt
>> @@ -2493,7 +2493,8 @@ Possible features:
>>  	  and execute guest code when KVM_RUN is called.
>>  	- KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode.
>>  	  Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only).
>> -	- KVM_ARM_VCPU_PSCI_0_2: Emulate PSCI v0.2 for the CPU.
>> +	- KVM_ARM_VCPU_PSCI_0_2: Emulate PSCI v0.2 (or a future revision
>> +          backward compatible with v0.2) for the CPU.
>>  	  Depends on KVM_CAP_ARM_PSCI_0_2.
>>  	- KVM_ARM_VCPU_PMU_V3: Emulate PMUv3 for the CPU.
>>  	  Depends on KVM_CAP_ARM_PMU_V3.
>> diff --git a/Documentation/virtual/kvm/arm/psci.txt b/Documentation/virtual/kvm/arm/psci.txt
>> new file mode 100644
>> index 000000000000..2e49a4e9f084
>> --- /dev/null
>> +++ b/Documentation/virtual/kvm/arm/psci.txt
>> @@ -0,0 +1,28 @@
>> +KVM implements the PSCI (Power State Coordination Interface)
>> +specification in order to provide services such as CPU on/off, reset
>> +and power-off to the guest.
>> +
>> +The PSCI specification is regularly updated to provide new features,
>> +and KVM implements these updates if they make sense from a virtualization
>> +point of view.
>> +
>> +This means that a guest booted on two different versions of KVM can
>> +observe two different "firmware" revisions. This could cause issues if
>> +a given guest is tied to a particular PSCI revision (unlikely), or if
>> +a migration causes a different PSCI version to be exposed out of the
>> +blue to an unsuspecting guest.
>> +
>> +In order to remedy this situation, KVM exposes a set of "firmware
>> +pseuodo-registers" that can be manipulated using the GET/SET_ONE_REG
>> +interface. These registers can be saved/restored by userspace, and set
>> +to a convenient value if required.
> 
> Userspace can save/restore any state it deems necessary. 

Only if it has access to it. Until now, that wasn't an option.

> Is there another
> reason to invent a pseudo register? Considering the PSCI version is VM
> state, then maybe a VM "device" attribute[*], like s390 use, would fit
> better. 

Possibly. But that means current userspace won't engage the mitigation
by default, and that's pretty bad.

> Or, if keeping it VCPU state has some benefit, then we already
> have VCPU device attribute support for ARM that we could extend with
> another attribute. An advantage of using the device-attr API is that it
> has KVM_HAS_DEVICE_ATTR, allowing the new attribute support to be probed.
> How should userspace check if the pseudo register is supported? Maybe
> by just failing with NOT_SUPPORTED to get/set it?
> 
> [*] Documentation/virtual/kvm/devices/vm.txt

Frankly, I have no opinion on the way to implement it. My only
requirement is that it becomes enabled by default, without any userspace
change.

> 
>> +
>> +The following register is defined:
>> +
>> +* KVM_REG_ARM_PSCI_VERSION:
>> +
>> +  - Only valid if the vcpu has KVM_ARM_VCPU_PSCI_0_2 feature set
>> +  - Returns the current PSCI version on GET_ONE_REG
>> +  - Allows any supported PSCI version compatible with v0.2 to be set
>> +    with SET_ONE_REG
>> +  - Affects the whole VM (even if the register view is per-vcpu)
> 
> 
>> diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h
>> index acbf9ec7b396..e9d57060d88c 100644
>> --- a/arch/arm/include/asm/kvm_host.h
>> +++ b/arch/arm/include/asm/kvm_host.h
>> @@ -75,6 +75,9 @@ struct kvm_arch {
>>  	/* Interrupt controller */
>>  	struct vgic_dist	vgic;
>>  	int max_vcpus;
>> +
>> +	/* Mandated version of PSCI */
>> +	u32 psci_version;
>>  };
>>  
>>  #define KVM_NR_MEM_OBJS     40
>> diff --git a/arch/arm/include/uapi/asm/kvm.h b/arch/arm/include/uapi/asm/kvm.h
>> index 6edd177bb1c7..47dfc99f5cd0 100644
>> --- a/arch/arm/include/uapi/asm/kvm.h
>> +++ b/arch/arm/include/uapi/asm/kvm.h
>> @@ -186,6 +186,12 @@ struct kvm_arch_memory_slot {
>>  #define KVM_REG_ARM_VFP_FPINST		0x1009
>>  #define KVM_REG_ARM_VFP_FPINST2		0x100A
>>  
>> +/* KVM-as-firmware specific pseudo-registers */
>> +#define KVM_REG_ARM_FW			(0x0014 << KVM_REG_ARM_COPROC_SHIFT)
> 
> Is this 0x14 documented somewhere? I'm just curious how the space for
> pseudo registers is reserved. Is there a common place that we should
> document that 0x14 is for the firmware (if it's not documented there
> already)?

No. First come, first served.

	M.
-- 
Jazz is not dead. It just smells funny...

  reply	other threads:[~2018-01-31 17:46 UTC|newest]

Thread overview: 116+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-29 17:45 [PATCH v2 00/16] arm64: Add SMCCC v1.1 support and CVE-2017-5715 (Spectre variant 2) mitigation Marc Zyngier
2018-01-29 17:45 ` Marc Zyngier
2018-01-29 17:45 ` [PATCH v2 01/16] arm64: KVM: Fix SMCCC handling of unimplemented SMC/HVC calls Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:45 ` [PATCH v2 02/16] arm: " Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:45 ` [PATCH v2 03/16] arm/arm64: KVM: Consolidate the PSCI include files Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:45 ` [PATCH v2 04/16] arm/arm64: KVM: Add PSCI_VERSION helper Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-30 13:15   ` Robin Murphy
2018-01-30 13:15     ` Robin Murphy
2018-01-30 14:52     ` Marc Zyngier
2018-01-30 14:52       ` Marc Zyngier
2018-01-29 17:45 ` [PATCH v2 05/16] arm/arm64: KVM: Add smccc accessors to PSCI code Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:45 ` [PATCH v2 06/16] arm/arm64: KVM: Implement PSCI 1.0 support Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:45 ` [PATCH v2 07/16] arm/arm64: KVM: Add PSCI version selection API Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-31 17:38   ` Andrew Jones
2018-01-31 17:38     ` Andrew Jones
2018-01-31 17:45     ` Marc Zyngier [this message]
2018-01-31 17:45       ` Marc Zyngier
2018-01-31 18:03       ` Andrew Jones
2018-01-31 18:03         ` Andrew Jones
2018-01-31 18:03         ` Andrew Jones
2018-01-31 18:36         ` Marc Zyngier
2018-01-31 18:36           ` Marc Zyngier
2018-01-31 19:15           ` Andrew Jones
2018-01-31 19:15             ` Andrew Jones
2018-01-31 18:11   ` kbuild test robot
2018-01-31 18:11     ` kbuild test robot
2018-01-29 17:45 ` [PATCH v2 08/16] arm/arm64: KVM: Advertise SMCCC v1.1 Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-30  0:23   ` Russell King - ARM Linux
2018-01-30  0:23     ` Russell King - ARM Linux
2018-01-30 12:28     ` Marc Zyngier
2018-01-30 12:28       ` Marc Zyngier
2018-01-30 12:28       ` Marc Zyngier
2018-01-29 17:45 ` [PATCH v2 09/16] arm/arm64: KVM: Turn kvm_psci_version into a static inline Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:45 ` [PATCH v2 10/16] arm64: KVM: Report SMCCC_ARCH_WORKAROUND_1 BP hardening support Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-30 12:38   ` Robin Murphy
2018-01-30 12:38     ` Robin Murphy
2018-01-29 17:45 ` [PATCH v2 11/16] arm64: KVM: Add SMCCC_ARCH_WORKAROUND_1 fast handling Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:45 ` [PATCH v2 12/16] firmware/psci: Expose PSCI conduit Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:55   ` Lorenzo Pieralisi
2018-01-29 17:55     ` Lorenzo Pieralisi
2018-01-29 17:45 ` [PATCH v2 13/16] firmware/psci: Expose SMCCC version through psci_ops Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 18:39   ` Lorenzo Pieralisi
2018-01-29 18:39     ` Lorenzo Pieralisi
2018-01-30 12:09     ` Marc Zyngier
2018-01-30 12:09       ` Marc Zyngier
2018-01-30 12:55   ` Robin Murphy
2018-01-30 12:55     ` Robin Murphy
2018-01-30 13:51     ` Marc Zyngier
2018-01-30 13:51       ` Marc Zyngier
2018-01-29 17:45 ` [PATCH v2 14/16] arm/arm64: smccc: Make function identifiers an unsigned quantity Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:45 ` [PATCH v2 15/16] arm/arm64: smccc: Implement SMCCC v1.1 inline primitive Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 19:07   ` Robin Murphy
2018-01-29 19:07     ` Robin Murphy
2018-01-30  8:54     ` Marc Zyngier
2018-01-30  8:54       ` Marc Zyngier
2018-01-29 21:45   ` Ard Biesheuvel
2018-01-29 21:45     ` Ard Biesheuvel
2018-01-30 12:27     ` Marc Zyngier
2018-01-30 12:27       ` Marc Zyngier
2018-01-30 12:29       ` Ard Biesheuvel
2018-01-30 12:29         ` Ard Biesheuvel
2018-01-30 12:29         ` Ard Biesheuvel
2018-01-29 17:45 ` [PATCH v2 16/16] arm64: Add ARM_SMCCC_ARCH_WORKAROUND_1 BP hardening support Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 17:45   ` Marc Zyngier
2018-01-29 19:41   ` Ard Biesheuvel
2018-01-29 19:41     ` Ard Biesheuvel
2018-01-30 12:10     ` Marc Zyngier
2018-01-30 12:10       ` Marc Zyngier
2018-01-31 13:56   ` Hanjun Guo
2018-01-31 13:56     ` Hanjun Guo
2018-01-31 13:56     ` Hanjun Guo
2018-01-31 14:11     ` Marc Zyngier
2018-01-31 14:11       ` Marc Zyngier
2018-01-31 14:35       ` Ard Biesheuvel
2018-01-31 14:35         ` Ard Biesheuvel
2018-01-31 14:38         ` Ard Biesheuvel
2018-01-31 14:38           ` Ard Biesheuvel
2018-01-31 15:05           ` Marc Zyngier
2018-01-31 15:05             ` Marc Zyngier
2018-02-01  2:40             ` Hanjun Guo
2018-02-01  2:40               ` Hanjun Guo
2018-02-01  6:52               ` Hanjun Guo
2018-02-01  6:52                 ` Hanjun Guo
2018-02-01  6:52                 ` Hanjun Guo
2018-02-01  8:53               ` Marc Zyngier
2018-02-01  8:53                 ` Marc Zyngier
2018-02-02  3:43                 ` Hanjun Guo
2018-02-02  3:43                   ` Hanjun Guo
2018-06-09 13:22 ` [PATCH v2 00/16] arm64: Add SMCCC v1.1 support and CVE-2017-5715 (Spectre variant 2) mitigation Jon Masters
2018-06-09 13:22   ` Jon Masters
2018-06-09 14:06   ` Marc Zyngier
2018-06-09 14:06     ` Marc Zyngier
2018-06-09 14:06     ` Marc Zyngier

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=1de5a7a8-8118-597f-d1a3-14c406b57b0e@arm.com \
    --to=marc.zyngier@arm.com \
    --cc=ard.biesheuvel@linaro.org \
    --cc=catalin.marinas@arm.com \
    --cc=drjones@redhat.com \
    --cc=jcm@redhat.com \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=robin.murphy@arm.com \
    --cc=will.deacon@arm.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.