android_kernel_xiaomi_sm8350/arch/x86/kernel
Erik Bosman 529e25f646 x86: implement prctl PR_GET_TSC and PR_SET_TSC
This patch implements the PR_GET_TSC and PR_SET_TSC prctl()
commands on the x86 platform (both 32 and 64 bit.) These
commands control the ability to read the timestamp counter
from userspace (the RDTSC instruction.)

While the RDTSC instuction is a useful profiling tool,
it is also the source of some non-determinism in ring-3.
For deterministic replay applications it is useful to be
able to trap and emulate (and record the outcome of) this
instruction.

This patch uses code earlier used to disable the timestamp
counter for the SECCOMP framework. A side-effect of this
patch is that the SECCOMP environment will now also disable
the timestamp counter on x86_64 due to the addition of the
TIF_NOTSC define on this platform.

The code which enables/disables the RDTSC instruction during
context switches is in the __switch_to_xtra function, which
already handles other unusual conditions, so normal
performance should not have to suffer from this change.

Signed-off-by: Erik Bosman <ejbosman@cs.vu.nl>
Acked-by: Arjan van de Ven  <arjan@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2008-04-19 19:19:55 +02:00
..
acpi x86: remove pointless comments 2008-04-19 19:19:54 +02:00
cpu x86: remove pointless comments 2008-04-19 19:19:54 +02:00
.gitignore
alternative.c x86: fix test_poke for vmalloced pages 2008-04-17 17:41:29 +02:00
aperture_64.c x86: clean up aperture_64.c 2008-04-17 17:41:19 +02:00
apic_32.c x86: move up & smp variables to setup.c 2008-04-17 17:41:35 +02:00
apic_64.c x86: move up & smp variables to setup.c 2008-04-17 17:41:35 +02:00
apm_32.c x86: switch to proc_create() 2008-04-17 17:40:51 +02:00
asm-offsets_32.c x86: move struct definitions to unifed sigframe.h 2008-04-17 17:40:46 +02:00
asm-offsets_64.c
asm-offsets.c
audit_64.c
bootflag.c
bugs_64.c x86: don't use large pages to map the first 2/4MB of memory 2008-04-17 17:41:30 +02:00
cpuid.c
crash_dump_32.c
crash_dump_64.c
crash.c x86: move ipi definitions to mach_ipi.h 2008-04-17 17:41:30 +02:00
doublefault_32.c
ds.c x86: debug Store - call kfree if only we really need it 2008-04-17 17:41:34 +02:00
e820_32.c x86: reserve end-of-conventional-memory to 1MB on 32-bit 2008-04-17 17:40:51 +02:00
e820_64.c x86: e820_64, fix section mismatch warning 2008-04-19 19:19:54 +02:00
early_printk.c x86: coding style fixes to x86/kernel/early_printk.c 2008-04-17 17:40:51 +02:00
early-quirks.c
efi_32.c x86: sparse error in efi_32.c 2008-02-19 16:18:28 +01:00
efi_64.c x86: EFI_PAGE_SHIFT fix 2008-04-19 19:19:54 +02:00
efi_stub_32.S
efi_stub_64.S
efi.c x86: EFI_PAGE_SHIFT fix 2008-04-19 19:19:54 +02:00
entry_32.S x86: remove pointless comments 2008-04-19 19:19:54 +02:00
entry_64.S x86: ptrace vs -ENOSYS 2008-04-17 17:41:13 +02:00
genapic_64.c x86: move x86_cpu_to_apicid_init to smpboot.c 2008-04-17 17:41:34 +02:00
genapic_flat_64.c x86: use cpumask_of_cpu() 2008-04-17 17:41:36 +02:00
genx2apic_uv_x.c x86: support for new UV apic 2008-04-17 17:41:33 +02:00
geode_32.c x86: GEODE: MFGPT: Use "just-in-time" detection for the MFGPT timers 2008-02-09 23:24:08 +01:00
head32.c x86: introduce kernel/head32.c 2008-04-17 17:40:49 +02:00
head64.c x86_64: do not reserve ramdisk two times 2008-04-19 19:19:54 +02:00
head_32.S x86: remove pointless comments 2008-04-19 19:19:54 +02:00
head_64.S x86: move suspend wakeup code to C 2008-04-17 17:41:37 +02:00
hpet.c x86: revert assign IRQs to hpet timer 2008-04-04 18:36:49 +02:00
i386_ksyms_32.c Generic semaphore implementation 2008-04-17 10:42:34 -04:00
i387.c x86: clean up i387.c 2008-04-17 17:40:57 +02:00
i8237.c
i8253.c x86: pit_clockevent can be static 2008-02-13 16:20:35 +01:00
i8259_32.c x86: i8259A: remove redundant irq_descinitialization 2008-02-19 16:18:34 +01:00
i8259_64.c
init_task.c x86: delay the export removal of init_mm 2008-02-29 18:55:42 +01:00
io_apic_32.c x86: remove unnecessary tmp local variable 2008-04-17 17:41:36 +02:00
io_apic_64.c x86: use cpumask_of_cpu() 2008-04-17 17:41:36 +02:00
io_delay.c x86: add dmi quirk for io_delay 2008-03-26 22:23:40 +01:00
ioport.c
ipi.c x86: create ipi.c 2008-04-17 17:40:56 +02:00
irq_32.c x86: replace remaining __FUNCTION__ occurances 2008-04-17 17:40:57 +02:00
irq_64.c
k8.c
kdebugfs.c
kgdb.c x86: KGDB build fix 2008-04-19 19:19:54 +02:00
kprobes.c x86: replace most VM86 flags with flags from processor-flags.h 2008-04-17 17:41:33 +02:00
ldt.c
machine_kexec_32.c vmcoreinfo: fix the configuration dependencies 2008-02-07 08:42:25 -08:00
machine_kexec_64.c vmcoreinfo: add the symbol "phys_base" 2008-04-02 15:28:19 -07:00
Makefile Merge git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-kgdb 2008-04-18 08:37:01 -07:00
mca_32.c x86: coding style fixes to arch/x86/kernel/mca_32.c 2008-04-17 17:40:49 +02:00
mfgpt_32.c x86: GEODE: add missing module.h include 2008-03-26 22:23:40 +01:00
microcode.c x86: microcode: show results on success too 2008-04-17 17:41:32 +02:00
module_32.c
module_64.c
mpparse.c x86: print out buggy mptable 2008-04-17 17:41:36 +02:00
msr.c x86: coding style fixes to arch/x86/kernel/msr.c 2008-04-17 17:40:50 +02:00
nmi_32.c ftrace: add notrace annotations for NMI routines 2008-04-19 19:19:55 +02:00
nmi_64.c ftrace: add notrace annotations for NMI routines 2008-04-19 19:19:55 +02:00
numaq_32.c
paravirt_patch_32.c
paravirt_patch_64.c
paravirt.c x86: paravirt_ops: don't steal memory resources in paravirt_disable_iospace 2008-04-17 17:41:33 +02:00
pci-calgary_64.c
pci-dma_32.c
pci-dma_64.c x86 iommu: add more documentation 2008-04-17 17:40:59 +02:00
pci-gart_64.c x86, agpgart: scary messages are fortunately obsolete 2008-04-04 18:36:46 +02:00
pci-nommu_64.c
pci-swiotlb_64.c
pcspeaker.c
pmtimer_64.c
process_32.c x86: implement prctl PR_GET_TSC and PR_SET_TSC 2008-04-19 19:19:55 +02:00
process_64.c x86: implement prctl PR_GET_TSC and PR_SET_TSC 2008-04-19 19:19:55 +02:00
ptrace.c x86: regparm(3) is mandatory, no need to annotate 2008-04-17 17:40:45 +02:00
quirks.c x86: hpet clock enable quirk on nVidia nForce 430 2008-03-21 17:06:15 +01:00
reboot_fixups_32.c
reboot.c x86: use cpu_online() 2008-04-17 17:41:36 +02:00
relocate_kernel_32.S x86: relocate_kernel - use predefined macroses for page attributes 2008-04-17 17:41:29 +02:00
relocate_kernel_64.S x86: relocate_kernel - use predefined macroses for page attributes 2008-04-17 17:41:29 +02:00
rtc.c x86: fix cmos read and write to not use inb_p and outb_p 2008-04-17 17:40:47 +02:00
scx200_32.c
setup64.c x86: fix exec mappings comments 2008-04-19 19:19:55 +02:00
setup_32.c x86: move suspend wakeup code to C 2008-04-17 17:41:37 +02:00
setup_64.c x86_64: do not reserve ramdisk two times 2008-04-19 19:19:54 +02:00
setup.c x86: move up & smp variables to setup.c 2008-04-17 17:41:35 +02:00
sigframe.h x86: move struct definitions to unifed sigframe.h 2008-04-17 17:40:46 +02:00
signal_32.c x86: replace most VM86 flags with flags from processor-flags.h 2008-04-17 17:41:33 +02:00
signal_64.c x86: remove DEBUG_SIG 2008-04-17 17:40:57 +02:00
smp.c x86: move ipi definitions to mach_ipi.h 2008-04-17 17:41:30 +02:00
smpboot.c x86: standalone trampoline code 2008-04-17 17:41:37 +02:00
smpcommon_32.c x86: create smpcommon.c 2008-04-17 17:40:55 +02:00
smpcommon.c x86: create smpcommon.c 2008-04-17 17:40:55 +02:00
srat_32.c x86: replace remaining __FUNCTION__ occurances 2008-04-17 17:40:57 +02:00
stacktrace.c x86: don't save unreliable stack trace entries 2008-02-26 12:55:58 +01:00
step.c x86: prevent unconditional writes to DebugCtl MSR 2008-04-17 17:40:58 +02:00
summit_32.c x86: move mp_bus_id_to_node to numa.c 2008-04-17 17:40:59 +02:00
sys_i386_32.c
sys_x86_64.c
syscall_64.c x86: coding style fixes to arch/x86/kernel/syscall_64.c 2008-04-17 17:40:48 +02:00
syscall_table_32.S
tce_64.c
test_nx.c x86: Explicitly include required header files. 2008-04-17 17:41:15 +02:00
test_rodata.c x86: include proper prototypes for rodata_test 2008-02-14 23:30:20 +01:00
time_32.c
time_64.c time: fix typo in comments 2008-02-08 09:22:29 -08:00
tlb_32.c x86: create tlb files 2008-04-17 17:40:56 +02:00
tlb_64.c x86: move ipi definitions to mach_ipi.h 2008-04-17 17:41:30 +02:00
tls.c asmlinkage_protect replaces prevent_tail_call 2008-04-10 17:28:26 -07:00
tls.h
topology.c x86: fix section mismatch warning in topology.c:arch_register_cpu 2008-02-19 16:18:30 +01:00
trampoline_32.S
trampoline_64.S x86: move suspend wakeup code to C 2008-04-17 17:41:37 +02:00
trampoline.c x86: standalone trampoline code 2008-04-17 17:41:37 +02:00
traps_32.c ftrace: add notrace annotations for NMI routines 2008-04-19 19:19:55 +02:00
traps_64.c ftrace: add notrace annotations for NMI routines 2008-04-19 19:19:55 +02:00
tsc_32.c x86: clean up =0 initializations in arch/x86/kernel/tsc_32.c 2008-04-19 19:19:55 +02:00
tsc_64.c x86: set_cyc2ns_scale() remove prev scale 2008-04-17 17:41:34 +02:00
tsc_sync.c
verify_cpu_64.S
vm86_32.c x86: replace most VM86 flags with flags from processor-flags.h 2008-04-17 17:41:33 +02:00
vmi_32.c
vmiclock_32.c
vmlinux_32.lds.S x86: use ELF section to list CPU vendor specific code 2008-04-17 17:40:47 +02:00
vmlinux_64.lds.S x86: use ELF section to list CPU vendor specific code 2008-04-17 17:40:47 +02:00
vmlinux.lds.S
vsmp_64.c x86: clean up vSMP detection 2008-04-17 17:41:29 +02:00
vsyscall_64.c x86: restore vsyscall64 prochandler 2008-02-29 18:55:39 +01:00
x8664_ksyms_64.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86 2008-04-18 08:25:51 -07:00