mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-30 20:30:26 -04:00
HID: hid-oxp: Replace system_wq with system_dfl_wq
The function end up calling __queue_delayed_work(), which set a global timer that could fire anywhere, enqueuing the work where the timer fired. Unbound works could benefit from scheduler task placement, to optimize performance and power consumption. Since the workqueue work doesn't rely on per-cpu variables, there is no obvious reason that justify the use of a per-cpu workqueue. So change the workqueue with the new unbound version, system_dfl_wq. Cc: Derek J. Clark <derekjohn.clark@gmail.com> Signed-off-by: Marco Crivellari <marco.crivellari@suse.com> Signed-off-by: Jiri Kosina <jkosina@suse.com>
This commit is contained in:
committed by
Jiri Kosina
parent
d07644524b
commit
8bb7c0fdfc
@@ -398,7 +398,7 @@ static int oxp_hid_raw_event_gen_2(struct hid_device *hdev,
|
||||
* Re-apply our settings after this has been received.
|
||||
*/
|
||||
if (data[3] == OXP_EFFECT_MONO_TRUE) {
|
||||
mod_delayed_work(system_wq, &drvdata.oxp_mcu_init, msecs_to_jiffies(50));
|
||||
mod_delayed_work(system_dfl_wq, &drvdata.oxp_mcu_init, msecs_to_jiffies(50));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -788,7 +788,7 @@ static ssize_t map_button_store(struct device *dev,
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
mod_delayed_work(system_wq, &drvdata.oxp_btn_queue, msecs_to_jiffies(50));
|
||||
mod_delayed_work(system_dfl_wq, &drvdata.oxp_btn_queue, msecs_to_jiffies(50));
|
||||
return count;
|
||||
}
|
||||
|
||||
@@ -1349,7 +1349,7 @@ static void oxp_rgb_brightness_set(struct led_classdev *led_cdev,
|
||||
enum led_brightness brightness)
|
||||
{
|
||||
led_cdev->brightness = brightness;
|
||||
mod_delayed_work(system_wq, &drvdata.oxp_rgb_queue, msecs_to_jiffies(50));
|
||||
mod_delayed_work(system_dfl_wq, &drvdata.oxp_rgb_queue, msecs_to_jiffies(50));
|
||||
}
|
||||
|
||||
static struct attribute *oxp_rgb_attrs[] = {
|
||||
@@ -1502,7 +1502,7 @@ static int oxp_cfg_probe(struct hid_device *hdev, u16 up)
|
||||
drvdata.rumble_intensity = 5;
|
||||
|
||||
INIT_DELAYED_WORK(&drvdata.oxp_mcu_init, oxp_mcu_init_fn);
|
||||
mod_delayed_work(system_wq, &drvdata.oxp_mcu_init, msecs_to_jiffies(50));
|
||||
mod_delayed_work(system_dfl_wq, &drvdata.oxp_mcu_init, msecs_to_jiffies(50));
|
||||
|
||||
ret = devm_device_add_group(&hdev->dev, &oxp_cfg_attrs_group);
|
||||
if (ret)
|
||||
|
||||
Reference in New Issue
Block a user