So, I had the opportunity to debug a bit, looking at the kernel logs: It is not about BIOS->PowerManagement.
So I am answering my own post for reference.
Looking at kernel.log, it appears that there are 2 or more process that refuses to freeze. The kernel tries for 20 seconds, then decided to cancel suspend. This is the cause of this weird behavior where the laptop wake up bit itself after a short while.
This is part of the log when suspend appears:
Jul 8 06:31:01 nadir-pc kernel: PM: suspend entry (s2idle)
Jul 8 06:31:21 nadir-pc kernel: PM: Syncing filesystems ... done.
Jul 8 06:31:21 nadir-pc kernel: Freezing user space processes ...
Jul 8 06:31:21 nadir-pc kernel: Freezing of tasks failed after 20.009 seconds (2 tasks refusing to freeze, wq_busy=0):
then here listed are udevd & trash.so
After a while I think I found out what happens: I inserted a USB key, then removed it without "ejecting". and there are several instances of Dolphin referencing it, that still can browse it, just like it was still mounted. If I try to unmount it by hand, I get a "device is busy" message. So it is a kernel problem with mounted temporary drives, probably fuse. I often use sshfs which uses fuse.
It appears it is a know Kernel problem from 4.9+
Source: Bug #1676912 “Kernel 4.9+ regression: Suspend - Freezing of task...” :
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1676912
I am currenlty trying to use pm-utils in order to be able to kill everything that blocks suspend, but I really don't know how it works, when & how it is called. Like described here: How can I figure out why Suspend sometimes fails?
https://askubuntu.com/questions/158115/how-can-i-figure-out-why-suspend-sometimes-fails
I found pm-utils in AUR, the sleepd. script are in a different folder so I created /usr/lib/pm-utils/sleep.d/02udev
with the following content (work in progress):
#!/bin/sh
date >> /var/log/pmtest.log
for i in $(ls /run/media/nadir/|grep -v "\."); do echo $i; fusermount -uz /run/media/nadir/$i; umount -l /run/media/nadir/$i; umount -f /run/media/nadir/$i; done
(killall -9 trash.so ; exit 0)
(killall -9 udevd; exit 0)
(killall -9 udisksd; exit 0)
I umounted manually, shutdown failed, suspend failed with additionnal process that refused to freeze : udisksd & trash.so several times. I plan to also try udevadm in this script because I noticed that in such situation it raises errors during shutdown.
full logs during suspend:
Jul 8 06:31:01 nadir-pc kernel: PM: suspend entry (s2idle)
Jul 8 06:31:21 nadir-pc kernel: PM: Syncing filesystems ... done.
Jul 8 06:31:21 nadir-pc kernel: Freezing user space processes ...
Jul 8 06:31:21 nadir-pc kernel: Freezing of tasks failed after 20.009 seconds (2 tasks refusing to freeze, wq_busy=0):
Jul 8 06:31:21 nadir-pc kernel: udevd D 0 10234 820 0x00000004
Jul 8 06:31:21 nadir-pc kernel: Call Trace:
Jul 8 06:31:21 nadir-pc kernel: ? __schedule+0x26c/0x8b0
Jul 8 06:31:21 nadir-pc kernel: schedule+0x32/0x80
Jul 8 06:31:21 nadir-pc kernel: rwsem_down_read_failed+0xfe/0x160
Jul 8 06:31:21 nadir-pc kernel: ? get_disk_and_module+0x3b/0x70
Jul 8 06:31:21 nadir-pc kernel: call_rwsem_down_read_failed+0x14/0x30
Jul 8 06:31:21 nadir-pc kernel: down_read+0x13/0x30
Jul 8 06:31:21 nadir-pc kernel: get_gendisk+0x50/0x130
Jul 8 06:31:21 nadir-pc kernel: __blkdev_get+0x150/0x540
Jul 8 06:31:21 nadir-pc kernel: ? bd_acquire+0xc0/0xc0
Jul 8 06:31:21 nadir-pc kernel: blkdev_get+0x4a/0x300
Jul 8 06:31:21 nadir-pc kernel: ? inode_permission+0x35/0x190
Jul 8 06:31:21 nadir-pc kernel: ? bd_acquire+0xc0/0xc0
Jul 8 06:31:21 nadir-pc kernel: do_dentry_open+0x13f/0x380
Jul 8 06:31:21 nadir-pc kernel: path_openat+0x30c/0x15b0
Jul 8 06:31:21 nadir-pc kernel: ? reuse_swap_page+0x103/0x320
Jul 8 06:31:21 nadir-pc kernel: do_filp_open+0x91/0x100
Jul 8 06:31:21 nadir-pc kernel: ? __check_object_size+0xbe/0x14f
Jul 8 06:31:21 nadir-pc kernel: do_sys_open+0x184/0x210
Jul 8 06:31:21 nadir-pc kernel: do_syscall_64+0x4e/0x100
Jul 8 06:31:21 nadir-pc kernel: entry_SYSCALL_64_after_hwframe+0x44/0xa9
Jul 8 06:31:21 nadir-pc kernel: RIP: 0033:0x7f2f18047eac
Jul 8 06:31:21 nadir-pc kernel: Code: Bad RIP value.
Jul 8 06:31:21 nadir-pc kernel: RSP: 002b:00007ffd5d9c7440 EFLAGS: 00000246 ORIG_RAX: 0000000000000101
Jul 8 06:31:21 nadir-pc kernel: RAX: ffffffffffffffda RBX: 000055c718f73be0 RCX: 00007f2f18047eac
Jul 8 06:31:21 nadir-pc kernel: RDX: 00000000000a0800 RSI: 000055c718f6b2e0 RDI: 00000000ffffff9c
Jul 8 06:31:21 nadir-pc kernel: RBP: 000055c718f6b2e0 R08: 431bde82d7b634db R09: 000000000000000b
Jul 8 06:31:21 nadir-pc kernel: R10: 0000000000000000 R11: 0000000000000246 R12: 00000000000a0800
Jul 8 06:31:21 nadir-pc kernel: R13: 000055c718f857d0 R14: 000055c718f841e0 R15: 000055c718f87970
Jul 8 06:31:21 nadir-pc kernel: trash.so D 0 14063 3314 0x00000004
Jul 8 06:31:21 nadir-pc kernel: Call Trace:
Jul 8 06:31:21 nadir-pc kernel: ? __schedule+0x26c/0x8b0
Jul 8 06:31:21 nadir-pc kernel: schedule+0x32/0x80
Jul 8 06:31:21 nadir-pc kernel: rwsem_down_read_failed+0xfe/0x160
Jul 8 06:31:21 nadir-pc kernel: ? __attach_extent_node+0x82/0xa0 [f2fs]
Jul 8 06:31:21 nadir-pc kernel: call_rwsem_down_read_failed+0x14/0x30
Jul 8 06:31:21 nadir-pc kernel: down_read+0x13/0x30
Jul 8 06:31:21 nadir-pc kernel: f2fs_need_inode_block_update+0x1c/0x50 [f2fs]
Jul 8 06:31:21 nadir-pc kernel: f2fs_iget+0x4e7/0xf20 [f2fs]
Jul 8 06:31:21 nadir-pc kernel: f2fs_lookup+0xe6/0x380 [f2fs]
Jul 8 06:31:21 nadir-pc kernel: __lookup_slow+0x94/0x160
Jul 8 06:31:21 nadir-pc kernel: lookup_slow+0x36/0x50
Jul 8 06:31:21 nadir-pc kernel: walk_component+0x1c2/0x2e0
Jul 8 06:31:21 nadir-pc kernel: path_lookupat.isra.0+0x80/0x230
Jul 8 06:31:21 nadir-pc kernel: ? terminate_walk+0x8c/0x100
Jul 8 06:31:21 nadir-pc kernel: filename_lookup+0xae/0x180
Jul 8 06:31:21 nadir-pc kernel: ? __check_object_size+0xbe/0x14f
Jul 8 06:31:21 nadir-pc kernel: ? strncpy_from_user+0x41/0x120
Jul 8 06:31:21 nadir-pc kernel: vfs_statx+0x7a/0xf0
Jul 8 06:31:21 nadir-pc kernel: __se_sys_newlstat+0x3e/0x70
Jul 8 06:31:21 nadir-pc kernel: ? _cond_resched+0x15/0x30
Jul 8 06:31:21 nadir-pc kernel: ? exit_to_usermode_loop+0x4b/0xc0
Jul 8 06:31:21 nadir-pc kernel: do_syscall_64+0x4e/0x100
Jul 8 06:31:21 nadir-pc kernel: entry_SYSCALL_64_after_hwframe+0x44/0xa9
Jul 8 06:31:21 nadir-pc kernel: RIP: 0033:0x7ff9e05c581a
Jul 8 06:31:21 nadir-pc kernel: Code: Bad RIP value.
Jul 8 06:31:21 nadir-pc kernel: RSP: 002b:00007ffcddcb3038 EFLAGS: 00000246 ORIG_RAX: 0000000000000006
Jul 8 06:31:21 nadir-pc kernel: RAX: ffffffffffffffda RBX: 00007ffcddcb3588 RCX: 00007ff9e05c581a
Jul 8 06:31:21 nadir-pc kernel: RDX: 00007ffcddcb30a0 RSI: 00007ffcddcb30a0 RDI: 0000558b94087658
Jul 8 06:31:21 nadir-pc kernel: RBP: 00007ffcddcb3860 R08: 0000000000000001 R09: 0000558b940876d0
Jul 8 06:31:21 nadir-pc kernel: R10: 0000000000000007 R11: 0000000000000246 R12: 00007ffcddcb35a0
Jul 8 06:31:21 nadir-pc kernel: R13: 00007ffcddcb3588 R14: 00007ffcddcb3860 R15: 0000558b94051cf0
Jul 8 06:31:21 nadir-pc kernel: OOM killer enabled.
Jul 8 06:31:21 nadir-pc kernel: Restarting tasks ...
Jul 8 06:31:21 nadir-pc kernel: IPv6: ADDRCONF(NETDEV_UP): wlp1s0: link is not ready
Jul 8 06:31:21 nadir-pc kernel: done.
Jul 8 06:31:22 nadir-pc kernel: PM: suspend exit
regarding "umount error The device is currently busy Error unmounting target is busy" :
linux - How to unmount a busy device - Stack Overflow
https://stackoverflow.com/questions/7878707/how-to-unmount-a-busy-device