From owner-cvs-src@FreeBSD.ORG Fri Apr 29 21:57:05 2005 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7EBFF16A4CE; Fri, 29 Apr 2005 21:57:05 +0000 (GMT) Received: from pooker.samsco.org (pooker.samsco.org [168.103.85.57]) by mx1.FreeBSD.org (Postfix) with ESMTP id A7CE143D55; Fri, 29 Apr 2005 21:57:04 +0000 (GMT) (envelope-from scottl@samsco.org) Received: from [192.168.254.11] (junior-wifi.samsco.home [192.168.254.11]) (authenticated bits=0) by pooker.samsco.org (8.13.3/8.13.3) with ESMTP id j3TM12qq033218; Fri, 29 Apr 2005 16:01:03 -0600 (MDT) (envelope-from scottl@samsco.org) Message-ID: <4272ADA3.1090009@samsco.org> Date: Fri, 29 Apr 2005 15:56:51 -0600 From: Scott Long User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.5) Gecko/20050218 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Vinod Kashyap References: In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-2.8 required=3.8 tests=ALL_TRUSTED autolearn=failed version=3.0.2 X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on pooker.samsco.org cc: "Bjoern A. Zeeb" cc: src-committers@FreeBSD.org cc: cvs-all@FreeBSD.org cc: cvs-src@FreeBSD.org Subject: Re: cvs commit: src/sys/dev/twa tw_osl_cam.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Apr 2005 21:57:05 -0000 Vinod Kashyap wrote: > >>-----Original Message----- >>From: owner-src-committers@FreeBSD.org >>[mailto:owner-src-committers@FreeBSD.org]On Behalf Of Scott Long >>Sent: Friday, April 29, 2005 2:24 PM >>To: Vinod Kashyap >>Cc: Bjoern A. Zeeb; src-committers@FreeBSD.org; cvs-src@FreeBSD.org; >>cvs-all@FreeBSD.org >>Subject: Re: cvs commit: src/sys/dev/twa tw_osl_cam.c >> >> >>Vinod Kashyap wrote: >> >>>>-----Original Message----- >>>>From: owner-src-committers@FreeBSD.org >>>>[mailto:owner-src-committers@FreeBSD.org]On Behalf Of Bjoern A. Zeeb >>>>Sent: Friday, April 29, 2005 1:29 PM >>>>To: Vinod Kashyap >>>>Cc: src-committers@FreeBSD.org; cvs-src@FreeBSD.org; >>>>cvs-all@FreeBSD.org >>>>Subject: Re: cvs commit: src/sys/dev/twa tw_osl_cam.c >>>> >>>> >>>>On Fri, 29 Apr 2005, Vinod Kashyap wrote: >>>> >>>> >>>> >>>>>vkashyap 2005-04-29 20:03:20 UTC >>>>> >>>>> FreeBSD src repository >>>>> >>>>> Modified files: >>>>> sys/dev/twa tw_osl_cam.c >>>>> Log: >>>>> Make call to tw_cl_deferred_interrupt in twa_poll, not >>>> >>>>dependent on the >>>> >>>> >>>>> return value from tw_cl_interrupt. >>>>> >>>>> Revision Changes Path >>>>> 1.2 +12 -2 src/sys/dev/twa/tw_osl_cam.c >>>> >>>>With this I can reboot the machine again. Thanks. >>>> >>> >>> >>>I still believe that CAM should not be calling the polling function >>>when interrupts are active, but in the absence of an answer to why >>>that is so, this can be a work-around. >>> >>> >> >>CAM calls the poll routine when it's not sure if interrupts are >>enabled and it wants to make sure that SIM will complete all >>outstanding commands. It's the same way that every other CAM > > > In that case, it's probably a good idea to define SIM entry points > that CAM can call to enable/disable interrupts on the controller. > By doing this, CAM can first disable interrupts, and then go ahead > and poll. > Why exactly does CAM need to go in and mess with the hardware behind the back of the driver? If you really need to disable interrupts that badly, just do it from the poll routine. But, that's not the problem here. The problem is that you have races in between setting and checking state, and you assume that the scheduler will always be running and allow the taskqueue to run. Scott