From: Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>
To: Leif Lindholm <leif.lindholm-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
catalin.marinas-5wv7dgnIgG8@public.gmane.org,
hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org,
linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org,
matt-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org,
mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org,
will.deacon-5wv7dgnIgG8@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCHv2 1/5] efi/runtime-wrappers: add {__,}efi_call_virt templates
Date: Thu, 21 Apr 2016 15:19:53 +0100 [thread overview]
Message-ID: <20160421141952.GQ6879@leverpostej> (raw)
In-Reply-To: <20160421125507.GM6879@leverpostej>
On Thu, Apr 21, 2016 at 01:55:07PM +0100, Mark Rutland wrote:
> On Thu, Apr 21, 2016 at 12:42:56PM +0100, Leif Lindholm wrote:
> > On Thu, Apr 21, 2016 at 12:35:25PM +0100, Mark Rutland wrote:
> > > Currently each architecture must implement two macros, efi_call_virt and
> > > __efi_call_virt, which only differ by the presence or absence of a
> > > return type. Otherwise, the logic surrounding the call is identical.
> > >
> > > As each architecture must define the entire body of each, we can't place
> > > any generic manipulation (e.g. irq flag validation) in the middle.
> > >
> > > This patch adds template implementations of these macros. With these,
> > > arch code can implement three template macros, avoiding reptition for
> > > the void/non-void return cases:
> > >
> > > * arch_efi_call_virt_setup
> > >
> > > Sets up the environment for the call (e.g. switching page tables,
> > > allowing kernel-mode use of floating point, if required).
> > >
> > > * arch_efi_call_virt
> > >
> > > Performs the call. The last expression in the macro must be the call
> > > itself, allowing the logic to be shared by the void and non-void
> > > cases.
> > >
> > > * arch_efi_call_virt_teardown
> > >
> > > Restores the usual kernel environment once the call has returned.
> > >
> > > While the savings from repition are minimal, we additionally gain the
> > > ability to add common code around the call with the call enviroment set
> > > up. This can be used to detect common firmware issues (e.g. bad irq mask
> > > management).
> > >
> > > Signed-off-by: Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>
> > > Cc: Matt Fleming <matt-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
> > > Cc: linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> > > Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> > > ---
> > > drivers/firmware/efi/runtime-wrappers.c | 21 +++++++++++++++++++++
> > > 1 file changed, 21 insertions(+)
> > >
> > > diff --git a/drivers/firmware/efi/runtime-wrappers.c b/drivers/firmware/efi/runtime-wrappers.c
> > > index de69530..1b9fa54 100644
> > > --- a/drivers/firmware/efi/runtime-wrappers.c
> > > +++ b/drivers/firmware/efi/runtime-wrappers.c
> > > @@ -20,6 +20,27 @@
> > > #include <linux/spinlock.h>
> > > #include <asm/efi.h>
> > >
> > > +
> > > +#ifndef efi_call_virt
> >
> > So ... not a strong complaint, but I would prefer if these weren't
> > ifdefd. I presume this is because ia64?
>
> Yup, and to allow the gradual migration of arm/arm64/x86 without a new
> CONFIG_WANT_GENERIC_EFI_CALL_VIRT or something to that effect.
Actually, ia64 never uses this code, so I can add a final patch to
remove the ifdefs after the existing arch code is moved over.
I'll do that...
Mark.
WARNING: multiple messages have this Message-ID (diff)
From: Mark Rutland <mark.rutland@arm.com>
To: Leif Lindholm <leif.lindholm@linaro.org>
Cc: linux-efi@vger.kernel.org, ard.biesheuvel@linaro.org,
catalin.marinas@arm.com, hpa@zytor.com, linux@arm.linux.org.uk,
matt@codeblueprint.co.uk, mingo@redhat.com, tglx@linutronix.de,
will.deacon@arm.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCHv2 1/5] efi/runtime-wrappers: add {__,}efi_call_virt templates
Date: Thu, 21 Apr 2016 15:19:53 +0100 [thread overview]
Message-ID: <20160421141952.GQ6879@leverpostej> (raw)
In-Reply-To: <20160421125507.GM6879@leverpostej>
On Thu, Apr 21, 2016 at 01:55:07PM +0100, Mark Rutland wrote:
> On Thu, Apr 21, 2016 at 12:42:56PM +0100, Leif Lindholm wrote:
> > On Thu, Apr 21, 2016 at 12:35:25PM +0100, Mark Rutland wrote:
> > > Currently each architecture must implement two macros, efi_call_virt and
> > > __efi_call_virt, which only differ by the presence or absence of a
> > > return type. Otherwise, the logic surrounding the call is identical.
> > >
> > > As each architecture must define the entire body of each, we can't place
> > > any generic manipulation (e.g. irq flag validation) in the middle.
> > >
> > > This patch adds template implementations of these macros. With these,
> > > arch code can implement three template macros, avoiding reptition for
> > > the void/non-void return cases:
> > >
> > > * arch_efi_call_virt_setup
> > >
> > > Sets up the environment for the call (e.g. switching page tables,
> > > allowing kernel-mode use of floating point, if required).
> > >
> > > * arch_efi_call_virt
> > >
> > > Performs the call. The last expression in the macro must be the call
> > > itself, allowing the logic to be shared by the void and non-void
> > > cases.
> > >
> > > * arch_efi_call_virt_teardown
> > >
> > > Restores the usual kernel environment once the call has returned.
> > >
> > > While the savings from repition are minimal, we additionally gain the
> > > ability to add common code around the call with the call enviroment set
> > > up. This can be used to detect common firmware issues (e.g. bad irq mask
> > > management).
> > >
> > > Signed-off-by: Mark Rutland <mark.rutland@arm.com>
> > > Cc: Matt Fleming <matt@codeblueprint.co.uk>
> > > Cc: linux-efi@vger.kernel.org
> > > Cc: linux-kernel@vger.kernel.org
> > > ---
> > > drivers/firmware/efi/runtime-wrappers.c | 21 +++++++++++++++++++++
> > > 1 file changed, 21 insertions(+)
> > >
> > > diff --git a/drivers/firmware/efi/runtime-wrappers.c b/drivers/firmware/efi/runtime-wrappers.c
> > > index de69530..1b9fa54 100644
> > > --- a/drivers/firmware/efi/runtime-wrappers.c
> > > +++ b/drivers/firmware/efi/runtime-wrappers.c
> > > @@ -20,6 +20,27 @@
> > > #include <linux/spinlock.h>
> > > #include <asm/efi.h>
> > >
> > > +
> > > +#ifndef efi_call_virt
> >
> > So ... not a strong complaint, but I would prefer if these weren't
> > ifdefd. I presume this is because ia64?
>
> Yup, and to allow the gradual migration of arm/arm64/x86 without a new
> CONFIG_WANT_GENERIC_EFI_CALL_VIRT or something to that effect.
Actually, ia64 never uses this code, so I can add a final patch to
remove the ifdefs after the existing arch code is moved over.
I'll do that...
Mark.
next prev parent reply other threads:[~2016-04-21 14:19 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-21 11:35 [PATCHv2 0/5] efi: detect erroneous firmware IRQ manipulation Mark Rutland
2016-04-21 11:35 ` [PATCHv2 1/5] efi/runtime-wrappers: add {__,}efi_call_virt templates Mark Rutland
[not found] ` <1461238529-12810-2-git-send-email-mark.rutland-5wv7dgnIgG8@public.gmane.org>
2016-04-21 11:42 ` Leif Lindholm
2016-04-21 11:42 ` Leif Lindholm
[not found] ` <20160421114256.GP2904-t77nlHhSwNqAroYi2ySoxKxOck334EZe@public.gmane.org>
2016-04-21 12:55 ` Mark Rutland
2016-04-21 12:55 ` Mark Rutland
2016-04-21 14:19 ` Mark Rutland [this message]
2016-04-21 14:19 ` Mark Rutland
2016-04-21 11:35 ` [PATCHv2 2/5] arm64/efi: move to generic {__,}efi_call_virt Mark Rutland
2016-04-21 11:35 ` Mark Rutland
[not found] ` <1461238529-12810-3-git-send-email-mark.rutland-5wv7dgnIgG8@public.gmane.org>
2016-04-21 16:48 ` Will Deacon
2016-04-21 16:48 ` Will Deacon
2016-04-21 16:48 ` Will Deacon
[not found] ` <20160421164840.GO929-5wv7dgnIgG8@public.gmane.org>
2016-04-21 16:58 ` Mark Rutland
2016-04-21 16:58 ` Mark Rutland
2016-04-21 16:58 ` Mark Rutland
2016-04-21 11:35 ` [PATCHv2 3/5] arm/efi: " Mark Rutland
2016-04-21 11:35 ` Mark Rutland
2016-04-21 11:35 ` [PATCHv2 5/5] efi/runtime-wrappers: detect FW irq flag corruption Mark Rutland
[not found] ` <1461238529-12810-6-git-send-email-mark.rutland-5wv7dgnIgG8@public.gmane.org>
2016-04-21 17:05 ` Ard Biesheuvel
2016-04-21 17:05 ` Ard Biesheuvel
2016-04-21 17:18 ` Mark Rutland
[not found] ` <1461238529-12810-1-git-send-email-mark.rutland-5wv7dgnIgG8@public.gmane.org>
2016-04-21 11:35 ` [PATCHv2 4/5] x86/efi: move to generic {__,}efi_call_virt Mark Rutland
2016-04-21 11:35 ` Mark Rutland
2016-04-21 11:47 ` [PATCHv2 0/5] efi: detect erroneous firmware IRQ manipulation Leif Lindholm
[not found] ` <20160421114737.GQ2904-t77nlHhSwNqAroYi2ySoxKxOck334EZe@public.gmane.org>
2016-04-21 12:52 ` Mark Rutland
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=20160421141952.GQ6879@leverpostej \
--to=mark.rutland-5wv7dgnigg8@public.gmane.org \
--cc=ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=catalin.marinas-5wv7dgnIgG8@public.gmane.org \
--cc=hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org \
--cc=leif.lindholm-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
--cc=matt-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org \
--cc=mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \
--cc=will.deacon-5wv7dgnIgG8@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.