-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathBUGS
137 lines (101 loc) · 6.15 KB
/
BUGS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
Known Bugs & Limitations in libforensic1394
Introduction
libforensic1394 is a thin wrapper around the platforms native IEEE
1394 stack. As a consequence of this the vast majority of bugs can
be traced back to either faults in the underlying 1394 stack or to
hardware misconfiguration/incompatibility. Where the 1394 stack is
believed to be at fault bug reports have been filed with the
relevant parties.
Platform Agnostic Issues
Timeout required after adding an SBP-2 unit directory
After adding an SBP-2 unit directory to a bus it is necessary to
wait for ~2 seconds before attempting to read/write from a device
on the bus. This is required in order to give devices on the bus
time to respond to the presence of such a directory. (The usual
course of action being to bring down the physical request filter.)
While there are provisions in the specification to determine
precisely when a device has brought down its physical request
filter limitations in Linux/Juju stack pre-2.6.36 prevent
user-space applications from leveraging this.
Multiple SBP-2 unit directories can be added to a bus
Should two or more applications, each using libforensic1394,
enable SBP-2 support then it is possible that multiple SBP-2 unit
directories will appear in the ROM of the host.
As the presence of multiple directories is harmless there are no
plans to prevent such a situation from occurring. Moreover, the
design of modern 1394 stacks would make enforcing the presence of
only one such directory extremely difficult.
Linux/Juju Specific Issues
Asynchronous requests considered harmful
The Juju stack contains one or more race conditions that can
result in kernel-mode GPFs (“General Protection Faults”) when
asynchronous requests are used. Such faults nearly always result
in a kernel panic. The probability of such a fault has found to
depend on both the make/model of the OHCI and the number of
asynchronous requests.
libforensic1394 currently works around this issue by disabling
asynchronous requests under Linux/Juju. This is done by defining
REQUEST_PIPELINE_SZ to be 1 in linux/juju.c.
Further information can be found in the following report:
https://bugzilla.kernel.org/show_bug.cgi?id=18292
Spurious warnings when firewire-sbp2 is loaded
When the firewire-sbp2 module is loaded into the kernel use of
libforensic1394 may result in kernel messages along the lines of:
firewire_sbp2: fw0.0: orb reply timed out, rcode=0x11
If an SBP-2 unit directory is added to the CSR of a local port
the firewire-sbp2 driver is notified and treats it as if it were a
bona fide SBP-2 device. However, since libforensic1394 does not
implement any of the SBP-2 specification the requests from the
driver time out. This causes various warnings to be
generated. Although the presence of the firewire-sbp2 module is
not believed to be harmful the messages can be supressed by
removing it prior to using libforensic1394:
modprobe -r firewire_sbp2
Mac OS X Specific Issues
Opening and closing a device multiple times
Attempting to open a device which has already been opened/closed
can result in a kernel panic. Although the precise cause is
unknown it is believed to be related to several other kernel
panics in the Apple FireWire stack.
Should an application need to open/close a device multiple times
it should do so by re-requesting the device list each time.
Occasional kernel panics under high-load
Under high-load conditions some kernel panics have been observed.
The resulting stack trace is identical to that which can occur
when attempting to open a previously closed device.
Little is known about the precise cause of the problem however it
is believed to be related to the use of asynchronous requests. If
this is the case it may become necessary to disable the use of
asynchronous requests under Mac OS X.
Incomplete CSR for attached devices
There exist some issues with regards to getting the Configuration
Status ROM which can result in the ROM being truncated. The cause
of this is currently unknown; however, it is observed in other
FireWire applications (such as IORegistryExplorer) and hence is
believed to be an IOKit problem.
While this is not normally an issue (the crucial components of the
CSR, such as the GUID, have always been present) applications
which require the complete ROM can read it manually from the
device. The relevant offsets for performing such a read can be
found in csr.h.
Windows targets report Mac OS X hosts as an unidentified device
When connecting a Mac OS X host to an unlocked Windows target the
“New Hardware Wizard” may appear. This is because Mac OS X
advertises support for IPv6 over 1394 (RFC 3146) — a protocol
which Windows does not recognise. This manifests itself as an
“Unknown Device” in the device manager with a hardware ID of
`1394\5E&2`. Although not harmful (libforensic1394 will still
function as expected) it is something of a nuisance. One
workaround to this is to unload the `IOFireWireIP.kext` kernel
module to prevent OS X from advertising support for IPv[4,6] over
1394:
$ sudo kextunload /System/Library/Extensions/IOFireWireIP.kext
It is important to run this before any FireWire devices are
connected to the system. Connecting a device will cause the
retain count for the module to be incremented; making it difficult
to unload the module until the system is restarted. If later
required the module can be reloaded by issuing:
$ sudo kextload /System/Library/Extensions/IOFireWireIP.kext
As Linux/Juju only supports IPv4 over 1394 it is unaffected. (All
recent Windows versions either support IPv4 over 1394 or are
capable of filtering it from the device list.)