From owner-freebsd-firewire@FreeBSD.ORG Tue Jun 17 02:45:13 2008 Return-Path: Delivered-To: freebsd-firewire@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D5F251065685; Tue, 17 Jun 2008 02:45:13 +0000 (UTC) (envelope-from sbruno@miralink.com) Received: from plato.miralink.com (mail.miralink.com [70.103.185.20]) by mx1.freebsd.org (Postfix) with ESMTP id AB1178FC16; Tue, 17 Jun 2008 02:45:13 +0000 (UTC) (envelope-from sbruno@miralink.com) Received: from localhost (localhost.localdomain [127.0.0.1]) by plato.miralink.com (Postfix) with ESMTP id 24B1E1A913E; Mon, 16 Jun 2008 19:41:29 -0700 (PDT) X-Virus-Scanned: amavisd-new at X-Spam-Flag: NO X-Spam-Score: -4.399 X-Spam-Level: X-Spam-Status: No, score=-4.399 tagged_above=-10 required=6.6 tests=[ALL_TRUSTED=-1.8, AWL=0.000, BAYES_00=-2.599] Received: from plato.miralink.com ([127.0.0.1]) by localhost (plato.miralink.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 512KcQax6dii; Mon, 16 Jun 2008 19:41:28 -0700 (PDT) Received: from [10.47.1.118] (vpn.office.miralink.com [10.0.0.5]) by plato.miralink.com (Postfix) with ESMTP id 895F61A9116; Mon, 16 Jun 2008 19:41:28 -0700 (PDT) Message-ID: <48572538.6040000@miralink.com> Date: Mon, 16 Jun 2008 19:45:12 -0700 From: Sean Bruno User-Agent: Thunderbird 2.0.0.14 (X11/20080501) MIME-Version: 1.0 To: Hidetoshi Shimokawa References: <4846F3F9.1080302@miralink.com> <48482800.8000501@miralink.com> <484EEF6B.7010407@miralink.com> <626eb4530806102213w3beda7a3u89efffd01d5e254b@mail.gmail.com> <4850BAA6.30501@miralink.com> <48520367.7090807@miralink.com> <4852F55E.6000208@miralink.com> In-Reply-To: <4852F55E.6000208@miralink.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-firewire@freebsd.org Subject: Re: sbp_targ errors with windows initiators X-BeenThere: freebsd-firewire@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Firewire support in FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jun 2008 02:45:13 -0000 Sean Bruno wrote: > Sean Bruno wrote: >> Sean Bruno wrote: >>> Hidetoshi Shimokawa wrote: >>>> It could be that windows sends requests before FreeBSD finish bus >>>> probing.. >>>> >> It seems that by adjusting the callout timer in >> firewire.c:fw_sidrcv() from 1/4 a hz to 1/10 a hz: >> callout_reset(&fc->busprobe_callout, hz/10, >> (void *)fw_bus_probe, (void *)fc); >> >> >> I've been able to get a reliable detection of the sbp_targ by a >> FreeBSD initiator. Is this a correct way of fixing my issue? >> >> > Well, I guess I was too hopeful. This did not work. > > I have identified the failure case, but I cannot see what the solution > is. > > You are correct, the Windows and FreeBSD inititator are sending > requests to the target prior to sbp_targ even beginning it's bus probe > activity. > > sbp_targ finishes it's "sbp_targ_post_busreset" callback, then it > starts processing messages based on the bind addr callback for > sbp_targ_recv(). > > I don't as of yet know where the issue lies? Can you give me some > guidance? > > > > Allrighty, I seem to have found my issue(I can't believe that it's only affecting sbp_targ however). It seems that fwohci_intr_body() invoked from the interrupt handler at fwohci_pci.c::fwohci_pci_attach() was being set with INTR_MPSAFE. It definitely was not MPSAFE and needed Giant locked before it could start another interrupt. Strange that this hasn't been seen in the wild. small diff attached: [sbruno@desdemona ~/work/branches/miralink.FreeBSD.6/src/sys/dev/firewire]$ svn diff Index: fwohci_pci.c =================================================================== --- fwohci_pci.c (revision 5496) +++ fwohci_pci.c (working copy) @@ -336,7 +336,7 @@ err = bus_setup_intr(self, sc->irq_res, #if FWOHCI_TASKQUEUE - INTR_TYPE_NET | INTR_MPSAFE, + INTR_TYPE_NET, #else INTR_TYPE_NET, #endif Sean