kernel-fxtec-pro1x/arch/powerpc/include/asm
Ingo Molnar c5905afb0e static keys: Introduce 'struct static_key', static_key_true()/false() and static_key_slow_[inc|dec]()
So here's a boot tested patch on top of Jason's series that does
all the cleanups I talked about and turns jump labels into a
more intuitive to use facility. It should also address the
various misconceptions and confusions that surround jump labels.

Typical usage scenarios:

        #include <linux/static_key.h>

        struct static_key key = STATIC_KEY_INIT_TRUE;

        if (static_key_false(&key))
                do unlikely code
        else
                do likely code

Or:

        if (static_key_true(&key))
                do likely code
        else
                do unlikely code

The static key is modified via:

        static_key_slow_inc(&key);
        ...
        static_key_slow_dec(&key);

The 'slow' prefix makes it abundantly clear that this is an
expensive operation.

I've updated all in-kernel code to use this everywhere. Note
that I (intentionally) have not pushed through the rename
blindly through to the lowest levels: the actual jump-label
patching arch facility should be named like that, so we want to
decouple jump labels from the static-key facility a bit.

On non-jump-label enabled architectures static keys default to
likely()/unlikely() branches.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Jason Baron <jbaron@redhat.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Cc: a.p.zijlstra@chello.nl
Cc: mathieu.desnoyers@efficios.com
Cc: davem@davemloft.net
Cc: ddaney.cavm@gmail.com
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/20120222085809.GA26397@elte.hu
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2012-02-24 10:05:59 +01:00
..
iseries
8xx_immap.h powerpc: Fix multicast problem in fs_enet driver 2011-04-21 16:59:30 -07:00
abs_addr.h
agp.h
asm-compat.h
asm-offsets.h
async_tx.h
atomic.h powerpc: Fix atomic_xxx_return barrier semantics 2011-11-17 16:26:07 +11:00
auxvec.h
backlight.h
bitops.h powerpc: Fix atomic_xxx_return barrier semantics 2011-11-17 16:26:07 +11:00
bitsperlong.h
bootx.h
btext.h
bug.h
bugs.h
byteorder.h
cache.h
cacheflush.h
cell-pmu.h
cell-regs.h
checksum.h
clk_interface.h
code-patching.h
compat.h compat: sync compat_stats with statfs. 2011-10-28 14:58:53 +02:00
cpm.h Fix common misspellings 2011-03-31 11:26:23 -03:00
cpm1.h Fix common misspellings 2011-03-31 11:26:23 -03:00
cpm2.h
cputable.h powerpc: POWER7 optimised copy_to_user/copy_from_user using VMX 2011-12-19 14:40:40 +11:00
cputhreads.h powerpc: Convert old cpumask API into new one 2011-05-04 15:22:59 +10:00
cputime.h Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2012-01-06 17:58:22 -08:00
current.h
dbdma.h
dbell.h powerpc: Fix doorbell type shift 2011-06-20 11:21:48 +10:00
dcr-generic.h
dcr-mmio.h
dcr-native.h
dcr-regs.h
dcr.h
delay.h
device.h powerpc: Use the newly added get_required_mask dma_map_ops hook 2011-09-20 09:19:35 +10:00
disassemble.h
div64.h
dma-mapping.h powerpc: Use the newly added get_required_mask dma_map_ops hook 2011-09-20 09:19:35 +10:00
dma.h
edac.h
eeh.h
eeh_event.h
ehv_pic.h powerpc: introduce the ePAPR embedded hypervisor vmpic driver 2011-06-27 08:30:26 -05:00
elf.h treewide: fix potentially dangerous trailing ';' in #defined values/expressions 2011-07-21 14:10:00 +02:00
emergency-restart.h
emulated_ops.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
epapr_hcalls.h powerpc: introduce ePAPR embedded hypervisor hcall interface 2011-06-27 08:30:19 -05:00
errno.h
exception-64e.h powerpc/book3e-64: use a separate TLB handler when linear map is bolted 2011-06-29 17:47:48 +10:00
exception-64s.h KVM: PPC: book3s_hv: Add support for PPC970-family processors 2011-07-12 13:16:59 +03:00
fb.h
fcntl.h
feature-fixups.h powerpc: Use new CPU feature bit to select 2.06 tlbie 2011-05-04 15:19:26 +10:00
firmware.h powerpc/powernv: Basic support for OPAL 2011-09-20 16:09:50 +10:00
fixmap.h
floppy.h powerpc/irq: Remove IRQF_DISABLED 2011-11-08 14:51:46 +11:00
fs_pd.h
fsl_85xx_cache_sram.h
fsl_gtm.h
fsl_guts.h
fsl_hcalls.h powerpc: introduce ePAPR embedded hypervisor hcall interface 2011-06-27 08:30:19 -05:00
fsl_ifc.h powerpc/fsl: Add support for Integrated Flash Controller 2012-01-04 15:41:22 -06:00
fsl_lbc.h powerpc/85xx: Add lbc suspend support for PM 2011-11-24 02:01:40 -06:00
ftrace.h powerpc/ftrace: Implement raw syscall tracepoints on PowerPC 2011-05-26 13:38:57 +10:00
futex.h powerpc: Fix atomic_xxx_return barrier semantics 2011-11-17 16:26:07 +11:00
gpio.h
grackle.h
hardirq.h
heathrow.h
highmem.h
hugetlb.h powerpc: Define/use HUGETLB_NEED_PRELOAD insead of complicated #if 2011-12-07 16:26:24 +11:00
hvcall.h KVM: PPC: Handle some PAPR hcalls in the kernel 2011-07-12 13:16:55 +03:00
hvconsole.h
hvcserver.h
hvsi.h powerpc/hvsi: Fix conflict with old HVSI driver 2011-07-01 13:10:21 +10:00
hw_breakpoint.h perf, powerpc: Fix build borkage 2011-07-01 16:20:04 +02:00
hw_irq.h powerpc: Use ARCH_IRQ_INIT_FLAGS 2011-03-02 16:50:24 +11:00
hydra.h
i8259.h
ibmebus.h
ide.h
immap_cpm2.h
immap_qe.h
io-defs.h
io-workarounds.h powerpc/pci: Make IO workarounds init implicit when first bus is registered 2011-04-27 14:18:31 +10:00
io.h treewide: Fix typos in various parts of the kernel, and fix some comments. 2011-12-02 14:57:31 +01:00
io_event_irq.h powerpc/pseries: Add support for IO event interrupts 2011-05-06 13:19:01 +10:00
ioctl.h
ioctls.h tty: add TIOCVHANGUP to allow clean tty shutdown of all ttys 2011-02-17 14:16:30 -08:00
iommu.h
ipcbuf.h
ipic.h
irq.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
irq_regs.h
irqflags.h powerpc/ppc64/tracing: Add stack frame to calls of trace_hardirqs_on/off 2011-01-21 14:08:33 +11:00
jump_label.h static keys: Introduce 'struct static_key', static_key_true()/false() and static_key_slow_[inc|dec]() 2012-02-24 10:05:59 +01:00
Kbuild powerpc: Use rwsem.h from generic location 2011-12-16 14:39:48 +11:00
kdebug.h
kdump.h powerpc: Rename mapping based RELOCATABLE to DYNAMIC_MEMSTART for BookE 2011-12-20 10:20:19 -05:00
kexec.h powerpc: Cleanup crash/kexec code 2011-12-08 14:02:23 +11:00
keylargo.h treewide: Fix typos in various parts of the kernel, and fix some comments. 2011-12-02 14:57:31 +01:00
kgdb.h
kmap_types.h
kprobes.h Fix common misspellings 2011-03-31 11:26:23 -03:00
kvm.h KVM: PPC: Whitespace fix for kvm.h 2011-12-27 11:26:43 +02:00
kvm_44x.h KVM: PPC: booke: add sregs support 2011-05-22 08:47:53 -04:00
kvm_asm.h KVM: PPC: Add support for Book3S processors in hypervisor mode 2011-07-12 13:16:54 +03:00
kvm_book3s.h KVM: PPC: move compute_tlbie_rb to book3s_64 common header 2011-12-26 13:28:00 +02:00
kvm_book3s_32.h
kvm_book3s_64.h KVM: PPC: move compute_tlbie_rb to book3s_64 common header 2011-12-26 13:28:00 +02:00
kvm_book3s_asm.h KVM: PPC: Implement H_CEDE hcall for book3s_hv in real-mode code 2011-09-25 19:52:30 +03:00
kvm_booke.h KVM: PPC: Add support for Book3S processors in hypervisor mode 2011-07-12 13:16:54 +03:00
kvm_e500.h KVM: PPC: e500: Add shadow PID support 2011-07-12 13:16:39 +03:00
kvm_fpu.h
kvm_host.h KVM: PPC: Implement H_CEDE hcall for book3s_hv in real-mode code 2011-09-25 19:52:30 +03:00
kvm_para.h
kvm_ppc.h KVM: PPC: Add sanity checking to vcpu_run 2011-09-25 19:52:27 +03:00
libata-portmap.h
linkage.h
local.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
local64.h
lppaca.h powerpc: Ensure dtl buffers do not cross 4k boundary 2011-05-19 14:30:41 +10:00
lv1call.h powerpc/ps3: Fix hcall lv1_read_repository_node 2011-12-08 14:05:55 +11:00
machdep.h powerpc/pci: Add a platform hook after probe and before resource survey 2011-11-25 14:32:53 +11:00
macio.h treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
mc146818rtc.h
mediabay.h
mman.h
mmu-8xx.h
mmu-40x.h
mmu-44x.h
mmu-book3e.h powerpc: Define/use HUGETLB_NEED_PRELOAD insead of complicated #if 2011-12-07 16:26:24 +11:00
mmu-hash32.h
mmu-hash64.h powerpc: Fix comment explaining our VSID layout 2011-12-19 14:41:22 +11:00
mmu.h powerpc: Hugetlb for BookE 2011-09-20 09:19:40 +10:00
mmu_context.h powerpc: Add Initiate Coprocessor Store Word (icswx) support 2011-05-04 15:19:26 +10:00
mmzone.h Fix node_start/end_pfn() definition for mm/page_cgroup.c 2011-06-27 14:13:09 -07:00
module.h
mpc5xxx.h
mpc6xx.h
mpc8xx.h
mpc52xx.h
mpc52xx_psc.h
mpc5121.h
mpc8260.h
mpic.h powerpc/mpic: Cache the device-tree node in "struct mpic" 2011-12-07 13:43:08 +11:00
msgbuf.h
msi_bitmap.h
mutex.h
nvram.h powerpc/nvram: Generalize code for OS partitions in NVRAM 2011-03-04 18:19:04 +11:00
ohare.h
opal.h powerpc/powernv: Update OPAL interfaces 2011-12-07 18:02:02 +11:00
oprofile_impl.h
paca.h powerpc: Provide a way for KVM to indicate that NV GPR values are lost 2011-12-08 14:22:53 +11:00
page.h powerpc: Define virtual-physical translations for RELOCATABLE 2011-12-20 10:21:34 -05:00
page_32.h
page_64.h powerpc: Only define HAVE_ARCH_HUGETLB_UNMAPPED_AREA if PPC_MM_SLICES 2011-12-07 16:26:21 +11:00
param.h
parport.h
pasemi_dma.h Fix common misspellings 2011-03-31 11:26:23 -03:00
pci-bridge.h Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
pci.h Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
percpu.h
perf_event.h
perf_event_fsl_emb.h
perf_event_server.h perf, arch: Rework perf_event_index() 2011-12-21 11:01:07 +01:00
pgalloc-32.h
pgalloc-64.h
pgalloc.h mm, powerpc: move the RCU page-table freeing into generic code 2011-05-25 08:39:16 -07:00
pgtable-ppc32.h
pgtable-ppc64-4k.h
pgtable-ppc64-64k.h
pgtable-ppc64.h powerpc: Whitespace fix to include/asm/pgtable-ppc64.h 2011-06-29 17:48:16 +10:00
pgtable.h powerpc: Add pgprot_cached_noncoherent() 2011-11-25 14:32:52 +11:00
phyp_dump.h
pmac_feature.h Fix common misspellings 2011-03-31 11:26:23 -03:00
pmac_low_i2c.h
pmac_pfunc.h
pmc.h
pmi.h
poll.h
posix_types.h
ppc-opcode.h net: filter: BPF 'JIT' compiler for PPC64 2011-07-21 12:38:32 -07:00
ppc-pci.h
ppc4xx.h
ppc_asm.h powerpc/e500: SPE register saving: take arbitrary struct offset 2011-07-12 13:16:31 +03:00
processor.h powerpc/cpuidle: Handle power_save=off 2011-12-08 13:57:34 +11:00
prom.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
ps3.h
ps3av.h
ps3fb.h
ps3gpu.h
ps3stor.h
pSeries_reconfig.h powerpc/pseries: Introduce pSeries_reconfig_notify() 2011-06-29 17:48:22 +10:00
pte-8xx.h
pte-40x.h
pte-44x.h
pte-book3e.h powerpc: Hugetlb for BookE 2011-09-20 09:19:40 +10:00
pte-common.h powerpc: Don't write protect kernel text with CONFIG_DYNAMIC_FTRACE enabled 2011-04-18 13:08:21 +10:00
pte-fsl-booke.h
pte-hash32.h
pte-hash64-4k.h
pte-hash64-64k.h treewide: fix a few typos in comments 2011-05-10 10:16:21 +02:00
pte-hash64.h
ptrace.h Audit: push audit success and retcode into arch ptrace.h 2012-01-17 16:16:56 -05:00
qe.h doc: fix broken references 2011-09-27 18:08:04 +02:00
qe_ic.h powerpc: qe_ic: Rename get_irq_desc_data and get_irq_desc_chip 2011-03-30 15:38:02 +02:00
reg.h powerpc/476fpe: Add 476fpe SoC code 2011-12-09 07:51:02 -05:00
reg_8xx.h
reg_a2.h powerpc: Add early debug for WSP platforms 2011-05-06 13:32:41 +10:00
reg_booke.h powerpc/book3e: Add ICSWX/ACOP support to Book3e cores like A2 2011-11-25 14:11:28 +11:00
reg_fsl_emb.h
resource.h
rheap.h
rio.h powerpc/fsl_rio: Fix compile error when CONFIG_FSL_RIO not set 2011-06-02 15:29:08 -05:00
rtas.h powerpc: Punch a hole in /dev/mem for librtas 2011-12-08 14:22:52 +11:00
rtc.h
scatterlist.h
scom.h powerpc: Add SCOM infrastructure 2011-04-20 17:01:19 +10:00
seccomp.h
sections.h powerpc: Copy down exception vectors after feature fixups 2011-11-16 14:47:54 +11:00
sembuf.h
serial.h
setjmp.h
setup.h powerpc: Fix build problem with default ppc_md.progress commit 2011-07-01 13:00:21 +10:00
sfp-machine.h
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h
smp.h powerpc/smp: More generic support for "soft hotplug" 2011-09-20 15:53:24 +10:00
smu.h treewide: fix potentially dangerous trailing ';' in #defined values/expressions 2011-07-21 14:10:00 +02:00
socket.h net: add wireless TX status socket option 2011-11-09 16:01:02 -05:00
sockios.h
sparsemem.h powerpc: Fix oops when echoing bad values to /sys/devices/system/memory/probe 2011-09-20 15:53:23 +10:00
spinlock.h
spinlock_types.h
spu.h Merge branch 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2012-01-08 12:19:57 -08:00
spu_csa.h
spu_info.h
spu_priv1.h Fix common misspellings 2011-03-31 11:26:23 -03:00
sstep.h
stat.h
statfs.h
string.h
swab.h
swiotlb.h
synch.h powerpc: Fix atomic_xxx_return barrier semantics 2011-11-17 16:26:07 +11:00
syscall.h powerpc/ftrace: Implement raw syscall tracepoints on PowerPC 2011-05-26 13:38:57 +10:00
syscalls.h
systbl.h Cross Memory Attach 2011-10-31 17:30:44 -07:00
system.h Merge branch 'kexec' into next 2011-12-16 11:09:21 +11:00
tce.h powerpc/powernv: Add TCE SW invalidation support 2011-11-25 14:32:57 +11:00
termbits.h
termios.h
thread_info.h freezer: remove now unused TIF_FREEZE 2011-11-21 12:32:25 -08:00
time.h powerpc/time: Optimise decrementer_check_overflow 2011-11-25 14:11:26 +11:00
timex.h
tlb.h mm, powerpc: move the RCU page-table freeing into generic code 2011-05-25 08:39:16 -07:00
tlbflush.h powerpc/mm: Standardise on MMU_NO_CONTEXT 2011-04-20 16:59:20 +10:00
topology.h cpu: convert 'cpu' and 'machinecheck' sysdev_class to a regular subsystem 2011-12-21 14:29:42 -08:00
trace.h
tsi108.h
tsi108_irq.h
tsi108_pci.h
types.h Merge branch 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2012-01-08 12:19:57 -08:00
uaccess.h
ucc.h
ucc_fast.h
ucc_slow.h
ucontext.h
udbg.h Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2011-11-06 17:12:03 -08:00
uic.h
unaligned.h
uninorth.h Revert wrong fixes for common misspellings 2011-04-26 23:31:11 -07:00
unistd.h Cross Memory Attach 2011-10-31 17:30:44 -07:00
user.h
vdso.h
vdso_datapage.h Fix common misspellings 2011-03-31 11:26:23 -03:00
vga.h
vio.h
wsp.h powerpc: Add WSP platform 2011-05-06 13:32:35 +10:00
xics.h powerpc/irq: Remove IRQF_DISABLED 2011-11-08 14:51:46 +11:00
xilinx_intc.h
xilinx_pci.h
xmon.h
xor.h