From: Ard Biesheuvel <ard.biesheuvel@linaro.org> To: Julien Thierry <julien.thierry@arm.com> Cc: linux-arm-kernel <linux-arm-kernel@lists.infradead.org>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Daniel Thompson <daniel.thompson@linaro.org>, Joel Fernandes <joel@joelfernandes.org>, Marc Zyngier <marc.zyngier@arm.com>, Christoffer Dall <christoffer.dall@arm.com>, James Morse <james.morse@arm.com>, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will.deacon@arm.com>, Mark Rutland <mark.rutland@arm.com>, linux-efi <linux-efi@vger.kernel.org> Subject: Re: [PATCH v9 11/26] efi: Let architectures decide the flags that should be saved/restored Date: Mon, 21 Jan 2019 16:42:48 +0100 [thread overview] Message-ID: <CAKv+Gu8w1cgrqpoL2n2Q=Jbjt_ZruF=oH0-cDyy-LuJUo8YBEA@mail.gmail.com> (raw) In-Reply-To: <1548084825-8803-12-git-send-email-julien.thierry@arm.com> On Mon, 21 Jan 2019 at 16:34, Julien Thierry <julien.thierry@arm.com> wrote: > > Currently, irqflags are saved before calling runtime services and > checked for mismatch on return. > > Provide a pair of overridable macros to save and restore (if needed) the > state that need to be preserved on return from a runtime service. > This allows to check for flags that are not necesarly related to > irqflags. > > Signed-off-by: Julien Thierry <julien.thierry@arm.com> > Acked-by: Catalin Marinas <catalin.marinas@arm.com> > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> > Cc: linux-efi@vger.kernel.org > --- > drivers/firmware/efi/runtime-wrappers.c | 17 +++++++++++++++-- > include/linux/efi.h | 5 +++-- > 2 files changed, 18 insertions(+), 4 deletions(-) > > diff --git a/drivers/firmware/efi/runtime-wrappers.c b/drivers/firmware/efi/runtime-wrappers.c > index 8903b9c..2f4b68b 100644 > --- a/drivers/firmware/efi/runtime-wrappers.c > +++ b/drivers/firmware/efi/runtime-wrappers.c > @@ -89,11 +89,24 @@ > efi_rts_work.status; \ > }) > > +#ifndef arch_efi_save_flags > +#define arch_efi_save_flags(state_flags) local_save_flags(state_flags) > +#define arch_efi_restore_flags(state_flags) local_irq_restore(state_flags) > +#endif > + > +inline unsigned long efi_call_virt_save_flags(void) If you drop the 'inline' here, Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > +{ > + unsigned long flags; > + > + arch_efi_save_flags(flags); > + return flags; > +} > + > void efi_call_virt_check_flags(unsigned long flags, const char *call) > { > unsigned long cur_flags, mismatch; > > - local_save_flags(cur_flags); > + cur_flags = efi_call_virt_save_flags(); > > mismatch = flags ^ cur_flags; > if (!WARN_ON_ONCE(mismatch & ARCH_EFI_IRQ_FLAGS_MASK)) > @@ -102,7 +115,7 @@ void efi_call_virt_check_flags(unsigned long flags, const char *call) > add_taint(TAINT_FIRMWARE_WORKAROUND, LOCKDEP_NOW_UNRELIABLE); > pr_err_ratelimited(FW_BUG "IRQ flags corrupted (0x%08lx=>0x%08lx) by EFI %s\n", > flags, cur_flags, call); > - local_irq_restore(flags); > + arch_efi_restore_flags(flags); > } > > /* > diff --git a/include/linux/efi.h b/include/linux/efi.h > index 45ff763..bd80b7e 100644 > --- a/include/linux/efi.h > +++ b/include/linux/efi.h > @@ -1607,6 +1607,7 @@ efi_status_t efi_setup_gop(efi_system_table_t *sys_table_arg, > > bool efi_runtime_disabled(void); > extern void efi_call_virt_check_flags(unsigned long flags, const char *call); > +extern unsigned long efi_call_virt_save_flags(void); > > enum efi_secureboot_mode { > efi_secureboot_mode_unset, > @@ -1652,7 +1653,7 @@ enum efi_secureboot_mode { > \ > arch_efi_call_virt_setup(); \ > \ > - local_save_flags(__flags); \ > + __flags = efi_call_virt_save_flags(); \ > __s = arch_efi_call_virt(p, f, args); \ > efi_call_virt_check_flags(__flags, __stringify(f)); \ > \ > @@ -1667,7 +1668,7 @@ enum efi_secureboot_mode { > \ > arch_efi_call_virt_setup(); \ > \ > - local_save_flags(__flags); \ > + __flags = efi_call_virt_save_flags(); \ > arch_efi_call_virt(p, f, args); \ > efi_call_virt_check_flags(__flags, __stringify(f)); \ > \ > -- > 1.9.1 >
WARNING: multiple messages have this Message-ID (diff)
From: Ard Biesheuvel <ard.biesheuvel@linaro.org> To: Julien Thierry <julien.thierry@arm.com> Cc: Mark Rutland <mark.rutland@arm.com>, Daniel Thompson <daniel.thompson@linaro.org>, linux-efi <linux-efi@vger.kernel.org>, Marc Zyngier <marc.zyngier@arm.com>, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will.deacon@arm.com>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Christoffer Dall <christoffer.dall@arm.com>, James Morse <james.morse@arm.com>, Joel Fernandes <joel@joelfernandes.org>, linux-arm-kernel <linux-arm-kernel@lists.infradead.org> Subject: Re: [PATCH v9 11/26] efi: Let architectures decide the flags that should be saved/restored Date: Mon, 21 Jan 2019 16:42:48 +0100 [thread overview] Message-ID: <CAKv+Gu8w1cgrqpoL2n2Q=Jbjt_ZruF=oH0-cDyy-LuJUo8YBEA@mail.gmail.com> (raw) In-Reply-To: <1548084825-8803-12-git-send-email-julien.thierry@arm.com> On Mon, 21 Jan 2019 at 16:34, Julien Thierry <julien.thierry@arm.com> wrote: > > Currently, irqflags are saved before calling runtime services and > checked for mismatch on return. > > Provide a pair of overridable macros to save and restore (if needed) the > state that need to be preserved on return from a runtime service. > This allows to check for flags that are not necesarly related to > irqflags. > > Signed-off-by: Julien Thierry <julien.thierry@arm.com> > Acked-by: Catalin Marinas <catalin.marinas@arm.com> > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> > Cc: linux-efi@vger.kernel.org > --- > drivers/firmware/efi/runtime-wrappers.c | 17 +++++++++++++++-- > include/linux/efi.h | 5 +++-- > 2 files changed, 18 insertions(+), 4 deletions(-) > > diff --git a/drivers/firmware/efi/runtime-wrappers.c b/drivers/firmware/efi/runtime-wrappers.c > index 8903b9c..2f4b68b 100644 > --- a/drivers/firmware/efi/runtime-wrappers.c > +++ b/drivers/firmware/efi/runtime-wrappers.c > @@ -89,11 +89,24 @@ > efi_rts_work.status; \ > }) > > +#ifndef arch_efi_save_flags > +#define arch_efi_save_flags(state_flags) local_save_flags(state_flags) > +#define arch_efi_restore_flags(state_flags) local_irq_restore(state_flags) > +#endif > + > +inline unsigned long efi_call_virt_save_flags(void) If you drop the 'inline' here, Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > +{ > + unsigned long flags; > + > + arch_efi_save_flags(flags); > + return flags; > +} > + > void efi_call_virt_check_flags(unsigned long flags, const char *call) > { > unsigned long cur_flags, mismatch; > > - local_save_flags(cur_flags); > + cur_flags = efi_call_virt_save_flags(); > > mismatch = flags ^ cur_flags; > if (!WARN_ON_ONCE(mismatch & ARCH_EFI_IRQ_FLAGS_MASK)) > @@ -102,7 +115,7 @@ void efi_call_virt_check_flags(unsigned long flags, const char *call) > add_taint(TAINT_FIRMWARE_WORKAROUND, LOCKDEP_NOW_UNRELIABLE); > pr_err_ratelimited(FW_BUG "IRQ flags corrupted (0x%08lx=>0x%08lx) by EFI %s\n", > flags, cur_flags, call); > - local_irq_restore(flags); > + arch_efi_restore_flags(flags); > } > > /* > diff --git a/include/linux/efi.h b/include/linux/efi.h > index 45ff763..bd80b7e 100644 > --- a/include/linux/efi.h > +++ b/include/linux/efi.h > @@ -1607,6 +1607,7 @@ efi_status_t efi_setup_gop(efi_system_table_t *sys_table_arg, > > bool efi_runtime_disabled(void); > extern void efi_call_virt_check_flags(unsigned long flags, const char *call); > +extern unsigned long efi_call_virt_save_flags(void); > > enum efi_secureboot_mode { > efi_secureboot_mode_unset, > @@ -1652,7 +1653,7 @@ enum efi_secureboot_mode { > \ > arch_efi_call_virt_setup(); \ > \ > - local_save_flags(__flags); \ > + __flags = efi_call_virt_save_flags(); \ > __s = arch_efi_call_virt(p, f, args); \ > efi_call_virt_check_flags(__flags, __stringify(f)); \ > \ > @@ -1667,7 +1668,7 @@ enum efi_secureboot_mode { > \ > arch_efi_call_virt_setup(); \ > \ > - local_save_flags(__flags); \ > + __flags = efi_call_virt_save_flags(); \ > arch_efi_call_virt(p, f, args); \ > efi_call_virt_check_flags(__flags, __stringify(f)); \ > \ > -- > 1.9.1 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-01-21 15:43 UTC|newest] Thread overview: 166+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-01-21 15:33 [PATCH v9 00/26] arm64: provide pseudo NMI with GICv3 Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-21 15:33 ` [PATCH v9 01/26] arm64: Fix HCR.TGE status for NMI contexts Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-23 22:57 ` Sasha Levin 2019-01-23 22:57 ` Sasha Levin 2019-01-28 11:48 ` James Morse 2019-01-28 11:48 ` James Morse 2019-01-28 15:42 ` Julien Thierry 2019-01-28 15:42 ` Julien Thierry 2019-01-31 8:19 ` Christoffer Dall 2019-01-31 8:19 ` Christoffer Dall 2019-01-31 8:56 ` Julien Thierry 2019-01-31 8:56 ` Julien Thierry 2019-01-31 9:27 ` Christoffer Dall 2019-01-31 9:27 ` Christoffer Dall 2019-01-31 9:40 ` Julien Thierry 2019-01-31 9:40 ` Julien Thierry 2019-01-31 9:48 ` Christoffer Dall 2019-01-31 9:48 ` Christoffer Dall 2019-01-31 9:53 ` Marc Zyngier 2019-01-31 9:53 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 02/26] arm64: Remove unused daif related functions/macros Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 9:21 ` Marc Zyngier 2019-01-28 9:21 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 03/26] arm64: cpufeature: Set SYSREG_GIC_CPUIF as a boot system feature Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 9:22 ` Marc Zyngier 2019-01-28 9:22 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 04/26] arm64: cpufeature: Add cpufeature for IRQ priority masking Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 9:24 ` Marc Zyngier 2019-01-28 9:24 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 05/26] arm/arm64: gic-v3: Add PMR and RPR accessors Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 9:25 ` Marc Zyngier 2019-01-28 9:25 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 06/26] irqchip/gic-v3: Switch to PMR masking before calling IRQ handler Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 9:30 ` Marc Zyngier 2019-01-28 9:30 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 07/26] arm64: ptrace: Provide definitions for PMR values Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 9:37 ` Marc Zyngier 2019-01-28 9:37 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 08/26] arm64: Make PMR part of task context Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 9:42 ` Marc Zyngier 2019-01-28 9:42 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 09/26] arm64: Unmask PMR before going idle Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-22 15:23 ` Catalin Marinas 2019-01-22 15:23 ` Catalin Marinas 2019-01-22 20:18 ` Ard Biesheuvel 2019-01-22 20:18 ` Ard Biesheuvel 2019-01-23 8:56 ` Julien Thierry 2019-01-23 8:56 ` Julien Thierry 2019-01-23 9:38 ` Ard Biesheuvel 2019-01-23 9:38 ` Ard Biesheuvel 2019-01-28 9:44 ` Marc Zyngier 2019-01-28 9:44 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 10/26] arm64: kvm: Unmask PMR before entering guest Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 9:58 ` Marc Zyngier 2019-01-28 9:58 ` Marc Zyngier 2019-01-28 9:58 ` Marc Zyngier 2019-01-30 12:07 ` Christoffer Dall 2019-01-30 12:07 ` Christoffer Dall 2019-01-30 14:58 ` Julien Thierry 2019-01-30 14:58 ` Julien Thierry 2019-01-21 15:33 ` [PATCH v9 11/26] efi: Let architectures decide the flags that should be saved/restored Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-21 15:42 ` Ard Biesheuvel [this message] 2019-01-21 15:42 ` Ard Biesheuvel 2019-01-23 9:04 ` Julien Thierry 2019-01-23 9:04 ` Julien Thierry 2019-01-28 10:00 ` Marc Zyngier 2019-01-28 10:00 ` Marc Zyngier 2019-01-28 10:00 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 12/26] arm64: irqflags: Use ICC_PMR_EL1 for interrupt masking Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-21 15:45 ` Ard Biesheuvel 2019-01-21 15:45 ` Ard Biesheuvel 2019-01-21 18:05 ` Julien Thierry 2019-01-21 18:05 ` Julien Thierry 2019-01-22 15:21 ` Catalin Marinas 2019-01-22 15:21 ` Catalin Marinas 2019-01-23 10:44 ` Julien Thierry 2019-01-23 10:44 ` Julien Thierry 2019-01-30 11:52 ` Julien Thierry 2019-01-30 11:52 ` Julien Thierry 2019-01-21 15:33 ` [PATCH v9 13/26] arm64: daifflags: Include PMR in daifflags restore operations Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 10:37 ` Marc Zyngier 2019-01-28 10:37 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 14/26] arm64: alternative: Allow alternative status checking per cpufeature Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 11:00 ` Marc Zyngier 2019-01-28 11:00 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 15/26] arm64: alternative: Apply alternatives early in boot process Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 11:17 ` Marc Zyngier 2019-01-28 11:17 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 16/26] irqchip/gic-v3: Factor group0 detection into functions Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 11:19 ` Marc Zyngier 2019-01-28 11:19 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 17/26] arm64: Switch to PMR masking when starting CPUs Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 11:21 ` Marc Zyngier 2019-01-28 11:21 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 18/26] arm64: gic-v3: Implement arch support for priority masking Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 11:23 ` Marc Zyngier 2019-01-28 11:23 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 19/26] irqchip/gic-v3: Detect if GIC can support pseudo-NMIs Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 11:39 ` Marc Zyngier 2019-01-28 11:39 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 20/26] irqchip/gic-v3: Handle pseudo-NMIs Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 11:59 ` Marc Zyngier 2019-01-28 11:59 ` Marc Zyngier 2019-01-29 11:33 ` Julien Thierry 2019-01-29 11:33 ` Julien Thierry 2019-01-29 12:31 ` Marc Zyngier 2019-01-29 12:31 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 21/26] irqchip/gic: Add functions to access irq priorities Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 12:04 ` Marc Zyngier 2019-01-28 12:04 ` Marc Zyngier 2019-01-29 11:36 ` Julien Thierry 2019-01-29 11:36 ` Julien Thierry 2019-01-21 15:33 ` [PATCH v9 22/26] irqchip/gic-v3: Allow interrupts to be set as pseudo-NMI Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-26 10:19 ` liwei (GF) 2019-01-26 10:19 ` liwei (GF) 2019-01-26 10:41 ` Marc Zyngier 2019-01-26 10:41 ` Marc Zyngier 2019-01-28 8:57 ` Julien Thierry 2019-01-28 8:57 ` Julien Thierry 2019-01-28 13:59 ` liwei (GF) 2019-01-28 13:59 ` liwei (GF) 2019-01-28 14:49 ` Julien Thierry 2019-01-28 14:49 ` Julien Thierry 2019-01-28 12:08 ` Marc Zyngier 2019-01-28 12:08 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 23/26] arm64: Handle serror in NMI context Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 12:26 ` Marc Zyngier 2019-01-28 12:26 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 24/26] arm64: Skip preemption when exiting an NMI Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 12:34 ` Marc Zyngier 2019-01-28 12:34 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 25/26] arm64: Skip irqflags tracing for NMI in IRQs disabled context Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 12:40 ` Marc Zyngier 2019-01-28 12:40 ` Marc Zyngier 2019-01-21 15:33 ` [PATCH v9 26/26] arm64: Enable the support of pseudo-NMIs Julien Thierry 2019-01-21 15:33 ` Julien Thierry 2019-01-28 12:47 ` Marc Zyngier 2019-01-28 12:47 ` Marc Zyngier 2019-01-30 13:46 ` Julien Thierry 2019-01-30 13:46 ` Julien Thierry
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='CAKv+Gu8w1cgrqpoL2n2Q=Jbjt_ZruF=oH0-cDyy-LuJUo8YBEA@mail.gmail.com' \ --to=ard.biesheuvel@linaro.org \ --cc=catalin.marinas@arm.com \ --cc=christoffer.dall@arm.com \ --cc=daniel.thompson@linaro.org \ --cc=james.morse@arm.com \ --cc=joel@joelfernandes.org \ --cc=julien.thierry@arm.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-efi@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=marc.zyngier@arm.com \ --cc=mark.rutland@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: linkBe 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.