[Bug 271780] [patch][RPi4] PSCI reset doesn't work.

[email protected]
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]/bugzilla/>
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: [email protected]
          Reporter: [email protected]

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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.