Bug 33759

Summary: 49bluetooth hook needs to wait for btusb module to get unused
Product: pm-utils Reporter: Martin Pitt <martin.pitt>
Component: GeneralAssignee: Richard Hughes <richard>
Status: RESOLVED WONTFIX QA Contact:
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: patch against git head

Description Martin Pitt 2011-01-31 06:12:10 UTC
(Original bug at https://launchpad.net/bugs/698331)

The 49bluetooth hook disables /proc/acpi/ibm/bluetooth but this isn't synchronous, i. e. it doesn't wait until the module usage count actually drops to 0. Due to that, it's impossible to add btusb to SUSPEND_MODULES (on some models/older kernels you need to do that to fix suspend problems), as at that point the module is still in use. To demonstrate that, I added some logging to the hook:

==== before: =====
--- /proc/acpi/ibm/bluetooth ----
status:		enabled
commands:	enable, disable
--- rfkill list ---
0: tpacpi_bluetooth_sw: Bluetooth
	Soft blocked: no
	Hard blocked: no
1: tpacpi_wwan_sw: Wireless WAN
	Soft blocked: no
	Hard blocked: no
2: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: no
10: hci0: Bluetooth
	Soft blocked: no
	Hard blocked: no
--- lsmod ---
btusb                  18600  2 

=== after writing /proc/acpi/ibm/bluetooth ====
--- /proc/acpi/ibm/bluetooth ----
status:		disabled
commands:	enable, disable
--- rfkill list ---
0: tpacpi_bluetooth_sw: Bluetooth
	Soft blocked: yes
	Hard blocked: no
1: tpacpi_wwan_sw: Wireless WAN
	Soft blocked: no
	Hard blocked: no
2: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: no
10: hci0: Bluetooth
	Soft blocked: no
	Hard blocked: no
--- lsmod ---
btusb                  18600  2 

As we can see, /proc/acpi/ibm/bluetooth got updated, but both rfkill as well as the module usage count are still active.

=== after sleep 0.5 ====
--- /proc/acpi/ibm/bluetooth ----
status:		disabled
commands:	enable, disable
--- rfkill ---
0: tpacpi_bluetooth_sw: Bluetooth
	Soft blocked: yes
	Hard blocked: no
1: tpacpi_wwan_sw: Wireless WAN
	Soft blocked: no
	Hard blocked: no
2: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: no
--- lsmod ---
btusb                  18600  0 

Now it disappeared from rfkill and the module usage count dropped to 0.

I'll write a better hook which waits for the module to get unused.
Comment 1 Martin Pitt 2011-01-31 06:33:16 UTC
Created attachment 42750 [details] [review]
patch against git head

What do you think about this?
Comment 2 Adam Jackson 2018-06-29 19:57:20 UTC
pm-utils hasn't been touched in eight years, none of this is likely to get addressed. Closing bugs and disabling the bz product.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.