Skip to content

V4.9 backport of 32-bit arm spectre patches

David Long stable 2 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v2 Latest24 patches 15 repliesIn review
  2. v118 patches 10 repliesSuperseded

Changes in v2 from the cover letter

1) Fixed bad merge in #11/24 in hyp-entry.S.
2) Incorporated upstream patch to earlier patch where wrong ENDPROC call was done in hypervisor code in proc-v7.S.

Patches in v2 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/24ARM: add more CPU part numbers for Cortex and Brahma B15 CPUsarch/arm/include/asm/cputype.h+8 -00 replies
2/24ARM: bugs: prepare processor bug infrastructurearch/arm/include/asm/bugs.h arch/arm/kernel/Makefile arch/arm/kernel/bugs.c+12 -20 replies
3/24ARM: bugs: hook processor bug checking into SMP and suspend pathsarch/arm/include/asm/bugs.h arch/arm/kernel/bugs.c arch/arm/kernel/smp.c +1 more+13 -00 replies
4/24ARM: bugs: add support for per-processor bug checkingarch/arm/include/asm/proc-fns.h arch/arm/kernel/bugs.c arch/arm/mm/proc-macros.S+10 -10 replies
5/24ARM: spectre: add Kconfig symbol for CPUs vulnerable to Spectrearch/arm/mm/Kconfig+4 -00 replies
6/24ARM: spectre-v2: harden branch predictor on context switchesarch/arm/mm/Kconfig arch/arm/mm/proc-v7-2level.S arch/arm/mm/proc-v7.S+115 -350 replies
7/24ARM: spectre-v2: add Cortex A8 and A15 validation of the IBE bitarch/arm/mm/Makefile arch/arm/mm/proc-v7-bugs.c arch/arm/mm/proc-v7.S+39 -30 replies
8/24ARM: spectre-v2: harden user aborts in kernel spacearch/arm/include/asm/cp15.h arch/arm/include/asm/system_misc.h arch/arm/mm/fault.c +2 more+94 -80 replies
9/24ARM: spectre-v2: add firmware based hardeningarch/arm/mm/proc-v7-bugs.c arch/arm/mm/proc-v7.S+81 -012 replies
10/24ARM: spectre-v2: warn about incorrect context switching functionsarch/arm/mm/proc-v7-bugs.c+15 -00 replies
11/24ARM: KVM: invalidate BTB on guest exit for Cortex-A12/A17arch/arm/include/asm/kvm_asm.h arch/arm/include/asm/kvm_mmu.h arch/arm/kvm/hyp/hyp-entry.S+85 -50 replies
12/24ARM: KVM: invalidate icache on guest exit for Cortex-A15arch/arm/include/asm/kvm_mmu.h arch/arm/kvm/hyp/hyp-entry.S+29 -00 replies
13/24ARM: spectre-v2: KVM: invalidate icache on guest exit for Brahma B15arch/arm/include/asm/kvm_mmu.h+1 -00 replies
14/24ARM: KVM: Add SMCCC_ARCH_WORKAROUND_1 fast handlingarch/arm/kvm/hyp/hyp-entry.S+16 -10 replies
15/24ARM: KVM: report support for SMCCC_ARCH_WORKAROUND_1arch/arm/include/asm/kvm_host.h+12 -20 replies
16/24ARM: spectre-v1: add speculation barrier (csdb) macrosarch/arm/include/asm/assembler.h arch/arm/include/asm/barrier.h+21 -00 replies
17/24ARM: spectre-v1: add array_index_mask_nospec() implementationarch/arm/include/asm/barrier.h+19 -00 replies
18/24ARM: spectre-v1: fix syscall entryarch/arm/kernel/entry-common.S arch/arm/kernel/entry-header.S+32 -110 replies
19/24ARM: signal: copy registers using __copy_from_user()arch/arm/kernel/signal.c+21 -170 replies
20/24ARM: vfp: use __copy_from_user() when restoring VFP statearch/arm/include/asm/thread_info.h arch/arm/kernel/signal.c arch/arm/vfp/vfpmodule.c+17 -210 replies
21/24ARM: oabi-compat: copy semops using __copy_from_user()arch/arm/kernel/sys_oabi-compat.c+5 -30 replies
22/24ARM: use __inttype() in get_user()arch/arm/include/asm/uaccess.h+8 -10 replies
23/24ARM: spectre-v1: use get_user() for __get_user()arch/arm/include/asm/uaccess.h+11 -60 replies
24/24ARM: spectre-v1: mitigate user accessesarch/arm/include/asm/assembler.h arch/arm/lib/copy_from_user.S+13 -00 replies

Reviews trailers per patch

All 24 patches have a Reviewed-by or Acked-by.

PatchFlorian FainelliTony LindgrenMarc ZyngierMark Rutland
1/24A-b Boot-tested-by R-b A-b
2/24R-b Boot-tested-by R-b A-b
3/24R-b Boot-tested-by R-b A-b
4/24R-b Boot-tested-by R-b A-b
5/24R-b Boot-tested-by R-b A-b
6/24Boot-tested-by R-b A-b
7/24R-b Boot-tested-by R-b
8/24Boot-tested-by R-b
9/24Boot-tested-by R-b R-b A-b
10/24Boot-tested-by R-b A-b
11/24Boot-tested-by R-b
12/24Boot-tested-by R-b
13/24A-b Boot-tested-by R-b A-b
14/24Boot-tested-by R-b R-b
15/24Boot-tested-by R-b R-b
16/24Boot-tested-by R-b A-b
17/24Boot-tested-by R-b A-b
18/24Boot-tested-by R-b A-b
19/24A-b
20/24A-b
21/24A-b
22/24A-b
23/24A-b
24/24A-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 4 reviewers.

Read the v2 thread

Cover letter [PATCH 4.9 V2 00/24] V4.9 backport of 32-bit arm spectre patches

From: "David A. Long" <[email protected]>

V4.9 backport of spectre patches from Russell M. King's spectre branch. Patches not yet in upstream are excluded.

Changes in V2:
1) Fixed bad merge in #11/24 in hyp-entry.S.
2) Incorporated upstream patch to earlier patch where wrong ENDPROC call was done in hypervisor code in proc-v7.S.

Marc Zyngier (2):
ARM: KVM: invalidate BTB on guest exit for Cortex-A12/A17
ARM: KVM: invalidate icache on guest exit for Cortex-A15

Russell King (22):
ARM: add more CPU part numbers for Cortex and Brahma B15 CPUs
ARM: bugs: prepare processor bug infrastructure
ARM: bugs: hook processor bug checking into SMP and suspend paths
ARM: bugs: add support for per-processor bug checking
ARM: spectre: add Kconfig symbol for CPUs vulnerable to Spectre
ARM: spectre-v2: harden branch predictor on context switches
ARM: spectre-v2: add Cortex A8 and A15 validation of the IBE bit
ARM: spectre-v2: harden user aborts in kernel space
ARM: spectre-v2: add firmware based hardening
ARM: spectre-v2: warn about incorrect context switching functions
ARM: spectre-v2: KVM: invalidate icache on guest exit for Brahma B15
ARM: KVM: Add SMCCC_ARCH_WORKAROUND_1 fast handling
ARM: KVM: report support for SMCCC_ARCH_WORKAROUND_1
ARM: spectre-v1: add speculation barrier (csdb) macros
ARM: spectre-v1: add array_index_mask_nospec() implementation
ARM: spectre-v1: fix syscall entry
ARM: signal: copy registers using __copy_from_user()
ARM: vfp: use __copy_from_user() when restoring VFP state
ARM: oabi-compat: copy semops using __copy_from_user()
ARM: use __inttype() in get_user()
ARM: spectre-v1: use get_user() for __get_user()
ARM: spectre-v1: mitigate user accesses

 arch/arm/include/asm/assembler.h   |  12 ++
 arch/arm/include/asm/barrier.h     |  32 ++++++
 arch/arm/include/asm/bugs.h        |   6 +-
 arch/arm/include/asm/cp15.h        |   3 +
 arch/arm/include/asm/cputype.h     |   8 ++
 arch/arm/include/asm/kvm_asm.h     |   2 -
 arch/arm/include/asm/kvm_host.h    |  14 ++-
 arch/arm/include/asm/kvm_mmu.h     |  23 +++-
 arch/arm/include/asm/proc-fns.h    |   4 +
 arch/arm/include/asm/system_misc.h |  15 +++
 arch/arm/include/asm/thread_info.h |   4 +-
 arch/arm/include/asm/uaccess.h     |  26 +++--
 arch/arm/kernel/Makefile           |   1 +
 arch/arm/kernel/bugs.c             |  18 +++
 arch/arm/kernel/entry-common.S     |  18 ++-
 arch/arm/kernel/entry-header.S     |  25 +++++
 arch/arm/kernel/signal.c           |  55 ++++-----
 arch/arm/kernel/smp.c              |   4 +
 arch/arm/kernel/suspend.c          |   2 +
 arch/arm/kernel/sys_oabi-compat.c  |   8 +-
 arch/arm/kvm/hyp/hyp-entry.S       | 112 ++++++++++++++++++-
 arch/arm/lib/copy_from_user.S      |   9 ++
 arch/arm/mm/Kconfig                |  23 ++++
 arch/arm/mm/Makefile               |   2 +-
 arch/arm/mm/fault.c                |   3 +
 arch/arm/mm/proc-macros.S          |   3 +-
 arch/arm/mm/proc-v7-2level.S       |   6 -
 arch/arm/mm/proc-v7-bugs.c         | 174 +++++++++++++++++++++++++++++
 arch/arm/mm/proc-v7.S              | 154 +++++++++++++++++++------
 arch/arm/vfp/vfpmodule.c           |  17 ++-
 30 files changed, 674 insertions(+), 109 deletions(-)
 create mode 100644 arch/arm/kernel/bugs.c
 create mode 100644 arch/arm/mm/proc-v7-bugs.c
Signature · 1 line
2.17.1