The patch titled ieee1394: reorder activities after bus reset (fixes device detection) has been added to the -mm tree. Its filename is ieee1394-reorder-activities-after-bus-reset-fixes-device-detection.patch From: Jody McIntyre ieee1394/nodemgr: Units were not detected if the local IRM performed a bus reset. ("The root node is not cycle master capable; selecting a new root node and resetting...", often seen with iPods and other SBP-2 devices). Rearrange the order of IRM duties and node scanning. TODO: Audit the ROM caching and parsing code for underlying issues. Signed-off-by: Stefan Richter Signed-off-by: Jody McIntyre Cc: Ben Collins Signed-off-by: Andrew Morton --- drivers/ieee1394/nodemgr.c | 19 +++++++++---------- 1 files changed, 9 insertions(+), 10 deletions(-) diff -puN drivers/ieee1394/nodemgr.c~ieee1394-reorder-activities-after-bus-reset-fixes-device-detection drivers/ieee1394/nodemgr.c --- 25/drivers/ieee1394/nodemgr.c~ieee1394-reorder-activities-after-bus-reset-fixes-device-detection Thu Sep 22 15:07:11 2005 +++ 25-akpm/drivers/ieee1394/nodemgr.c Thu Sep 22 15:07:11 2005 @@ -1438,9 +1438,13 @@ static int nodemgr_do_irm_duties(struct if (host->busmgr_id == 0xffff && host->node_count > 1) { u16 root_node = host->node_count - 1; - struct node_entry *ne = find_entry_by_nodeid(host, root_node | LOCAL_BUS); - if (ne && ne->busopt.cmc) + /* get cycle master capability flag from root node */ + if (host->is_cycmst || + (!hpsb_read(host, LOCAL_BUS | root_node, get_hpsb_generation(host), + (CSR_REGISTER_BASE + CSR_CONFIG_ROM + 2 * sizeof(quadlet_t)), + &bc, sizeof(quadlet_t)) && + be32_to_cpu(bc) & 1 << CSR_CMC_SHIFT)) hpsb_send_phy_config(host, root_node, -1); else { HPSB_DEBUG("The root node is not cycle master capable; " @@ -1557,24 +1561,19 @@ static int nodemgr_host_thread(void *__h } } - if (!nodemgr_check_irm_capability(host, reset_cycles)) { + if (!nodemgr_check_irm_capability(host, reset_cycles) || + !nodemgr_do_irm_duties(host, reset_cycles)) { reset_cycles++; up(&nodemgr_serialize); continue; } + reset_cycles = 0; /* Scan our nodes to get the bus options and create node * entries. This does not do the sysfs stuff, since that * would trigger hotplug callbacks and such, which is a * bad idea at this point. */ nodemgr_node_scan(hi, generation); - if (!nodemgr_do_irm_duties(host, reset_cycles)) { - reset_cycles++; - up(&nodemgr_serialize); - continue; - } - - reset_cycles = 0; /* This actually does the full probe, with sysfs * registration. */ _ Patches currently in -mm which might be from scjody@steamballoon.com are maintainers-sbp2-driver-is-not-orphaned.patch sbp2-fix-deadlocks-and-delays-on-device-removal-rmmod.patch sbp2-default-to-serialize_io=1.patch ieee1394-reorder-activities-after-bus-reset-fixes-device-detection.patch ieee1394-skip-unnecessary-pause-when-scanning-config-roms.patch ieee1394-fix-for-debug-output.patch ieee1394-use-time_before.patch ieee1394-trivial-edits-of-a-few-comments.patch ieee1394-remove-superfluous-include-in-csr1212.patch eth1394-workaround-limitation-in-rawiso-routines.patch ieee1394-delete-legacy-module-aliases.patch ohci1394-less-noise-in-dmesg.patch