original_kernel/drivers
Breno Leitao 2b038cbc5f powerpc/pseries/cpuidle: Fix preempt warning
When booting a pseries kernel with PREEMPT enabled, it dumps the
following warning:

   BUG: using smp_processor_id() in preemptible [00000000] code: swapper/0/1
   caller is pseries_processor_idle_init+0x5c/0x22c
   CPU: 13 PID: 1 Comm: swapper/0 Not tainted 4.20.0-rc3-00090-g12201a0128bc-dirty #828
   Call Trace:
   [c000000429437ab0] [c0000000009c8878] dump_stack+0xec/0x164 (unreliable)
   [c000000429437b00] [c0000000005f2f24] check_preemption_disabled+0x154/0x160
   [c000000429437b90] [c000000000cab8e8] pseries_processor_idle_init+0x5c/0x22c
   [c000000429437c10] [c000000000010ed4] do_one_initcall+0x64/0x300
   [c000000429437ce0] [c000000000c54500] kernel_init_freeable+0x3f0/0x500
   [c000000429437db0] [c0000000000112dc] kernel_init+0x2c/0x160
   [c000000429437e20] [c00000000000c1d0] ret_from_kernel_thread+0x5c/0x6c

This happens because the code calls get_lppaca() which calls
get_paca() and it checks if preemption is disabled through
check_preemption_disabled().

Preemption should be disabled because the per CPU variable may make no
sense if there is a preemption (and a CPU switch) after it reads the
per CPU data and when it is used.

In this device driver specifically, it is not a problem, because this
code just needs to have access to one lppaca struct, and it does not
matter if it is the current per CPU lppaca struct or not (i.e. when
there is a preemption and a CPU migration).

That said, the most appropriate fix seems to be related to avoiding
the debug_smp_processor_id() call at get_paca(), instead of calling
preempt_disable() before get_paca().

Signed-off-by: Breno Leitao <leitao@debian.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-12-04 19:45:01 +11:00
..
accessibility
acpi acpi/nfit, x86/mce: Validate a MCE's address before using it 2018-11-06 19:13:26 +01:00
amba
android
ata sata_rcar: convert to SPDX identifiers 2018-11-08 06:32:16 -07:00
atm
auxdisplay The Compiler Attributes series 2018-11-01 18:34:46 -07:00
base
bcma
block xen: fixes for 4.20-rc2 2018-11-10 08:58:48 -06:00
bluetooth
bus
cdrom
char
clk clk: qcom: gcc: Fix board clock node name 2018-11-09 14:13:55 -08:00
clocksource Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-11-11 16:41:50 -06:00
connector
cpufreq drivers/cpufreq: change CONFIG_6xx to CONFIG_PPC_BOOK3S_32 2018-11-26 22:33:37 +11:00
cpuidle powerpc/pseries/cpuidle: Fix preempt warning 2018-12-04 19:45:01 +11:00
crypto
dax
dca
devfreq
dio
dma
dma-buf
edac * skx_edac: Address translation for NVDIMMs (Tony Luck and Qiuxu Zhuo) 2018-11-02 11:17:22 -07:00
eisa
extcon
firewire
firmware Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-11-03 18:25:17 -07:00
fmc
fpga
fsi
gnss
gpio
gpu drm: i915, amdgpu, sun4i, exynos and etnaviv fixes 2018-11-10 13:29:47 -06:00
hid HID: asus: fix build warning wiht CONFIG_ASUS_WMI disabled 2018-11-06 13:57:42 +01:00
hsi
hv
hwmon hwmon: (ibmpowernv) Remove bogus __init annotations 2018-11-04 15:55:12 -08:00
hwspinlock
hwtracing
i2c i2c: nvidia-gpu: make pm_ops static 2018-11-09 17:56:44 +01:00
ide
idle
iio
infiniband
input
iommu
ipack
irqchip irqchip/irq-mvebu-sei: Fix a NULL vs IS_ERR() bug in probe function 2018-11-01 12:38:48 +01:00
isdn Merge branch 'work.afs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2018-11-01 19:58:52 -07:00
leds LED fixes for 4.20-rc2 2018-11-08 17:49:04 -06:00
lightnvm
macintosh macintosh: Use device_type helpers to access the node type 2018-11-26 22:33:37 +11:00
mailbox
mcb
md for-linus-20181102 2018-11-02 11:25:48 -07:00
media
memory
memstick
message
mfd chrome-platform for v4.20 2018-10-31 16:47:55 -07:00
misc cxl: Use device_type helpers to access the node type 2018-11-26 22:33:37 +11:00
mmc
mtd mtd: sa1100: avoid VLA in sa1100_setup_mtd 2018-11-06 10:38:17 +01:00
mux
net net: dsa: mv88e6xxx: Fix clearing of stats counters 2018-11-11 10:19:10 -08:00
nfc
ntb ntb: idt: Alter the driver info comments 2018-11-01 10:33:12 -04:00
nubus
nvdimm
nvme for-linus-20181109 2018-11-09 16:31:51 -06:00
nvmem
of Devicetree fixes for 4.20-rc: 2018-11-09 16:41:58 -06:00
opp
oprofile
parisc
parport
pci
pcmcia
perf
phy
pinctrl
platform platform-drivers-x86 for v4.20-1 2018-11-01 08:42:21 -07:00
pnp
power
powercap
pps
ps3
ptp
pwm
rapidio
ras
regulator
remoteproc
reset
rpmsg
rtc
s390 s390/qeth: report 25Gbit link speed 2018-11-03 10:44:06 -07:00
sbus
scsi Kbuild updates for v4.20 (2nd) 2018-11-03 10:47:33 -07:00
sfi
sh
siox
slimbus
sn
soc soc: ti: QMSS: Fix usage of irq_set_affinity_hint 2018-11-02 11:22:09 -07:00
soundwire
spi
spmi
ssb
staging
target SCSI misc on 20181102 2018-11-03 10:34:03 -07:00
tc
tee
thermal
thunderbolt
tty TTY/Serial fixes for 4.20-rc2 2018-11-10 13:32:14 -06:00
uio
usb usb: typec: ucsi: add support for Cypress CCGx 2018-11-09 18:49:59 +01:00
uwb
vfio
vhost virtio, vhost: fixes, tweaks 2018-11-01 14:42:49 -07:00
video
virt
virtio
visorbus
vlynq
vme
w1
watchdog
xen xen: fixes for 4.20-rc2 2018-11-10 08:58:48 -06:00
zorro
Kconfig
Makefile