1
0
Fork 0
alistair23-linux/drivers/power
Tejun Heo 41f63c5359 workqueue: use mod_delayed_work() instead of cancel + queue
Convert delayed_work users doing cancel_delayed_work() followed by
queue_delayed_work() to mod_delayed_work().

Most conversions are straight-forward.  Ones worth mentioning are,

* drivers/edac/edac_mc.c: edac_mc_workq_setup() converted to always
  use mod_delayed_work() and cancel loop in
  edac_mc_reset_delay_period() is dropped.

* drivers/platform/x86/thinkpad_acpi.c: No need to remember whether
  watchdog is active or not.  @fan_watchdog_active and related code
  dropped.

* drivers/power/charger-manager.c: Seemingly a lot of
  delayed_work_pending() abuse going on here.
  [delayed_]work_pending() are unsynchronized and racy when used like
  this.  I converted one instance in fullbatt_handler().  Please
  conver the rest so that it invokes workqueue APIs for the intended
  target state rather than trying to game work item pending state
  transitions.  e.g. if timer should be modified - call
  mod_delayed_work(), canceled - call cancel_delayed_work[_sync]().

* drivers/thermal/thermal_sys.c: thermal_zone_device_set_polling()
  simplified.  Note that round_jiffies() calls in this function are
  meaningless.  round_jiffies() work on absolute jiffies not delta
  delay used by delayed_work.

v2: Tomi pointed out that __cancel_delayed_work() users can't be
    safely converted to mod_delayed_work().  They could be calling it
    from irq context and if that happens while delayed_work_timer_fn()
    is running, it could deadlock.  __cancel_delayed_work() users are
    dropped.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Acked-by: Anton Vorontsov <cbouatmailru@gmail.com>
Acked-by: David Howells <dhowells@redhat.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Jiri Kosina <jkosina@suse.cz>
Cc: Doug Thompson <dougthompson@xmission.com>
Cc: David Airlie <airlied@linux.ie>
Cc: Roland Dreier <roland@kernel.org>
Cc: "John W. Linville" <linville@tuxdriver.com>
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: Len Brown <len.brown@intel.com>
Cc: "J. Bruce Fields" <bfields@fieldses.org>
Cc: Johannes Berg <johannes@sipsolutions.net>
2012-08-13 16:27:37 -07:00
..
avs ARM: OMAP2+: do not allow SmartReflex to be built as a module 2012-06-29 05:54:31 -07:00
Kconfig The tag contains just a few battery-related changes for v3.6. It's is 2012-07-31 18:08:25 -07:00
Makefile ARM: OMAP: SmartReflex: Move smartreflex driver to drivers/ 2012-05-31 16:36:30 -07:00
ab8500_btemp.c ab8500: Clean up probe routines 2012-05-05 04:55:50 -07:00
ab8500_charger.c usb: phy: fix return value check of usb_get_phy 2012-07-02 10:40:49 +03:00
ab8500_fg.c ab8500: Clean up probe routines 2012-05-05 04:55:50 -07:00
abx500_chargalg.c ab8500: Turn unneeded global symbols into local ones 2012-03-26 20:41:14 +04:00
apm_power.c device.h: cleanup users outside of linux/include (C files) 2012-03-11 14:27:37 -04:00
bq27x00_battery.c bq27x00_battery: Add support for BQ27425 chip 2012-07-13 20:26:20 -07:00
charger-manager.c workqueue: use mod_delayed_work() instead of cancel + queue 2012-08-13 16:27:37 -07:00
collie_battery.c Merge git://git.infradead.org/users/cbou/battery-urgent 2012-01-10 20:55:11 +04:00
da9030_battery.c power_supply: Convert drivers/power/* to use module_platform_driver() 2012-01-04 09:12:07 +04:00
da9052-battery.c da9052-battery: Convert to use module_platform_driver 2012-03-26 20:41:17 +04:00
ds2760_battery.c workqueue: use mod_delayed_work() instead of cancel + queue 2012-08-13 16:27:37 -07:00
ds2780_battery.c W1: split master mutex to avoid deadlocks. 2012-06-13 16:38:40 -07:00
ds2781_battery.c The tag contains just a few battery-related changes for v3.6. It's is 2012-07-31 18:08:25 -07:00
ds2782_battery.c power_supply: Convert i2c drivers to module_i2c_driver 2012-03-26 20:41:22 +04:00
gpio-charger.c gpio-charger: Use cansleep version of gpio_set_value 2012-06-19 20:48:37 -07:00
intel_mid_battery.c power_supply: Convert drivers/power/* to use module_platform_driver() 2012-01-04 09:12:07 +04:00
isp1704_charger.c usb: phy: fix return value check of usb_get_phy 2012-07-02 10:40:49 +03:00
jz4740-battery.c workqueue: use mod_delayed_work() instead of cancel + queue 2012-08-13 16:27:37 -07:00
lp8727_charger.c lp8727_charger: Move header file into platform_data directory 2012-07-14 01:14:35 -07:00
max8903_charger.c power_supply: Convert drivers/power/* to use module_platform_driver() 2012-01-04 09:12:07 +04:00
max8925_power.c power_supply: Convert drivers/power/* to use module_platform_driver() 2012-01-04 09:12:07 +04:00
max8997_charger.c max8997_charger: Remove duplicate module.h 2012-01-06 04:59:25 +04:00
max8998_charger.c Revert "max8998_charger: Include linux/module.h just once" 2012-03-26 20:41:27 +04:00
max17040_battery.c power_supply: Convert i2c drivers to module_i2c_driver 2012-03-26 20:41:22 +04:00
max17042_battery.c max17042_battery: Support CHARGE_COUNTER power supply attribute 2012-06-19 16:48:08 -07:00
olpc_battery.c Merge branch 'for-linus-3.6' of git://dev.laptop.org/users/dilinger/linux-olpc 2012-08-02 11:52:39 -07:00
pcf50633-charger.c power_supply: Convert drivers/power/* to use module_platform_driver() 2012-01-04 09:12:07 +04:00
pda_power.c This patch series contains a major revamp of how we collect entropy 2012-07-31 19:07:42 -07:00
pmu_battery.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
power_supply.h device.h: cleanup users outside of linux/include (C files) 2012-03-11 14:27:37 -04:00
power_supply_core.c Merge with upstream to accommodate with thermal changes 2012-07-31 05:16:47 -07:00
power_supply_leds.c device.h: cleanup users outside of linux/include (C files) 2012-03-11 14:27:37 -04:00
power_supply_sysfs.c power_supply: Add min/max alert properties for CAPACITY, TEMP, TEMP_AMBIENT 2012-07-13 20:41:58 -07:00
s3c_adc_battery.c s3c_adc_battery: Average over more than one adc sample 2012-01-06 06:13:35 +04:00
sbs-battery.c sbs-battery: Don't trigger false supply_changed event 2012-06-19 19:26:40 -07:00
smb347-charger.c smb347-charger: Add constant charge and current properties 2012-06-19 16:47:37 -07:00
test_power.c test_power: Add VOLTAGE_NOW and BATTERY_TEMP properties 2012-06-20 22:45:41 -07:00
tosa_battery.c power_supply: Convert drivers/power/* to use module_platform_driver() 2012-01-04 09:12:07 +04:00
twl4030_charger.c The tag contains just a few battery-related changes for v3.6. It's is 2012-07-31 18:08:25 -07:00
wm97xx_battery.c wm97xx_battery: Use DEFINE_MUTEX() for work_lock 2012-01-06 05:00:30 +04:00
wm831x_backup.c power_supply: Convert drivers/power/* to use module_platform_driver() 2012-01-04 09:12:07 +04:00
wm831x_power.c mfd: Convert wm831x to irq_domain 2012-05-20 17:27:07 +02:00
wm8350_power.c power_supply: Convert drivers/power/* to use module_platform_driver() 2012-01-04 09:12:07 +04:00
z2_battery.c power_supply: Convert i2c drivers to module_i2c_driver 2012-03-26 20:41:22 +04:00