• Damian Eppel's avatar
    clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier · 6d913c32
    Damian Eppel authored
    Whilst testing cpu hotplug events on kernel configured with
    DEBUG_PREEMPT and DEBUG_ATOMIC_SLEEP we get following BUG message,
    caused by calling request_irq() and free_irq() in the context of
    hotplug notification (which is in this case atomic context).
    
    [    0.091617] [c0] CPU0: thread -1, cpu 0, socket 1, mpidr 80000100
    [    0.091828] [c0] Running under secure firmware.
    [    0.091901] [c0] Setting up static identity map for 0xc0618b98 - 0xc0618bf0
    [    0.091962] [c0] Exynos-SnapShot: exynos_ss_init failed
    [    0.112330] [c0] ftrace: Allocated trace_printk buffers
    [    0.134323] [c1] CPU1: Booted secondary processor
    [    0.134354] [c1] CPU1: thread -1, cpu 1, socket 1, mpidr 80000101
    [    0.134402] [c1] BUG: sleeping function called from invalid context at mm/page_alloc.c:2638
    [    0.134518] [c1] in_atomic(): 1, irqs_disabled(): 0, pid: 0, name: swapper/1
    [    0.134560] [c1] no locks held by swapper/1/0.
    [    0.134598] [c1] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.10.82-xu43hk #11
    [    0.134640] [c1] Backtrace:
    [    0.134694] [c1] [<c00132e4>] (dump_backtrace+0x0/0x114) from [<c0013554>] (show_stack+0x20/0x24)
    [    0.134744] [c1]  r7:00000000 r6:00000000 r5:df2da000 r4:c098c9c0
    [    0.134826] [c1] [<c0013534>] (show_stack+0x0/0x24) from [<c06124d8>] (dump_stack+0x24/0x28)
    [    0.134887] [c1] [<c06124b4>] (dump_stack+0x0/0x28) from [<c00617f8>] (__might_sleep+0x144/0x148)
    [    0.134952] [c1] [<c00616b4>] (__might_sleep+0x0/0x148) from [<c00f5590>] (__alloc_pages_nodemask+0x2a0/0xaac)
    [    0.135006] [c1]  r5:00080008 r4:002012d0
    [    0.135065] [c1] [<c00f52f0>] (__alloc_pages_nodemask+0x0/0xaac) from [<c012875c>] (new_slab+0x7c/0x22c)
    [    0.135132] [c1] [<c01286e0>] (new_slab+0x0/0x22c) from [<c012a92c>] (__slab_alloc.isra.14.constprop.18+0x558/0x61c)
    [    0.135187] [c1]  r9:00000000 r8:df001f00 r7:014f7000 r6:00000000 r5:c1dee9e0
    [    0.135187] r4:c08f79e0
    [    0.135295] [c1] [<c012a3d4>] (__slab_alloc.isra.14.constprop.18+0x0/0x61c) from [<c012af3c>] (kmem_cache_alloc_trace+0x194/0x1c8)
    [    0.135367] [c1] [<c012ada8>] (kmem_cache_alloc_trace+0x0/0x1c8) from [<c00b04e0>] (request_threaded_irq+0x78/0x138)
    [    0.135433] [c1] [<c00b0468>] (request_threaded_irq+0x0/0x138) from [<c0610f7c>] (exynos4_local_timer_setup+0x100/0x160)
    [    0.135507] [c1] [<c0610e7c>] (exynos4_local_timer_setup+0x0/0x160) from [<c060de3c>] (percpu_timer_setup+0xa4/0xb0)
    [    0.135562] [c1]  r8:4000406a r7:c0968c84 r6:10c0387d r5:c09148c0 r4:c1de9280
    [    0.135655] [c1] [<c060dd98>] (percpu_timer_setup+0x0/0xb0) from [<c060e1e4>] (secondary_start_kernel+0x118/0x134)
    [    0.135710] [c1]  r5:c09148c0 r4:00000001
    [    0.135765] [c1] [<c060e0cc>] (secondary_start_kernel+0x0/0x134) from [<4060d784>] (0x4060d784)
    [    0.135815] [c1]  r5:00000015 r4:5f13006a
    [    0.144239] [c2] CPU2: Booted secondary processor
    [    0.144267] [c2] CPU2: thread -1, cpu 2, socket 1, mpidr 80000102
    [    0.154295] [c3] CPU3: Booted secondary processor
    
    Change-Id: I78ee2d3997b2137e3c19432e17b3e3672523cf43
    6d913c32
Name
Last commit
Last update
..
accessibility Loading commit data...
acpi Loading commit data...
amba Loading commit data...
ata Loading commit data...
atm Loading commit data...
auxdisplay Loading commit data...
base Loading commit data...
bcma Loading commit data...
block Loading commit data...
bluetooth Loading commit data...
bus Loading commit data...
cdrom Loading commit data...
char Loading commit data...
clk Loading commit data...
clocksource Loading commit data...
connector Loading commit data...
cpufreq Loading commit data...
cpuidle Loading commit data...
crypto Loading commit data...
dca Loading commit data...
devfreq Loading commit data...
dio Loading commit data...
dma Loading commit data...
edac Loading commit data...
eisa Loading commit data...
extcon Loading commit data...
firewire Loading commit data...
firmware Loading commit data...
gpio Loading commit data...
gpu Loading commit data...
gud Loading commit data...
hardkernel Loading commit data...
hid Loading commit data...
hsi Loading commit data...
hv Loading commit data...
hwmon Loading commit data...
hwspinlock Loading commit data...
i2c Loading commit data...
ide Loading commit data...
idle Loading commit data...
iio Loading commit data...
infiniband Loading commit data...
input Loading commit data...
iommu Loading commit data...
ipack Loading commit data...
irqchip Loading commit data...
isdn Loading commit data...
leds Loading commit data...
lguest Loading commit data...
macintosh Loading commit data...
mailbox Loading commit data...
md Loading commit data...
media Loading commit data...
memory Loading commit data...
memstick Loading commit data...
message Loading commit data...
mfd Loading commit data...
misc Loading commit data...
mmc Loading commit data...
mtd Loading commit data...
net Loading commit data...
nfc Loading commit data...
ntb Loading commit data...
nubus Loading commit data...
of Loading commit data...
oprofile Loading commit data...
parisc Loading commit data...
parport Loading commit data...
pci Loading commit data...
pcmcia Loading commit data...
phy Loading commit data...
pinctrl Loading commit data...
platform Loading commit data...
pnp Loading commit data...
power Loading commit data...
pps Loading commit data...
ps3 Loading commit data...
ptp Loading commit data...
pwm Loading commit data...
rapidio Loading commit data...
regulator Loading commit data...
remoteproc Loading commit data...
reset Loading commit data...
rpmsg Loading commit data...
rtc Loading commit data...
s390 Loading commit data...
sbus Loading commit data...
scsi Loading commit data...
sfi Loading commit data...
sh Loading commit data...
sn Loading commit data...
spi Loading commit data...
ssb Loading commit data...
ssbi Loading commit data...
staging Loading commit data...
switch Loading commit data...
target Loading commit data...
tc Loading commit data...
thermal Loading commit data...
tty Loading commit data...
uio Loading commit data...
usb Loading commit data...
uwb Loading commit data...
vfio Loading commit data...
vhost Loading commit data...
video Loading commit data...
virt Loading commit data...
virtio Loading commit data...
vlynq Loading commit data...
vme Loading commit data...
w1 Loading commit data...
watchdog Loading commit data...
xen Loading commit data...
zorro Loading commit data...
Kconfig Loading commit data...
Makefile Loading commit data...