linux/arch/arm64/include/asm
Kevin Brodsky 49eea433b3 arm64: Add support for CLOCK_MONOTONIC_RAW in clock_gettime() vDSO
So far the arm64 clock_gettime() vDSO implementation only supported
the following clocks, falling back to the syscall for the others:
- CLOCK_REALTIME{,_COARSE}
- CLOCK_MONOTONIC{,_COARSE}

This patch adds support for the CLOCK_MONOTONIC_RAW clock, taking
advantage of the recent refactoring of the vDSO time functions. Like
the non-_COARSE clocks, this only works when the "arch_sys_counter"
clocksource is in use (allowing us to read the current time from the
virtual counter register), otherwise we also have to fall back to the
syscall.

Most of the data is shared with CLOCK_MONOTONIC, and the algorithm is
similar. The reference implementation in kernel/time/timekeeping.c
shows that:
- CLOCK_MONOTONIC = tk->wall_to_monotonic + tk->xtime_sec +
  timekeeping_get_ns(&tk->tkr_mono)
- CLOCK_MONOTONIC_RAW = tk->raw_time + timekeeping_get_ns(&tk->tkr_raw)
- tkr_mono and tkr_raw are identical (in particular, same
  clocksource), except these members:
  * mult (only mono's multiplier is NTP-adjusted)
  * xtime_nsec (always 0 for raw)

Therefore, tk->raw_time and tkr_raw->mult are now also stored in the
vDSO data page.

Cc: Ali Saidi <ali.saidi@arm.com>
Signed-off-by: Kevin Brodsky <kevin.brodsky@arm.com>
Reviewed-by: Dave Martin <dave.martin@arm.com>
Acked-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2016-07-12 16:06:32 +01:00
..
xen xen/events: Support event channel rebind on ARM 2015-08-20 12:24:15 +01:00
acenv.h ARM64 / ACPI: Get RSDP and ACPI boot-time tables 2015-03-25 11:49:30 +00:00
acpi.h arm64: kernel: implement ACPI parking protocol 2016-02-16 15:12:32 +00:00
alternative.h arm64: fix "dc cvau" cache operation on errata-affected core 2016-07-01 11:26:20 +01:00
arch_gicv3.h irqchip/gic-v3: Make sure read from ICC_IAR1_EL1 is visible on redestributor 2016-02-11 10:20:02 +00:00
arch_timer.h arm64: fix missing linux/bug.h include in asm/arch_timer.h 2015-01-07 11:40:59 +00: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 arm64: include alternative handling in dcache_by_line_op 2016-07-01 11:28:16 +01:00
atomic_ll_sc.h arm64: cmpxchg_dbl: fix return value type 2015-11-05 17:29:40 +00:00
atomic_lse.h arm64: lse: deal with clobbered IP registers after branch via PLT 2016-02-26 18:35:02 +00:00
atomic.h arm64 updates for 4.4: 2015-11-04 14:47:13 -08:00
barrier.h arm64: define __smp_xxx 2016-01-12 20:46:53 +02:00
bitops.h arch,arm64: Convert smp_mb__*() 2014-04-18 11:40:33 +02:00
bitrev.h ARM: 8189/1: arm64:add bitrev.h file to support rbit instruction 2014-12-22 16:47:32 +00:00
boot.h arm64: allow kernel Image to be loaded anywhere in physical memory 2016-02-18 18:16:53 +00:00
brk-imm.h arm64: move brk immediate argument definitions to separate header 2016-02-23 17:43:25 +00:00
bug.h arm64: move brk immediate argument definitions to separate header 2016-02-23 17:43:25 +00:00
cache.h arm64: Increase the max granular size 2015-10-28 19:09:17 +00:00
cacheflush.h 2nd set of arm64 updates for 4.6: 2016-03-24 19:13:59 -07:00
cachetype.h arm64: cachetype: fix definitions of ICACHEF_* flags 2015-10-28 18:32:12 +00:00
checksum.h arm64: Implement optimised IP checksum helpers 2016-06-21 15:09:11 +01:00
cmpxchg.h arm64: cmpxchg: Don't incldue linux/mmdebug.h 2015-12-10 17:36:09 +00:00
compat.h arm64: do not include ptrace.h from compat.h 2015-11-17 13:24:36 +00:00
compiler.h
cpu_ops.h ARM64: kernel: unify ACPI and DT cpus initialization 2015-05-19 16:09:29 +01:00
cpu.h arm64: add ARMv8.2 id_aa64mmfr2 boiler plate 2016-02-18 12:00:01 +00:00
cpufeature.h arm64: errata: Calling enable functions for CPU errata too 2016-07-01 11:30:28 +01:00
cpuidle.h arm64: kernel: rename __cpu_suspend to keep it aligned with arm 2015-06-19 14:46:39 +01:00
cputype.h ARM: SoC 64-bit changes for v4.6 2016-03-20 15:08:45 -07:00
dcc.h ARM64: TTY: hvc_dcc: Add support for ARM64 dcc 2015-10-04 17:49:27 +01:00
debug-monitors.h arm64: move brk immediate argument definitions to separate header 2016-02-23 17:43:25 +00:00
device.h arm64: introduce is_device_dma_coherent 2014-12-04 12:41:49 +00:00
dma-mapping.h iommu: of: enforce const-ness of struct iommu_ops 2016-05-09 15:33:29 +02:00
dmi.h arm64: dmi: Add SMBIOS/DMI support 2014-11-05 09:03:25 +01:00
efi.h arm64: efi: always map runtime services code and data regions down to pages 2016-07-01 11:56:26 +01:00
elf.h arm64: Provide "model name" in /proc/cpuinfo for PER_LINUX32 tasks 2016-05-31 17:50:30 +01:00
esr.h arm64: add macro to extract ESR_ELx.EC 2016-06-21 17:07:09 +01:00
exception.h arch, ftrace: for KASAN put hard/soft IRQ entries into separate sections 2016-03-25 16:37:42 -07:00
exec.h
fb.h
fixmap.h arm64: Remove fixmap include fragility 2016-02-26 15:22:53 +00:00
fpsimd.h arm64: add support for kernel mode NEON in interrupt context 2014-05-08 11:31:57 +02:00
fpsimdmacros.h arm64: Avoid breakage caused by .altmacro in fpsimd save/restore macros 2015-01-29 17:24:39 +00:00
ftrace.h arm64: Fix misspellings in comments. 2016-03-04 18:19:17 +00:00
futex.h arm64: switch to relative exception tables 2016-02-24 14:57:26 +00:00
hardirq.h arm64: kernel: implement ACPI parking protocol 2016-02-16 15:12:32 +00:00
hugetlb.h arm64: hugetlb: add support for PTE contiguous bit 2015-12-21 17:26:00 +00:00
hw_breakpoint.h arm64: hw_breakpoint: Allow EL2 breakpoints if running in HYP 2016-02-29 18:34:18 +00:00
hwcap.h arm64/HWCAP: Use system wide safe values 2015-10-21 15:35:58 +01:00
hypervisor.h
insn.h arm64: insn: Add aarch64_{get,set}_branch_offset 2015-06-03 15:43:24 +01:00
io.h Revert "arm64: ioremap: add ioremap_cache macro" 2015-10-13 16:18:17 +01:00
irq_work.h arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
irq.h arm64: remove irq_count and do_softirq_own_stack() 2015-12-21 17:26:01 +00:00
irqflags.h arm64: Add macros to manage processor debug state 2014-02-26 11:16:25 +00:00
jump_label.h locking/static_keys: Add a new static_key interface 2015-08-03 11:34:15 +02:00
kasan.h arm64: move kernel image to base of vmalloc area 2016-02-18 18:16:44 +00:00
Kbuild arm64: Implement optimised IP checksum helpers 2016-06-21 15:09:11 +01:00
kernel-pgtable.h arm64: choose memstart_addr based on minimum sparsemem section alignment 2016-04-14 16:15:08 +01:00
kexec.h arm64/kexec: Add core kexec support 2016-06-27 16:31:25 +01:00
kgdb.h arm64: kgdb: Match pstate size with gdbserver protocol 2016-06-16 19:20:51 +01:00
kvm_arm.h Small release overall. 2016-05-19 11:27:09 -07:00
kvm_asm.h arm64 updates for 4.7: 2016-05-16 17:17:24 -07:00
kvm_coproc.h arm64: KVM: common infrastructure for handling AArch32 CP14/CP15 2014-07-11 04:57:44 -07:00
kvm_emulate.h arm64/kvm: use ESR_ELx_EC to extract EC 2016-06-21 17:07:38 +01:00
kvm_host.h - move kvm_stat tool from QEMU repo into tools/kvm/kvm_stat 2016-05-27 13:41:54 -07:00
kvm_hyp.h arm64: perf: Move PMU register related defines to asm/perf_event.h 2016-03-29 16:04:57 +01:00
kvm_mmio.h KVM: arm/arm64: Export mmio_read/write_bus 2016-05-20 15:39:42 +02:00
kvm_mmu.h Small release overall. 2016-05-19 11:27:09 -07:00
kvm_psci.h ARM/ARM64: KVM: Make kvm_psci_call() return convention more flexible 2014-04-30 04:18:57 -07:00
linkage.h
lse.h arm64: lse: deal with clobbered IP registers after branch via PLT 2016-02-26 18:35:02 +00:00
memblock.h
memory.h arm64: update stale PAGE_OFFSET comment 2016-06-03 10:16:21 +01:00
mmu_context.h arm64: Ensure the secondary CPUs have safe ASIDBits size 2016-02-25 10:33:06 +00:00
mmu.h arm64: mm: add param to force create_pgd_mapping() to use page mappings 2016-07-01 11:56:26 +01:00
mmzone.h arm64, numa: Add NUMA support for arm64 platforms. 2016-04-15 18:06:09 +01:00
module.h arm64: add support for kernel ASLR 2016-02-24 14:57:27 +00:00
neon.h arm64: add support for kernel mode NEON in interrupt context 2014-05-08 11:31:57 +02:00
numa.h arm64, numa: Add NUMA support for arm64 platforms. 2016-04-15 18:06:09 +01:00
opcodes.h arm64: opcodes.h: Add arm big-endian config options before including arm header 2016-03-29 16:04:57 +01:00
page.h arm64: move {PAGE,CONT}_SHIFT into Kconfig 2016-06-03 10:57:18 +01:00
paravirt.h arm64: introduce CONFIG_PARAVIRT, PARAVIRT_TIME_ACCOUNTING and pv_time_ops 2015-12-21 14:40:54 +00:00
pci.h PCI: Move pci_dma_* helpers to common code 2016-03-07 10:40:02 -06:00
percpu.h arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
perf_event.h arm64: perf: Move PMU register related defines to asm/perf_event.h 2016-03-29 16:04:57 +01:00
pgalloc.h arm64: mm: add __{pud,pgd}_populate 2016-02-16 15:10:46 +00:00
pgtable-hwdef.h Small release overall. 2016-05-19 11:27:09 -07:00
pgtable-prot.h arm64: Remove fixmap include fragility 2016-02-26 15:22:53 +00:00
pgtable-types.h arm64: always use STRICT_MM_TYPECHECKS 2016-05-03 09:58:38 +01:00
pgtable.h Merge branch 'akpm' (patches from Andrew) 2016-05-19 20:00:06 -07:00
proc-fns.h arm64: kill flush_cache_all() 2015-05-19 15:27:42 +01:00
processor.h arm64: trap userspace "dc cvau" cache operation on errata-affected core 2016-07-01 11:46:00 +01:00
ptdump.h arm64: mm: dump: make page table dumping reusable 2016-06-21 15:09:11 +01:00
ptrace.h arm64: Rework valid_user_regs 2016-03-02 15:49:28 +00:00
seccomp.h arm64: add seccomp support 2014-11-28 10:24:59 +00:00
shmparam.h arm64: fix COMPAT_SHMLBA definition for large pages 2015-12-02 14:00:10 +00:00
signal32.h arm64: Use get_signal() signal_setup_done() 2014-08-06 12:56:16 +02:00
smp_plat.h arm64: remove dead-code depending on CONFIG_UP_LATE_INIT 2015-07-29 18:32:09 +01:00
smp.h arm64: smp: Add function to determine if cpus are stuck in the kernel 2016-06-27 16:24:51 +01:00
sparsemem.h arm64: mm: update max pa bits to 48 2014-08-19 20:23:02 +01:00
spinlock_types.h arm64: include linux/types.h in asm/spinlock_types.h 2015-07-27 11:09:34 +01:00
spinlock.h arm64: spinlock: Ensure forward-progress in spin_unlock_wait 2016-06-15 11:23:14 +01:00
stackprotector.h arm64: Add CONFIG_CC_STACKPROTECTOR 2014-07-09 12:23:48 +01:00
stacktrace.h arm64: ftrace: fix a stack tracer's output under function graph tracer 2015-12-21 17:26:02 +00:00
stage2_pgtable-nopmd.h kvm: arm64: Get rid of fake page table levels 2016-04-21 14:58:21 +02:00
stage2_pgtable-nopud.h kvm: arm64: Get rid of fake page table levels 2016-04-21 14:58:21 +02:00
stage2_pgtable.h kvm: arm64: Get rid of fake page table levels 2016-04-21 14:58:21 +02:00
stat.h
string.h arm64: add KASAN support 2015-10-12 17:46:36 +01:00
suspend.h arm64: kernel: Add support for hibernate/suspend-to-disk 2016-04-28 13:36:22 +01:00
sync_bitops.h
syscall.h arm64: Add audit support 2014-07-10 11:06:00 +01:00
sysreg.h arm64: trap userspace "dc cvau" cache operation on errata-affected core 2016-07-01 11:46:00 +01:00
system_misc.h arm64: use private ratelimit state along with show_unhandled_signals 2015-06-19 16:26:15 +01:00
thread_info.h arm64: Remove the get_thread_info() function 2016-02-18 17:27:05 +00:00
timex.h
tlb.h arm64: tlbflush: avoid flushing when fullmm == 1 2015-10-07 11:56:21 +01:00
tlbflush.h arm64: tlb: remove redundant barrier from __flush_tlb_pgtable 2015-10-07 11:56:33 +01:00
topology.h arm64, numa: Add NUMA support for arm64 platforms. 2016-04-15 18:06:09 +01:00
traps.h arm64: consolidate signal injection on emulation errors 2016-07-01 11:43:30 +01:00
uaccess.h arm64: kasan: instrument user memory access API 2016-06-21 15:37:18 +01:00
unistd32.h arm64: unistd32.h: wire up missing syscalls for compat tasks 2016-06-01 18:48:20 +01:00
unistd.h arm64: unistd32.h: wire up missing syscalls for compat tasks 2016-06-01 18:48:20 +01:00
vdso_datapage.h arm64: Add support for CLOCK_MONOTONIC_RAW in clock_gettime() vDSO 2016-07-12 16:06:32 +01:00
vdso.h
virt.h arm64: Add back cpu reset routines 2016-06-27 16:31:25 +01:00
word-at-a-time.h arm64: switch to relative exception tables 2016-02-24 14:57:26 +00:00