kern/97208: [firewire] System hangs / locks up when a firewire
disk is attached
Sean Bruno
sean.bruno at dsl-only.net
Sun Feb 8 14:07:21 PST 2009
On Sat, 2009-02-07 at 15:30 +0000, Torfinn Ingolfsen wrote:
>
> With i386, I still have the problem that dmesg fills up with messages
> "phy int" and the drive does not attach. The machine does not hang, I
> can attach and deattach the drive several times
I will backport a patch to allow CAM to see a drive connect/disconnect
better this week. Right now, I think you have to reboot if the initial
connection fails. It's kind of awful.
> >
> > 4. Specifically, what type of firewire drive is this?
>
> Maxtor OneTouch II, 300 GB, usb and firewire ports.
I noted that there are 2 models of the Maxtor OneTouch II. It appears
from the fwcontrol output that you have a FW800 adapter in your PC and
that the Maxtor is using a FW800 port. Does the FW400 port work? Does
the USB port work?
> fwohci0: node_id=0xc800ffc0, gen=195, CYCLEMASTER mode
> firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me)
> fwohci0: fw_set_bus_manager: 0->0 (loop=0)
> firewire0: bus manager 0 (me)
> send phy_config root_node=-1 gap_count=5
> fwohci0: start AT DMA status=11
> Current DB 0
> ch = 0
> Current OP KEY INT BR len Addr Depend Stat: Cnt
> 01877200 OUTL ST2 ALL ALL 12 00000000 01877280 8411:810f RUN,ACTIVE, ack complete(11)
> 0x000000e0 0x00450000 0xffbaffff 0x00000000
> bus_explore done
> sbp_post_explore (sbp_cold=0)
> fwohci0: BUS reset
> sbp_post_busreset
> fwohci0: phy int
> fwohci0: phy int
> fwohci0: phy int
> fwohci0: phy int
> fwohci0: phy int
> fwohci0: phy int
> fwohci0: phy int
> fwohci0: phy int
> fwohci0: phy int
> fwohci0: too many cycle lost, no cycle master presents?
> fwohci0: phy int
> fwohci0: phy int
> fwohci0: node_id=0xc800ffc0, gen=217, CYCLEMASTER mode
> firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me)
> fwohci0: fw_set_bus_manager: 0->0 (loop=0)
> firewire0: bus manager 0 (me)
> send phy_config root_node=-1 gap_count=5
> fwohci0: start AT DMA status=11
> Current DB 0
> ch = 0
> Current OP KEY INT BR len Addr Depend Stat: Cnt
> 01877280 OUTL ST2 ALL ALL 12 00000000 01877300 8411:3df0 RUN,ACTIVE, ack complete(11)
> 0x000000e0 0x00450000 0xffbaffff 0x00000000
> bus_explore done
> sbp_post_explore (sbp_cold=0)
I'll have to see what the "phy int" is supposed to mean. Right now it
appears that the FreeBSD firewire stack treats it as a no-op.
I am puzzled by the fact that "stuff" appears to be happening WAY before
a busreset occurs. This seems bad.
Try the same test, but execute a "fwcontrol -r" to force a bus reset.
I'd be interested to see the same output from your console with
debugging enabled.
>
> === base register ===
> 0x01 0x05 0xe3 0xe2 0xc4 0x0b 0x10 0x20
> Physical_ID:0 R:0 CPS:1
> RHB:0 IBR:0 Gap_Count:5
> Extended:7 Num_Ports:3
> PHY_Speed:7 Delay:2
> LCtrl:1 C:1 Jitter:0 Pwr_Class:4
> WDIE:0 ISBR:0 CTOI:0 CPSI:0 STOI:1 PEI:0 EAA:1 EMC:1
> Max_Legacy_SPD:0 BLINK:1 Bridge:0
> Page_Select:1 Port_Select0
>
> === page 0 port 0 ===
> 0xf8 0x60 0x3b 0x00 0x00 0x00 0x00 0x00
> Astat:3 BStat:3 Ch:1 Con:0 RXOK:0 Dis:0
> Negotiated_speed:3 PIE:0 Fault:0 Stanby_fault:0 Disscrm:0 B_Only:0
> DC_connected:0 Max_port_speed:3 LPP:1 Cable_speed:3
> Connection_unreliable:0 Beta_mode:0
> Port_error:0x0
> Loop_disable:0 In_standby:0 Hard_disable:0
>
> === page 0 port 1 ===
> 0xb6 0x00 0xbb 0x00 0x00 0x00 0x00 0x00
> Astat:2 BStat:3 Ch:0 Con:1 RXOK:1 Dis:0
> Negotiated_speed:0 PIE:0 Fault:0 Stanby_fault:0 Disscrm:0 B_Only:0
> DC_connected:1 Max_port_speed:3 LPP:1 Cable_speed:3
> Connection_unreliable:0 Beta_mode:0
> Port_error:0x0
> Loop_disable:0 In_standby:0 Hard_disable:0
>
> === page 0 port 2 ===
> 0xf8 0x60 0x3b 0x00 0x00 0x00 0x00 0x00
> Astat:3 BStat:3 Ch:1 Con:0 RXOK:0 Dis:0
> Negotiated_speed:3 PIE:0 Fault:0 Stanby_fault:0 Disscrm:0 B_Only:0
> DC_connected:0 Max_port_speed:3 LPP:1 Cable_speed:3
> Connection_unreliable:0 Beta_mode:0
> Port_error:0x0
> Loop_disable:0 In_standby:0 Hard_disable:0
You appear to have 2 ports connected to FW800 devices, port 0 and port
2. What is on both ports?
Sean
More information about the freebsd-firewire
mailing list