kernel_optimize_test/arch/i386/kernel
Andrea Arcangeli ffaa8bd6c9 [PATCH] seccomp: tsc disable
I believe at least for seccomp it's worth to turn off the tsc, not just for
HT but for the L2 cache too.  So it's up to you, either you turn it off
completely (which isn't very nice IMHO) or I recommend to apply this below
patch.

This has been tested successfully on x86-64 against current cogito
repository (i686 compiles so I didn't bother testing ;).  People selling
the cpu through cpushare may appreciate this bit for a peace of mind.

There's no way to get any timing info anymore with this applied
(gettimeofday is forbidden of course).  The seccomp environment is
completely deterministic so it can't be allowed to get timing info, it has
to be deterministic so in the future I can enable a computing mode that
does a parallel computing for each task with server side transparent
checkpointing and verification that the output is the same from all the 2/3
seller computers for each task, without the buyer even noticing (for now
the verification is left to the buyer client side and there's no
checkpointing, since that would require more kernel changes to track the
dirty bits but it'll be easy to extend once the basic mode is finished).

Eliminating a cold-cache read of the cr4 global variable will save one
cacheline during the tlb flush while making the code per-cpu-safe at the
same time.  Thanks to Mikael Pettersson for noticing the tlb flush wasn't
per-cpu-safe.

The global tlb flush can run from irq (IPI calling do_flush_tlb_all) but
it'll be transparent to the switch_to code since the IPI won't make any
change to the cr4 contents from the point of view of the interrupted code
and since it's now all per-cpu stuff, it will not race.  So no need to
disable irqs in switch_to slow path.

Signed-off-by: Andrea Arcangeli <andrea@cpushare.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-27 15:11:44 -07:00
..
acpi [PATCH] dmi: move ACPI sleep quirk 2005-06-25 16:24:28 -07:00
cpu [PATCH] get rid of redundant NULL checks before kfree() in arch/i386/ 2005-06-25 16:25:00 -07:00
timers [PATCH] init call cleanup 2005-06-25 16:24:30 -07:00
apic.c [PATCH] kexec: x86: resture apic virtual wire mode on shutdown 2005-06-25 16:24:47 -07:00
apm.c [PATCH] arch/i386/kernel/apm.c: fix sparse warnings 2005-06-25 16:24:58 -07:00
asm-offsets.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
bootflag.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpuid.c [PATCH] class: convert arch/* to use the new class api instead of class_simple 2005-06-20 15:15:09 -07:00
crash.c [PATCH] kexec code cleanup 2005-06-25 16:24:55 -07:00
dmi_scan.c [PATCH] dmi: spring cleanup 2005-06-25 16:24:28 -07:00
doublefault.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
early_printk.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
efi_stub.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
efi.c [PATCH] crashdump: x86 crashkernel option 2005-06-25 16:24:50 -07:00
entry.S [PATCH] uml: fix syscall table by including $(SUBARCH)'s one, for i386 2005-05-01 08:58:55 -07:00
head.S [PATCH] variable overflow after hundreds round of hotplug CPU 2005-06-25 16:24:28 -07:00
i386_ksyms.c [PATCH] Remove i386_ksyms.c, almost. 2005-06-23 09:45:11 -07:00
i387.c [PATCH] Remove i386_ksyms.c, almost. 2005-06-23 09:45:11 -07:00
i8259.c [PATCH] kexec: x86: i8259 shutdown: disable interrupts 2005-06-25 16:24:46 -07:00
init_task.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
io_apic.c Merge Christoph's freeze cleanup patch 2005-06-25 17:16:53 -07:00
ioport.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq.c [PATCH] cpu state clean after hot remove 2005-06-25 16:24:30 -07:00
kprobes.c [PATCH] kprobes: Temporary disarming of reentrant probe for i386 2005-06-23 09:45:24 -07:00
ldt.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
machine_kexec.c [PATCH] kexec code cleanup 2005-06-25 16:24:55 -07:00
Makefile [PATCH] kexec: x86 kexec core 2005-06-25 16:24:49 -07:00
mca.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
microcode.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
module.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mpparse.c [PATCH] i386: cleanup boot_cpu_logical_apicid variables 2005-06-25 16:25:05 -07:00
msr.c [PATCH] class: convert arch/* to use the new class api instead of class_simple 2005-06-20 15:15:09 -07:00
nmi.c [PATCH] adjust i386 watchdog tick calculation 2005-06-23 09:45:09 -07:00
numaq.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci-dma.c [PATCH] Remove i386_ksyms.c, almost. 2005-06-23 09:45:11 -07:00
process.c [PATCH] seccomp: tsc disable 2005-06-27 15:11:44 -07:00
ptrace.c [PATCH] xen: x86: Rename usermode macro 2005-06-23 09:45:14 -07:00
quirks.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
reboot_fixups.c [PATCH] x86 reboot: Add reboot fixup for gx1/cs5530a 2005-05-01 08:58:49 -07:00
reboot.c [PATCH] kexec: x86: factor out apic shutdown code 2005-06-25 16:24:49 -07:00
relocate_kernel.S [PATCH] kexec: x86 kexec core 2005-06-25 16:24:49 -07:00
scx200.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
semaphore.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
setup.c [PATCH] Retrieve elfcorehdr address from command line 2005-06-25 16:24:53 -07:00
sigframe.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
signal.c Fix up try_to_freeze() usage in arch/i386/kernel/signal.c 2005-06-25 20:09:12 -07:00
smp.c [PATCH] sep initializing rework 2005-06-25 16:24:29 -07:00
smpboot.c [PATCH] cpu state clean after hot remove 2005-06-25 16:24:30 -07:00
srat.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
summit.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_i386.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
syscall_table.S [PATCH] Update cfq io scheduler to time sliced design 2005-06-27 14:33:29 -07:00
sysenter.c [PATCH] sep initializing rework 2005-06-25 16:24:29 -07:00
time_hpet.c [PATCH] CPU hotplug: fix hpet sectioning 2005-06-25 16:24:28 -07:00
time.c [PATCH] x86: cpu_khz type fix 2005-06-23 09:45:11 -07:00
trampoline.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
traps.c [PATCH] arch/i386/kernel/traps.c: fix sparse warnings 2005-06-25 16:24:58 -07:00
vm86.c [PATCH] misc verify_area cleanups 2005-05-01 08:59:08 -07:00
vmlinux.lds.S [PATCH] kexec: x86: add CONFIG_PYSICAL_START 2005-06-25 16:24:48 -07:00
vsyscall-int80.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vsyscall-note.S [PATCH] i386 vDSO: add PT_NOTE segment 2005-04-16 15:24:48 -07:00
vsyscall-sigreturn.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vsyscall-sysenter.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vsyscall.lds.S [PATCH] i386 vDSO: add PT_NOTE segment 2005-04-16 15:24:48 -07:00
vsyscall.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00