Revision b90d72a6bfdb5e5c62cd223a8cdf4045bfbcb94d authored by Will Deacon on 12 January 2021, 22:18:55 UTC, committed by Catalin Marinas on 13 January 2021, 15:08:41 UTC
This reverts commit 367c820ef08082e68df8a3bc12e62393af21e4b5.

lockup_detector_init() makes heavy use of per-cpu variables and must be
called with preemption disabled. Usually, it's handled early during boot
in kernel_init_freeable(), before SMP has been initialised.

Since we do not know whether or not our PMU interrupt can be signalled
as an NMI until considerably later in the boot process, the Arm PMU
driver attempts to re-initialise the lockup detector off the back of a
device_initcall(). Unfortunately, this is called from preemptible
context and results in the following splat:

  | BUG: using smp_processor_id() in preemptible [00000000] code: swapper/0/1
  | caller is debug_smp_processor_id+0x20/0x2c
  | CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.10.0+ #276
  | Hardware name: linux,dummy-virt (DT)
  | Call trace:
  |   dump_backtrace+0x0/0x3c0
  |   show_stack+0x20/0x6c
  |   dump_stack+0x2f0/0x42c
  |   check_preemption_disabled+0x1cc/0x1dc
  |   debug_smp_processor_id+0x20/0x2c
  |   hardlockup_detector_event_create+0x34/0x18c
  |   hardlockup_detector_perf_init+0x2c/0x134
  |   watchdog_nmi_probe+0x18/0x24
  |   lockup_detector_init+0x44/0xa8
  |   armv8_pmu_driver_init+0x54/0x78
  |   do_one_initcall+0x184/0x43c
  |   kernel_init_freeable+0x368/0x380
  |   kernel_init+0x1c/0x1cc
  |   ret_from_fork+0x10/0x30

Rather than bodge this with raw_smp_processor_id() or randomly disabling
preemption, simply revert the culprit for now until we figure out how to
do this properly.

Reported-by: Lecopzer Chen <lecopzer.chen@mediatek.com>
Signed-off-by: Will Deacon <will@kernel.org>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Cc: Sumit Garg <sumit.garg@linaro.org>
Cc: Alexandru Elisei <alexandru.elisei@arm.com>
Link: https://lore.kernel.org/r/20201221162249.3119-1-lecopzer.chen@mediatek.com
Link: https://lore.kernel.org/r/20210112221855.10666-1-will@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
1 parent df06824
History
File Mode Size
ac97
sof
ac97_codec.h -rw-r--r-- 15.7 KB
aci.h -rw-r--r-- 2.4 KB
ad1816a.h -rw-r--r-- 4.7 KB
ad1843.h -rw-r--r-- 1.5 KB
adau1373.h -rw-r--r-- 706 bytes
ak4113.h -rw-r--r-- 10.2 KB
ak4114.h -rw-r--r-- 9.5 KB
ak4117.h -rw-r--r-- 8.3 KB
ak4531_codec.h -rw-r--r-- 2.4 KB
ak4641.h -rw-r--r-- 476 bytes
ak4xxx-adda.h -rw-r--r-- 2.7 KB
alc5623.h -rw-r--r-- 536 bytes
asequencer.h -rw-r--r-- 2.9 KB
asound.h -rw-r--r-- 590 bytes
asoundef.h -rw-r--r-- 16.0 KB
compress_driver.h -rw-r--r-- 7.9 KB
control.h -rw-r--r-- 8.6 KB
core.h -rw-r--r-- 13.4 KB
cs35l33.h -rw-r--r-- 888 bytes
cs35l34.h -rw-r--r-- 741 bytes
cs35l35.h -rw-r--r-- 2.2 KB
cs35l36.h -rw-r--r-- 772 bytes
cs4231-regs.h -rw-r--r-- 7.6 KB
cs4271.h -rw-r--r-- 961 bytes
cs42l52.h -rw-r--r-- 592 bytes
cs42l56.h -rw-r--r-- 1.0 KB
cs42l73.h -rw-r--r-- 361 bytes
cs8403.h -rw-r--r-- 7.9 KB
cs8427.h -rw-r--r-- 9.7 KB
da7213.h -rw-r--r-- 1.0 KB
da7218.h -rw-r--r-- 2.4 KB
da7219-aad.h -rw-r--r-- 2.2 KB
da7219.h -rw-r--r-- 998 bytes
da9055.h -rw-r--r-- 707 bytes
designware_i2s.h -rw-r--r-- 1.6 KB
dmaengine_pcm.h -rw-r--r-- 6.5 KB
emu10k1.h -rw-r--r-- 88.7 KB
emu10k1_synth.h -rw-r--r-- 693 bytes
emu8000.h -rw-r--r-- 3.3 KB
emu8000_reg.h -rw-r--r-- 9.5 KB
emux_legacy.h -rw-r--r-- 4.7 KB
emux_synth.h -rw-r--r-- 6.8 KB
es1688.h -rw-r--r-- 2.9 KB
graph_card.h -rw-r--r-- 315 bytes
gus.h -rw-r--r-- 19.6 KB
hda_chmap.h -rw-r--r-- 2.6 KB
hda_codec.h -rw-r--r-- 17.2 KB
hda_component.h -rw-r--r-- 2.0 KB
hda_hwdep.h -rw-r--r-- 736 bytes
hda_i915.h -rw-r--r-- 589 bytes
hda_register.h -rw-r--r-- 10.2 KB
hda_regmap.h -rw-r--r-- 6.8 KB
hda_verbs.h -rw-r--r-- 16.9 KB
hdaudio.h -rw-r--r-- 20.9 KB
hdaudio_ext.h -rw-r--r-- 5.4 KB
hdmi-codec.h -rw-r--r-- 2.4 KB
hwdep.h -rw-r--r-- 1.9 KB
i2c.h -rw-r--r-- 2.8 KB
info.h -rw-r--r-- 7.9 KB
initval.h -rw-r--r-- 2.4 KB
intel-dsp-config.h -rw-r--r-- 869 bytes
intel-nhlt.h -rw-r--r-- 2.7 KB
jack.h -rw-r--r-- 3.0 KB
l3.h -rw-r--r-- 524 bytes
madera-pdata.h -rw-r--r-- 1.9 KB
max9768.h -rw-r--r-- 729 bytes
max98088.h -rw-r--r-- 1.0 KB
max98090.h -rw-r--r-- 534 bytes
max98095.h -rw-r--r-- 1.3 KB
memalloc.h -rw-r--r-- 3.8 KB
minors.h -rw-r--r-- 3.7 KB
mixer_oss.h -rw-r--r-- 1.7 KB
mpu401.h -rw-r--r-- 3.8 KB
omap-hdmi-audio.h -rw-r--r-- 971 bytes
opl3.h -rw-r--r-- 11.6 KB
opl4.h -rw-r--r-- 459 bytes
pcm-indirect.h -rw-r--r-- 5.0 KB
pcm.h -rw-r--r-- 50.3 KB
pcm_drm_eld.h -rw-r--r-- 183 bytes
pcm_iec958.h -rw-r--r-- 332 bytes
pcm_oss.h -rw-r--r-- 2.0 KB
pcm_params.h -rw-r--r-- 8.7 KB
pt2258.h -rw-r--r-- 513 bytes
pxa2xx-lib.h -rw-r--r-- 2.7 KB
rawmidi.h -rw-r--r-- 5.6 KB
rt1015.h -rw-r--r-- 283 bytes
rt286.h -rw-r--r-- 314 bytes
rt298.h -rw-r--r-- 373 bytes
rt5514.h -rw-r--r-- 399 bytes
rt5645.h -rw-r--r-- 665 bytes
rt5659.h -rw-r--r-- 880 bytes
rt5660.h -rw-r--r-- 578 bytes
rt5663.h -rw-r--r-- 476 bytes
rt5665.h -rw-r--r-- 761 bytes
rt5668.h -rw-r--r-- 646 bytes
rt5682.h -rw-r--r-- 901 bytes
s3c24xx_uda134x.h -rw-r--r-- 229 bytes
sb.h -rw-r--r-- 10.3 KB
sb16_csp.h -rw-r--r-- 2.1 KB
seq_device.h -rw-r--r-- 2.1 KB
seq_kernel.h -rw-r--r-- 3.3 KB
seq_midi_emul.h -rw-r--r-- 6.6 KB
seq_midi_event.h -rw-r--r-- 1.3 KB
seq_oss.h -rw-r--r-- 2.2 KB
seq_oss_legacy.h -rw-r--r-- 360 bytes
seq_virmidi.h -rw-r--r-- 2.1 KB
sh_dac_audio.h -rw-r--r-- 441 bytes
sh_fsi.h -rw-r--r-- 693 bytes
simple_card.h -rw-r--r-- 529 bytes
simple_card_utils.h -rw-r--r-- 6.7 KB
snd_wavefront.h -rw-r--r-- 5.6 KB
soc-acpi-intel-match.h -rw-r--r-- 2.0 KB
soc-acpi.h -rw-r--r-- 5.3 KB
soc-card.h -rw-r--r-- 2.0 KB
soc-component.h -rw-r--r-- 18.4 KB
soc-dai.h -rw-r--r-- 16.4 KB
soc-dapm.h -rw-r--r-- 32.2 KB
soc-dpcm.h -rw-r--r-- 4.9 KB
soc-jack.h -rw-r--r-- 3.7 KB
soc-link.h -rw-r--r-- 1.1 KB
soc-topology.h -rw-r--r-- 5.7 KB
soc.h -rw-r--r-- 45.0 KB
sof.h -rw-r--r-- 2.6 KB
soundfont.h -rw-r--r-- 3.8 KB
spear_dma.h -rw-r--r-- 350 bytes
spear_spdif.h -rw-r--r-- 345 bytes
sta32x.h -rw-r--r-- 1015 bytes
sta350.h -rw-r--r-- 1.4 KB
tas2552-plat.h -rw-r--r-- 283 bytes
tas5086.h -rw-r--r-- 210 bytes
tea6330t.h -rw-r--r-- 468 bytes
timer.h -rw-r--r-- 5.0 KB
tlv.h -rw-r--r-- 1.6 KB
tlv320aic32x4.h -rw-r--r-- 1.3 KB
tlv320aic3x.h -rw-r--r-- 1.7 KB
tlv320dac33-plat.h -rw-r--r-- 574 bytes
tpa6130a2-plat.h -rw-r--r-- 291 bytes
uda134x.h -rw-r--r-- 451 bytes
uda1380.h -rw-r--r-- 335 bytes
util_mem.h -rw-r--r-- 1.6 KB
vx_core.h -rw-r--r-- 14.7 KB
wavefront.h -rw-r--r-- 18.1 KB
wm0010.h -rw-r--r-- 466 bytes
wm1250-ev1.h -rw-r--r-- 510 bytes
wm2000.h -rw-r--r-- 479 bytes
wm2200.h -rw-r--r-- 1.3 KB
wm5100.h -rw-r--r-- 1.1 KB
wm8903.h -rw-r--r-- 15.0 KB
wm8904.h -rw-r--r-- 7.2 KB
wm8955.h -rw-r--r-- 442 bytes
wm8960.h -rw-r--r-- 888 bytes
wm8962.h -rw-r--r-- 1.7 KB
wm8993.h -rw-r--r-- 1.1 KB
wm8996.h -rw-r--r-- 1.3 KB
wm9081.h -rw-r--r-- 515 bytes
wm9090.h -rw-r--r-- 634 bytes
wss.h -rw-r--r-- 7.8 KB

back to top