[PATCH v2 0/5] arm64: pseudo-nmi: elide code when CONFIG_ARM64_PSEUDO_NMI=n
Marc Zyngier
maz at kernel.org
Thu Jan 26 00:51:21 PST 2023
On Wed, 25 Jan 2023 16:38:21 +0000,
Mark Rutland <mark.rutland at arm.com> wrote:
>
> This series addresses a couple of sub-optimal code generation issues with
> arm64's pseudo-nmi support code:
>
> * Even when CONFIG_ARM64_PSEUDO_NMI=n, we generate alternative code
> sequences and alt_instr entries which will never be used. This series
> reworks the irqflags code to use alternative branches (with an
> IS_ENABLED() check), which allows the alternatives to be elided when
> CONFIG_ARM64_PSEUDO_NMI=n.
>
> * When PMHE is eanbled in HW, we must synchronize PMR updates using a
> DSB SY. We take pains to avoid this using a static key to skip the
> barrier when PMHE is not in use, but this results in unnecessarily
> branchy code. This series replaces the static key with an alternative,
> allowing the DSB SY to be relaxed to a NOP.
>
> These changes make a defconfig kernel a little smaller, and does not
> adversely affect the size of a CONFIG_ARM64_PSEUDO_NMI=y kernel. The
> structural changes will also make it easier for a subsequent series to
> rework the irqflag and daifflag management, addressing some
> long-standing edge cases and preparing for ARMv8.8-A's FEAT_NMI.
>
> I've tested this series under a QEM KVM VM on a ThunderX2 host, and a
> QEMU TCG VM on an x86_64 host. I've tested with and without pseudo-NMI
> support enabled, and with pseudo-NMI debug and lockdep enabled, using
> perf record in system-wide mode.
With the couple of nits I mentioned on individual patches addressed:
Reviewed-by: Marc Zyngier <maz at kernel.org>
M.
--
Without deviation from the norm, progress is not possible.
More information about the linux-arm-kernel
mailing list