[ros-kernel] BusLogic 958 SCSI miniport

Filip Navara xnavara at volny.cz
Wed Mar 24 11:50:41 CET 2004


Hello Hartmut,

unfortunetly you're right that this change is wrong. The problem
with the old code is that the BusLogic driver queues the SRBs and
completes more of them at once in the interrupt routine. With the
old code it missed some Irps and never completed them which
resulted in system freeze. I can't see any strightforward working
solution for this except for adding an Irp queue that will be
processed in DspForIrp and StartIo routine and checked for
completed SRBs. Any other idea?

Thanks,
Filip

P.S. The modified version of ScsiPortNotification routine is how
it works on Windows except that I omitted a special case for
ABORT reqests that aren't handled yet anyway.

----- PŮVODNÍ ZPRÁVA -----
Od: "Hartmut Birr" <Hartmut.Birr at gmx.de>
Komu: "'ReactOS Kernel List'" <ros-kernel at reactos.com>
Předmět: RE: [ros-kernel] BusLogic 958 SCSI miniport
Datum: 23.3.2004 - 22:47:16

> Hi,
> 
> I think that some of your changes are not correct
> (removing of
> IRP_FLAG_COMPLETE). Currently there exist two ways to
> call
> ScsiPortNotification with the notification type
> RequestComplete (which
> does set IRP_FLAG_COMPLETE). The command are always
> started with a call
> to KeSynchronizeExecution. In the first way
> ScsiPortNotification is
> called from atapi as result of a command which is
> completed immediately
> without an interrupt. The requestor checks for
> IRP_FLAG_COMPLETE and
> completes the request. In the second way
> ScsiPortNotification is called
> from atapi as result of a command which is completed
> some times later
> from an interrupt. The requestor returns without any
> action. The
> interrupt routine request a dpc, which does complete
> the request. If the
> interrupt is very fast, the interrupt routine calls
> ScsiPortNotification
> and request a dpc before KeSynchronizeExecution returns
> to the
> requestor. The requestor completes the request and the
> pending dpc has
> nothing to do. The Dpc checks for IRP_FLAG_COMPLETE and
> does nothing.
> After your changes the the requestor of a command waits
> always of a call
> to RequestComplete. This wait occurs at dpc level. 
> 
> - Hartmut  


-- 
ANONYMNI PRIPOJENI K INTERNETU - bez registrace, zdarma, ihned!
Pripojeni na cisle 971 200 111 z cele CR,
v Praze navic na cisle 971 200 555.
Uzivatelske jmeno "volny", heslo "volny".
http://sluzby.volny.cz/product/dialup/anon/





More information about the Ros-kernel mailing list