[Bug 271359] RPi4: reset after shutdown -h doesn't work.
Date: Thu, 11 May 2023 04:05:19 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271359 Bug ID: 271359 Summary: RPi4: reset after shutdown -h doesn't work. Product: Base System Version: 13.2-STABLE Hardware: arm64 OS: Any Status: New Severity: Affects Many People Priority: --- Component: arm Assignee: freebsd-arm@FreeBSD.org Reporter: t_uemura@macome.co.jp Created attachment 242116 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=242116&action=edit Ugly but reliable way of workaround. On RPi4B running 13.2-RELEASE official image (or home-brew 13.2-STABLE with more recent u-boot and firmware), reset after shutdown -h by pressing a key to "The operating system has halted.\nPlease press any key to reboot." prompt never works as expected. It simply freezes just after "Rebooting..." message, and a power cycle is required to restart the operating system. Precisely, reset after shutdown -h is handled by sys/kern/kern_shutdown.c:shutdown_reset() but there are two hardware specific issues here. The one is that mtx_lock_spin(&smp_ipi_mtx) never returns. I don't know how important this lock is and tried to see by commenting it out, and faced another issue. If I omitted the lock, then psci_call(PSCI_FNID_SYSTEM_RESET) was subsequently called from cpu_lock() and it never successfully reset the board. Just stop. Screen was still on and "Rebooting..." was intact. I don't know whether this psci_call() failure is caused by the skipped lock. To workaround, a watchdog firing is good alternative, as did in sys/arm/broadcom/bcm2835/bcm2835_wdog.c:bcmwd_reboot_system(). I was very reluctant to add machine-dependent code to the file under sys/kern, but I couldn't think of any other way to get around the lock other than what was did in the attached patch. -- You are receiving this mail because: You are the assignee for the bug.