kernel-fxtec-pro1x/arch/x86/include/asm
Peter Zijlstra 925d519ab8 perf_counter: unify and fix delayed counter wakeup
While going over the wakeup code I noticed delayed wakeups only work
for hardware counters but basically all software counters rely on
them.

This patch unifies and generalizes the delayed wakeup to fix this
issue.

Since we're dealing with NMI context bits here, use a cmpxchg() based
single link list implementation to track counters that have pending
wakeups.

[ This should really be generic code for delayed wakeups, but since we
  cannot use cmpxchg()/xchg() in generic code, I've let it live in the
  perf_counter code. -- Eric Dumazet could use it to aggregate the
  network wakeups. ]

Furthermore, the x86 method of using TIF flags was flawed in that its
quite possible to end up setting the bit on the idle task, loosing the
wakeup.

The powerpc method uses per-cpu storage and does appear to be
sufficient.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Paul Mackerras <paulus@samba.org>
Orig-LKML-Reference: <20090330171023.153932974@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-04-06 09:30:36 +02:00
..
uv sgi-gru: add macros for using the UV hub to send interrupts 2009-04-02 19:05:05 -07:00
visws
xen Merge branches 'x86/apic', 'x86/asm', 'x86/cleanups', 'x86/debug', 'x86/kconfig', 'x86/mm', 'x86/ptrace', 'x86/setup' and 'x86/urgent'; commit 'v2.6.29-rc8' into x86/core 2009-03-14 16:25:40 +01:00
a.out-core.h x86: add %gs accessors for x86_32 2009-02-10 00:41:58 +01:00
a.out.h
acpi.h x86: use early_ioremap in __acpi_map_table 2009-02-09 13:33:51 +01:00
aes.h crypto: aes - Export x86 AES encrypt/decrypt functions 2009-02-18 16:48:05 +08:00
agp.h
alternative-asm.h
alternative.h
amd_iommu.h
amd_iommu_types.h
apic.h Revert "x86: don't compile vsmp_64 for 32bit" 2009-03-25 21:34:28 +01:00
apicdef.h x86, mce, cmci: define MSR names and fields for new CMCI registers 2009-02-24 13:41:00 -08:00
apicnum.h irq: initialize nr_irqs based on nr_cpu_ids 2009-01-11 19:13:38 +01:00
apm.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
asm.h
atomic.h
atomic_32.h Merge commit 'v2.6.29-rc1' into perfcounters/core 2009-01-11 02:42:53 +01:00
atomic_64.h
auxvec.h
bios_ebda.h
bitops.h x86, generic: mark complex bitops.h inlines as __always_inline 2009-01-13 18:56:30 +01:00
boot.h x86: remove zImage support 2009-03-11 11:00:00 -07:00
bootparam.h
bug.h
bugs.h
byteorder.h byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
cache.h
cacheflush.h Merge branch 'tracing/core-v2' into tracing-for-linus 2009-04-02 00:49:02 +02:00
calgary.h
calling.h x86: document 64-bit and 32-bit function call convention ABI 2009-02-03 19:48:18 +01:00
checksum.h
checksum_32.h
checksum_64.h
cmpxchg.h
cmpxchg_32.h
cmpxchg_64.h
compat.h
cpu.h x86: generalize boot_cpu_id 2009-01-29 14:17:01 +01:00
cpu_debug.h x86: cpu_debug add support for various AMD CPUs 2009-03-14 18:07:58 +01:00
cpufeature.h crypto: aes-ni - Add support to Intel AES-NI instructions for x86_64 platform 2009-02-18 16:48:06 +08:00
cpumask.h x86: unify cpu_callin_mask/cpu_callout_mask/cpu_initialized_mask/cpu_sibling_setup_mask 2009-03-13 14:49:54 +10:30
cputime.h
current.h x86-64: Move current task from PDA to per-cpu and consolidate with 32-bit. 2009-01-19 00:38:58 +09:00
debugreg.h
delay.h
desc.h x86: cpu architecture debug code, build fix, cleanup 2009-03-11 14:52:03 +01:00
desc_defs.h
device.h
div64.h
dma-mapping.h dma-debug: x86 architecture bindings 2009-03-17 12:56:46 +01:00
dma.h
dmi.h x86/dmi: fix dmi_alloc() section mismatches 2009-03-23 17:20:50 +01:00
do_timer.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
ds.h
dwarf2.h
e820.h x86: e820 fix various signedness issues in setup.c and e820.c 2009-03-23 15:02:05 +05:30
edac.h
efi.h x86: EFI: Back efi_ioremap with init_memory_mapping instead of FIX_MAP 2009-03-04 19:20:16 +01:00
elf.h x86: make lazy %gs optional on x86_32 2009-02-10 00:42:00 +01:00
emergency-restart.h
entry_arch.h x86: UV, SGI RTC: add generic system vector 2009-03-04 20:25:37 +01:00
errno.h
fb.h
fcntl.h
fixmap.h Merge branch 'core/percpu' into percpu-cpumask-x86-for-linus-2 2009-03-27 17:28:43 +01:00
floppy.h
frame.h
ftrace.h tracing/syscalls: support for syscalls tracing on x86 2009-03-13 16:57:42 +01:00
futex.h
gart.h
genapic.h x86, apic: merge genapic.h into apic.h 2009-02-17 17:52:43 +01:00
geode.h
gpio.h
hardirq.h Merge branch 'linus' into perfcounters/core-v2 2009-04-06 09:02:57 +02:00
highmem.h x86: unify kmap_atomic_pfn() and iomap_atomic_prot_pfn() 2009-03-11 15:47:46 +01:00
hpet.h
hugetlb.h
hw_irq.h Merge branch 'linus' into perfcounters/core-v2 2009-04-06 09:02:57 +02:00
hypertransport.h
hypervisor.h
i387.h x86, math-emu: fix init_fpu for task != current 2009-03-04 20:33:16 +01:00
i8253.h
i8259.h x86: refactor x86_quirks support 2009-02-23 00:08:11 +01:00
ia32.h generic compat_sys_ustat 2009-03-27 14:43:57 -04:00
ia32_unistd.h
idle.h
init.h x86: move function and variable declarations to asm/init.h 2009-03-05 14:17:18 +01:00
io.h x86: remove vestigial fix_ioremap prototypes 2009-03-04 02:29:32 +01:00
io_32.h Merge branches 'x86/acpi', 'x86/asm', 'x86/cpudetect', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/doc', 'x86/header-fixes', 'x86/headers' and 'x86/minor-fixes' into x86/core 2009-02-13 09:46:36 +01:00
io_64.h Merge branches 'x86/acpi', 'x86/asm', 'x86/cpudetect', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/doc', 'x86/header-fixes', 'x86/headers' and 'x86/minor-fixes' into x86/core 2009-02-13 09:46:36 +01:00
io_apic.h x86, ioapic: Fix non atomic allocation with interrupts disabled 2009-03-17 15:45:29 -07:00
ioctl.h
ioctls.h
iomap.h Revert "gpu/drm, x86, PAT: PAT support for io_mapping_*" 2009-03-01 12:47:49 +01:00
iommu.h
ipcbuf.h
ipi.h x86, apic: remove duplicate asm/apic.h inclusions 2009-02-17 17:52:44 +01:00
irq.h x86: UV, SGI RTC: add generic system vector 2009-03-04 20:25:37 +01:00
irq_regs.h x86: merge irq_regs.h 2009-01-21 17:26:06 +09:00
irq_remapping.h x86, x2apic: fix clear_local_APIC() in the presence of x2apic 2009-03-17 15:43:51 -07:00
irq_vectors.h x86: UV, SGI RTC: add generic system vector 2009-03-04 20:25:37 +01:00
irqflags.h
ist.h
k8.h
Kbuild byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
kdebug.h
kexec.h x86, kexec: x86_64: add kexec jump support for x86_64 2009-03-10 18:13:25 -07:00
kgdb.h
kmap_types.h
kprobes.h
kvm.h KVM: Avoid using CONFIG_ in userspace visible headers 2009-03-24 11:03:06 +02:00
kvm_host.h KVM: Report IRQ injection status to userspace. 2009-03-24 11:03:11 +02:00
kvm_para.h
kvm_x86_emulate.h
ldt.h
lguest.h
lguest_hcall.h lguest: use KVM hypercalls 2009-03-30 21:55:24 +10:30
linkage.h x86: shrink __ALIGN and __ALIGN_STR definitions 2009-03-11 12:39:28 +01:00
local.h
mach_timer.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
mach_traps.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
math_emu.h x86: fix math_emu register frame access 2009-02-10 00:39:14 +01:00
mc146818rtc.h
mca.h
mca_dma.h
mce.h x86, mce, cmci: add CMCI support 2009-02-24 13:41:00 -08:00
microcode.h
mman.h
mmconfig.h
mmu.h
mmu_context.h x86: make lazy %gs optional on x86_32 2009-02-10 00:42:00 +01:00
mmx.h
mmzone.h
mmzone_32.h bootmem, x86: further fixes for arch-specific bootmem wrapping 2009-03-01 16:06:56 +09:00
mmzone_64.h mm: clean up for early_pfn_to_nid() 2009-02-18 15:37:55 -08:00
module.h
mpspec.h x86, numaq_32: clean up, misc 2009-02-17 17:53:54 +01:00
mpspec_def.h
msgbuf.h
msidef.h x86, x2apic: enable fault handling for intr-remapping 2009-03-17 15:38:59 -07:00
msr-index.h Merge branch 'linus' into x86/core 2009-03-28 22:27:45 +01:00
msr.h
mtrr.h headers_check fix: x86, mtrr.h 2009-01-31 00:17:39 +05:30
mutex.h
mutex_32.h
mutex_64.h
nmi.h
nops.h
numa.h
numa_32.h x86: set_highmem_pages_init() cleanup 2009-03-03 13:13:15 +01:00
numa_64.h
numaq.h x86, numaq: cleanups 2009-02-05 22:30:14 +01:00
olpc.h
page.h x86 headers: include linux/types.h 2009-02-13 13:23:02 +01:00
page_32.h x86 headers: protect page_32.h via __ASSEMBLY__ 2009-02-13 13:36:47 +01:00
page_32_types.h x86-32: compute initial mapping size more accurately 2009-03-14 17:23:47 -07:00
page_64.h x86: create _types.h counterparts for page*.h 2009-02-11 14:54:09 -08:00
page_64_types.h x86: move more pagetable-related definitions into pgtable*.h 2009-02-13 11:35:01 -08:00
page_types.h x86: clean up old gcc warnings 2009-03-05 14:50:55 +01:00
param.h
paravirt.h x86: with the last user gone, remove set_pte_present 2009-03-19 14:04:19 +01:00
parport.h
pat.h x86: clean up old gcc warnings 2009-03-05 14:50:55 +01:00
pci-direct.h
pci-functions.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
pci.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask 2009-04-05 10:33:07 -07:00
pci_64.h x86/dma: unify definition of pci_unmap_addr* and pci_unmap_len macros 2009-04-03 13:13:45 +02:00
pci_x86.h
percpu.h percpu: make x86 addr <-> pcpu ptr conversion macros generic 2009-03-10 16:27:48 +09:00
perf_counter.h perf_counter: unify and fix delayed counter wakeup 2009-04-06 09:30:36 +02:00
pgalloc.h x86, mm: fix pte_free() 2009-01-23 18:42:06 +01:00
pgtable-2level.h x86: with the last user gone, remove set_pte_present 2009-03-19 14:04:19 +01:00
pgtable-2level_types.h x86: move more pagetable-related definitions into pgtable*.h 2009-02-13 11:35:01 -08:00
pgtable-3level.h x86: with the last user gone, remove set_pte_present 2009-03-19 14:04:19 +01:00
pgtable-3level_types.h x86: move more pagetable-related definitions into pgtable*.h 2009-02-13 11:35:01 -08:00
pgtable.h x86: with the last user gone, remove set_pte_present 2009-03-19 14:04:19 +01:00
pgtable_32.h x86-32: use brk segment for allocating initial kernel pagetable 2009-03-14 17:23:47 -07:00
pgtable_32_types.h x86-32: use specific __vmalloc_start_set flag in __virt_addr_valid 2009-03-05 14:53:10 +01:00
pgtable_64.h Merge branches 'x86/acpi', 'x86/asm', 'x86/cpudetect', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/doc', 'x86/header-fixes', 'x86/headers' and 'x86/minor-fixes' into x86/core 2009-02-13 09:46:36 +01:00
pgtable_64_types.h x86: move more pagetable-related definitions into pgtable*.h 2009-02-13 11:35:01 -08:00
pgtable_types.h x86: move init_memory_mapping() to common mm/init.c, build fix on 32-bit PAE 2009-03-05 14:39:03 +01:00
poll.h
posix_types.h
posix_types_32.h
posix_types_64.h
prctl.h headers_check fix: x86, prctl.h 2009-02-02 23:27:09 +05:30
processor-cyrix.h
processor-flags.h
processor.h Merge branch 'linus' into cpumask-for-linus 2009-03-30 23:53:32 +02:00
proto.h x86/Voyager: remove X86_BIOS_REBOOT Kconfig quirk 2009-01-29 14:17:03 +01:00
ptrace-abi.h x86, ptrace: remove CONFIG guards around declarations 2009-02-24 18:23:35 +01:00
ptrace.h x86: make lazy %gs optional on x86_32 2009-02-10 00:42:00 +01:00
pvclock-abi.h
pvclock.h
rdc321x_defs.h x86, rdc321x: remove/move leftover files 2009-01-18 19:39:18 +01:00
reboot.h
reboot_fixups.h
required-features.h
resource.h
resume-trace.h
rio.h
rtc.h
rwlock.h
rwsem.h
scatterlist.h
seccomp.h
seccomp_32.h x86-64: seccomp: fix 32/64 syscall hole 2009-03-02 15:41:30 -08:00
seccomp_64.h x86-64: seccomp: fix 32/64 syscall hole 2009-03-02 15:41:30 -08:00
sections.h x86: add brk allocation for very, very early allocations 2009-03-14 15:37:14 -07:00
segment.h x86: implement x86_32 stack protector 2009-02-10 00:42:01 +01:00
sembuf.h
serial.h
setup.h x86: headers cleanup - setup.h 2009-03-26 18:29:49 +01:00
setup_arch.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
shmbuf.h
shmparam.h
sigcontext.h headers_check fix: x86, sigcontext.h 2009-01-31 00:18:30 +05:30
sigcontext32.h headers_check fix: x86, sigcontext32.h 2009-01-31 00:18:58 +05:30
sigframe.h
siginfo.h
signal.h
smp.h x86: arch_send_call_function_ipi_mask 2009-03-13 14:49:51 +10:30
smpboot_hooks.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
socket.h net: new user space API for time stamping of incoming and outgoing packets 2009-02-15 22:43:33 -08:00
sockios.h
sparsemem.h
spinlock.h Allow rwlocks to re-enable interrupts 2009-04-02 19:05:11 -07:00
spinlock_types.h
srat.h
stackprotector.h x86: fix x86_32 stack protector bugs 2009-02-11 11:33:49 +01:00
stacktrace.h
stat.h
statfs.h
string.h
string_32.h
string_64.h
suspend.h
suspend_32.h pm: cleanup includes 2009-04-01 08:59:16 -07:00
suspend_64.h
svm.h KVM: SVM: Move EFER and MSR constants to generic x86 code 2009-03-24 11:02:46 +02:00
swab.h headers_check fix: x86, swab.h 2009-01-31 00:19:32 +05:30
swiotlb.h
sync_bitops.h
sys_ia32.h generic compat_sys_ustat 2009-03-27 14:43:57 -04:00
syscall.h
syscalls.h x86: syscalls.h: remove asmlinkage from declaration of sys_rt_sigreturn() 2009-02-19 12:18:54 +01:00
system.h x86: add forward decl for tss_struct 2009-03-02 12:07:49 +01:00
system_64.h
tce.h
termbits.h
termios.h
therm_throt.h
thread_info.h perf_counter: unify and fix delayed counter wakeup 2009-04-06 09:30:36 +02:00
time.h
timer.h x86: fix mismerge in arch/x86/include/asm/timer.h 2009-03-30 10:10:49 -07:00
timex.h x86: use standard PIT frequency 2009-01-25 16:57:47 +01:00
tlb.h
tlbflush.h x86-64: Move TLB state from PDA to per-cpu and consolidate with 32-bit. 2009-01-19 00:38:57 +09:00
topology.h Merge branch 'cpumask-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-03-31 13:33:50 +10:30
trampoline.h x86: load pointer to pda into %gs while brining up a CPU 2009-01-16 14:19:26 +01:00
traps.h x86: use pt_regs pointer in do_device_not_available() 2009-02-11 12:40:44 +01:00
tsc.h
types.h
uaccess.h x86: uaccess: use errret as error value in __put_user_size() 2009-02-04 17:28:21 -08:00
uaccess_32.h x86, mm: dont use non-temporal stores in pagecache accesses 2009-03-02 11:06:49 +01:00
uaccess_64.h x86, mm: dont use non-temporal stores in pagecache accesses 2009-03-02 11:06:49 +01:00
ucontext.h
unaligned.h
unistd.h
unistd_32.h Merge branch 'linus' into perfcounters/core-v2 2009-04-06 09:02:57 +02:00
unistd_64.h Merge branch 'linus' into perfcounters/core-v2 2009-04-06 09:02:57 +02:00
user.h
user32.h
user_32.h
user_64.h
vdso.h
vga.h
vgtod.h
virtext.h KVM: SVM: Move EFER and MSR constants to generic x86 code 2009-03-24 11:02:46 +02:00
vm86.h
vmi.h
vmi_time.h
vmware.h
vmx.h KVM: x86: Virtualize debug registers 2009-03-24 11:02:49 +02:00
vsyscall.h
xcr.h
xor.h
xor_32.h
xor_64.h
xsave.h