linux/include/trace/events
Shreyas B. Prabhu 649b8de2f7 tracing/mm: don't trace mm_page_pcpu_drain on offline cpus
Since tracepoints use RCU for protection, they must not be called on
offline cpus.  trace_mm_page_pcpu_drain can be called on an offline cpu
in this scenario caught by LOCKDEP:

     ===============================
     [ INFO: suspicious RCU usage. ]
     4.1.0-rc1+ #9 Not tainted
     -------------------------------
     include/trace/events/kmem.h:265 suspicious rcu_dereference_check() usage!

    other info that might help us debug this:

    RCU used illegally from offline CPU!
    rcu_scheduler_active = 1, debug_locks = 1
     1 lock held by swapper/5/0:
      #0:  (&(&zone->lock)->rlock){..-...}, at: [<c0000000002073b0>] .free_pcppages_bulk+0x70/0x920

    stack backtrace:
     CPU: 5 PID: 0 Comm: swapper/5 Not tainted 4.1.0-rc1+ #9
     Call Trace:
       .dump_stack+0x98/0xd4 (unreliable)
       .lockdep_rcu_suspicious+0x108/0x170
       .free_pcppages_bulk+0x60c/0x920
       .free_hot_cold_page+0x208/0x280
       .destroy_context+0x90/0xd0
       .__mmdrop+0x58/0x160
       .idle_task_exit+0xf0/0x100
       .pnv_smp_cpu_kill_self+0x58/0x2c0
       .cpu_die+0x34/0x50
       .arch_cpu_idle_dead+0x20/0x40
       .cpu_startup_entry+0x708/0x7a0
       .start_secondary+0x36c/0x3a0
       start_secondary_prolog+0x10/0x14

Fix this by converting mm_page_pcpu_drain trace point into
TRACE_EVENT_CONDITION where condition is cpu_online(smp_processor_id())

Signed-off-by: Shreyas B. Prabhu <shreyas@linux.vnet.ibm.com>
Reviewed-by: Preeti U Murthy <preeti@linux.vnet.ibm.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2015-05-28 18:25:18 -07:00
..
9p.h net/9p/tracing: Export enums in tracepoints to userspace 2015-04-08 09:39:59 -04:00
asoc.h ASoC: Remove snd_soc_cache_sync() implementation 2014-11-09 09:06:30 +00:00
bcache.h bcache: fix crash in bcache_btree_node_alloc_fail tracepoint 2014-08-04 15:23:03 -07:00
block.h blktrace: fix accounting of partially completed requests 2014-03-05 16:11:21 -07:00
btrfs.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2015-04-26 17:22:07 -07:00
clk.h clk: Add tracepoints for hardware operations 2015-03-12 12:18:51 -07:00
cma.h mm: cma: add trace events for CMA allocations and freeings 2015-04-15 16:35:19 -07:00
compaction.h mm/compaction: add tracepoint to observe behaviour of compaction defer 2015-02-11 17:06:04 -08:00
context_tracking.h context_tracking: User/kernel broundary cross trace events 2013-08-14 17:14:48 +02:00
ext3.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2015-04-26 17:22:07 -07:00
ext4.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2015-04-26 17:22:07 -07:00
f2fs.h Merge tag 'for-f2fs-4.1' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs 2015-04-18 11:17:20 -04:00
fence.h fence: dma-buf cross-device synchronization (v18) 2014-07-08 12:18:56 -07:00
filelock.h locks: generic_delete_lease doesn't need a file_lock at all 2014-10-07 14:06:12 -04:00
filemap.h tracing, mm: Record pfn instead of pointer to struct page 2015-04-13 11:44:52 -03:00
gfpflags.h mm: get rid of __GFP_KMEMCG 2014-06-04 16:53:56 -07:00
gpio.h
host1x.h gpu: host1x: Use struct host1x_bo pointers in traces 2014-11-13 16:11:32 +01:00
hswadsp.h Merge remote-tracking branches 'asoc/topic/ml26124', 'asoc/topic/of', 'asoc/topic/omap', 'asoc/topic/pxa' and 'asoc/topic/rcar' into asoc-next 2014-03-12 23:04:35 +00:00
i2c.h i2c: Add message transfer tracepoints for SMBUS [ver #2] 2014-03-13 22:15:07 +01:00
intel-sst.h tracing: Add TRACE_SYSTEM_VAR to intel-sst 2015-04-07 12:31:12 -04:00
iommu.h iommu: Change trace unmap api to report unmapped size 2015-01-19 15:19:31 +01:00
ipi.h tracepoint: add generic tracepoint definitions for IPI tracing 2014-08-07 20:40:40 -04:00
irq.h irq/tracing: Export enums in tracepoints to user space 2015-04-08 09:40:00 -04:00
jbd2.h jbd2: trace when lock_buffer in do_get_write_access takes a long time 2013-04-21 16:47:54 -04:00
jbd.h jbd: Write journal superblock with WRITE_FUA after checkpointing 2012-05-15 23:34:37 +02:00
kmem.h tracing/mm: don't trace mm_page_pcpu_drain on offline cpus 2015-05-28 18:25:18 -07:00
kvm.h Fairly small update, but there are some interesting new features. 2015-02-13 09:55:09 -08:00
libata.h libata: Add tracepoints 2015-03-27 11:59:22 -04:00
lock.h
mce.h
migrate.h mm: tracing: Export enums in tracepoints to user space 2015-04-08 09:40:01 -04:00
module.h tracing: %pF is only for function pointers 2015-03-25 08:57:22 -04:00
napi.h
net.h net: rename vlan_tx_* helpers since "tx" is misleading there 2015-01-13 17:51:08 -05:00
nmi.h x86: Add NMI duration tracepoints 2013-06-23 11:52:58 +02:00
oom.h mm, oom: change type of oom_score_adj to short 2012-12-11 17:22:27 -08:00
pagemap.h mm: pagemap: avoid unnecessary overhead when tracepoints are deactivated 2014-08-06 18:01:20 -07:00
power_cpu_migrate.h ARM: bL_switcher/trace: Add trace trigger for trace bootstrapping 2013-09-23 18:47:30 -04:00
power.h PM / sleep: trace events for device PM callbacks 2014-06-11 02:16:48 +02:00
printk.h printk/tracing: rework console tracing 2013-04-29 18:28:13 -07:00
random.h tracing: %pF is only for function pointers 2015-03-25 08:57:22 -04:00
rcu.h rcu: Remove redundant TREE_PREEMPT_RCU config option 2014-10-29 10:20:05 -07:00
regulator.h
rpm.h device.h: audit and cleanup users in main include dir 2012-03-16 10:38:24 -04:00
sched.h sched: Fix the PREEMPT_ACTIVE check in __trace_sched_switch_state() 2014-10-28 10:47:53 +01:00
scsi.h scsi: rename SERVICE_ACTION_IN to SERVICE_ACTION_IN_16 2014-11-24 20:01:40 +01:00
signal.h tracing: let trace_signal_generate() report more info, kill overflow_fail/lose_info 2012-01-13 18:48:50 +01:00
skb.h
sock.h
spi.h spi: Provide common spi_message processing loop 2013-10-11 20:09:50 +01:00
sunrpc.h SUNRPC: Export enums in tracepoints to user space 2015-04-08 09:41:08 -04:00
swiotlb.h tracing/events: Add bounce tracing to swiotbl 2013-10-02 12:53:26 -04:00
syscalls.h tracepoint: Fix sparse warnings in tracepoint.c 2014-04-09 10:12:11 -04:00
target.h Merge remote-tracking branch 'scsi-queue/drivers-for-3.19' into for-linus 2014-12-18 05:56:29 -08:00
task.h exec: kill bprm->tcomm[], simplify the "basename" logic 2014-04-07 16:36:05 -07:00
thermal.h thermal: trace: Trace when temperature is above a trip point 2014-07-29 09:28:43 -04:00
thp.h powerpc/thp: Add tracepoints to track hugepage invalidate 2014-08-13 18:20:42 +10:00
timer.h Merge branch 'timers-nohz-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2013-05-05 13:23:27 -07:00
tlb.h x86/tlb/trace: Export enums in used by tlb_flush tracepoint 2015-04-08 09:39:58 -04:00
udp.h
v4l2.h v4l: Export enums used by tracepoints to user space 2015-04-08 10:58:25 -04:00
vmscan.h tracing, mm: Record pfn instead of pointer to struct page 2015-04-13 11:44:52 -03:00
workqueue.h workqueue: rename cpu_workqueue to pool_workqueue 2013-02-13 19:29:12 -08:00
writeback.h writeback: Export enums used by tracepoint to user space 2015-04-08 10:58:35 -04:00
xen.h x86: expose number of page table levels on Kconfig level 2015-04-14 16:49:02 -07:00