Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 8 Jun 2018 18:10:58 +0000 (11:10 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 8 Jun 2018 18:10:58 +0000 (11:10 -0700)
Pull arm64 updates from Catalin Marinas:
 "Apart from the core arm64 and perf changes, the Spectre v4 mitigation
  touches the arm KVM code and the ACPI PPTT support touches drivers/
  (acpi and cacheinfo). I should have the maintainers' acks in place.

  Summary:

   - Spectre v4 mitigation (Speculative Store Bypass Disable) support
     for arm64 using SMC firmware call to set a hardware chicken bit

   - ACPI PPTT (Processor Properties Topology Table) parsing support and
     enable the feature for arm64

   - Report signal frame size to user via auxv (AT_MINSIGSTKSZ). The
     primary motivation is Scalable Vector Extensions which requires
     more space on the signal frame than the currently defined
     MINSIGSTKSZ

   - ARM perf patches: allow building arm-cci as module, demote
     dev_warn() to dev_dbg() in arm-ccn event_init(), miscellaneous
     cleanups

   - cmpwait() WFE optimisation to avoid some spurious wakeups

   - L1_CACHE_BYTES reverted back to 64 (for performance reasons that
     have to do with some network allocations) while keeping
     ARCH_DMA_MINALIGN to 128. cache_line_size() returns the actual
     hardware Cache Writeback Granule

   - Turn LSE atomics on by default in Kconfig

   - Kernel fault reporting tidying

   - Some #include and miscellaneous cleanups"

* tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (53 commits)
  arm64: Fix syscall restarting around signal suppressed by tracer
  arm64: topology: Avoid checking numa mask for scheduler MC selection
  ACPI / PPTT: fix build when CONFIG_ACPI_PPTT is not enabled
  arm64: cpu_errata: include required headers
  arm64: KVM: Move VCPU_WORKAROUND_2_FLAG macros to the top of the file
  arm64: signal: Report signal frame size to userspace via auxv
  arm64/sve: Thin out initialisation sanity-checks for sve_max_vl
  arm64: KVM: Add ARCH_WORKAROUND_2 discovery through ARCH_FEATURES_FUNC_ID
  arm64: KVM: Handle guest's ARCH_WORKAROUND_2 requests
  arm64: KVM: Add ARCH_WORKAROUND_2 support for guests
  arm64: KVM: Add HYP per-cpu accessors
  arm64: ssbd: Add prctl interface for per-thread mitigation
  arm64: ssbd: Introduce thread flag to control userspace mitigation
  arm64: ssbd: Restore mitigation status on CPU resume
  arm64: ssbd: Skip apply_ssbd if not using dynamic mitigation
  arm64: ssbd: Add global mitigation state accessor
  arm64: Add 'ssbd' command-line option
  arm64: Add ARCH_WORKAROUND_2 probing
  arm64: Add per-cpu infrastructure to call ARCH_WORKAROUND_2
  arm64: Call ARCH_WORKAROUND_2 on transitions between EL0 and EL1
  ...

1  2 
Documentation/admin-guide/kernel-parameters.txt
arch/arm/include/asm/kvm_host.h
arch/arm/include/asm/kvm_mmu.h
arch/arm64/Kconfig
arch/arm64/include/asm/kvm_mmu.h
arch/arm64/kernel/cpu_errata.c
arch/arm64/kernel/fpsimd.c
arch/arm64/mm/dma-mapping.c
arch/arm64/mm/fault.c
drivers/acpi/tables.c
include/linux/acpi.h

index 343fc9e6f78d2e73f75eb639b07772114f25e39d,7001fb871429518dd6f790115ae3343d70d6bec7..2d75e77bf7bb341d6e1d39a76351e0eee9390c39
@@@ -312,19 -311,22 +312,31 @@@ static inline void kvm_arm_vhe_guest_ex
  
  static inline bool kvm_arm_harden_branch_predictor(void)
  {
 -      /* No way to detect it yet, pretend it is not there. */
 -      return false;
 +      switch(read_cpuid_part()) {
 +#ifdef CONFIG_HARDEN_BRANCH_PREDICTOR
 +      case ARM_CPU_PART_BRAHMA_B15:
 +      case ARM_CPU_PART_CORTEX_A12:
 +      case ARM_CPU_PART_CORTEX_A15:
 +      case ARM_CPU_PART_CORTEX_A17:
 +              return true;
 +#endif
 +      default:
 +              return false;
 +      }
  }
  
+ #define KVM_SSBD_UNKNOWN              -1
+ #define KVM_SSBD_FORCE_DISABLE                0
+ #define KVM_SSBD_KERNEL               1
+ #define KVM_SSBD_FORCE_ENABLE         2
+ #define KVM_SSBD_MITIGATED            3
+ static inline int kvm_arm_have_ssbd(void)
+ {
+       /* No way to detect it yet, pretend it is not there. */
+       return KVM_SSBD_UNKNOWN;
+ }
  static inline void kvm_vcpu_load_sysregs(struct kvm_vcpu *vcpu) {}
  static inline void kvm_vcpu_put_sysregs(struct kvm_vcpu *vcpu) {}
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge