Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.debian.kernel > #68028

Bug#964839: Debugging results

From Felix Dörre <debian@felixdoerre.de>
Newsgroups linux.debian.bugs.dist, linux.debian.kernel
Subject Bug#964839: Debugging results
Date 2020-09-07 15:50 +0200
Message-ID <AMpGW-6Jk-7@gated-at.bofh.it> (permalink)
References <Ar9x7-5za-1@gated-at.bofh.it>
Organization linux.* mail to news gateway

Cross-posted to 2 groups.

Show all headers | View raw


Hi,

Thanks for the notes. I did not install the 5.8.7-kernel because it did 
not automatically arrive via apt (and I am not sure which packages 
exactly I should install). So I went directly into trying to bisecting:

Bisecting did not help at all. The first few kernels generated by the 
commits indicated by bisect did not boot at all (loading the initramfs 
hangs). So as I already had a linux kerrnel I tried compiling the 
versions that I tested previously (just to see if they would boot and 
show the same problem): 5.6.14 and 5.7.6. That worked.

So I went with the 5.7.6-kernel and added printk-calls to understand 
what happens:

The mechanism to send the notifications on PM_SUSPEND allows many 
modules to register handlers. Adding prints there showed, that the 
handler was not "completely" broken. Handlers from other modules were 
invoked. However the mechanism that allows handlers to "break" the 
notification-chain and preventing all subsequent handlers to be 
executed. This is done, by returning "NOTIFY_STOP" from the handler. 
Searching the diff between 5.6.14 and 5.7.6 for that constant showed a 
suspicious line at the end of hci_suspend_notifier in 
net/bluetooth/hci_core.c:

return ret ? notifier_from_errno(-EBUSY) : NOTIFY_STOP;

This line was introduced with 9952d90ea2885d7cbf80cd233f694f09a9c0eaec 
(which is in 5.7.6 and not in 5.6.14).

The handler was modified and improved upon between 5.7.6 and 5.8.7, but 
is still present in 5.8.7, where the handler always returns NOTIFY_STOP. 
In master the bug seems resolved, as there the handler returns 
(correctly) NOTIFY_DONE. The fix was made in 
24b065727ceba53cc5bec0e725672417154df24f. Currently that commit is only 
contained in the tags: v5.9-rc1, v5.9-rc2, v5.9-rc3. To verify that this 
is indeed the problem I took the 5.7.6-kernel and adjusted:

return ret ? notifier_from_errno(-EBUSY) : NOTIFY_STOP;

to


return ret ? notifier_from_errno(-EBUSY) : NOTIFY_DONE;

which gave me a working 5.7.6-kernel.

Will you try to backport a fix or do I just need to wait until 5.9 for a 
kernel that might handle suspend properly again?

-- 
Kind regards,
Felix Dörre

Back to linux.debian.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

Bug#964839: Debugging results Felix Dörre <debian@felixdoerre.de> - 2020-09-07 15:50 +0200
  Bug#964839: Debugging results Salvatore Bonaccorso <carnil@debian.org> - 2020-09-07 22:00 +0200
    Bug#964839: Debugging results Salvatore Bonaccorso <carnil@debian.org> - 2020-09-08 06:40 +0200

csiph-web