Merge branches 'for-next/elf-hwcap-docs', 'for-next/smccc-conduit-cleanup', 'for...
authorCatalin Marinas <catalin.marinas@arm.com>
Fri, 8 Nov 2019 17:46:11 +0000 (17:46 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Fri, 8 Nov 2019 17:46:11 +0000 (17:46 +0000)
* for-next/elf-hwcap-docs:
  : Update the arm64 ELF HWCAP documentation
  docs/arm64: cpu-feature-registers: Rewrite bitfields that don't follow [e, s]
  docs/arm64: cpu-feature-registers: Documents missing visible fields
  docs/arm64: elf_hwcaps: Document HWCAP_SB
  docs/arm64: elf_hwcaps: sort the HWCAP{, 2} documentation by ascending value

* for-next/smccc-conduit-cleanup:
  : SMC calling convention conduit clean-up
  firmware: arm_sdei: use common SMCCC_CONDUIT_*
  firmware/psci: use common SMCCC_CONDUIT_*
  arm: spectre-v2: use arm_smccc_1_1_get_conduit()
  arm64: errata: use arm_smccc_1_1_get_conduit()
  arm/arm64: smccc/psci: add arm_smccc_1_1_get_conduit()

* for-next/zone-dma:
  : Reintroduction of ZONE_DMA for Raspberry Pi 4 support
  arm64: mm: reserve CMA and crashkernel in ZONE_DMA32
  dma/direct: turn ARCH_ZONE_DMA_BITS into a variable
  arm64: Make arm64_dma32_phys_limit static
  arm64: mm: Fix unused variable warning in zone_sizes_init
  mm: refresh ZONE_DMA and ZONE_DMA32 comments in 'enum zone_type'
  arm64: use both ZONE_DMA and ZONE_DMA32
  arm64: rename variables used to calculate ZONE_DMA32's size
  arm64: mm: use arm64_dma_phys_limit instead of calling max_zone_dma_phys()

* for-next/relax-icc_pmr_el1-sync:
  : Relax ICC_PMR_EL1 (GICv3) accesses when ICC_CTLR_EL1.PMHE is clear
  arm64: Document ICC_CTLR_EL3.PMHE setting requirements
  arm64: Relax ICC_PMR_EL1 accesses when ICC_CTLR_EL1.PMHE is clear

* for-next/double-page-fault:
  : Avoid a double page fault in __copy_from_user_inatomic() if hw does not support auto Access Flag
  mm: fix double page fault on arm64 if PTE_AF is cleared
  x86/mm: implement arch_faults_on_old_pte() stub on x86
  arm64: mm: implement arch_faults_on_old_pte() on arm64
  arm64: cpufeature: introduce helper cpu_has_hw_af()

* for-next/misc:
  : Various fixes and clean-ups
  arm64: kpti: Add NVIDIA's Carmel core to the KPTI whitelist
  arm64: mm: Remove MAX_USER_VA_BITS definition
  arm64: mm: simplify the page end calculation in __create_pgd_mapping()
  arm64: print additional fault message when executing non-exec memory
  arm64: psci: Reduce the waiting time for cpu_psci_cpu_kill()
  arm64: pgtable: Correct typo in comment
  arm64: docs: cpu-feature-registers: Document ID_AA64PFR1_EL1
  arm64: cpufeature: Fix typos in comment
  arm64/mm: Poison initmem while freeing with free_reserved_area()
  arm64: use generic free_initrd_mem()
  arm64: simplify syscall wrapper ifdeffery

* for-next/kselftest-arm64-signal:
  : arm64-specific kselftest support with signal-related test-cases
  kselftest: arm64: fake_sigreturn_misaligned_sp
  kselftest: arm64: fake_sigreturn_bad_size
  kselftest: arm64: fake_sigreturn_duplicated_fpsimd
  kselftest: arm64: fake_sigreturn_missing_fpsimd
  kselftest: arm64: fake_sigreturn_bad_size_for_magic0
  kselftest: arm64: fake_sigreturn_bad_magic
  kselftest: arm64: add helper get_current_context
  kselftest: arm64: extend test_init functionalities
  kselftest: arm64: mangle_pstate_invalid_mode_el[123][ht]
  kselftest: arm64: mangle_pstate_invalid_daif_bits
  kselftest: arm64: mangle_pstate_invalid_compat_toggle and common utils
  kselftest: arm64: extend toplevel skeleton Makefile

* for-next/kaslr-diagnostics:
  : Provide diagnostics on boot for KASLR
  arm64: kaslr: Check command line before looking for a seed
  arm64: kaslr: Announce KASLR status on boot

12 files changed:
1  2  3  4  5  6  7  8  9 
Documentation/arm64/cpu-feature-registers.rst
arch/arm64/Kconfig
arch/arm64/include/asm/daifflags.h
arch/arm64/include/asm/memory.h
arch/arm64/include/asm/pgtable.h
arch/arm64/include/asm/processor.h
arch/arm64/kernel/cpu_errata.c
arch/arm64/kernel/cpufeature.c
arch/arm64/kernel/entry.S
arch/arm64/kvm/hyp/switch.c
arch/arm64/mm/fault.c
arch/arm64/mm/init.c

@@@@@@@@@@ -168,8 -168,8 -168,8 -168,8 -168,8 -168,8 -168,15 -168,8 -168,8 +168,15 @@@@@@@@@@ infrastructure
              +------------------------------+---------+---------+
         
         
------ --  3) MIDR_EL1 - Main ID Register
++++++ ++  3) ID_AA64PFR1_EL1 - Processor Feature Register 1
++++++ ++     +------------------------------+---------+---------+
++++++ ++     | Name                         |  bits   | visible |
++++++ ++     +------------------------------+---------+---------+
++++++ ++     | SSBS                         | [7-4]   |    y    |
++++++ ++     +------------------------------+---------+---------+
 +       
+ ++++ ++
++++++ ++  4) MIDR_EL1 - Main ID Register
              +------------------------------+---------+---------+
              | Name                         |  bits   | visible |
              +------------------------------+---------+---------+
Simple merge
@@@@@@@@@@ -8,8 -8,7 -8,7 -8,7 -8,8 -8,7 -8,7 -8,7 -8,7 +8,9 @@@@@@@@@@
         #include <linux/irqflags.h>
         
         #include <asm/arch_gicv3.h>
++++ ++++#include <asm/barrier.h>
         #include <asm/cpufeature.h>
 ++++++++#include <asm/ptrace.h>
         
         #define DAIF_PROCCTX           0
         #define DAIF_PROCCTX_NOIRQ     PSR_I_BIT
Simple merge
Simple merge
Simple merge
@@@@@@@@@@ -632,45 -623,9 -610,9 -623,9 -623,9 -623,9 -623,9 -623,9 -623,9 +619,45 @@@@@@@@@@ check_branch_predictor(const struct arm
                return (need_wa > 0);
         }
         
 --------#ifdef CONFIG_HARDEN_EL2_VECTORS
 ++++++++static const __maybe_unused struct midr_range tx2_family_cpus[] = {
 ++++++++       MIDR_ALL_VERSIONS(MIDR_BRCM_VULCAN),
 ++++++++       MIDR_ALL_VERSIONS(MIDR_CAVIUM_THUNDERX2),
 ++++++++       {},
 ++++++++};
 ++++++++
 ++++++++static bool __maybe_unused
 ++++++++needs_tx2_tvm_workaround(const struct arm64_cpu_capabilities *entry,
 ++++++++                        int scope)
 ++++++++{
 ++++++++       int i;
 ++++++++
 ++++++++       if (!is_affected_midr_range_list(entry, scope) ||
 ++++++++           !is_hyp_mode_available())
 ++++++++               return false;
 ++++++++
 ++++++++       for_each_possible_cpu(i) {
 ++++++++               if (MPIDR_AFFINITY_LEVEL(cpu_logical_map(i), 0) != 0)
 ++++++++                       return true;
 ++++++++       }
 ++++++++
 ++++++++       return false;
 ++++++++}
 ++++++++
 ++++++++static bool __maybe_unused
 ++++++++has_neoverse_n1_erratum_1542419(const struct arm64_cpu_capabilities *entry,
 ++++++++                               int scope)
 ++++++++{
 ++++++++       u32 midr = read_cpuid_id();
 ++++++++       bool has_dic = read_cpuid_cachetype() & BIT(CTR_DIC_SHIFT);
 ++++++++       const struct midr_range range = MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N1);
  +      
 - ------static const struct midr_range arm64_harden_el2_vectors[] = {
 ++++++++       WARN_ON(scope != SCOPE_LOCAL_CPU || preemptible());
 ++++++++       return is_midr_in_range(midr, &range) && has_dic;
 ++++++++}
 ++++++++
 ++++++++#if defined(CONFIG_HARDEN_EL2_VECTORS) || defined(CONFIG_ARM64_ERRATUM_1319367)
 + ++++++
  -      static const struct midr_range arm64_harden_el2_vectors[] = {
 ++++++++static const struct midr_range ca57_a72[] = {
                MIDR_ALL_VERSIONS(MIDR_CORTEX_A57),
                MIDR_ALL_VERSIONS(MIDR_CORTEX_A72),
                {},
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge