Comment 20 for bug 698331

Revision history for this message
In , Martin Pitt (pitti) wrote :

(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.