Subject: [9fans] Re: DPT PM2041W observations
From: mark@[REDACTED] (Mark Salyzyn)
Date: Thu, 15 Jan 1998 08:50:15 -0500
gdb@dbsystems.COM (G. David Butler) writes:
> How do I abort a command?
place the same physical address of the CCB into the
mailbox registers ([base+2]=MSb -> [base+5]=Lsb) as
you would do when sending the command.
Place 0x03 (Abort immediate command) into [base+6] and
send the EATA immediate command (0xFA) into [base+7].
The command will cause the eventual acknowledgement interrupt
indicating the completion status (recognizing that it may be a
Host adapter ABORT, a SCSI bus ABORT, or completed successfully).
> If a driver needs to time out on a command and reclaim the
> memory, how do I tell the DPT that not only am I not interested
> in command anymore, but if it returns with the address of
> a ccb the driver has reused, bad things will happen.
The DPT controller will *always* return a matching interrupt for
all commands issued. Not waiting for that matching interrupt
would be `vary bad'. Some operating systems have SCSI midlevel
code that understands sending an abort, some just send a SCSI
Bus Reset and wait for all the commands to return, indicating that they
were terminated by a SCSI Bus reset. This 1:1 matching of the
commands to interrupts is quaranteed, no lost commands!
> If there is a way to abort the command to the adapter,
> how long does it wait for the queued command to come back
> from the target? What happens if that is not long enough?
> Or does the adapter tell the target to abort the queued
> operation?
The adapter, for DASD devices, will retry the command every
10 seconds automagically. For all other devices, it waits
patiently (unless a SCSI Bus reset, device reset, or an
abort message is created).
> Is there a current technical reference manual?
Yes. A simple NDA will fill your disk with lots of
WORD documents! If interested, contact Tom Childers
to make arrangements.
Sincerely -- Mark Salyzyn