Update some obsolete references in the CAM / SCSI stuff.
This commit is contained in:
parent
5942a1c1f0
commit
7368817d25
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=46517
1 changed files with 20 additions and 25 deletions
|
@ -147,7 +147,7 @@
|
|||
<programlisting> struct cam_sim *sim;
|
||||
|
||||
if(( sim = cam_sim_alloc(action_func, poll_func, driver_name,
|
||||
softc, unit, max_dev_transactions,
|
||||
softc, unit, mtx, max_dev_transactions,
|
||||
max_tagged_dev_transactions, devq) )==NULL) {
|
||||
cam_simq_free(devq);
|
||||
error; /* some code to handle the error */
|
||||
|
@ -217,10 +217,17 @@
|
|||
|
||||
<listitem>
|
||||
<para>unit - the controller unit number, for example
|
||||
for controller <quote>wds0</quote> this number will be
|
||||
for controller <quote>mps0</quote> this number will be
|
||||
0</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>mtx - Lock associated with this SIM. For SIMs that don't
|
||||
know about locking, pass in Giant. For SIMs that do, pass in
|
||||
the lock used to guard this SIM's data structures. This lock
|
||||
will be held when xxx_action and xxx_poll are called.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>max_dev_transactions - maximal number of simultaneous
|
||||
transactions per SCSI target in the non-tagged mode. This
|
||||
|
@ -248,7 +255,7 @@
|
|||
<para>Finally we register the SCSI buses associated with our SCSI
|
||||
adapter<indexterm><primary>SCSI</primary><secondary>adapter</secondary></indexterm>:</para>
|
||||
|
||||
<programlisting> if(xpt_bus_register(sim, bus_number) != CAM_SUCCESS) {
|
||||
<programlisting> if(xpt_bus_register(sim, softc, bus_number) != CAM_SUCCESS) {
|
||||
cam_sim_free(sim, /*free_devq*/ TRUE);
|
||||
error; /* some code to handle the error */
|
||||
}</programlisting>
|
||||
|
@ -505,6 +512,11 @@
|
|||
back to CAM). This flag is not used anywhere in the CAM
|
||||
code now, so its purpose is purely diagnostic.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><emphasis>CAM_QOS_VALID</emphasis> - The QOS data
|
||||
is now valid.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>The function <function>xxx_action()</function> is not
|
||||
|
@ -728,27 +740,14 @@
|
|||
CCB or pointed to, in the latter case the pointer may be
|
||||
physical or virtual. Since the hardware commonly needs
|
||||
physical address we always convert the address to the
|
||||
physical one.</para>
|
||||
physical one, typically using the busdma API.</para>
|
||||
|
||||
<para>A NOT-QUITE RELATED NOTE: Normally this is done by a
|
||||
call to <function>vtophys()</function>, but for the PCI
|
||||
device (which account for most of the SCSI controllers now)
|
||||
drivers' portability to the Alpha architecture the
|
||||
conversion must be done by <function>vtobus()</function>
|
||||
instead due to special Alpha quirks. [IMHO it would be much
|
||||
better to have two separate functions,
|
||||
<function>vtop()</function> and
|
||||
<function>ptobus()</function> then
|
||||
<function>vtobus()</function> would be a simple
|
||||
superposition of them.] In case if a physical address is
|
||||
<para>In case if a physical address is
|
||||
requested it is OK to return the CCB with the status
|
||||
<errorname>CAM_REQ_INVALID</errorname>, the current drivers
|
||||
do that. But it is also possible to compile the
|
||||
Alpha-specific piece of code, as in this example (there
|
||||
should be a more direct way to do that, without conditional
|
||||
compilation in the drivers). If necessary a physical
|
||||
address can be also converted or mapped back to a virtual
|
||||
address but with big pain, so we do not do that.</para>
|
||||
do that. If necessary a physical address can be also
|
||||
converted or mapped back to a virtual address but with
|
||||
big pain, so we do not do that.</para>
|
||||
|
||||
<programlisting> if(ccb_h->flags & CAM_CDB_POINTER) {
|
||||
/* CDB is a pointer */
|
||||
|
@ -757,11 +756,7 @@
|
|||
hcb->cmd = vtobus(csio->cdb_io.cdb_ptr);
|
||||
} else {
|
||||
/* CDB pointer is physical */
|
||||
#if defined(__alpha__)
|
||||
hcb->cmd = csio->cdb_io.cdb_ptr | alpha_XXX_dmamap_or ;
|
||||
#else
|
||||
hcb->cmd = csio->cdb_io.cdb_ptr ;
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
/* CDB is in the ccb (buffer) */
|
||||
|
|
Loading…
Reference in a new issue