The branch main has been updated by adrian:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=23ea903f68017f781ff579325caa01c928612d57

commit 23ea903f68017f781ff579325caa01c928612d57
Author:     Abdelkader Boudih <[email protected]>
AuthorDate: 2026-07-20 22:47:49 +0000
Commit:     Adrian Chadd <[email protected]>
CommitDate: 2026-07-20 22:47:58 +0000

    firewire: force root change when root node is not cycle master capable
    
    When a FireWire bus resets, all devices negotiate who is the new boss.
    when we detect the root node can't be cycle master,
    we send a PHY config packet that forces a reelection.
    
    Reviewed by:    adrian
    Differential Revision:  https://reviews.freebsd.org/D58309
---
 sys/dev/firewire/firewire.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/sys/dev/firewire/firewire.c b/sys/dev/firewire/firewire.c
index cc0cf9e5b7ad..1020aff31929 100644
--- a/sys/dev/firewire/firewire.c
+++ b/sys/dev/firewire/firewire.c
@@ -2491,9 +2491,10 @@ fw_bmr(struct firewire_comm *fc)
                        cmstr = fc->max_node;
                else {
                        device_printf(fc->bdev,
-                           "root node is not cycle master capable\n");
-                       /* TODO: issue PHY config to force root change + bus 
reset */
-                       cmstr = fc->nodeid;
+                           "root node is not cycle master capable, "
+                           "forcing root to node %d\n", fc->nodeid);
+                       fw_phy_config(fc, fc->nodeid, -1);
+                       return 0;
                }
        } else
                cmstr = -1;

Reply via email to