linux/arch/arm/include/asm
Linus Torvalds 588ab3f9af arm64 updates for 4.6:
- Initial page table creation reworked to avoid breaking large block
   mappings (huge pages) into smaller ones. The ARM architecture requires
   break-before-make in such cases to avoid TLB conflicts but that's not
   always possible on live page tables
 
 - Kernel virtual memory layout: the kernel image is no longer linked to
   the bottom of the linear mapping (PAGE_OFFSET) but at the bottom of
   the vmalloc space, allowing the kernel to be loaded (nearly) anywhere
   in physical RAM
 
 - Kernel ASLR: position independent kernel Image and modules being
   randomly mapped in the vmalloc space with the randomness is provided
   by UEFI (efi_get_random_bytes() patches merged via the arm64 tree,
   acked by Matt Fleming)
 
 - Implement relative exception tables for arm64, required by KASLR
   (initial code for ARCH_HAS_RELATIVE_EXTABLE added to lib/extable.c but
   actual x86 conversion to deferred to 4.7 because of the merge
   dependencies)
 
 - Support for the User Access Override feature of ARMv8.2: this allows
   uaccess functions (get_user etc.) to be implemented using LDTR/STTR
   instructions. Such instructions, when run by the kernel, perform
   unprivileged accesses adding an extra level of protection. The
   set_fs() macro is used to "upgrade" such instruction to privileged
   accesses via the UAO bit
 
 - Half-precision floating point support (part of ARMv8.2)
 
 - Optimisations for CPUs with or without a hardware prefetcher (using
   run-time code patching)
 
 - copy_page performance improvement to deal with 128 bytes at a time
 
 - Sanity checks on the CPU capabilities (via CPUID) to prevent
   incompatible secondary CPUs from being brought up (e.g. weird
   big.LITTLE configurations)
 
 - valid_user_regs() reworked for better sanity check of the sigcontext
   information (restored pstate information)
 
 - ACPI parking protocol implementation
 
 - CONFIG_DEBUG_RODATA enabled by default
 
 - VDSO code marked as read-only
 
 - DEBUG_PAGEALLOC support
 
 - ARCH_HAS_UBSAN_SANITIZE_ALL enabled
 
 - Erratum workaround Cavium ThunderX SoC
 
 - set_pte_at() fix for PROT_NONE mappings
 
 - Code clean-ups
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJW6u95AAoJEGvWsS0AyF7xMyoP/3x2O6bgreSQ84BdO4JChN4+
 RQ9OVdX8u2ItO9sgaCY2AA6KoiBuEjGmPl/XRuK0I7DpODTtRjEXQHuNNhz8AelC
 hn4AEVqamY6Z5BzHFIjs8G9ydEbq+OXcKWEdwSsBhP/cMvI7ss3dps1f5iNPT5Vv
 50E/kUz+aWYy7pKlB18VDV7TUOA3SuYuGknWV8+bOY5uPb8hNT3Y3fHOg/EuNNN3
 DIuYH1V7XQkXtF+oNVIGxzzJCXULBE7egMcWAm1ydSOHK0JwkZAiL7OhI7ceVD0x
 YlDxBnqmi4cgzfBzTxITAhn3OParwN6udQprdF1WGtFF6fuY2eRDSH/L/iZoE4DY
 OulL951OsBtF8YC3+RKLk908/0bA2Uw8ftjCOFJTYbSnZBj1gWK41VkCYMEXiHQk
 EaN8+2Iw206iYIoyvdjGCLw7Y0oakDoVD9vmv12SOaHeQljTkjoN8oIlfjjKTeP7
 3AXj5v9BDMDVh40nkVayysRNvqe48Kwt9Wn0rhVTLxwdJEiFG/OIU6HLuTkretdN
 dcCNFSQrRieSFHpBK9G0vKIpIss1ZwLm8gjocVXH7VK4Mo/TNQe4p2/wAF29mq4r
 xu1UiXmtU3uWxiqZnt72LOYFCarQ0sFA5+pMEvF5W+NrVB0wGpXhcwm+pGsIi4IM
 LepccTgykiUBqW5TRzPz
 =/oS+
 -----END PGP SIGNATURE-----

Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux

Pull arm64 updates from Catalin Marinas:
 "Here are the main arm64 updates for 4.6.  There are some relatively
  intrusive changes to support KASLR, the reworking of the kernel
  virtual memory layout and initial page table creation.

  Summary:

   - Initial page table creation reworked to avoid breaking large block
     mappings (huge pages) into smaller ones.  The ARM architecture
     requires break-before-make in such cases to avoid TLB conflicts but
     that's not always possible on live page tables

   - Kernel virtual memory layout: the kernel image is no longer linked
     to the bottom of the linear mapping (PAGE_OFFSET) but at the bottom
     of the vmalloc space, allowing the kernel to be loaded (nearly)
     anywhere in physical RAM

   - Kernel ASLR: position independent kernel Image and modules being
     randomly mapped in the vmalloc space with the randomness is
     provided by UEFI (efi_get_random_bytes() patches merged via the
     arm64 tree, acked by Matt Fleming)

   - Implement relative exception tables for arm64, required by KASLR
     (initial code for ARCH_HAS_RELATIVE_EXTABLE added to lib/extable.c
     but actual x86 conversion to deferred to 4.7 because of the merge
     dependencies)

   - Support for the User Access Override feature of ARMv8.2: this
     allows uaccess functions (get_user etc.) to be implemented using
     LDTR/STTR instructions.  Such instructions, when run by the kernel,
     perform unprivileged accesses adding an extra level of protection.
     The set_fs() macro is used to "upgrade" such instruction to
     privileged accesses via the UAO bit

   - Half-precision floating point support (part of ARMv8.2)

   - Optimisations for CPUs with or without a hardware prefetcher (using
     run-time code patching)

   - copy_page performance improvement to deal with 128 bytes at a time

   - Sanity checks on the CPU capabilities (via CPUID) to prevent
     incompatible secondary CPUs from being brought up (e.g.  weird
     big.LITTLE configurations)

   - valid_user_regs() reworked for better sanity check of the
     sigcontext information (restored pstate information)

   - ACPI parking protocol implementation

   - CONFIG_DEBUG_RODATA enabled by default

   - VDSO code marked as read-only

   - DEBUG_PAGEALLOC support

   - ARCH_HAS_UBSAN_SANITIZE_ALL enabled

   - Erratum workaround Cavium ThunderX SoC

   - set_pte_at() fix for PROT_NONE mappings

   - Code clean-ups"

* tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (99 commits)
  arm64: kasan: Fix zero shadow mapping overriding kernel image shadow
  arm64: kasan: Use actual memory node when populating the kernel image shadow
  arm64: Update PTE_RDONLY in set_pte_at() for PROT_NONE permission
  arm64: Fix misspellings in comments.
  arm64: efi: add missing frame pointer assignment
  arm64: make mrs_s prefixing implicit in read_cpuid
  arm64: enable CONFIG_DEBUG_RODATA by default
  arm64: Rework valid_user_regs
  arm64: mm: check at build time that PAGE_OFFSET divides the VA space evenly
  arm64: KVM: Move kvm_call_hyp back to its original localtion
  arm64: mm: treat memstart_addr as a signed quantity
  arm64: mm: list kernel sections in order
  arm64: lse: deal with clobbered IP registers after branch via PLT
  arm64: mm: dump: Use VA_START directly instead of private LOWEST_ADDR
  arm64: kconfig: add submenu for 8.2 architectural features
  arm64: kernel: acpi: fix ioremap in ACPI parking protocol cpu_postboot
  arm64: Add support for Half precision floating point
  arm64: Remove fixmap include fragility
  arm64: Add workaround for Cavium erratum 27456
  arm64: mm: Mark .rodata as RO
  ...
2016-03-17 20:03:47 -07:00
..
hardware ARM: uniphier: add outer cache support 2015-10-27 09:20:50 +09:00
mach ARM: implement create_mapping_late() for EFI use 2015-12-13 19:18:29 +01:00
xen xen/arm: correctly handle DMA mapping of compound pages 2016-02-08 17:19:27 +00:00
arch_gicv3.h irqchip/gic-v3: Add missing barrier to 32bit version of gic_read_iar() 2016-02-18 19:15:45 +00:00
arch_timer.h clocksource: arch_timer: Fix code to use physical timers when requested 2014-12-04 23:30:26 -08:00
arm-cci.h arm-cci: Get rid of secure transactions for PMU driver 2015-03-27 13:44:35 +00:00
asm-offsets.h
assembler.h Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-09-14 12:24:10 -07:00
atomic.h ARM, locking/atomics: Implement _relaxed variants of atomic[64]_{inc,dec} 2015-10-20 10:17:23 +02:00
auxvec.h ARM: 8329/1: miscellaneous vdso infrastructure, preparation 2015-03-27 22:20:45 +00:00
barrier.h arm: define __smp_xxx 2016-01-12 20:46:54 +02:00
bitops.h ARM: 8417/1: refactor bitops functions with BIT_MASK() and BIT_WORD() 2015-08-18 14:00:30 +01:00
bitrev.h ARM: 8287/1: add bitrev.h file to support rbit instruction 2015-01-16 14:06:18 +00:00
bL_switcher.h
bug.h ARM: 8455/1: define __BUG as asm(BUG_INSTR) without CONFIG_BUG 2015-12-03 00:02:29 +00:00
bugs.h
cache.h
cacheflush.h asm-generic: Consolidate mark_rodata_ro() 2016-02-22 08:51:37 +01:00
cachetype.h
checksum.h ARM: fix csum_tcpudp_magic() miscompilation 2013-12-29 12:32:41 +00:00
clkdev.h clk: Add common __clk_get(), __clk_put() implementations 2013-12-04 17:19:44 +01:00
cmpxchg.h ARM: 8443/1: Adding support for atomic half word exchange 2015-10-09 16:22:54 +01:00
compiler.h ARM: 8300/1: teach __asmeq that r11 == fp and r12 == ip 2015-02-10 10:23:11 +00:00
cp15.h ARM: remove global cr_no_alignment 2014-06-02 09:20:18 +01:00
cpu.h
cpuidle.h ARM: 8485/1: cpuidle: remove cpu parameter from the cpuidle_ops suspend hook 2015-12-22 12:09:43 +00:00
cputype.h ARM: make xscale iwmmxt code multiplatform aware 2015-12-01 21:44:24 +01:00
cti.h
dcc.h ARM: tty: Move HVC DCC assembly to arch/arm 2014-05-28 13:33:18 -07:00
delay.h
device.h arm: introduce is_device_dma_coherent 2014-12-04 12:41:50 +00:00
div64.h ARM: asm/div64.h: adjust to generic codde 2015-11-19 20:00:43 -05:00
dma-contiguous.h
dma-iommu.h ARM: 8347/1: dma-mapping: fix off-by-one check in arm_setup_iommu_dma_ops 2015-05-03 23:21:55 +01:00
dma-mapping.h dma-mapping: always provide the dma_map_ops based implementation 2016-01-20 17:09:18 -08:00
dma.h remove <asm/scatterlist.h> 2015-05-05 13:35:39 -06:00
domain.h ARM: domains: add memory dependencies to get_domain/set_domain 2015-09-11 16:08:18 +01:00
ecard.h
edac.h EDAC: Cleanup atomic_scrub mess 2015-05-28 15:31:53 +02:00
efi.h ARM: add UEFI stub support 2015-12-14 10:38:21 +01:00
elf.h Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-04-14 21:03:26 -07:00
entry-macro-multi.S ARM: replace BSYM() with badr assembly macro 2015-05-08 17:33:50 +01:00
exception.h
fb.h
fiq.h
firmware.h ARM: EXYNOS: add exynos_get_boot_addr() helper 2015-06-06 02:17:56 +09:00
fixmap.h ARM: add support for generic early_ioremap/early_memremap 2015-12-13 19:18:28 +01:00
flat.h
floppy.h ARM: 7996/1: floppy.h: remove deprecated IRQF_DISABLED 2014-03-12 10:32:29 +00:00
fncpy.h
fpstate.h
ftrace.h ARM: 8158/1: LLVMLinux: use static inline in ARM ftrace.h 2014-09-26 14:40:03 +01:00
futex.h ARM: uaccess: provide uaccess_save_and_enable() and uaccess_restore() 2015-08-25 16:14:43 +01:00
glue-cache.h ARM: reduce visibility of dmac_* functions 2015-08-01 22:25:04 +01:00
glue-df.h ARM: 8065/1: remove last use of CONFIG_CPU_ARM710 2014-05-30 01:12:30 +01:00
glue-pf.h
glue-proc.h ARM: 8103/1: save/restore Cortex-A9 CP15 registers on suspend/resume 2014-07-18 12:29:37 +01:00
glue.h
gpio.h ARM: delete old reference to ARM_GPIOLIB_COMPLEX 2014-06-30 21:37:39 +02:00
hardirq.h ARM: 8487/1: Remove IPI_CALL_FUNC_SINGLE 2015-12-22 12:09:43 +00:00
highmem.h kmap_atomic_to_page() has no users, remove it 2015-11-09 15:11:24 -08:00
hugetlb-3level.h
hugetlb.h mm/hugetlb: remove arch_prepare/release_hugepage from arch headers 2015-06-25 17:00:35 -07:00
hw_breakpoint.h ARM: 7948/1: hw_breakpoint: Add ARMv8 support 2014-02-10 11:48:05 +00:00
hw_irq.h ARM: Remove ununsed set_irq_flags 2015-09-16 16:53:39 +02:00
hwcap.h ARM: 7981/1: add support for AT_HWCAP2 ELF auxv entry 2014-02-25 11:40:48 +00:00
hypervisor.h
ide.h
idmap.h
insn.h ARM: kprobes: enable OPTPROBES for ARM 32 2015-01-13 16:10:17 +00:00
io.h ARM: avoid unwanted GCC memset()/memcpy() optimisations for IO variants 2015-07-03 20:46:15 +01:00
irq_work.h arm: Tell irq work about self IPI support 2014-09-13 18:38:39 +02:00
irq.h xen/events: Always allocate legacy interrupts on PV guests 2015-11-26 18:05:01 +00:00
irqflags.h ARM: 8422/1: enable imprecise aborts during early kernel startup 2015-09-22 08:13:56 +01:00
jump_label.h locking/static_keys: Add a new static_key interface 2015-08-03 11:34:15 +02:00
Kbuild ARM: add support for generic early_ioremap/early_memremap 2015-12-13 19:18:28 +01:00
kexec.h
kgdb.h ARM: kdgb: use <asm/opcodes.h> for data to be assembled as intruction 2013-10-19 20:46:35 +01:00
kmap_types.h
kprobes.h ARM: optprobes: execute instruction during restoring if possible. 2015-01-14 12:24:52 +00:00
kvm_arm.h arm64: KVM: Add support for 16-bit VMID 2015-12-18 10:15:12 +00:00
kvm_asm.h arm64 updates for 4.6: 2016-03-17 20:03:47 -07:00
kvm_coproc.h
kvm_emulate.h arm/arm64: KVM: Handle out-of-RAM cache maintenance as a NOP 2016-02-29 18:34:15 +00:00
kvm_host.h arm64: KVM: Add a new vcpu device control group for PMUv3 2016-02-29 18:34:21 +00:00
kvm_hyp.h ARM: KVM: Use common version of timer-sr.c 2016-02-29 18:34:19 +00:00
kvm_mmio.h KVM: arm/arm64: rework MMIO abort handling to use KVM MMIO bus 2015-03-30 17:07:19 +01:00
kvm_mmu.h ARM: KVM: Move CP15 array into the CPU context structure 2016-02-29 18:34:12 +00:00
kvm_psci.h ARM/ARM64: KVM: Make kvm_psci_call() return convention more flexible 2014-04-30 04:18:57 -07:00
limits.h
linkage.h
mach-types.h
mc146818rtc.h
mcpm.h ARM: MCPM: remove residency argument from mcpm_cpu_suspend() 2015-05-06 11:47:10 -04:00
mcs_spinlock.h ARM: 8098/1: mcs lock: implement wfe-based polling for MCS locking 2014-07-18 12:29:35 +01:00
memblock.h ARM: 8025/1: Get rid of meminfo 2014-06-01 01:17:12 +01:00
memory.h ARM: 8430/1: use default ioremap alignment for SMP or LPAE 2015-09-22 08:13:57 +01:00
mmu_context.h ARM: wire up UEFI init and runtime support 2015-12-13 19:18:30 +01:00
mmu.h ARM: 8329/1: miscellaneous vdso infrastructure, preparation 2015-03-27 22:20:45 +00:00
module.h ARM: 8220/1: allow modules outside of bl range 2015-05-08 10:42:34 +01:00
mpu.h
mtd-xip.h
mutex.h
neon.h
nwflash.h
opcodes-sec.h
opcodes-virt.h
opcodes.h
outercache.h ARM: move heavy barrier support out of line 2015-07-25 15:28:05 +01:00
page-nommu.h
page.h
paravirt.h arm: introduce CONFIG_PARAVIRT, PARAVIRT_TIME_ACCOUNTING and pv_time_ops 2015-12-21 14:40:54 +00:00
patch.h ARM: probes: move all probe code to dedicate directory 2015-01-09 09:36:50 +00:00
pci.h PCI: Move pci_dma_* helpers to common code 2016-03-07 10:40:02 -06:00
percpu.h ARM: 8174/1: Use global stack register variable for percpu 2014-11-13 23:58:06 +00:00
perf_event.h arm: perf: Fix callchain parse error with kernel tracepoint events 2015-05-27 16:12:05 +01:00
pgalloc.h ARM: 8235/1: Support for the PXN CPU feature on ARMv7 2014-12-03 15:57:45 +00:00
pgtable-2level-hwdef.h ARM: domains: keep vectors in separate domain 2015-08-21 13:55:53 +01:00
pgtable-2level-types.h
pgtable-2level.h ARM: pgtable: document mapping types 2015-07-03 17:06:57 +01:00
pgtable-3level-hwdef.h ARM: 8235/1: Support for the PXN CPU feature on ARMv7 2014-12-03 15:57:45 +00:00
pgtable-3level-types.h
pgtable-3level.h arch/arm/include/asm/pgtable-3level.h: add pmd_mkclean for THP 2016-01-15 17:56:32 -08:00
pgtable-hwdef.h
pgtable-nommu.h mm: make FIRST_USER_ADDRESS unsigned long on all archs 2015-02-11 17:06:03 -08:00
pgtable.h ARM: 8432/1: move VMALLOC_END from 0xff000000 to 0xff800000 2015-09-22 08:13:57 +01:00
probes.h ARM: optprobes: execute instruction during restoring if possible. 2015-01-14 12:24:52 +00:00
proc-fns.h ARM: redo TTBR setup code for LPAE 2015-06-01 23:48:19 +01:00
processor.h arch, locking: Ciao arch_mutex_cpu_relax() 2014-07-17 12:32:47 +02:00
procinfo.h
prom.h of/fdt: move memreserve and dtb memory reservations into core 2014-04-30 00:59:17 -05:00
psci.h ARM: SoC cleanups for v4.5 2016-01-20 17:55:20 -08:00
ptrace.h ARM: 8175/1: Use current_stack_pointer to calculate pt_regs address 2014-11-13 23:58:07 +00:00
setup.h ARM: 8495/1: ATAGS: move save_atags() to arch/arm/include/asm/setup.h 2016-01-04 11:26:00 +00:00
shmparam.h
signal.h
smp_plat.h ARM: 8392/3: smp: Only expose /sys/.../cpuX/online if hotpluggable 2015-07-31 18:58:30 +01:00
smp_scu.h ARM: make it easier to check the CPU part number correctly 2014-07-18 12:29:02 +01:00
smp_twd.h
smp.h ARM: 8423/1: add const qualifier to smp_operations member in structures 2015-09-22 08:13:57 +01:00
sparsemem.h
spinlock_types.h
spinlock.h arm/spinlock: Replace ACCESS_ONCE with READ_ONCE 2014-12-18 09:54:40 +01:00
stackprotector.h
stacktrace.h ARM: 8070/1: Introduce arm_get_current_stack_frame() 2014-07-18 12:29:11 +01:00
string.h
suspend.h ARM: 8389/1: Add cpu_resume_arm() for firmwares that resume in ARM state 2015-06-12 21:17:17 +01:00
swab.h
switch_to.h sched, arm: Remove finish_arch_switch() 2015-08-04 09:37:52 +02:00
sync_bitops.h ARM: 7989/1: Delete asm/system.h 2014-02-25 11:33:37 +00:00
syscall.h ARM: 8152/1: Convert pr_warning to pr_warn 2014-09-26 14:39:53 +01:00
system_info.h ARM: 8355/1: arch: Show the serial number from devicetree in cpuinfo 2015-05-08 10:42:35 +01:00
system_misc.h
tcm.h
therm.h
thread_info.h Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-09-14 12:24:10 -07:00
thread_notify.h
timex.h ARM: drop <mach/timex.h> for !ARCH_MULTIPLATFORM, too 2013-12-20 17:17:16 +01:00
tlb.h arm: mm: enable HAVE_RCU_TABLE_FREE logic 2014-10-09 22:26:01 -04:00
tlbflush.h ARM: 7855/1: Add check for Cortex-A15 errata 798181 ECO 2013-10-29 11:06:13 +00:00
tls.h ARM: 8178/1: fix set_tls for !CONFIG_KUSER_HELPERS 2014-09-30 16:55:23 +01:00
topology.h sched/topology: Rename topology_thread_cpumask() to topology_sibling_cpumask() 2015-05-27 15:22:15 +02:00
traps.h
trusted_foundations.h ARM: trusted_foundations: fix compile error on non-SMP 2014-05-23 21:28:11 +02:00
types.h
uaccess.h ARM: fix uaccess_with_memcpy() with SW_DOMAIN_PAN 2015-12-15 11:51:02 +00:00
ucontext.h
unified.h ARM: replace BSYM() with badr assembly macro 2015-05-08 17:33:50 +01:00
unistd.h Merge branches 'fixes' and 'misc' into for-next 2015-10-29 15:21:30 +00:00
unwind.h
uprobes.h ARM: add uprobes support 2014-03-18 16:39:40 -04:00
user.h
v7m.h
vdso_datapage.h ARM: 8329/1: miscellaneous vdso infrastructure, preparation 2015-03-27 22:20:45 +00:00
vdso.h ARM: 8329/1: miscellaneous vdso infrastructure, preparation 2015-03-27 22:20:45 +00:00
vfp.h ARM: vfp: Add vfp_disable for problematic platforms 2015-05-20 15:07:00 -07:00
vfpmacros.h
vga.h
virt.h arm/arm64: Add new is_kernel_in_hyp_mode predicate 2016-02-29 18:34:16 +00:00
word-at-a-time.h ARM: 8322/1: keep .text and .fixup regions closer together 2015-03-29 23:11:56 +01:00
xor.h