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
jbd.h
jbd: Write journal superblock with WRITE_FUA after checkpointing
2012-05-15 23:34:37 +02: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
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.h
PM / sleep: trace events for device PM callbacks
2014-06-11 02:16:48 +02:00
power_cpu_migrate.h
ARM: bL_switcher/trace: Add trace trigger for trace bootstrapping
2013-09-23 18:47:30 -04: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