Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6: firewire: sbp2: provide fallback if mgt_ORB_timeout is missing ieee1394: add documentation entry to MAINTAINERS ieee1394: update URLs in debugging-via-ohci1394.txt
This commit is contained in:
commit
a3ccf63ee6
@ -64,14 +64,14 @@ be used to view the printk buffer of a remote machine, even with live update.
|
|||||||
|
|
||||||
Bernhard Kaindl enhanced firescope to support accessing 64-bit machines
|
Bernhard Kaindl enhanced firescope to support accessing 64-bit machines
|
||||||
from 32-bit firescope and vice versa:
|
from 32-bit firescope and vice versa:
|
||||||
- ftp://ftp.suse.de/private/bk/firewire/tools/firescope-0.2.2.tar.bz2
|
- http://halobates.de/firewire/firescope-0.2.2.tar.bz2
|
||||||
|
|
||||||
and he implemented fast system dump (alpha version - read README.txt):
|
and he implemented fast system dump (alpha version - read README.txt):
|
||||||
- ftp://ftp.suse.de/private/bk/firewire/tools/firedump-0.1.tar.bz2
|
- http://halobates.de/firewire/firedump-0.1.tar.bz2
|
||||||
|
|
||||||
There is also a gdb proxy for firewire which allows to use gdb to access
|
There is also a gdb proxy for firewire which allows to use gdb to access
|
||||||
data which can be referenced from symbols found by gdb in vmlinux:
|
data which can be referenced from symbols found by gdb in vmlinux:
|
||||||
- ftp://ftp.suse.de/private/bk/firewire/tools/fireproxy-0.33.tar.bz2
|
- http://halobates.de/firewire/fireproxy-0.33.tar.bz2
|
||||||
|
|
||||||
The latest version of this gdb proxy (fireproxy-0.34) can communicate (not
|
The latest version of this gdb proxy (fireproxy-0.34) can communicate (not
|
||||||
yet stable) with kgdb over an memory-based communication module (kgdbom).
|
yet stable) with kgdb over an memory-based communication module (kgdbom).
|
||||||
@ -178,7 +178,7 @@ Step-by-step instructions for using firescope with early OHCI initialization:
|
|||||||
|
|
||||||
Notes
|
Notes
|
||||||
-----
|
-----
|
||||||
Documentation and specifications: ftp://ftp.suse.de/private/bk/firewire/docs
|
Documentation and specifications: http://halobates.de/firewire/
|
||||||
|
|
||||||
FireWire is a trademark of Apple Inc. - for more information please refer to:
|
FireWire is a trademark of Apple Inc. - for more information please refer to:
|
||||||
http://en.wikipedia.org/wiki/FireWire
|
http://en.wikipedia.org/wiki/FireWire
|
||||||
|
@ -2615,6 +2615,7 @@ L: linux1394-devel@lists.sourceforge.net
|
|||||||
W: http://www.linux1394.org/
|
W: http://www.linux1394.org/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: Documentation/debugging-via-ohci1394.txt
|
||||||
F: drivers/ieee1394/
|
F: drivers/ieee1394/
|
||||||
|
|
||||||
IEEE 1394 RAW I/O DRIVER
|
IEEE 1394 RAW I/O DRIVER
|
||||||
|
@ -188,14 +188,7 @@ static struct fw_device *target_device(struct sbp2_target *tgt)
|
|||||||
/* Impossible login_id, to detect logout attempt before successful login */
|
/* Impossible login_id, to detect logout attempt before successful login */
|
||||||
#define INVALID_LOGIN_ID 0x10000
|
#define INVALID_LOGIN_ID 0x10000
|
||||||
|
|
||||||
/*
|
#define SBP2_ORB_TIMEOUT 2000U /* Timeout in ms */
|
||||||
* Per section 7.4.8 of the SBP-2 spec, a mgt_ORB_timeout value can be
|
|
||||||
* provided in the config rom. Most devices do provide a value, which
|
|
||||||
* we'll use for login management orbs, but with some sane limits.
|
|
||||||
*/
|
|
||||||
#define SBP2_MIN_LOGIN_ORB_TIMEOUT 5000U /* Timeout in ms */
|
|
||||||
#define SBP2_MAX_LOGIN_ORB_TIMEOUT 40000U /* Timeout in ms */
|
|
||||||
#define SBP2_ORB_TIMEOUT 2000U /* Timeout in ms */
|
|
||||||
#define SBP2_ORB_NULL 0x80000000
|
#define SBP2_ORB_NULL 0x80000000
|
||||||
#define SBP2_RETRY_LIMIT 0xf /* 15 retries */
|
#define SBP2_RETRY_LIMIT 0xf /* 15 retries */
|
||||||
#define SBP2_CYCLE_LIMIT (0xc8 << 12) /* 200 125us cycles */
|
#define SBP2_CYCLE_LIMIT (0xc8 << 12) /* 200 125us cycles */
|
||||||
@ -1034,7 +1027,6 @@ static int sbp2_scan_unit_dir(struct sbp2_target *tgt, u32 *directory,
|
|||||||
{
|
{
|
||||||
struct fw_csr_iterator ci;
|
struct fw_csr_iterator ci;
|
||||||
int key, value;
|
int key, value;
|
||||||
unsigned int timeout;
|
|
||||||
|
|
||||||
fw_csr_iterator_init(&ci, directory);
|
fw_csr_iterator_init(&ci, directory);
|
||||||
while (fw_csr_iterator_next(&ci, &key, &value)) {
|
while (fw_csr_iterator_next(&ci, &key, &value)) {
|
||||||
@ -1059,17 +1051,7 @@ static int sbp2_scan_unit_dir(struct sbp2_target *tgt, u32 *directory,
|
|||||||
|
|
||||||
case SBP2_CSR_UNIT_CHARACTERISTICS:
|
case SBP2_CSR_UNIT_CHARACTERISTICS:
|
||||||
/* the timeout value is stored in 500ms units */
|
/* the timeout value is stored in 500ms units */
|
||||||
timeout = ((unsigned int) value >> 8 & 0xff) * 500;
|
tgt->mgt_orb_timeout = (value >> 8 & 0xff) * 500;
|
||||||
timeout = max(timeout, SBP2_MIN_LOGIN_ORB_TIMEOUT);
|
|
||||||
tgt->mgt_orb_timeout =
|
|
||||||
min(timeout, SBP2_MAX_LOGIN_ORB_TIMEOUT);
|
|
||||||
|
|
||||||
if (timeout > tgt->mgt_orb_timeout)
|
|
||||||
fw_notify("%s: config rom contains %ds "
|
|
||||||
"management ORB timeout, limiting "
|
|
||||||
"to %ds\n", tgt->bus_id,
|
|
||||||
timeout / 1000,
|
|
||||||
tgt->mgt_orb_timeout / 1000);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SBP2_CSR_LOGICAL_UNIT_NUMBER:
|
case SBP2_CSR_LOGICAL_UNIT_NUMBER:
|
||||||
@ -1087,6 +1069,22 @@ static int sbp2_scan_unit_dir(struct sbp2_target *tgt, u32 *directory,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Per section 7.4.8 of the SBP-2 spec, a mgt_ORB_timeout value can be
|
||||||
|
* provided in the config rom. Most devices do provide a value, which
|
||||||
|
* we'll use for login management orbs, but with some sane limits.
|
||||||
|
*/
|
||||||
|
static void sbp2_clamp_management_orb_timeout(struct sbp2_target *tgt)
|
||||||
|
{
|
||||||
|
unsigned int timeout = tgt->mgt_orb_timeout;
|
||||||
|
|
||||||
|
if (timeout > 40000)
|
||||||
|
fw_notify("%s: %ds mgt_ORB_timeout limited to 40s\n",
|
||||||
|
tgt->bus_id, timeout / 1000);
|
||||||
|
|
||||||
|
tgt->mgt_orb_timeout = clamp_val(timeout, 5000, 40000);
|
||||||
|
}
|
||||||
|
|
||||||
static void sbp2_init_workarounds(struct sbp2_target *tgt, u32 model,
|
static void sbp2_init_workarounds(struct sbp2_target *tgt, u32 model,
|
||||||
u32 firmware_revision)
|
u32 firmware_revision)
|
||||||
{
|
{
|
||||||
@ -1171,6 +1169,7 @@ static int sbp2_probe(struct device *dev)
|
|||||||
&firmware_revision) < 0)
|
&firmware_revision) < 0)
|
||||||
goto fail_tgt_put;
|
goto fail_tgt_put;
|
||||||
|
|
||||||
|
sbp2_clamp_management_orb_timeout(tgt);
|
||||||
sbp2_init_workarounds(tgt, model, firmware_revision);
|
sbp2_init_workarounds(tgt, model, firmware_revision);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user