I had already found the reason for this behavior!
The only change in the "drivers/base/power/" Subdirectory is inside main.c line 
192.

There is a "while loop" that loops over a list (dpm_list).

The (principal) task of this loop is to call "device_prepare" on every 
list-element.
Every element that is processed (without error) is then removed from the list 
and placed into a "prepared" list (I leave out the special case of EAGAIN here, 
because its not necessary to understood the bug).

In the prev. version this loop is terminated when the list is empty OR when 
there is an error.
In the newer revision the second condition was removed.

Removing the second condition will result in an endless loop whenever an
error occurs!

Right now I am not sure what will be the correct way to handle an error (on 
device_prepare)...
I guess that the correct way should be to "skip/mark" this element, continue to 
process the rest of the elements and do special handling later on the marked 
elements.
But, because the prev. revision simply ignores the failed element AND all 
remaining (I believe that the second part is definitely wrong) , this should 
work here too.

I am currently trying to generate a kernel with this line reverted to
prev. version and check if this works..

I will report (again) if my checks are done

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1966125

Title:
  Suspend (to ram) fails after upgrade from 5.13.0-35-generic to
  5.13.0-37-generic

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-signed-hwe-5.13/+bug/1966125/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to