From: Dave Martin <Dave.Martin-5wv7dgnIgG8@public.gmane.org>
To: Alexandre Courbot <gnurou-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: "devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org"
<devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org>,
Chris Johnson <CJohnson-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
Linux Kernel Mailing List
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Karan Jhavar <kjhavar-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
Matthew Longnecker
<MLongnecker-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
Alexandre Courbot
<acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
Joseph Lo <josephl-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [PATCH] ARM: tegra: add basic SecureOS support
Date: Fri, 7 Jun 2013 19:13:18 +0100 [thread overview]
Message-ID: <20130607181318.GC29344@localhost.localdomain> (raw)
In-Reply-To: <CAAVeFuJkV3VVfeinLrjCCef9ZqJNvKurQwVWnJsW-bZqniTQ1w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
On Fri, Jun 07, 2013 at 06:03:54PM +0900, Alexandre Courbot wrote:
> On Fri, Jun 7, 2013 at 3:08 AM, Dave Martin <Dave.Martin-5wv7dgnIgG8@public.gmane.org> wrote:
> >> I think we need to separate the concept of support for *a* secure
> >> monitor, from support for a *particular* secure monitor.
> >
> > There is no fixed set of functionality implemented by these interfaces,
> > so it might be better to think in terms of a generic "firmware" concept.
> >
> >
> > Come to think of it...
> >
> > One option could be to have some standard baseline firmware calling
> > conventions, so that we could have a few specific backends -- perhaps
> > this could be built on the "method" notion used by PSCI
> >
> > (see Documentation/devicetree/bindings/arm/psci.tst; this is probably
> > the most developed firmware interface binding we have today)
> >
> > There, method = "smc" means:
> >
> > populate registers in a certain way
> > SMC #0
> > return results from register to caller in a certain way
> >
> > and method = "hvc" means:
> >
> > populate registers in a certain way
> > HVC #0
> > return results from register to caller in a certain way
> >
> >
> > The backend method arch/arm/kernel/psci.c:__invoke_psci_fn_smc()
> > is probably close to what's needed for the tegra secureos case,
> > so in theory it could be common, along with some of the DT binding
> > conventions.
> >
> > The backends, and the convention for binding a firmware interface
> > to the appropriate backend, could then theoretically be handled
> > by a common framework.
>
> I'm not sure whether we could use the same backend for many different
> firmwares. If I understand you correctly, you propose to have a
> backend to the "smc" call that would cover the needs of all firmwares
> that rely on the smc instruction to invoke the firmware/secure
> monitor.
>
> I can understand the logic, but I'm not sure this is needed or even
> possible. For instance, the implementation you have in
> __invoke_psci_fn_smc assumes 4 arguments, while Tegra's only needs 3.
> Also (and although I have to confess I am not very knowledgeable about
> the "SecureOS" covered by this patch and need to double-check what
> follows), in Tegra's case registers r3-r11 can be altered by the
> secure monitor and need to be preserved - something you don't need to
> do with PSCI.
One way to make the backend generic would be to have something like
one of the following (some syntax omitted due to laziness):
u32 __naked __call_smc(u32 r0, ...)
{
asm volatile (
stmfd sp!, {r4-r11,lr}
smc #0
ldmfd sp!, {r4-r11,pc}
::: "memory"
);
}
/* The above works for up to 4 u32 arguments */
u32 __naked __call_smc(u32 r0, ...)
{
asm volatile (
mov ip, sp
stmfd sp!, {r4-r11,lr}
ldmia ip, {r4-r11}
smc #0
ldmfd sp!, {r4-r11,pc}
::: "memory"
);
}
/*
* Works for up to 13 u32 arguments, provided the stack is deep
* enough to provide suitable garbage data to fill the registers
* if the caller supplied fewer arguments (a bit of a hack)
*/
u32 __naked __call_smc(struct pt_regs *regs) {
asm(
stmfd sp!, {r4-r11,lr}
/* load regs from <regs> */
smc #0
/* save regs back to <regs> */
ldmfd sp!, {r4-r11,pc}
);
}
/*
* Most generic, least-efficient version.
* Can return up to 13 u32 results instead of just one.
* For convenience, the r0 value returned by the SMC could be
* left in r0 so that it also determines the return value of the
* function.
*
* Most of the time, SMC shouldn't be called on any hot path,
* otherwise the performance battle is already lost -- so it may
* not be crucial to reach the maximum possible efficiency for
* these calls.
*/
A particular firmware's Linux glue code might have to put extra stuff
around calls to generic_smc, but at least generic_smc itself wouldn't
need to be reinvented, and the firmware-specific glue code could usually
avoid asm.
> Another example is the function that Tomasz shown
> (https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/tree/arch/arm/mach-exynos/exynos-smc.S?id=refs/tags/next-20130606
> ), which preserves r4-r11 but also assumes r3 is an argument - that's
> again another slightly different convention.
... for which the above implementations of __call_smc() should work too.
> All in all the needs of the various firmwares might end up being just
> different enough that we need to have a different backend for each of
> them. The firmware_ops defined in arch/arm/include/asm/firmware.h
> perform the abstraction at a higher level, which seems more fit here
> IMHO.
>
> Alex.
Indeed. If you think you could work with one of the above generics, we
could try it and see what it looks like though.
If it's an awkward fit, I might be being too optimistic.
Cheers
---Dave
WARNING: multiple messages have this Message-ID (diff)
From: Dave.Martin@arm.com (Dave Martin)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: tegra: add basic SecureOS support
Date: Fri, 7 Jun 2013 19:13:18 +0100 [thread overview]
Message-ID: <20130607181318.GC29344@localhost.localdomain> (raw)
In-Reply-To: <CAAVeFuJkV3VVfeinLrjCCef9ZqJNvKurQwVWnJsW-bZqniTQ1w@mail.gmail.com>
On Fri, Jun 07, 2013 at 06:03:54PM +0900, Alexandre Courbot wrote:
> On Fri, Jun 7, 2013 at 3:08 AM, Dave Martin <Dave.Martin@arm.com> wrote:
> >> I think we need to separate the concept of support for *a* secure
> >> monitor, from support for a *particular* secure monitor.
> >
> > There is no fixed set of functionality implemented by these interfaces,
> > so it might be better to think in terms of a generic "firmware" concept.
> >
> >
> > Come to think of it...
> >
> > One option could be to have some standard baseline firmware calling
> > conventions, so that we could have a few specific backends -- perhaps
> > this could be built on the "method" notion used by PSCI
> >
> > (see Documentation/devicetree/bindings/arm/psci.tst; this is probably
> > the most developed firmware interface binding we have today)
> >
> > There, method = "smc" means:
> >
> > populate registers in a certain way
> > SMC #0
> > return results from register to caller in a certain way
> >
> > and method = "hvc" means:
> >
> > populate registers in a certain way
> > HVC #0
> > return results from register to caller in a certain way
> >
> >
> > The backend method arch/arm/kernel/psci.c:__invoke_psci_fn_smc()
> > is probably close to what's needed for the tegra secureos case,
> > so in theory it could be common, along with some of the DT binding
> > conventions.
> >
> > The backends, and the convention for binding a firmware interface
> > to the appropriate backend, could then theoretically be handled
> > by a common framework.
>
> I'm not sure whether we could use the same backend for many different
> firmwares. If I understand you correctly, you propose to have a
> backend to the "smc" call that would cover the needs of all firmwares
> that rely on the smc instruction to invoke the firmware/secure
> monitor.
>
> I can understand the logic, but I'm not sure this is needed or even
> possible. For instance, the implementation you have in
> __invoke_psci_fn_smc assumes 4 arguments, while Tegra's only needs 3.
> Also (and although I have to confess I am not very knowledgeable about
> the "SecureOS" covered by this patch and need to double-check what
> follows), in Tegra's case registers r3-r11 can be altered by the
> secure monitor and need to be preserved - something you don't need to
> do with PSCI.
One way to make the backend generic would be to have something like
one of the following (some syntax omitted due to laziness):
u32 __naked __call_smc(u32 r0, ...)
{
asm volatile (
stmfd sp!, {r4-r11,lr}
smc #0
ldmfd sp!, {r4-r11,pc}
::: "memory"
);
}
/* The above works for up to 4 u32 arguments */
u32 __naked __call_smc(u32 r0, ...)
{
asm volatile (
mov ip, sp
stmfd sp!, {r4-r11,lr}
ldmia ip, {r4-r11}
smc #0
ldmfd sp!, {r4-r11,pc}
::: "memory"
);
}
/*
* Works for up to 13 u32 arguments, provided the stack is deep
* enough to provide suitable garbage data to fill the registers
* if the caller supplied fewer arguments (a bit of a hack)
*/
u32 __naked __call_smc(struct pt_regs *regs) {
asm(
stmfd sp!, {r4-r11,lr}
/* load regs from <regs> */
smc #0
/* save regs back to <regs> */
ldmfd sp!, {r4-r11,pc}
);
}
/*
* Most generic, least-efficient version.
* Can return up to 13 u32 results instead of just one.
* For convenience, the r0 value returned by the SMC could be
* left in r0 so that it also determines the return value of the
* function.
*
* Most of the time, SMC shouldn't be called on any hot path,
* otherwise the performance battle is already lost -- so it may
* not be crucial to reach the maximum possible efficiency for
* these calls.
*/
A particular firmware's Linux glue code might have to put extra stuff
around calls to generic_smc, but at least generic_smc itself wouldn't
need to be reinvented, and the firmware-specific glue code could usually
avoid asm.
> Another example is the function that Tomasz shown
> (https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/tree/arch/arm/mach-exynos/exynos-smc.S?id=refs/tags/next-20130606
> ), which preserves r4-r11 but also assumes r3 is an argument - that's
> again another slightly different convention.
... for which the above implementations of __call_smc() should work too.
> All in all the needs of the various firmwares might end up being just
> different enough that we need to have a different backend for each of
> them. The firmware_ops defined in arch/arm/include/asm/firmware.h
> perform the abstraction at a higher level, which seems more fit here
> IMHO.
>
> Alex.
Indeed. If you think you could work with one of the above generics, we
could try it and see what it looks like though.
If it's an awkward fit, I might be being too optimistic.
Cheers
---Dave
WARNING: multiple messages have this Message-ID (diff)
From: Dave Martin <Dave.Martin@arm.com>
To: Alexandre Courbot <gnurou@gmail.com>
Cc: "devicetree-discuss@lists.ozlabs.org"
<devicetree-discuss@lists.ozlabs.org>,
Chris Johnson <CJohnson@nvidia.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Karan Jhavar <kjhavar@nvidia.com>,
Matthew Longnecker <MLongnecker@nvidia.com>,
Alexandre Courbot <acourbot@nvidia.com>,
Joseph Lo <josephl@nvidia.com>,
"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH] ARM: tegra: add basic SecureOS support
Date: Fri, 7 Jun 2013 19:13:18 +0100 [thread overview]
Message-ID: <20130607181318.GC29344@localhost.localdomain> (raw)
In-Reply-To: <CAAVeFuJkV3VVfeinLrjCCef9ZqJNvKurQwVWnJsW-bZqniTQ1w@mail.gmail.com>
On Fri, Jun 07, 2013 at 06:03:54PM +0900, Alexandre Courbot wrote:
> On Fri, Jun 7, 2013 at 3:08 AM, Dave Martin <Dave.Martin@arm.com> wrote:
> >> I think we need to separate the concept of support for *a* secure
> >> monitor, from support for a *particular* secure monitor.
> >
> > There is no fixed set of functionality implemented by these interfaces,
> > so it might be better to think in terms of a generic "firmware" concept.
> >
> >
> > Come to think of it...
> >
> > One option could be to have some standard baseline firmware calling
> > conventions, so that we could have a few specific backends -- perhaps
> > this could be built on the "method" notion used by PSCI
> >
> > (see Documentation/devicetree/bindings/arm/psci.tst; this is probably
> > the most developed firmware interface binding we have today)
> >
> > There, method = "smc" means:
> >
> > populate registers in a certain way
> > SMC #0
> > return results from register to caller in a certain way
> >
> > and method = "hvc" means:
> >
> > populate registers in a certain way
> > HVC #0
> > return results from register to caller in a certain way
> >
> >
> > The backend method arch/arm/kernel/psci.c:__invoke_psci_fn_smc()
> > is probably close to what's needed for the tegra secureos case,
> > so in theory it could be common, along with some of the DT binding
> > conventions.
> >
> > The backends, and the convention for binding a firmware interface
> > to the appropriate backend, could then theoretically be handled
> > by a common framework.
>
> I'm not sure whether we could use the same backend for many different
> firmwares. If I understand you correctly, you propose to have a
> backend to the "smc" call that would cover the needs of all firmwares
> that rely on the smc instruction to invoke the firmware/secure
> monitor.
>
> I can understand the logic, but I'm not sure this is needed or even
> possible. For instance, the implementation you have in
> __invoke_psci_fn_smc assumes 4 arguments, while Tegra's only needs 3.
> Also (and although I have to confess I am not very knowledgeable about
> the "SecureOS" covered by this patch and need to double-check what
> follows), in Tegra's case registers r3-r11 can be altered by the
> secure monitor and need to be preserved - something you don't need to
> do with PSCI.
One way to make the backend generic would be to have something like
one of the following (some syntax omitted due to laziness):
u32 __naked __call_smc(u32 r0, ...)
{
asm volatile (
stmfd sp!, {r4-r11,lr}
smc #0
ldmfd sp!, {r4-r11,pc}
::: "memory"
);
}
/* The above works for up to 4 u32 arguments */
u32 __naked __call_smc(u32 r0, ...)
{
asm volatile (
mov ip, sp
stmfd sp!, {r4-r11,lr}
ldmia ip, {r4-r11}
smc #0
ldmfd sp!, {r4-r11,pc}
::: "memory"
);
}
/*
* Works for up to 13 u32 arguments, provided the stack is deep
* enough to provide suitable garbage data to fill the registers
* if the caller supplied fewer arguments (a bit of a hack)
*/
u32 __naked __call_smc(struct pt_regs *regs) {
asm(
stmfd sp!, {r4-r11,lr}
/* load regs from <regs> */
smc #0
/* save regs back to <regs> */
ldmfd sp!, {r4-r11,pc}
);
}
/*
* Most generic, least-efficient version.
* Can return up to 13 u32 results instead of just one.
* For convenience, the r0 value returned by the SMC could be
* left in r0 so that it also determines the return value of the
* function.
*
* Most of the time, SMC shouldn't be called on any hot path,
* otherwise the performance battle is already lost -- so it may
* not be crucial to reach the maximum possible efficiency for
* these calls.
*/
A particular firmware's Linux glue code might have to put extra stuff
around calls to generic_smc, but at least generic_smc itself wouldn't
need to be reinvented, and the firmware-specific glue code could usually
avoid asm.
> Another example is the function that Tomasz shown
> (https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/tree/arch/arm/mach-exynos/exynos-smc.S?id=refs/tags/next-20130606
> ), which preserves r4-r11 but also assumes r3 is an argument - that's
> again another slightly different convention.
... for which the above implementations of __call_smc() should work too.
> All in all the needs of the various firmwares might end up being just
> different enough that we need to have a different backend for each of
> them. The firmware_ops defined in arch/arm/include/asm/firmware.h
> perform the abstraction at a higher level, which seems more fit here
> IMHO.
>
> Alex.
Indeed. If you think you could work with one of the above generics, we
could try it and see what it looks like though.
If it's an awkward fit, I might be being too optimistic.
Cheers
---Dave
next prev parent reply other threads:[~2013-06-07 18:13 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-06 7:28 [PATCH] ARM: tegra: add basic SecureOS support Alexandre Courbot
2013-06-06 7:28 ` Alexandre Courbot
2013-06-06 7:28 ` Alexandre Courbot
[not found] ` <1370503687-17767-1-git-send-email-acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-06-06 9:35 ` Russell King - ARM Linux
2013-06-06 9:35 ` Russell King - ARM Linux
2013-06-06 9:35 ` Russell King - ARM Linux
[not found] ` <20130606093524.GM18614-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2013-06-06 10:23 ` Alex Courbot
2013-06-06 10:23 ` Alex Courbot
2013-06-06 10:23 ` Alex Courbot
2013-06-06 10:17 ` Tomasz Figa
2013-06-06 10:17 ` Tomasz Figa
2013-06-06 10:17 ` Tomasz Figa
2013-06-06 10:37 ` Alex Courbot
2013-06-06 10:37 ` Alex Courbot
2013-06-06 10:37 ` Alex Courbot
2013-06-06 16:28 ` Stephen Warren
2013-06-06 16:28 ` Stephen Warren
2013-06-06 11:11 ` Dave Martin
2013-06-06 11:11 ` Dave Martin
2013-06-06 11:11 ` Dave Martin
2013-06-06 11:02 ` Dave Martin
2013-06-06 11:02 ` Dave Martin
2013-06-06 11:02 ` Dave Martin
[not found] ` <20130606110240.GA3320-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2013-06-07 7:25 ` Alexandre Courbot
2013-06-07 7:25 ` Alexandre Courbot
2013-06-07 7:25 ` Alexandre Courbot
2013-06-07 17:30 ` Dave Martin
2013-06-07 17:30 ` Dave Martin
2013-06-10 7:47 ` Alexandre Courbot
2013-06-10 7:47 ` Alexandre Courbot
[not found] ` <CAAVeFuJuf2hrMaM5keoai65vAAg6JLrjDUvYm4e2zQvsw64_8A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-10 9:10 ` Russell King - ARM Linux
2013-06-10 9:10 ` Russell King - ARM Linux
2013-06-10 9:10 ` Russell King - ARM Linux
2013-06-06 12:26 ` Jassi Brar
2013-06-06 12:26 ` Jassi Brar
2013-06-06 12:26 ` Jassi Brar
[not found] ` <CABb+yY2SFfejMbbYOebMCUuMtAZF3u-yc+6z_MJTG2oOeSwL_g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-07 7:13 ` Alexandre Courbot
2013-06-07 7:13 ` Alexandre Courbot
2013-06-07 7:13 ` Alexandre Courbot
[not found] ` <CAAVeFuKxRuLdhO+-+YHG=c-TNGUUJbDj5AHj+K5e8y1JDEDksg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-07 8:52 ` Jassi Brar
2013-06-07 8:52 ` Jassi Brar
2013-06-07 8:52 ` Jassi Brar
2013-06-06 16:44 ` Stephen Warren
2013-06-06 16:44 ` Stephen Warren
2013-06-06 16:44 ` Stephen Warren
2013-06-06 18:08 ` Dave Martin
2013-06-06 18:08 ` Dave Martin
2013-06-06 18:08 ` Dave Martin
[not found] ` <20130606180824.GC3320-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2013-06-06 18:29 ` Stephen Warren
2013-06-06 18:29 ` Stephen Warren
2013-06-06 18:29 ` Stephen Warren
[not found] ` <51B0D4FA.5070500-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-06-07 17:47 ` Dave Martin
2013-06-07 17:47 ` Dave Martin
2013-06-07 17:47 ` Dave Martin
2013-06-07 9:03 ` Alexandre Courbot
2013-06-07 9:03 ` Alexandre Courbot
2013-06-07 9:03 ` Alexandre Courbot
[not found] ` <CAAVeFuJkV3VVfeinLrjCCef9ZqJNvKurQwVWnJsW-bZqniTQ1w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-07 18:13 ` Dave Martin [this message]
2013-06-07 18:13 ` Dave Martin
2013-06-07 18:13 ` Dave Martin
[not found] ` <20130607181318.GC29344-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2013-06-10 8:05 ` Alexandre Courbot
2013-06-10 8:05 ` Alexandre Courbot
2013-06-10 8:05 ` Alexandre Courbot
[not found] ` <CAAVeFuKsa=GsxexQOSOYPYvkAXaEZXfW1+zRmv25CtFEY=T_GQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-10 11:20 ` Dave Martin
2013-06-10 11:20 ` Dave Martin
2013-06-10 11:20 ` Dave Martin
[not found] ` <51B0BC80.9040007-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-06-07 8:11 ` Alexandre Courbot
2013-06-07 8:11 ` Alexandre Courbot
2013-06-07 8:11 ` Alexandre Courbot
[not found] ` <CAAVeFu+by44HnOzv_85kwgeCx5b9TxiMhr27x69QcUj9GRbk8A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-07 16:33 ` Stephen Warren
2013-06-07 16:33 ` Stephen Warren
2013-06-07 16:33 ` Stephen Warren
2013-06-10 8:11 ` Alexandre Courbot
2013-06-10 8:11 ` Alexandre Courbot
[not found] ` <CAAVeFu+UMZikdWO20c9chvBcieOAUgOhz-nTEUpevFWnPNC_ZA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-10 9:14 ` Russell King - ARM Linux
2013-06-10 9:14 ` Russell King - ARM Linux
2013-06-10 9:14 ` Russell King - ARM Linux
[not found] ` <20130610091415.GS18614-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2013-06-10 16:35 ` Stephen Warren
2013-06-10 16:35 ` Stephen Warren
2013-06-10 16:35 ` Stephen Warren
2013-06-10 11:16 ` Dave Martin
2013-06-10 11:16 ` Dave Martin
2013-06-10 11:16 ` Dave Martin
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=20130607181318.GC29344@localhost.localdomain \
--to=dave.martin-5wv7dgnigg8@public.gmane.org \
--cc=CJohnson-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=MLongnecker-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
--cc=gnurou-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=josephl-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=kjhavar-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.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.