firewire disk stopped working

Daniel Thiele dthiele at gmx.net
Fri Mar 13 15:59:53 PDT 2009


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Daniel Thiele wrote:
| Sean Bruno wrote:
|> Ok, so let's try this a different way.
|>
|> This patch should be applied against HEAD.  This reverts every change I
|> have made in the last month.
|>
|> Once we confirm that this works, I'll start moving forward until we find
|> the broken change.
|>
|> Sean
|
| Even though the patch applied cleanly, the disk sill does not show up.
| Only /dev/pass0 is being created. I also tried different disks
| (enclosures to be precise) and different cables without any success.
|
| The logs (all with debug.firewire_debug=3 and debug.sbp_debug=3) after
| applying firewire_revert.diff can be found at:
|
|
http://www-public.tu-bs.de:8080/~y0023183/FreeBSD/Firewire/reverted_patch_20090303

|
|
| where:
|
| sysctl.txt
| is simply the output of 'sysctl -a | grep "firewire\|sbp"'. For both of
| the following files.
|
| dmesg_reverted_oxfordsemi_debug3.txt
| is the dmesg with verbose debug messages (debug.{firewire,sbp}_debug=3)
| with my enclosure using the Oxford (911?) chip set.
| This dmesg also includes the complete dmesg of my machine and covers
| attachment and detachment of the disk.
|
| dmesg_reverted_wdmybook_debug3.txt
| is the dmesg with verbose debug messages (debug.{firewire,sbp}_debug=3)
| with a Western Digital My Book enclosure. Unfortunately I don't know the
| chip set WD used in this one.
| This dmesg just covers the attachment and detachment of the disk.
|
|
| What I did next was trying to find out what versions of the files in
| src/sys/dev/firewire caused the disk to stop working. I started with the
| versions that work in 7.1-Stable (as of Feb 9). And updated them until
| the disk did not get recognized anymore.
|
| Here is what I tried so far:
|
| File            7.1     8.0     200812          Feb 1
|                 02/09   02/24   snap.           commit
|                                 (guess)
|                                 0000    0001    0002
| ------------------------------------------------------
| firewire.c      1.100   1.108   1.104   1.104   1.105
| firewire.h      1.21    1.25    1.22    1.25    1.25
| fwdev.c         1.52    1.53    1.53    1.53    1.53
| fwohci.c        1.93    1.98    1.95    1.95    1.96
| fwohci_pci.c    1.60    1.61    1.60    1.60    1.61
| fwohcireg.h     1.23    1.24    1.23    1.24    1.24
| fwohcivar.h     1.16    1.18    1.16    1.16    1.17
| fwphyreg.h      1.3     1.4     1.3     1.4     1.4
| if_fwe.c        1.44    1.46    -       -       -
| if_fwip.c       1.16    1.18    -       -       -
| sbp.c           1.97    1.100   1.97    1.97    1.98
| ------------------------------------------------------
| working:        yes     no      yes     yes     no
|
| So, on my machine (still 8.0-CURRENT as of around Feb 24) the versions
| of the files mentioned that are used in 7.1-STABLE work. The ones used
| in the 200812-CURRENT snapshot also seem to work. Note that I guessed
| the the versions in this case (basically I used the versions that, at
| most, include changes from November 2008), since I only use that
| snapshot as it is on a bootable USB-stick (0000 in the table above).
| Next, I tried to update all mentioned files either to their current
| version or the version just before the Feb 1 commit (0001 in the table
| above). I used the current version whenever the file was not affected by
| the Feb 1 commit. This also seems to work. After updating the rest of
| the files to the version that contains the Feb 1 commit things stopped
| working (0002). Note that I did not touch the if_* sources, as these are
| network interfaces.
|
| At
|
http://www-public.tu-bs.de:8080/~y0023183/FreeBSD/Firewire/Tests_20090304/
| you can find the following:
|
| results.txt
| the table above in a plain text file.
|
| Sources/versions
| the versions of the files in src/sys/dev/firewire I used. I removed the
| leading '1.' from the version and put the remainder in front of the file.
|
| Sources/working_0000
| Sources/working_0001
| the files in src/sys/dev/firewire used in the corresponding table
| columns.
|
| Sources/broken_0002
| the files that broke firewire disk support in the versions mentioned in
| the table.
|
|
| I hope that somehow helps to narrow down the problem. If there is
| anything else that I could or should try just let me know.
|
|
| Best regards,
|
| Daniel
| _______________________________________________
| freebsd-firewire at freebsd.org mailing list
| http://lists.freebsd.org/mailman/listinfo/freebsd-firewire
| To unsubscribe, send any mail to
"freebsd-firewire-unsubscribe at freebsd.org"
|

Hi Sean,

I updated my CURRENT today and also applied the patch to firewire.c you
included in your reply to the "Configuration ROM in firewire stack"
thread here on firewire@, since Hidetoshi Shimokawa also mentioned that
the the issue he was addressing also affects SCSI.
This patch seems to also fix the issues with my external firewire disk.
I did not do much testing yet, but the disk shows up in /dev and dmesg
reports:

fwohci0: fwohci_intr_core: BUS reset
fwohci0: fwohci_intr_core: node_id=0x00000000, SelfID Count=2, non
CYCLEMASTER mode
firewire0: 2 nodes, maxhop <= 1 cable IRM irm(0)  (me)
firewire0: root node is not cycle master capable
firewire0: bus manager 0
fwohci0: too many cycle lost, no cycle master presents?
firewire0: New S800 device ID:0090a9cad5a4d545
sbp0: sbp_show_sdev_info: sbp0:0:0: ordered:1 type:0
EUI:0090a9cad5a4d545 node:1 speed:3 maxrec:8
sbp0: sbp_show_sdev_info: sbp0:0:0 'WD' 'My Book' '000200'
da0 at sbp0 bus 0 target 0 lun 0
da0: <WD My Book 0200> Fixed Direct Access SCSI-4 device
da0: 50.000MB/s transfers
da0: 476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)

At
http://www-public.tu-bs.de:8080/~y0023183/FreeBSD/Firewire/usr_src_sys_dev_firewire_versions_20090313.txt

you can find the exact versions of the files in
/usr/src/sys/dev/firewire that I am using. Note that firewire.c has been
patched with your firewire.c.diff patch I from the "Configuration ROM in
firewire stack" thread.

So, thanks for the patches to you both.


Best regards,

Daniel
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.11 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkm65XsACgkQCOZKcWNoXg7pyQCgozSG0CcaG9dV27wA62gDZ6vl
s7kAoJPvmBAg1hxF2GXfCNXrA/wfaE2J
=m9/8
-----END PGP SIGNATURE-----


More information about the freebsd-firewire mailing list