3c0185046c
Move sysfs_notify and i2c_transfer calls from bq2415x_notifier_call
to bq2415x_timer_work to avoid sleeping in atomic context.
This fixes the following bug:
[ 7.667449] Workqueue: events power_supply_changed_work
[ 7.673034] [<c0015c28>] (unwind_backtrace+0x0/0xe0) from [<c0011e1c>] (show_stack+0x10/0x14)
[ 7.682098] [<c0011e1c>] (show_stack+0x10/0x14) from [<c052cdd0>] (dump_stack+0x78/0xac)
[ 7.690704] [<c052cdd0>] (dump_stack+0x78/0xac) from [<c052a044>] (__schedule_bug+0x48/0x60)
[ 7.699645] [<c052a044>] (__schedule_bug+0x48/0x60) from [<c053071c>] (__schedule+0x74/0x638)
[ 7.708618] [<c053071c>] (__schedule+0x74/0x638) from [<c05301fc>] (schedule_timeout+0x1dc/0x24c)
[ 7.718017] [<c05301fc>] (schedule_timeout+0x1dc/0x24c) from [<c05316ec>] (wait_for_common+0x138/0x17c)
[ 7.727966] [<c05316ec>] (wait_for_common+0x138/0x17c) from [<c0362a70>] (omap_i2c_xfer+0x340/0x4a0)
[ 7.737640] [<c0362a70>] (omap_i2c_xfer+0x340/0x4a0) from [<c035d928>] (__i2c_transfer+0x40/0x74)
[ 7.747039] [<c035d928>] (__i2c_transfer+0x40/0x74) from [<c035e22c>] (i2c_transfer+0x6c/0x90)
[ 7.756195] [<c035e22c>] (i2c_transfer+0x6c/0x90) from [<c037ad24>] (bq2415x_i2c_write+0x48/0x78)
[ 7.765563] [<c037ad24>] (bq2415x_i2c_write+0x48/0x78) from [<c037ae60>] (bq2415x_set_weak_battery_voltage+0x4c/0x50)
[ 7.776824] [<c037ae60>] (bq2415x_set_weak_battery_voltage+0x4c/0x50) from [<c037bce8>] (bq2415x_set_mode+0xdc/0x14c)
[ 7.788085] [<c037bce8>] (bq2415x_set_mode+0xdc/0x14c) from [<c037bfb8>] (bq2415x_notifier_call+0xa8/0xb4)
[ 7.798309] [<c037bfb8>] (bq2415x_notifier_call+0xa8/0xb4) from [<c005f228>] (notifier_call_chain+0x38/0x68)
[ 7.808715] [<c005f228>] (notifier_call_chain+0x38/0x68) from [<c005f284>] (__atomic_notifier_call_chain+0x2c/0x3c)
[ 7.819732] [<c005f284>] (__atomic_notifier_call_chain+0x2c/0x3c) from [<c005f2a8>] (atomic_notifier_call_chain+0x14/0x18)
[ 7.831420] [<c005f2a8>] (atomic_notifier_call_chain+0x14/0x18) from [<c0378078>] (power_supply_changed_work+0x6c/0xb8)
[ 7.842864] [<c0378078>] (power_supply_changed_work+0x6c/0xb8) from [<c00556c0>] (process_one_work+0x248/0x440)
[ 7.853546] [<c00556c0>] (process_one_work+0x248/0x440) from [<c0055d6c>] (worker_thread+0x208/0x350)
[ 7.863372] [<c0055d6c>] (worker_thread+0x208/0x350) from [<c005b0ac>] (kthread+0xc8/0xdc)
[ 7.872131] [<c005b0ac>] (kthread+0xc8/0xdc) from [<c000e138>] (ret_from_fork+0x14/0x3c)
Fixes:
|
||
---|---|---|
.. | ||
avs | ||
reset | ||
88pm860x_battery.c | ||
88pm860x_charger.c | ||
ab8500_bmdata.c | ||
ab8500_btemp.c | ||
ab8500_charger.c | ||
ab8500_fg.c | ||
abx500_chargalg.c | ||
apm_power.c | ||
bq27x00_battery.c | ||
bq2415x_charger.c | ||
bq24190_charger.c | ||
bq24735-charger.c | ||
charger-manager.c | ||
collie_battery.c | ||
da9030_battery.c | ||
da9052-battery.c | ||
ds2760_battery.c | ||
ds2780_battery.c | ||
ds2781_battery.c | ||
ds2782_battery.c | ||
generic-adc-battery.c | ||
goldfish_battery.c | ||
gpio-charger.c | ||
intel_mid_battery.c | ||
isp1704_charger.c | ||
jz4740-battery.c | ||
Kconfig | ||
lp8727_charger.c | ||
lp8788-charger.c | ||
Makefile | ||
max8903_charger.c | ||
max8925_power.c | ||
max8997_charger.c | ||
max8998_charger.c | ||
max14577_charger.c | ||
max17040_battery.c | ||
max17042_battery.c | ||
olpc_battery.c | ||
pcf50633-charger.c | ||
pda_power.c | ||
pm2301_charger.c | ||
pm2301_charger.h | ||
pmu_battery.c | ||
power_supply_core.c | ||
power_supply_leds.c | ||
power_supply_sysfs.c | ||
power_supply.h | ||
rx51_battery.c | ||
s3c_adc_battery.c | ||
sbs-battery.c | ||
smb347-charger.c | ||
test_power.c | ||
tosa_battery.c | ||
tps65090-charger.c | ||
twl4030_charger.c | ||
twl4030_madc_battery.c | ||
wm97xx_battery.c | ||
wm831x_backup.c | ||
wm831x_power.c | ||
wm8350_power.c | ||
z2_battery.c |