Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 08 Feb 2009 14:07:19 -0800
From:      Sean Bruno <sean.bruno@dsl-only.net>
To:        Torfinn Ingolfsen <torfinn.ingolfsen@broadpark.no>
Cc:        freebsd-firewire@FreeBSD.org
Subject:   Re: kern/97208: [firewire] System hangs / locks up when a firewire disk is attached
Message-ID:  <1234130839.3467.8.camel@localhost.localdomain>
In-Reply-To: <200902071530.n17FU7VE054050@freefall.freebsd.org>
References:  <200902071530.n17FU7VE054050@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help



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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1234130839.3467.8.camel>