mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andre Przywara <andre.przywara@arm.com>
To: Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will.deacon@arm.com>
Cc: Suzuki K Poulose <Suzuki.Poulose@arm.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH v2 0/6] arm64: Extend Cortex-A53 errata workaround
Date: Tue, 28 Jun 2016 18:07:26 +0100	[thread overview]
Message-ID: <20160628170732.523-1-andre.przywara@arm.com> (raw)

According to the errata documentation for the ARM errata 819472, 826319,
827319 and 824069, in addition to the already covered promotion of
"dc cvac" cache maintenance instructions to "dc civac"[1], we also need
to promote "dc cvau" operations.
Also as cache maintenance instructions on ARMv8 can be issued by EL0 as
well, we unfortunately have to promote them too, which is only possible
by means of trap-and-emulate.

These patches cover all in-kernel users of "dc cvau" and make sure
they are using "dc civac" if run on an affected core.
In addition if at least one core in the system has one of the above
mentioned erratas, we set the respective bit in SCTLR to trap cache
maintenance instructions from EL0 to EL1 on all CPUs, where we "emulate"
them by executing the potentially fixed instruction on behalf of userspace.

Apart from the actual patches 2/6 and 6/6, which do the main work, the
other patches are cleanups and do refactoring to make the promotion and
trapping of EL0 cache maintenance easier.

Tested on a Juno R0 with an userspace tool to issue various cache
maintenance instructions (including one with triggers a SIGSEGV) and
verified with some debugfs entries. Also tested on a (non-affected)
Juno R1 to confirm it does not trap or emulate.
At least one LTP test also issues around 100 cache maintenance
instructions, which this code survived happily.

Cheers,
Andre.

Changelog v1 .. v2:
- rebase to current upstream kernel
- revert broken macro patch instead of trying to fix it
- more refactoring for segfault injection
- fixing bug when xzr was used as the address register
- minor nitpicks

[1] commit 301bcfac4289 ("arm64: add Cortex-A53 cache errata workaround")

Andre Przywara (6):
  Revert "arm64: alternatives: add enable parameter to conditional asm
    macros"
  arm64: fix "dc cvau" cache operation on errata-affected core
  arm64: include alternative handling in dcache_by_line_op
  arm64: errata: Calling enable functions for CPU errata too
  arm64: consolidate signal injection on emulation errors
  arm64: trap userspace "dc cvau" cache operation on errata-affected
    core

 arch/arm64/include/asm/alternative.h |  16 +++--
 arch/arm64/include/asm/assembler.h   |  12 +++-
 arch/arm64/include/asm/cpufeature.h  |   2 +
 arch/arm64/include/asm/processor.h   |   1 +
 arch/arm64/include/asm/sysreg.h      |   2 +-
 arch/arm64/include/asm/traps.h       |   2 +
 arch/arm64/kernel/armv8_deprecated.c |  23 +------
 arch/arm64/kernel/cpu_errata.c       |   7 +++
 arch/arm64/kernel/cpufeature.c       |   4 +-
 arch/arm64/kernel/entry.S            |  12 +++-
 arch/arm64/kernel/traps.c            | 119 +++++++++++++++++++++++++++++++----
 arch/arm64/mm/cache.S                |   2 +-
 12 files changed, 154 insertions(+), 48 deletions(-)

-- 
2.9.0

             reply	other threads:[~2016-06-28 17:07 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-28 17:07 Andre Przywara [this message]
2016-06-28 17:07 ` [PATCH v2 1/6] Revert "arm64: alternatives: add enable parameter to conditional asm macros" Andre Przywara
2016-06-28 17:07 ` [PATCH v2 2/6] arm64: fix "dc cvau" cache operation on errata-affected core Andre Przywara
2016-06-28 17:07 ` [PATCH v2 3/6] arm64: include alternative handling in dcache_by_line_op Andre Przywara
2016-06-28 17:07 ` [PATCH v2 4/6] arm64: errata: Calling enable functions for CPU errata too Andre Przywara
2016-06-28 17:07 ` [PATCH v2 5/6] arm64: consolidate signal injection on emulation errors Andre Przywara
2016-06-28 17:07 ` [PATCH v2 6/6] arm64: trap userspace "dc cvau" cache operation on errata-affected core Andre Przywara
2016-07-01 10:53 ` [PATCH v2 0/6] arm64: Extend Cortex-A53 errata workaround Catalin Marinas

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=20160628170732.523-1-andre.przywara@arm.com \
    --to=andre.przywara@arm.com \
    --cc=Suzuki.Poulose@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®