mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
i915 will soon gain an eviction path that trylock a whole lot of locks for eviction, getting dmesg failures like below: BUG: MAX_LOCK_DEPTH too low! turning off the locking correctness validator. depth: 48 max: 48! 48 locks held by i915_selftest/5776: #0: ffff888101a79240 (&dev->mutex){....}-{3:3}, at: __driver_attach+0x88/0x160 #1: ffffc900009778c0 (reservation_ww_class_acquire){+.+.}-{0:0}, at: i915_vma_pin.constprop.63+0x39/0x1b0 [i915] #2: ffff88800cf74de8 (reservation_ww_class_mutex){+.+.}-{3:3}, at: i915_vma_pin.constprop.63+0x5f/0x1b0 [i915] #3: ffff88810c7f9e38 (&vm->mutex/1){+.+.}-{3:3}, at: i915_vma_pin_ww+0x1c4/0x9d0 [i915] #4: ffff88810bad5768 (reservation_ww_class_mutex){+.+.}-{3:3}, at: i915_gem_evict_something+0x110/0x860 [i915] #5: ffff88810bad60e8 (reservation_ww_class_mutex){+.+.}-{3:3}, at: i915_gem_evict_something+0x110/0x860 [i915] ... #46: ffff88811964d768 (reservation_ww_class_mutex){+.+.}-{3:3}, at: i915_gem_evict_something+0x110/0x860 [i915] #47: ffff88811964e0e8 (reservation_ww_class_mutex){+.+.}-{3:3}, at: i915_gem_evict_something+0x110/0x860 [i915] INFO: lockdep is turned off. Fixing eviction to nest into ww_class_acquire is a high priority, but it requires a rework of the entire driver, which can only be done one step at a time. As an intermediate solution, add an acquire context to ww_mutex_trylock, which allows us to do proper nesting annotations on the trylocks, making the above lockdep splat disappear. This is also useful in regulator_lock_nested, which may avoid dropping regulator_nesting_mutex in the uncontended path, so use it there. TTM may be another user for this, where we could lock a buffer in a fastpath with list locks held, without dropping all locks we hold. [peterz: rework actual ww_mutex_trylock() implementations] Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lkml.kernel.org/r/YUBGPdDDjKlxAuXJ@hirez.programming.kicks-ass.net |
||
---|---|---|
.. | ||
88pg86x.c | ||
88pm800-regulator.c | ||
88pm8607.c | ||
aat2870-regulator.c | ||
ab8500-ext.c | ||
ab8500.c | ||
act8865-regulator.c | ||
act8945a-regulator.c | ||
ad5398.c | ||
anatop-regulator.c | ||
arizona-ldo1.c | ||
arizona-micsupp.c | ||
as3711-regulator.c | ||
as3722-regulator.c | ||
atc260x-regulator.c | ||
axp20x-regulator.c | ||
bcm590xx-regulator.c | ||
bd718x7-regulator.c | ||
bd9571mwv-regulator.c | ||
bd9576-regulator.c | ||
bd71815-regulator.c | ||
bd71828-regulator.c | ||
core.c | ||
cpcap-regulator.c | ||
cros-ec-regulator.c | ||
da903x-regulator.c | ||
da9052-regulator.c | ||
da9055-regulator.c | ||
da9062-regulator.c | ||
da9063-regulator.c | ||
da9121-regulator.c | ||
da9121-regulator.h | ||
da9210-regulator.c | ||
da9210-regulator.h | ||
da9211-regulator.c | ||
da9211-regulator.h | ||
db8500-prcmu.c | ||
dbx500-prcmu.c | ||
dbx500-prcmu.h | ||
devres.c | ||
dummy.c | ||
dummy.h | ||
fan53555.c | ||
fan53880.c | ||
fixed-helper.c | ||
fixed.c | ||
gpio-regulator.c | ||
helpers.c | ||
hi655x-regulator.c | ||
hi6421-regulator.c | ||
hi6421v530-regulator.c | ||
hi6421v600-regulator.c | ||
internal.h | ||
irq_helpers.c | ||
isl6271a-regulator.c | ||
isl9305.c | ||
Kconfig | ||
lm363x-regulator.c | ||
lochnagar-regulator.c | ||
lp872x.c | ||
lp873x-regulator.c | ||
lp3971.c | ||
lp3972.c | ||
lp8755.c | ||
lp8788-buck.c | ||
lp8788-ldo.c | ||
lp87565-regulator.c | ||
ltc3589.c | ||
ltc3676.c | ||
Makefile | ||
max1586.c | ||
max8649.c | ||
max8660.c | ||
max8893.c | ||
max8907-regulator.c | ||
max8925-regulator.c | ||
max8952.c | ||
max8973-regulator.c | ||
max8997-regulator.c | ||
max8998.c | ||
max14577-regulator.c | ||
max77620-regulator.c | ||
max77650-regulator.c | ||
max77686-regulator.c | ||
max77693-regulator.c | ||
max77802-regulator.c | ||
max77826-regulator.c | ||
mc13xxx-regulator-core.c | ||
mc13xxx.h | ||
mc13783-regulator.c | ||
mc13892-regulator.c | ||
mcp16502.c | ||
mp886x.c | ||
mp5416.c | ||
mp8859.c | ||
mpq7920.c | ||
mpq7920.h | ||
mt6311-regulator.c | ||
mt6311-regulator.h | ||
mt6315-regulator.c | ||
mt6323-regulator.c | ||
mt6358-regulator.c | ||
mt6359-regulator.c | ||
mt6360-regulator.c | ||
mt6380-regulator.c | ||
mt6397-regulator.c | ||
mtk-dvfsrc-regulator.c | ||
of_regulator.c | ||
palmas-regulator.c | ||
pbias-regulator.c | ||
pca9450-regulator.c | ||
pcap-regulator.c | ||
pcf50633-regulator.c | ||
pf8x00-regulator.c | ||
pfuze100-regulator.c | ||
pv88060-regulator.c | ||
pv88060-regulator.h | ||
pv88080-regulator.c | ||
pv88080-regulator.h | ||
pv88090-regulator.c | ||
pv88090-regulator.h | ||
pwm-regulator.c | ||
qcom-labibb-regulator.c | ||
qcom-rpmh-regulator.c | ||
qcom_rpm-regulator.c | ||
qcom_smd-regulator.c | ||
qcom_spmi-regulator.c | ||
qcom_usb_vbus-regulator.c | ||
rc5t583-regulator.c | ||
rk808-regulator.c | ||
rn5t618-regulator.c | ||
rohm-regulator.c | ||
rpi-panel-attiny-regulator.c | ||
rt4801-regulator.c | ||
rt4831-regulator.c | ||
rt5033-regulator.c | ||
rt6160-regulator.c | ||
rt6245-regulator.c | ||
rtmv20-regulator.c | ||
rtq2134-regulator.c | ||
rtq6752-regulator.c | ||
s2mpa01.c | ||
s2mps11.c | ||
s5m8767.c | ||
sc2731-regulator.c | ||
scmi-regulator.c | ||
sky81452-regulator.c | ||
slg51000-regulator.c | ||
slg51000-regulator.h | ||
stm32-booster.c | ||
stm32-pwr.c | ||
stm32-vrefbuf.c | ||
stpmic1_regulator.c | ||
stw481x-vmmc.c | ||
sy7636a-regulator.c | ||
sy8106a-regulator.c | ||
sy8824x.c | ||
sy8827n.c | ||
ti-abb-regulator.c | ||
tps6105x-regulator.c | ||
tps6507x-regulator.c | ||
tps6524x-regulator.c | ||
tps6586x-regulator.c | ||
tps51632-regulator.c | ||
tps62360-regulator.c | ||
tps65023-regulator.c | ||
tps65086-regulator.c | ||
tps65090-regulator.c | ||
tps65132-regulator.c | ||
tps65217-regulator.c | ||
tps65218-regulator.c | ||
tps65910-regulator.c | ||
tps65912-regulator.c | ||
tps80031-regulator.c | ||
twl-regulator.c | ||
twl6030-regulator.c | ||
uniphier-regulator.c | ||
userspace-consumer.c | ||
vctrl-regulator.c | ||
vexpress-regulator.c | ||
virtual.c | ||
vqmmc-ipq4019-regulator.c | ||
wm831x-dcdc.c | ||
wm831x-isink.c | ||
wm831x-ldo.c | ||
wm8350-regulator.c | ||
wm8400-regulator.c | ||
wm8994-regulator.c |