Troubles with rebooting after kexec

After updating Fedora, i want to reboot faster my system with kexec.
Usually, i use kexec on servers but i want to try on my desktop.
BUT after rebooting with kexec, no sound after login into GNOME (Wayland).
Are there some known issues with kexec ? I didn’t find informations about that.

Process to reboot :

sudo kexec -l /boot/vmlinuz-$LASTKERNEL --initrd=/boot/initramfs-$LASTKERNEL.img --reuse-cmdline
sudo kexec -e

$LASTKERNEL is the version of the kernel for example : 6.7.1-200.fc39.x86_64

My guess is that it would be a problem with the sound card/device not being reset properly. Does it work if you manually reset the PCI device?

If so, the problem would be with the sound driver, not kexec per se.

Tested the tip without success.
In GNOME, i see when

echo 1 > /sys/bus/pci/devices/0000\:1f\:00.3/remove

The soundcard and sound parameters disappear in the GNOME menu.

After :

echo "1" > /sys/bus/pci/rescan

All icons about sounds are here again, but no sound.

Rebooting normally and sound is OK.

Hmm, how about if you also unload the driver from memory before you rescan?

lspci -v -s 1f:00.3 should show you what driver (a.k.a. “kernel module”) that device is using. After you’ve removed the device, you might be able to also unload the driver with rmmod <driver name>. You can use lsmod to see what drivers are currently loaded. Then, hopefully, it will automatically reload the driver in a good initial state when you rescan the PCI bus. If it doesn’t automatically reload the driver, you might have to run modprobe <driver name> first.

Beware!!! Removing a driver can sometimes cause your system to lock up.

If that still doesn’t work, about all that would be left short of digging into the code would be to experiment with some of the driver parameters. Use modinfo -p <driver name> to get a list of the parameters that the driver accepts. You can pass the parameters to the driver when you load it with the modprobe command (e.g. modprobe snd_hda_intel snoop=1).

       kexec  is  a system call that enables you to load and boot into another kernel from the currently running kernel.  kexec performs the function of the boot loader from within the kernel. The primary dif‐
       ference between a standard system boot and a kexec boot is that the hardware initialization normally performed by the BIOS or firmware (depending on architecture) is not performed during a  kexec  boot.
       This has the effect of reducing the time required for a reboot.

       Make sure you have selected CONFIG_KEXEC=y when configuring the kernel. The CONFIG_KEXEC option enables the kexec system call.

Please note that the hardware initialization is not made while running a kernel with kexec. I could Imagine that the tool is not designed to use on a workstation.

OK i tested some things.

Restart with kexec : no sound.
Restart with kexec on an other PC : no wifi.

I tried to unload the module that manages the problematic device and kexec -e : All is okay.

But fun fact, instead of reboot with kexec -e, if i reboot with systemctl kexec : all is fine.

So the answer is :
kexec -l …
systemctl kexec

All is good