Skip to contentSkip to conversation

hid: enable hid device to suspend/resume asynchronously

PATCH Applied Fu, Zhonghui 2 participants 5 messages Sep 24, 2015 – Dec 3, 2015 HID

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 hid: enable hid device to suspend/resume asynchronously

Now, PM core supports asynchronous suspend/resume mode for devices during system suspend/resume, and the power state transition of one device may be completed in separate kernel thread. PM core ensures all power state transition timing dependency between devices. This patch enables hid devices to suspend/resume asynchronously. This will take advantage of multicore and improve system suspend/resume speed.

---
Changes in v2:
- Amend commit message.

 drivers/hid/hid-core.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/hid/hid-core.c +1 -0
index 70a11ac..357f3a3 100644
@@ -2652,6 +2652,7 @@ struct hid_device *hid_allocate_device(void)
 	device_initialize(&hdev->dev);
 	hdev->dev.release = hid_device_release;
 	hdev->dev.bus = &hid_bus_type;
+	device_enable_async_suspend(&hdev->dev);
 
 	hid_close_report(hdev);
 

-- 1.7.1

#1 lore raw

Hi Jiri,

Any comments about this patch?

After enabling the HID devices suspend/resume asynchronously on ASUS T100TA(Baytrail-T platform), the system suspend-to-idle/resume time is reduced about 20ms. Although this improvement is not very significant. But, if the suspend/resume operation of HID devices is very time-consuming on some other platforms, this patch can improve significantly system suspend/resume speed on these platforms.

Thanks,
Zhonghui

Quoted 30 lines · Zhonghui

Now, PM core supports asynchronous suspend/resume mode for devices during system suspend/resume, and the power state transition of one device may be completed in separate kernel thread. PM core ensures all power state transition timing dependency between devices. This patch enables hid devices to suspend/resume asynchronously. This will take advantage of multicore and improve system suspend/resume speed.

---
Changes in v2:
- Amend commit message.

 drivers/hid/hid-core.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/hid/hid-core.c +1 -1
index 70a11ac..357f3a3 100644
@@ -2652,6 +2652,7 @@ struct hid_device *hid_allocate_device(void)
 	device_initialize(&hdev->dev);
 	hdev->dev.release = hid_device_release;
 	hdev->dev.bus = &hid_bus_type;
+	device_enable_async_suspend(&hdev->dev);
 
 	hid_close_report(hdev);
 
-- 1.7.1
maintainer
#2 lore raw
Quoted 11 lines · Zhonghui

Hi Jiri,

Any comments about this patch?

After enabling the HID devices suspend/resume asynchronously on ASUS T100TA(Baytrail-T platform), the system suspend-to-idle/resume time is reduced about 20ms. Although this improvement is not very significant. But, if the suspend/resume operation of HID devices is very time-consuming on some other platforms, this patch can improve significantly system suspend/resume speed on these platforms.

Hi,

I don't think the question I've raised at

	http://lkml.kernel.org/r/[email protected]

has ever been answered or at least discussed ... ?

Signature · 2 lines
Jiri Kosina
SUSE Labs
#3 lore raw
Quoted 12 lines · Jiri Kosina
Quoted 10 lines · Zhonghui

Hi Jiri,

Any comments about this patch?

After enabling the HID devices suspend/resume asynchronously on ASUS T100TA(Baytrail-T platform), the system suspend-to-idle/resume time is reduced about 20ms. Although this improvement is not very significant. But, if the suspend/resume operation of HID devices is very time-consuming on some other platforms, this patch can improve significantly system suspend/resume speed on these platforms.

Quoted 7 lines

Hi,

I don't think the question I've raised at

	http://lkml.kernel.org/r/[email protected]

has ever been answered or at least discussed ... ?

Sorry for missing this mail.

At present, the file(/sys/.../power/async) can be used to enable one device suspend/resume asynchronously. My patch only changes the default value of this file from "disabled" to "enabled".
The sole difference of asynchronous suspend/resume mode is that the suspend/resume operation of one device is carried out in a separate kernel thread, and PM core ensures all related dependency. I have verified this patch on some platforms, such as ASUS T100TA. Actually, many other devices have used this feature for a long time.

Thanks,
Zhonghui

Quoted 1 line
maintainer Applied
#4 lore raw
In reply to Fu, Zhonghui
Quoted 21 lines · Zhonghui

Now, PM core supports asynchronous suspend/resume mode for devices during system suspend/resume, and the power state transition of one device may be completed in separate kernel thread. PM core ensures all power state transition timing dependency between devices. This patch enables hid devices to suspend/resume asynchronously. This will take advantage of multicore and improve system suspend/resume speed.

---
Changes in v2:
- Amend commit message.

 drivers/hid/hid-core.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/hid/hid-core.c +0 -0
index 70a11ac..357f3a3 100644

drivers/hid/hid-core.c struct hid_device *hid_allocate_device(void) · line 2655

Quoted 4 lines
drivers/hid/hid-core.c +1 -0
@@ -2652,6 +2652,7 @@ struct hid_device *hid_allocate_device(void)
 	device_initialize(&hdev->dev);
 	hdev->dev.release = hid_device_release;
 	hdev->dev.bus = &hid_bus_type;
+	device_enable_async_suspend(&hdev->dev);

Applied to for-4.5/async-suspend branch.

Signature · 2 lines
Jiri Kosina
SUSE Labs