[Bug 271780] [patch][RPi4] PSCI reset doesn't work.
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 271780] RPi4 PSCI reset doesn't work."
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 02 Jun 2023 05:16:34 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271780
Bug ID: 271780
Summary: [patch][RPi4] PSCI reset doesn't work.
Product: Base System
Version: CURRENT
Hardware: arm64
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: arm
Assignee: freebsd-arm@FreeBSD.org
Reporter: t_uemura@macome.co.jp
On RPi4B, PSCI reset, precisely, PSCI_FNID_SYSTEM_RESET doesn't work. This
causes a reset (a key press) after shutdown -h to halt the board rather than to
reboot, and need a powercycle to restart. To workaround, SoC's watchdog must
handle the reset, as its 32-bit sibling did so in
bcm2835_machdep.c:bcm2835_cpu_reset() .
This happens on 13.2-RELEASE image, 13.2-STABLE and 14-CURRENT with more recent
u-boot and firmware.
Long story:
After shutdown -h, the "Please press any key to reboot." message is shown, and
by a key press, architecture dependent cpu_reset() is called to try to reset:
on 32-bit RPis,
arm/platform.c:cpu_reset()
broadcom/bcm2835/bcm2835_machdep.c:bcm2835_cpu_reset()
broadcom/bcm2835/bcm2835_wdog.c:bcmwd_watchdog_reset()
on arm64,
arm64/arm64/vm_machdep.c:cpu_reset()
dev/psci/psci.c:psci_reset()
dev/psci/psci.c:psci_shutdown()
dev/psci/psci.h:psci_call(PSCI_FNID_SYSTEM_RESET)
Since PSCI reset works properly on RPi3B+, I guess this issue is specific to
BCM2711 and is due to a bug in this newer generation SoC's PSCI implementation.
To workaround, watchdog is armed to fire immediately instead of psci_call(). I
wasn't sure if I could add SoC dependent snippet in this location
(arm64/arm64), but I found a quirk for Cavium in GIC v3 code, so I thought it
might be OK.
Finally note that about simple reboots, triggered by shutdown -r or reboot(8),
are all handled by watchdog on both arm and arm64;
broadcom/bcm2835/bcm2835_wdog.c:bcmwd_reboot_system() via shutdown_final event
handler.
--
You are receiving this mail because:
You are the assignee for the bug.